首页
社区
课程
招聘
奉献一个CM
2010-4-27 18:29 7768

奉献一个CM

2010-4-27 18:29
7768
近日从手头的项目中发掘出的一点点算法,各位尝试下。

Delphi6写的,无花无壳不防爆,请尽量手下留情,多算少爆

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (16)
雪    币: 472
活跃值: (47)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
tyroneking 1 2010-4-27 23:59
2
0
Name=  TYRONEKING
Code =  104872215
上传的附件:
雪    币: 306
活跃值: (85)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
hack一生 1 2010-4-28 12:09
3
0
t大,给点提示,小菜分析不出来,哈哈
雪    币: 435
活跃值: (1142)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
bitt 5 2010-4-28 14:56
4
0
abcdefgh
40320000
雪    币: 306
活跃值: (85)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
hack一生 1 2010-4-28 15:09
5
0
哥们给点提示,哈..
雪    币: 435
活跃值: (1142)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
bitt 5 2010-4-28 15:40
6
0
我瞎猜的.....
雪    币: 306
活跃值: (85)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
hack一生 1 2010-4-28 15:44
7
0
额..那你太..
雪    币: 435
活跃值: (1142)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
bitt 5 2010-4-28 16:10
8
0
如果你的name里没有重复字符的话,应该会简单一点,你试试
这事不能说太细,说太细就露怯了
我也似懂非懂
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jimly 2010-4-28 16:24
9
0
根据bitt的提示我也猜到了。。。
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jimly 2010-4-28 16:32
10
0
看图。。。。。。。
上传的附件:
雪    币: 306
活跃值: (85)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
hack一生 1 2010-4-28 17:22
11
0
abcdefgh
5040000- =
雪    币: 306
活跃值: (85)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
hack一生 1 2010-4-28 17:38
12
0
谢谢..懂了点..
雪    币: 151
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
请哥慢捂 2 2010-4-29 11:41
13
0
呵呵,不知道大家玩的怎么样,其实用户名也不限制于字母,例如

name=请哥慢捂
code=5053756

我觉得jimly给的结果真油菜
雪    币: 146
活跃值: (1215)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
曹无咎 1 2010-4-29 20:59
14
0
用dede破解很容易了。。
雪    币: 202
活跃值: (58)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
egogg 9 2010-4-30 00:26
15
0
哈哈,我找到解了。

CrackMe算法分析:

1、用户名:不能有2种以上的重复字符。长度范围8 - 12
2、Code:转换成整数必须大于某指定的值。

以上两条保证算法的容错性。

算法大致流程:
1、用户名转大写,然后排序。例如:dcba1234 -> 1234ABCD
2、用Code做Key对上述字符串作移位密码运算:
   
   常量:a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13

    以1234ABCD作为例子:用户名长度 = 8
    新串顺序:
   Code = Code % a9
   字符一: '1234ABCD'[Code / a8], Code = Code % a8 假设为 'A'
    字符二:'1234BCD'[Code / a7], Code = Code % a7 假设为 'C'
    字符三:'1234BD'[Code / a6], Code = Code % a6 假设为 '4'
    字符四:'123BD'[Code / a5], Code = Code % a5 假设为 '2'
    字符五:'13BD'[Code / a4], Code = Code % a4 假设为 'D'
    字符六:'13B'[Code / a3], Code = Code % a3 假设为'1'
    字符七:'3B'[Code / a2], Code = Code % a2假设为'3'
    字符八:'B'[Code / a1], Code = Code % a1假设为'B'
   那么一位密码后的结果:'AC42D13B'
   该结果与原用户名:'DCBA1234'做比较。

求解过程:
 理解了上述过程,就很容易得到解了:找到排序后的串中个字符的移位值,根据常数反算Code,由于做了模数运算,而且是移位运算,所以存在多对多的解。

附上Delphi注册机:
上传的附件:
雪    币: 435
活跃值: (1142)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
bitt 5 2010-4-30 00:32
16
0
ls最最油菜
雪    币: 151
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
请哥慢捂 2 2010-4-30 23:06
17
0
挺好挺好,这个是全排列的一个生成算法,让大家见笑了
游客
登录 | 注册 方可回帖
返回