分享个 CTF 小工具 bruteHASH - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
faketemp

分享个 CTF 小工具 bruteHASH

  •  
  •   faketemp 2020 年 10 月 3 日 4134 次点击
    这是一个创建于 2030 天前的主题,其中的信息可能已经有所发展或是发生改变。

    别问,问就是为了 CTF

    思路源于一次三小时十二题的内部 CTF 竞赛,其中一道简单 MISC 给出明文范围(字母数字)和 MD5 开头,要求穷举出 flag这当然不难,python 十几行代码搞定,但是运行出结果竟然用了近 20 分钟,感觉十分没有性价比啊!!

    于是想找一个高性能(C/C++)指定格式 HASH 穷举工具,呃 无果……

    为了 CTF 需要构造 HASH 时能够“一把梭”,于是有了年轻人的第一个“轮子”

    功能

    随机或穷举指定格式 HASH 值,输出符合条件的"明文 HASH"

    支持指定明文格式
    不限定明文格式随机字符穷举
    自定义穷举字符集
    CTF 常见 HASH(MD4/MD5/SHA1)
    设置 HASH 开头、结尾或包含字符串

    帮助

    Usage of bruteHASH.exe: -a string 设置明文格式,支持?占位符,如 flag{?????}(Linux 下字符串请使用引号包裹) -aa 不限制明文,随机穷举指定格式 HASH -b string 按顺序组合穷举字符集(字符集顺序会严重影响爆破速度,请尽量精确) d 数字 | l 小写字母 | u 大写字母 | h 十六进制字符集 | p 特殊字符 | r 可见字符 例如:指定爆破字符集为数字、字母 -b=dlu -bb string 自定义穷举字符集 -c string 设置目标 HASH 值包含字符串 -e string 设置目标 HASH 值结束字符串 -i int 设置目标 MD5 位数 16 位或 32 位 (default 32) -m int 设置 HASH 算法 0 MD4 | 1 MD5 | 2 SHA1 (default 1) -s string 设置目标 HASH 值起始字符串 

    示例

    由于众所周知的原因,示例图片无法加载显示
    https://github.com/playGitboy/bruteHASH/tree/master/img

    随机字符穷举,HASH 中包含"6377666"的 SHA1 > bruteHASH -aa -c=6377666 -m=2 随机字符穷举,"0e"开头的 MD4 > bruteHASH -aa -s=0e -m=0 用自定义字符集穷举"c???new???"明文,32 位 MD5 包含字符串"3b605234ed" > bruteHASH -a="c???new???" -bb=abcdefnutuvw_ -c=3b605234ed 用数字、大写字母穷举明文"flag{?????}"(?代表未知 5 位),16 位 MD5 开头为"b6dff925" > bruteHASH -a="flag{?????}" -b=du -s=b6dff925 -i=16 

    声明

    CTF 偶尔需要用到"特殊"HASH,比如 MISC 中已知个别明文字符和部分 HASH,要穷举 flag 明文; WEB 中构造 MYSQL 注入,要用指定字符集构造一个以"xxxxxxxx"开头的 MD5 ; PHP 弱类型 HASH 比较需要构造"0e"开头的 HASH 等等。但"爆破"HASH 的工具不少,一个好用的穷举生成 HASH 的工具都没

    虽然"人生苦短,该用 python",但为了兼顾性能和开发效率,做了一个艰难的决定
    学用 golang 试一试?

    首次使用 golang,本着能跑就行的初心聚合"云智慧"完成
    代码不精简有 BUG 且效率未达最佳,如需吐槽请 fork 后 show your code...

    毕竟刚学首用,对 golang 很多特性还没了解,我知道代码很渣但目前已尽力,不知道从功能性、稳定性、效率等方面如何才能更优化,诚邀 golang 大佬批评指证

    项目地址

    https://github.com/playGitboy/bruteHASH

    第 1 条附言    2020 年 10 月 9 日
    9 条回复    2020-10-06 07:04:40 +08:00
    danbai
        1
    danbai  
    PRO
       2020 年 10 月 3 日 via Android
    借个楼,golang 写工具确实香。我没事也写些小工具整合成一个 cli 工具集。https://github.com/danbai225/A_Toolset
    webshe11
        2
    webshe11  
       2020 年 10 月 3 日   1
    这种场合我以前都用这个

    https://github.com/kmyk/libproofofwork

    不知道对比性能如何
    faketemp
        3
    faketemp  
    OP
       2020 年 10 月 3 日
    @webshe11 看起来应该是好东西 但是安装使用太复杂了点(lll ω)
    在 windows 和 linux 使用 pip 和 pip3 都尝试了一遍 各种报错
    根据报错又去安装 cmake 再试几遍 又是一堆其他错误

    折腾半个多小时 只能放弃 ……
    webshe11
        4
    webshe11  
       2020 年 10 月 3 日 via Android
    @faketemp 是的 这个 libproofofwork 是用 Python API 调用一个编译的东西,CTF 写 Python 脚本好使
    现在我也不知道在 Windows 系统怎么装,但是 Linux 和 Mac 简单
    faketemp
        5
    faketemp  
    OP
       2020 年 10 月 3 日
    @webshe11 在 wsl 下安装 cmake 最新版 pip 尝试多次各种错误安装失败
    求教大佬安装指引
    webshe11
        6
    webshe11 &bsp;
       2020 年 10 月 3 日   1
    @faketemp WSL 我不太清楚,不过我在我的 Ubuntu 18.04 和 20.04 虚拟机试了一下,应该差不多

    ```bash
    apt-get update &&
    apt-get install -y build-essential cmake libssl-dev &&
    python3 -m pip install -U pip &&
    python3 -m pip install -U proofofwork
    ```

    有的系统还需要 export `OPENSSL_INCLUDE_DIR` 和 `OPENSSL_ROOT_DIR` 环境变量,有的环境可能还需要 export `LDFLAGS` `CFLAGS` `CPPFLAGS` 环境变量
    faketemp
        7
    faketemp  
    OP
       2020 年 10 月 5 日
    本着“先从无到有,再从有到精”的整体思路,继续更新添加新功能

    支持 md4/md5/sha1/sha224/sha256/sha384/sha512 等多种 HASH 类型;
    增加-t 选项,允许 fuzz 批量输出匹配记录;
    明文和 HASH 都支持"?"占位符,方便精准控制 ;
    优化程序处理逻辑……

    优点:
    多平台支持、绿色单文件、HASH 支持全

    缺点:
    虽和 python 对比效率大幅提升,但和 C 比起来还是欠佳
    leishi1313
        8
    leishi1313  
       2020 年 10 月 6 日 via Android
    试试看 hashcat ?
    faketemp
        9
    faketemp  
    OP
       2020 年 10 月 6 日
    @leishi1313
    * 找出几个 第 7 位开始是"637766"的 SHA1 值和对应明文
    * 已知 16 位 MD5 以"95ce2a"结尾,找出对应"c???new???"完整字符串

    请教类似这些需求 hashcat 命令如何写?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2756 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 13:01 PVG 21:01 LAX 06:01 JFK 09:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86