shadow文件的MD5密码破解

root:$1$abcde$LULigrJwcdszq2ReOX7bG/:15933:0:99999:7:::
hint:密码长度不超过6

root:$1$abcde$LULigrJwcdszq2ReOX7bG/:15933:0:99999:7:::这是在linux下的shadow文件中,用来存放用户的账户和密码,在/etc/shadow目录下。
其内容用“:”号隔开,分别表示不同的内容:
1)“登录名”(root):是与/etc/passwd文件中的登录名相一致的用户账号。
2)“口令”($1$abcde$LULigrJwcdszq2ReOX7bG/):字段存放的是加密后的用户口令字,如果为空,则对应用户没有口令,登录时不需要口令;星号代表帐号被锁定;双叹号表示这个密码已经过期了。
$6开头的,表明是用SHA-512加密的,$1表明是用MD5加密的,$2是用Blowfish加密的,$5是用 SHA-256加密的;
$abcde表示加密算法所加的盐值为abcde;
$LULigrJwcdszq2ReOX7bG/表示加密算法得到的密文为LULigrJwcdszq2ReOX7bG/。
3)“最后一次修改时间”(15933):表示的是从某个时刻起,到用户最后一次修改口令时的天数,时间起点对不同的系统可能不一样,例如在SCOLinux中,这个时间起点是1970年1月1日。
4)“最小时间间隔”(0):指的是两次修改口令之间所需的最小天数。
5)“最大时间间隔”(99999):指的是口令保持有效的最大天数。
6)“警告时间”(7):字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
7)“不活动时间”():表示的是用户没有登录活动但账号仍能保持有效的最大天数。
8)“失效时间”():字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
9)保留字段()

所以题目是要我们破解Linux下shadow文件的密码,其中的关键是$1$abcde$LULigrJwcdszq2ReOX7bG/,表示盐值为abcde的MD5加密的密文LULigrJwcdszq2ReOX7bG/,我们需要解出明文密码。

一、直接代码暴力破解

descarck.c

//编译选项:gcc -O3 descrack.c -lcrypt -o descrack
#define _XOPEN_SOURCE /* See feature_test_macros(7) */
#include <unistd.h>
#include <stdio.h>
#include <crypt.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>
#include <time.h>char data[37] = "0123456789abcdefghijklmnopqrstuvwxyz";
//待解密的密文
char * goalPass = "$1$abcde$LULigrJwcdszq2ReOX7bG/";
//存储遍历的明文
char mypwd[10];
//最短的密码长度
int minlen = 1;
//最长的密码长度
int maxlen = 6;
//当前时间
time_t global_start;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);//strcmp:相等则返回0,!0让程序输出退出if (!strcmp(goalPass, crypt(mypwd, "$1$abcde$"))){printf("当前程序花费的时间: %ld (秒)\n",(time(NULL) - global_start));printf("解密后的明文密码是:%s\n", 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, "$1$abcde$"))){printf("当前程序花费的时间: %ld (秒)\n",(time(NULL) - global_start));printf("解密后的明文密码是:%s\n", mypwd);exit(0);}subgenerate(1, pwdlen);}
}int main()
{//赋值为当前时间global_start = time(NULL);char mypwd[10];int i,threadnum = 10;for (i = minlen; i <= maxlen; i++){printf("当前破解密码的长度:%d\n", i);//password lengthmemset(mypwd, 0, 10);//留作多线程generate(i,0,36); printf("当前程序花费的时间: %ld (秒)\n",(time(NULL) - global_start));}puts("在指定的范围内没有找到正确的密码");return 0;
}

运行结果:

得到解密后的明文密码123qwe,大概需要32005秒也就是8个小时53分25秒。

二、工具破解(John the Ripper)

John the Ripper的安装过程可以参考我的另一篇文章:Bugku-加密-Crack it(shadow文件解密)
根据提示下载 John 并拷贝到虚拟机

进 入 src 目 录 , 使 用 make 指 令 查 看 可 安 装 的 系 统

选择第七个 linux-x86-mmx,安装完成后,退出 src 并进入 run 目录,在 run 目录下新建文件,把我们要破解的内容放进去,这里我将它命名为 root:

文件创建完成后就可以使用 John 破解了,先进入root权限(不然会提示权限不够),输入./john root 指令

1秒钟就得到了结果,破解结果也是123qwe,的确是不超过 6 位的密码,验证了我们的结果。

