[转载]Linux密码破解

root权限登入后获得/etc/shadow文件之后文本打开

shadow 文件:

在linux系统中, /etc/shadow 文件存放着用户的密码哈希值。

shadow中存放的密码密文格式如下:

$id$salt$encrypted


其中id是指使用的哈希算法:

可取如下值:

    ID  | Method

--------------------------

     1   | MD5

    2a  | Blowfish (not in mainline glibc; added in some

          | Linux distributions)

     5   | SHA-256 (since glibc 2.7)

     6   | SHA-512 (since glibc 2.7)


salt:是使用上面hash算法对密码进行hash的一个干扰值。


encrypted:

这个值即 密码的hash, 但不是直接的hash("passwd"),而是hash("passwd+salt")后,再经过编码。


实际应用:

1. 在有shadow文件的前提下暴力破解(也只能暴力破解)用户密码

2. 实现自己的passwd命令。某种场景下是很有用的(在云计算中,可以方便的为使用同一模板的linux虚拟机生成不同密码)


示例:

该程序使用linux 系统中的crypt函数生成可替换shadow中密码域中的密码hash。

#define _XOPEN_SOURCE

#include <stdio.h>

#include <unistd.h>


//crypt 使用方式参见man crypt

//exemple:

//./bin password $6$ffffffff


int main(int argc, char *argv[])

{

    if(argc!=3)

        return -1;


    char *buf = crypt((const char *)argv[1], (const char *)argv[2]);


    printf("salt: %s, crypt: %s\n", argv[2], buf);


    return 0;

}


编译方法:gcc a.c -lcrypt -o passwd

使用: ./passwd 123 \$6\$abcdefgh

会输出:

salt: $6$abcdefgh, crypt: $6$abcdefgh$sNmFESeRuFG3asLlnZJwXSxrybA0XIDpk90fLJ9Cmzn6iJiSdKoKIKr5oVHlvQoAubV22YLUGcTVztOLfZM9g0


使用$6$abcdefgh$sNmFESeRuFG3asLlnZJwXSxrybA0XIDpk90fLJ9Cmzn6iJiSdKoKIKr5oVHlvQoAubV22YLUGcTVztOLfZM9g0 替换shadow 文件中你要修改的用户中的密码域,密码便自动修改成了123。


shadow文件的格式:

具体可参考这里:http://www.tldp.org/HOWTO/Shadow-Password-HOWTO.html

crypt 使用方法:

参见: man crypt


原文出处http://hi.baidu.com/gzlick/item/fdedea7b45517a2c5d1789e0


你可能感兴趣的:([转载]Linux密码破解)