0x01 前言

感觉这个工具还可以,在这里学习一下用法

0x01 场景

去除重复项

面对合并后的超大字典,还是不舍得只要频率高的词,路径字典有时候还是多多益善。去重下,照单全收

1
python3 pydictor.py -tool uniqifer uniq.txt --output 1.txt

或者直接合并加去重

1
python3 pydictor.py -tool uniqbiner /path --output uniq.txt

字典合并

字典都不是凭空捏造或生成的,一般都会参考前辈们公布的字典。所以,先收集百八十个字典,放到一个目录下,把字典合并起来吧。

  1. 合并目录/网站路径爆破字典

  2. 合并子域名字典

  3. 合并用户名字典

  4. 合并弱密码字典

  5. 其它各式各样的字典

1
python3 pydictor.py -tool combiner /my/dict/dirpath -o comb.txt

词频统计

但是有时候我们通常不需要那么大的字典,选合并后字典的出现频率最高的前1000条保存吧。筛选出最常用的网站路径/子域名/用户名/弱密码/…

修改 lib/data/data.py 中 counter_split 变量指定的分隔符 ( 默认 “\n” ),也可以统计其它字符分隔的字典词频.

1
python3 pydictor.py -tool counter vs 222.txt 100

枚举数字字典

准备好字典了,拿最基础的试试手

1.爆破 4 位或 6 位数字手机短信验证码

2.爆破用户名ID值

生成 4 位纯数字字典

1
python pydictor.py -base d --len 4 4

简单用户名字典

不能确定是否存在某用户时,试试 1 位到 3 位的拼音字典,加上 123456 这样的几个弱口令,说不定就有意外收获:

1
python pydictor.py -base L --len 1 3 -o dict.txt

后台管理员密码字典(明文传输)

经常遇到的测试场景了,就是一个登录页,把收集到的信息都用上,生成后台爆破字典,比如

域名: test.land.com.cn

编辑名: 张美丽、Adaor、midato

公司名: 上海美丽大米有限责任公司(如有雷同纯属巧合)

座机: 568456

地址: xxx 园区 A 座 312 室

把自己常用的弱口令字典复制到 wordlist/Web 目录下,最终生成的字典会包含它们;

然后把下列信息写入 /data.txt

1
2
3
4
5
6
7
8
9
10
11
12
test
land
zhangmeili
meili
zml
Adaor
midato
meilidami
mldm
shmldm
568456
A312

生成字典

1
python pydictor.py -extend /data.txt --level 3 --len 4 16

后台管理员密码字典(前台普通加密)

有时候网站的密码可能不是直接明文传输过去的,程序员会用 js 简单加密下再传输过去,比如 base64 编码、md5 加密,这时候可以用 --encode 参数生成加密字典

1
python pydictor.py -extend /data.txt --level 3 --len 4 16 --encode b64
1
python pydictor.py -extend /data.txt --level 3 --len 4 16 --encode md5

后台管理员密码字典(前台js自定义加密)

高级点的程序员,还喜欢前端自定义个 js 加密方法,把用户名和密码加密后传输过去,比如

image-20221026163024621

这时候,普通爆破工具基本都无能为力了,但是却依旧可以通过 pydictor 来生成字典;

修改 /lib/fun/encode.py 文件的 test_encode() 函数,用 python 语法仿照上图的加密方式再实现一遍加密:

image-20221026163057744

然后运行命令,生成按照前端js加密方法加密后的密码字典,可以直接用burpsuite加载

1
python3 pydictor.py -extend /data.txt --level 3 --len 4 16 --encode test

需要注意的是,一般生成加密字典前要生成一个没加密的字典,因为每一项在文件中的顺序是一致的,所以爆破出来密码后,可以通过行数对照去没加密的字典中查找明文。