shadow文件的MD5密码破解相关推荐

  1. 手动生成/etc/shadow文件中的密码

    shadow文件的格式就不说了.就说说它的第二列--密码列. 通常,passwd直接为用户指定密码就ok了.但在某些情况下,要为待创建的用户事先指定密码,还要求是加密后的密码,例如kickstart文 ...

  2. MD5密码破解(高额悬赏1000大洋)

    高额悬赏 序号 类型 1 状态码128bit 54 48 08 7A 22 C5 58 62 31 56 32 FF 00 00 00 00 结果码 256bit 7C 24 C6 81 F7 09 ...

  3. john 探测(爆破)弱口令(包含linux机器,aix小机)/linux上的shadow文件破解,亲测可用

    john 探测(爆破)弱口令(包含linux机器,aix小机),linux上的shadow文件破解 手头上上面的机器居多,而且这些机器也是几经转折到了奴家的手上,前期已经出现了有几个密码是1234的情 ...

  4. 教你如何轻松解密Md5密码

    Md5密文破解(解密)可以说是网络***中的一个必不可少的环节,是***工具中的一个重要"辅助工具".md5解密主要用于网络***,在对网站等进行***过程,有可能获得管理员或者其 ...

  5. Linux密码破解(使用hydra工具和使用john暴力破解)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.使用hydra离线破解linux密码 1.准备实验环境 2.创建用户名字典 3.hydra密码爆破 二.复制shadow ...

  6. 【愚公系列】2023年06月 网络安全(交通银行杯)-密码破解,真的是

    文章目录 前言 一.密码破解,真的是 1.打开题目 2.解题 前言 MD5是一种常用的哈希算法,用于将任意长度的消息压缩为一个128位的摘要.它被广泛用于数字签名.加密等领域. 一.密码破解,真的是 ...

  7. BBSXP论坛手工得到用户md5密码的方法

        通过阅读本文,您将了解到:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office&qu ...

  8. 常用电脑密码破解技巧

    ·CMOS密码破解 网管员在维护和使用电脑时,经常会遇到各种密码丢失的问题,这里,我们就为广大网管员准备了一些破解密码的方法,但是希望大家不要干坏事哦.开机密码是我们最先要遇到的因此我们就先从CMOS ...

  9. 网管员必知:常用电脑密码破解(转)

    网管员在维护和使用电脑时,经常会遇到各种密码丢失的问题,这里,我们就为广大网管员准备了一些破解密码的方法,但是希望大家不要干坏事哦.开机密码是我们最先要遇到的因此我们就先从CMOS密码破解讲起.虽然C ...

  10. 强大的密码破解工具:hashcat简介与用法介绍与实例

    常见哈希密码,解密 一:hashcat简介 下载地址:hashcat.net/files/hashcat-5.1.0.7z hashcat是世界上最快的密码破解,它基于cpu gpu 规则的引擎 市面 ...

最新文章

  1. kvm_guest主机克隆
  2. 【CentOS 7MySQL常用操作2】,连接MySQL#180112
  3. PHP密码复杂性验证,JS检查密码强度 检查密码复杂度
  4. 回溯算法 | 追忆那些年曾难倒我们的八皇后问题
  5. 安卓App热补丁动态修复技术:让App像Web一样发布新版本
  6. MariaDB安装1,2
  7. 华为智能计算发布FusionServer Pro智能服务器
  8. hive 行转列和列转行的方法_面试常考!SQL行转列和列转行
  9. hadoop 集群间数据迁移
  10. CS5211中文规格书
  11. 【ARM】嵌入式 ARM Linux 下移植 USB 蓝牙、交叉编译 bluez 各种版本
  12. C. Get an Even String题解(dp)
  13. 充满哲学命题的科幻巨作—《2001太空漫游》
  14. 16条生活潜规则:没人明说,但很重要
  15. matlab生成特定矩阵
  16. 数字图像处理与应用——图像和视频压缩技术
  17. 我的武林秘籍设计模式之策略模式
  18. abab的四字成语_关于abab的四字成语大全
  19. 频率色散参数和相关时间
  20. python爬虫获取起点中文网人气排行Top100(快速入门,新手必备!)

热门文章

  1. 软件测试工程师--面试题
  2. 12,jesd204b实战操作笔记
  3. android模拟器克隆app,易语言一键克隆/启动安卓模拟器
  4. windows安装ffmpeg,yasm,opencv
  5. 人工智能对摄影测量与遥感的影响与挑战——龚健雅院士
  6. 厦门92坐标参数讨论
  7. android 大文件查找,大文件查找软件(WizTree)
  8. 共识算法PBFT和Raft
  9. Python常用模块-20个常用模块总结
  10. 如何利用直通车快速打造爆款?