首页
论坛
课程
招聘
雪    币: 8005
活跃值: 活跃值 (72)
能力值: ( LV15,RANK:1662 )
在线值:
发帖
回帖
粉丝

[调试逆向] [原创][TX2010 第二阶段 第二题]keygen源代码(效率优化版)

2010-11-6 12:02 11296

[调试逆向] [原创][TX2010 第二阶段 第二题]keygen源代码(效率优化版)

ccfer 活跃值
15
2010-11-6 12:02
11296
简单描述一下要点,已知条件:
a = C564EEF070E69190
b = 22996B9C33AEEFDB
p = C564EEF070E69193
n = C564EEF19A080B07
px = 2223A1D595845FA2
py = 1C4EEE9222DDDA62
qx = 297A4A1E5B1FC99B
qy = 880198E3724F9FEE

对应椭圆曲线:
y^2 = x^3 + C564EEF070E69190*x + 22996B9C33AEEFDB

用ECDLP Solver求解出d:
d = 54656E63656E7420 = "Tencent "

签名过程:
e = sha1(name)
r = px
s = (rd+e) mod n
r和s拼起来就是16字节的签名结果
直接用px虽然不安全,但是合法,额外的好处是省去了对大数库的依赖:)

解决了这个ecdsa部分以后,其他算法比如blowfish和sms4都应该没什么难度了,找到标准算法,只要细心对比修改一下就可以了。

[看雪官方培训]《安卓高级研修班(网课)》9月班开始招生!顶尖技术、挑战极限、工资翻倍!

上传的附件:
最新回复 (14)
雪    币: 1075
活跃值: 活跃值 (10)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
accessd 活跃值 2 2010-11-6 12:06
2
0
密码在exe程序里面

.data:0046A54C aTencent        db 'Tencent '
.data:0046A554 dword_46A554    dd 1E4A7A29h            ; DATA XREF: sub_403210+CBo
.data:0046A558                 dd 9BC91F5Bh
.data:0046A55C dword_46A55C    dd 0E3980188h           ; DATA XREF: sub_403210+E7o
.data:0046A560                 dd 0EE9F4F72h
.data:0046A564 unk_46A564      db    0                 ; DATA XREF: sub_408C30+150o
.data:0046A564                                         ; sub_4092F0+6Bo ...
.data:0046A565                 db    0
.data:0046A566                 db    0
雪    币: 4193
活跃值: 活跃值 (71)
能力值: ( LV15,RANK:1283 )
在线值:
发帖
回帖
粉丝
lelfei 活跃值 22 2010-11-6 12:10
3
0
交白卷了来学习了

第一次见到椭圆曲线算法。。。
雪    币: 111
活跃值: 活跃值 (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bbbsl 活跃值 2010-11-6 12:16
4
0
第一次听说sms4,ccfer果然彪悍
雪    币: 1632
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
达文西 活跃值 2010-11-6 12:20
5
0
截止时间后准时放出。
雪    币: 8005
活跃值: 活跃值 (72)
能力值: ( LV15,RANK:1662 )
在线值:
发帖
回帖
粉丝
ccfer 活跃值 15 2010-11-6 12:24
6
0
我也没见过的,抓个常数google出来的
雪    币: 274
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
findlakes 活跃值 1 2010-11-6 12:26
7
0
sms4还算好搜的。
国际上公开的分组对称算法100种以上呢  要真找个偏僻的不好搜到蛛丝马迹的 或者是QQ私藏的商用的对称算法,这3天时间还真不好弄出来。
雪    币: 1415
活跃值: 活跃值 (52)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
loudy 活跃值 10 2010-11-6 12:57
8
0
楼主太强了,得好好补补密码学了
雪    币: 1888
活跃值: 活跃值 (46)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
tjszlqq 活跃值 1 2010-11-6 13:07
9
0
ccfer真是神啊,太厉害了,不参加比赛就是把五千多块钱丢水里了,太浪费了
雪    币: 272
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Esper 活跃值 2010-11-6 13:56
10
0
代码写的漂亮, 学习了
雪    币: 740
活跃值: 活跃值 (21)
能力值: ( LV12,RANK:310 )
在线值:
发帖
回帖
粉丝
古河 活跃值 6 2010-11-8 09:16
11
0
有个关于ECDLP Solver问题请教一下楼主,不知楼主用了多长时间算出来的

我当时也试了一下这个,跑了一天没有结果,估计是我哪里理解不对,参数填错了,以下是我的job_32bit.txt:

GF := GF(14223756239596589459);
E := EllipticCurve([GF|14223756239596589456,2493142187352453083]);
G := E![2459987760183009186,2039829992663013986];
K := E![2988782796952029595,9800282366777729006];
/*
FactorCount:=6;
2;
2;
13;
29;
23869;
14821185007;
*/

楼主能否把你用的配置文件分享一下, 谢谢
雪    币: 8005
活跃值: 活跃值 (72)
能力值: ( LV15,RANK:1662 )
在线值:
发帖
回帖
粉丝
ccfer 活跃值 15 2010-11-8 09:20
12
0
你FactorCount那里不对,14223756244581616391是个素数
据说时间是靠运气的,运气好的几分钟,运气不好1个多小时也差不多

GF := GF(14223756239596589459);
E := EllipticCurve([GF|14223756239596589456,2493142187352453083]);
G := E![2459987760183009186,2039829992663013986];
K := E![2988782796952029595,9800282366777729006];

/*
FactorCount:=1;
14223756244581616391;
*/
雪    币: 740
活跃值: 活跃值 (21)
能力值: ( LV12,RANK:310 )
在线值:
发帖
回帖
粉丝
古河 活跃值 6 2010-11-8 09:59
13
0
谢谢指教,终于明白了!
雪    币: 349
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Osleti 活跃值 2010-11-9 13:58
14
0
晕...膜拜ccfer
雪    币: 70
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huyuanhk 活跃值 2011-8-10 13:14
15
0
楼主,,,你头像里的那个人长得像我爷爷。。。
游客
登录 | 注册 方可回帖
返回