欢迎使用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.
相关文章推荐
- PL-SQL 存储函数和存储过程
- 这是一篇测试文章
- apk反编译
- 测试人员常用网址汇总
- LeetCode 241. Different Ways to Add Parentheses
- C# 添加xml节点多了xmlns属性问题
- 一入python深似海--浅拷贝与深拷贝
- 增强For循环
- HDU 1005 Number Sequence 数学题
- mongodb 安装
- 7 多态
- WebLogic(12C)——Server
- 利用ajaxfileupload.js异步上传文件
- 快速搭建APP的服务器
- 五子棋AI算法第二篇-极大极小值搜索算法
- HDOJ 2080 夹角有多大II
- uiview的绘画
- 如何写线程安全的方法
- iOS:详解MJRefresh刷新加载更多数据的第三方库
- VS2015创建的Asp.net WebApi默认项目在CentOS7+Mono4.2.2+jexus5.8运行不起来的解决方案