您的位置:首页 > 其它

欢迎使用CSDN-markdown编辑器

2016-02-02 18:23 344 查看

linux /etc/shadow 破解

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>

char data[37] = "abcdefghijklmnopqrstuvwxyz0123456789";
char *goalPass = "$6$Z1nrJLQo$DQunidQEqlR/0ZffuRZ5JrMA9A3n4hDGJumYYxzGFWvCqbubfYgtyfh.uFsPvMWDBiZMmaz0qzuWw7I5mRm15.";
char mypwd[10];
int minlen = 1; //min password length
int maxlen = 9; //max password length

void subgenerate(int index, int pwdlen){
if (index == pwdlen){
return;
}

int i;
for (i = 0; i < 36; i++){
mypwd[index] = data[i];
memset(mypwd + index + 1, data[0], pwdlen- index -1);
if (i != 0){
//                     printf("%s      ",mypwd);
if (!strcmp(goalPass, crypt(mypwd, "$6$Z1nrJLQo$DQunidQEqlR/0ZffuRZ5JrMA9A3n4hDGJumYYxzGFWvCqbubfYgtyfh.uFsPvMWDBiZMmaz0qzuWw7I5mRm15."))){
printf("find password:%s", mypwd);
exit(0);
}
}
subgenerate(index + 1, pwdlen);
}
}

void generate(int pwdlen, int start, int end){
int i;
for (i = start; i < end; i++){
mypwd[0] = data[i];
memset(mypwd + 1, data[0], pwdlen-1); //填充长度
//              printf("%s      ",mypwd);
if (!strcmp(goalPass, crypt(mypwd, "$6$Z1nrJLQo$DQunidQEqlR/0ZffuRZ5JrMA9A3n4hDGJumYYxzGFWvCqbubfYgtyfh.uFsPvMWDBiZMmaz0qzuWw7I5mRm15."))){
printf("find password:%s", mypwd);
exit(0);
}
subgenerate(1, pwdlen);
}
}

int main(){
char mypwd[10];
if (maxlen > 9) {
puts("max password length must little than 9");
}
int i,threadnum = 10;
for (i = minlen; i <= maxlen; i++){
printf("\npassword length:%d\n", i);
//password length
memset(mypwd, 0, 10);
generate(i,0,36); //留作多线程
}
puts("password not found");
return 0;
}


Link with -lcrypt.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: