首页
社区
课程
招聘
[原创]Keygenme III
发表于: 2007-8-23 19:33 11116

[原创]Keygenme III

2007-8-23 19:33
11116

Keygenme III v1.0 by luxor

保持原有风格,exe大小2.5k,纯算法CM,要求做keygen。

下载:

http://crackmes.de/users/luxor/keygenme_iii_v1.0/

btw,可恶的crackmes.de管理员把level给改小了,如果II搞不定的话,就别搞这个了


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (24)
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
分析一下
这个cm通过验证需要满足这个方程:
X^3+A*X+C = 0 mod P                1)
其中
A=0X95AC9329AC4BC9B5
P=0XFFFFFFFFFFFFFC01 是一个素数
C=F(NAME) 暂时认为是不可逆的,只跟用户名有关系的数
X=SERIAL

所以解这个三次方程就行了
解1)等价与解二次方程
X^2+CX+A^3 = 0        mod P                2)
设2)的两根为R1,R2对R1,R2求三次根得到T1,T2
那么X=T1+T2即为1)的根

得到X后,transform就可以得到序列号了
2007-8-25 02:05
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
分析得不错,不过对于III考察点并没有分析,再接再厉.
2007-8-25 10:07
0
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
分析得不错

谢谢

不过对于III考察点并没有分析,再接再厉

你是说模 2^64-p1=p2 (p1是另一个小素数,p2也是素数)的实现方法么?
的确廷巧妙的可以推导一下
求x=b*y+c mod p2   其中b=2^64
关键在于求b*y mod p2
即b*y%(b-p1)
所以把b*y变形为b*y-y*p1+y*p1
即为b*y = y*p1 mod p2
在II中p1=0x3B
在III中p1=0x3FF
这也就是lz在II,III中模算术的原理
2007-8-25 10:55
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不是这个啊,是求模三次根.
2007-8-25 10:58
0
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
刚出去了一会想可能lz是想考察模二次跟三次根刚回来就看lz发贴了
这个问题,因为在数论书上讲得比较多,一想大家翻翻书就找到答案了所以没有详细解释
实际上求x^3 = c mod p
只要3与p-1互素就行了 设3*a = 1 mod p-1
即a是3的模逆元
那么(x^a)^3 = x^(3*a) = x^(1+k*(p-1)) = x mod p
那么就c的三次根只需求 c^a即可
这种方法可以推广到更高次的根,也可以推广到别的域里
2007-8-25 11:17
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
hehe,你看看这里的p-1和3互素吗?
2007-8-25 11:19
0
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
o?
呵呵,昨天搞出来的时候忘形了,都忘了验证了
这也可以解决在这里
p-1=3^4*p2*p3....
那么可以先求得x^3=c mod p的3^4=81次根
然后27次方即可
2007-8-25 11:35
0
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
实际上如果写一个kg的话,就能遇到lz提到的问题
只是以前曾经想通过在一个任意的域上该如何去解模一个素数,模一个可分解合数的问题,碰到x^3 = c mod p就没有细想了
2007-8-25 11:40
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
hehe,不会这么简单啊. x^81无解不等于x^3无解.
2007-8-25 11:41
0
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
不会呀,81跟(p1-1)/81是互素的,应该存在81 mod (p1-1)/81的逆元
那么如果3次根存在的话所有的81次根都是存在的呀
2007-8-25 11:45
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
你再想想吧.
2007-8-25 11:56
0
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
hmm,这么求
先得到c^27 = d mod p
再求 y^81 = d mod p 的81次根y
如果 c = x^3 mod p 那么y就可以求出来即为解
2007-8-25 12:27
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
差一点被你蒙了, (81,p-1)=81,不是互素,这和3不是一样的吗?
2007-8-25 12:31
0
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
我写的是
"81跟(p1-1)/81是互素的,应该存在81 mod (p1-1)/81的逆元"
呵呵
2007-8-25 12:52
0
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
这么求的目的就是想把x^3 跟y^81 存在等价起来
而且81跟(p1-1)/81是互素的,所以模逆元存在,比较好解
2007-8-25 12:57
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
既然你还这么认为,那就写个kg出来吧,让实践说明一切。
有问题我们随时可以讨论。
2007-8-25 15:03
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
biocrk, 请收email
2007-8-25 16:53
0
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
luxor,我没有到邮件呀,你可以发到tttt__tttt@163.com
另外我下午试验了我的想法,failed
求81次根的方法是正确的,但是x^3与y^81是不等价的
我正在想别的方法
2007-8-25 19:11
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
解法在教科书里应该是找不到的,需要你的创新能力。
2007-8-25 19:32
0
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
我找了一个Fp上的三次方程根的求法的paper,可以仿照它的作,不过肯定有别的方法
比如三次剩余
比如解的加罗瓦群的性质
还想再试试别的办法
这两天再找不到合适的解法的话也只能放弃了,时间上耗不起呀
2007-8-25 21:06
0
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
luxor
crackmes.de上有人回复了,用了ntl直接分解因式的寻找的
there exist so many math tools and libraries (I was thinking of solving it in pure MAPLE or
PARI/GP first).这个好像不是大家关心的结果
2007-8-28 09:21
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
23
很好,很强大
2007-8-28 11:56
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
之前,我并不知道有Fp上的通用多项式分解算法。不过实现这种算法还是比较复杂的。
我会把目前3个Keygenme的算法分别解释一下。
2007-8-29 18:59
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
所有的f(x)=0 (mod p^n)都可以使用Berlekamp算法或者Cantor-Zassenhaus算法分解f(x)来达到求解x的目的。之前我孤陋寡闻了,居然不知道这种算法的存在。因此这里探讨的是实现起来较为简单的算法。

抛开通用算法,Keygenme III求解的关键是模为素数的三次根。其实完全可以参照求解模二次根的思想去求解模三次根,甚至是模n次根。这里不讨论算法的细节,只说一下思想。其思想就是利用非n次剩余的特性。

当p!=n*k+1时,模n次根都可以转化成模小于n次根。这个就是Keygenme II的类型。
当p=n*k+1时,因为非n剩余b满足b^((p-1)/n) != 1 (mod p)。设e=b^((p-1)/n), 那么e^n=e^(p-1)=1 (mod p),而且e,e^2,..,e^(n-1)总共有(n-1)个不等于1的解都满足x^n=1 (mod p)。

设p-1=(n^s)*t,c=e^t,然后依次去求a^((p-1)/n)到a^((p-1)/(n^s))的所有剩余情况,针对不同的e^i值,来乘C(其中C^((p-1)/n)=e^(n-i-1),C是c的某个次幂)的那个值。这样如果模n次根存在,就可以得出结果。
2007-8-29 23:08
0
游客
登录 | 注册 方可回帖
返回
//