首页
社区
课程
招聘
[求助]哪位大侠知道如下密码的加密方式或有什么方法识别?
发表于: 2009-12-22 17:30 7351

[求助]哪位大侠知道如下密码的加密方式或有什么方法识别?

2009-12-22 17:30
7351
第一种 '$1$xNeXk5jE$rLkEwte2.sFTGlsqQox/g1'
第二种 '$1NeKTffTZ07o'

希望不吝指教~

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 993
活跃值: (442)
能力值: ( LV12,RANK:403 )
在线值:
发帖
回帖
粉丝
2
应该是Unix/Linux口令的加密
参见http://blog.chinaunix.net/u/27852/showart_234372.html
2009-12-22 18:55
0
雪    币: 166
活跃值: (66)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看完文章
对于第一种 '$1$xNeXk5jE$rLkEwte2.sFTGlsqQox/g1'
$1$xNeXk5jE$应该是salt,后面的rLkEwte2.sFTGlsqQox/g1是否就是MD5值?
第二种 '$1NeKTffTZ07o'是1-DES或2-DES?怎么判断?

另外MD5是否基本是不可破解的?如果能破,怎么破?
现实中(个人PC)JohnRipper是否可以破解上述密码?
2009-12-22 23:09
0
雪    币: 232
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
是的。第一种确实是Linux中shadow的MD5,以$1前缀开头的使用这种方式。salt是从$1到最后一个$之间的字符,比如这个是
$1$xNeXk5jE$rLkEwte2.sFTGlsqQox/g1
后面黑色部分就是crypt()的结果。

这种密码可以用穷举来破解(当然有个好字典也行),具体方法是调用Linux自身的libcrypt库来正向计算加密结果,然后比对计算结果是否为你需要的散列值。例如要破解 $1$4rIWwSl1$29U2moXvLlESsRoLSUTOA0 - 654321 这个简单的密码:
#include <crypt.h>

// 首先填充 salt,这个是已知的
const char salt[] = "$1$4rIWwSl1";
char *result;
// 然后调用 crypt() 函数算出对应密码的散列
result = crypt ("654321", salt);
// 当然这里不可能一开始就知道密码是654321,应该写一个循环挨个穷举字符集里的密码组合
// 这里比较一下加密结构是否为 $29U2moXvLlESsRoLSUTOA0,如果是则说明密码654321正确

printf("%s%s\n", salt, result);


第二个不像des的。也许是变种,我只见过类似 a44L3wQdaePiI 这样的,以前两个字符为salt,整个字符串为crypt()结果,这个早期的Linux中用得比较广泛。虽然长度满足,但你这个$1开头的,还真不好说。

无论哪种加密都可以用穷举来攻击,只不过速度很慢。DES的还好点,我在一台Xeon 4核(2.0GHz)的服务器上,每秒能算近10W个密码。不过MD5密码能跑到3000个每秒就已经是极限了,我完全没有耐心等他跑完...
2009-12-23 09:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
$1$xNeXk5jE$rLkEwte2.sFTGlsqQox/g1
标准md5
2009-12-25 23:06
0
雪    币: 88
活跃值: (25)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
MD5貌似没有这么乱吧
2009-12-26 00:05
0
雪    币: 234
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
单项散列一直这样,MD5只要看长度,不看乱不乱。
ps:不过我也觉得有点乱
2009-12-27 19:15
0
游客
登录 | 注册 方可回帖
返回
//