├── README.md ├── easyDirectory.py ├── frequency.py ├── judge.py ├── keyword.txt ├── main.py ├── social.py ├── social_pass.txt ├── top500_user.txt └── weak.txt /README.md: -------------------------------------------------------------------------------- 1 | # dictBuilder 2 | >字典生成和字典整理工具,生成基于姓名关联的字典、爆破字典等,后渗透阶段方便对数据进行筛选、整理。 3 | 4 | 5 | # 结构 6 | 7 | dictBuilder/ 8 | ├── easyDirectory.py 9 | ├── frequency.py 10 | ├── judge.py 11 | ├── keyword.txt 12 | ├── main.py 13 | └── README.md 14 | 15 | # 用法 16 | 17 | Usage: main.py [options] 18 | 19 | Options: 20 | 21 | -h, --help show this help message and exit 22 | -f FILE, --file=FILE input file 23 | -m [normal|verify|frequency], --mode=[normal|verify|frequency] 24 | select mode,default=normal 25 | -c CSV, --csv=CSV set input file as csv format 26 | -o FILE, --output=FILE 27 | output dirctory file 28 | -n NUM, --num=NUM input number 29 | 30 | 31 | # 例子 32 | 33 | 1. 生成验证码字典,默认4个字符,生成更多字符加入-n参数 34 | 35 | python mian.py -m "verify" 36 | 37 | 2. 根据输入的字符串生成4位验证码字典,生成更多字符加入-n参数 38 | 39 | python mian.py -m "verify" -s "abcdefghijklmnopqrstuvwxyz0123456789" 40 | 41 | 3. 生成辅助爆破字典,-o指定输出的文件名 42 | 43 | python main.py -f top500_user.txt -m "social" -o "output.txt" 44 | 45 | 4. 迭代生成字符字典,-o指定输出的文件名,默认是output.txt 46 | 47 | python main.py -f keyword.txt -m "normal" -o "output.txt" 48 | 49 | 5. 筛选使用最频繁使用的密码,-n指定要筛选的个数 50 | 51 | python main.py -f keyword.txt -m "frequency" -n 100 52 | 53 | 54 | -------------------------------------------------------------------------------- /easyDirectory.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | #coding=utf-8 3 | 4 | import itertools 5 | import string 6 | 7 | res = [] 8 | 9 | #社工字典生成函数 10 | def normalDir(strArr, num): 11 | for i in range(1, len(strArr)+1): 12 | for ele in itertools.permutations(strArr, i): 13 | res.append('%s' %(''.join(ele))) 14 | return res 15 | 16 | #验证码生成函数 17 | def verifyDir(strArr, num): 18 | for ele in itertools.product(strArr, repeat=num): 19 | res.append('%s' %(''.join(ele))) 20 | return res 21 | -------------------------------------------------------------------------------- /frequency.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | #coding=utf-8 3 | 4 | from collections import Counter 5 | 6 | resArr = [] 7 | 8 | def frequency(wordArr, num=100): 9 | ''' 10 | 获取使用最频繁的单词 11 | ''' 12 | sortList = Counter(wordArr).most_common(num) 13 | for ele in sortList: 14 | resArr.append(ele[0]) 15 | return resArr 16 | -------------------------------------------------------------------------------- /judge.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | #coding=utf-8 3 | 4 | from optparse import OptionParser 5 | 6 | #写入文件函数 7 | def writeFile(fp, arr): 8 | for ele in arr: 9 | if ele != arr[-1:]: 10 | fp.write(ele+'\n') 11 | else: 12 | fp.write(ele) 13 | 14 | #判断是否选择csv文件格式 15 | def judgeCsv(options, text): 16 | wordArr = [] 17 | for line in text.readlines(): 18 | if options.csv != None: 19 | ele = line.split(',') 20 | for e in ele: 21 | wordArr.append(e) 22 | else: 23 | wordArr.append(line.strip('\n')) 24 | return wordArr 25 | 26 | #判断是否为数字 27 | def judgeNum(options, wordArr, func): 28 | resArr = [] 29 | if options.num != None: 30 | try: 31 | resArr = func(wordArr, int(options.num)) 32 | return resArr 33 | except: 34 | exit("error:请输入一个数字") 35 | else: 36 | if func.__name__ == "social": 37 | resArr = func(wordArr) 38 | elif func == "frequency": 39 | resArr = func(wordArr, 100) 40 | else: 41 | resArr = func(wordArr, 4) 42 | return resArr 43 | 44 | #判断是否输入文件名 45 | def judgeOut(options, resArr): 46 | if options.output != None: 47 | fp = open(options.output, 'w+') 48 | writeFile(fp, resArr) 49 | fp.close() 50 | else: 51 | fp = open("output.txt", "w+") 52 | writeFile(fp, resArr) 53 | fp.close() 54 | -------------------------------------------------------------------------------- /keyword.txt: -------------------------------------------------------------------------------- 1 | admin 2 | root 3 | sa 4 | haha 5 | ok 6 | you 7 | love 8 | me 9 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | #coding=utf-8 3 | 4 | import string 5 | from optparse import OptionParser 6 | from frequency import frequency 7 | from social import social 8 | from easyDirectory import * 9 | from judge import * 10 | 11 | if __name__=='__main__': 12 | parser = OptionParser() 13 | parser.add_option("-f", "--file", dest="filename", 14 | help="input file", metavar="FILE") 15 | parser.add_option("-m", "--mode", dest="mode", 16 | help="select mode,default=normal", metavar="[normal|verify|frequency|social]") 17 | parser.add_option("-s", "--string", dest="string", 18 | help="input string when use verify mode", metavar="STR") 19 | parser.add_option("-c", "--csv", dest="csv", 20 | help="set input file as csv format", metavar="CSV") 21 | parser.add_option("-o", "--output", dest="output", 22 | help="output dirctory file", metavar="FILE") 23 | parser.add_option("-n", "--num", dest="num", 24 | help="input number", metavar="NUM") 25 | 26 | (options, args) = parser.parse_args() 27 | 28 | 29 | wordArr = [] 30 | resArr = [] 31 | 32 | #输入文件并选择整理最常用密码生成字典 33 | if options.filename != None and options.mode == "frequency": 34 | text = open(options.filename, 'r') 35 | wordArr = judgeCsv(options, text) 36 | resArr = judgeNum(options, wordArr, frequency) 37 | judgeOut(options, resArr) 38 | 39 | #生成验证码字典 40 | elif options.mode == "verify": 41 | if options.filename != None: 42 | text = open(options.filename, 'r') 43 | wordArr = judgeCsv(options, text) 44 | elif options.string != None: 45 | #根据输入的字符串生成验证码字典 46 | wordArr = options.string 47 | else: 48 | #默认是数字的验证码 49 | wordArr = string.digits 50 | 51 | resArr = judgeNum(options, wordArr, verifyDir) 52 | judgeOut(options, resArr) 53 | 54 | #生产辅助社工爆破字典 55 | elif options.filename != None and options.mode == "social": 56 | text = open(options.filename, 'r') 57 | wordArr = judgeCsv(options, text) 58 | resArr = judgeNum(options, wordArr, social) 59 | judgeOut(options, resArr) 60 | 61 | 62 | #生成普通的迭代字典(默认的模式) 63 | elif options.filename != None or (options.filename != None and options.mode == "normal"): 64 | text = open(options.filename, 'r') 65 | wordArr = judgeCsv(options, text) 66 | resArr = judgeNum(options, wordArr, normalDir) 67 | judgeOut(options, resArr) 68 | 69 | else: 70 | parser.error("请输入正确的参数") 71 | -------------------------------------------------------------------------------- /social.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | #coding=utf-8 3 | 4 | resArr = [] 5 | 6 | #社工字典生成 7 | def social(wordArr): 8 | for ele in wordArr: 9 | ele = ele.strip('\n').strip('\r') 10 | with open('weak.txt','r') as f: 11 | for item in f.readlines(): 12 | s = item.replace('{user}', ele) 13 | resArr.append(s.strip('\n')) 14 | f.seek(0) 15 | return resArr 16 | -------------------------------------------------------------------------------- /social_pass.txt: -------------------------------------------------------------------------------- 1 | admin 2 | admin0 3 | admin1 4 | admin123 5 | admin321 6 | admin123456 7 | admin654321 8 | admin@123 9 | admin.123 10 | admin.123456 11 | admin.. 12 | admin!@# 13 | admin#@! 14 | admin!@#$%^ 15 | root 16 | root0 17 | root1 18 | root123 19 | root321 20 | root123456 21 | root654321 22 | root@123 23 | root.123 24 | root.123456 25 | root.. 26 | root!@# 27 | root#@! 28 | root!@#$%^ 29 | sa 30 | sa0 31 | sa1 32 | sa123 33 | sa321 34 | sa123456 35 | sa654321 36 | sa@123 37 | sa.123 38 | sa.123456 39 | sa.. 40 | sa!@# 41 | sa#@! 42 | sa!@#$%^ 43 | -------------------------------------------------------------------------------- /top500_user.txt: -------------------------------------------------------------------------------- 1 | zhangwei 2 | wangwei 3 | wangfang 4 | liwei 5 | lina 6 | zhangmin 7 | lijing 8 | wangjing 9 | liuwei 10 | wangxiuying 11 | zhangli 12 | lixiuying 13 | wangli 14 | zhangjing 15 | zhangxiuying 16 | liqiang 17 | wangmin 18 | limin 19 | wanglei 20 | liuyang 21 | wangyan 22 | wangyong 23 | lijun 24 | zhangyong 25 | lijie 26 | zhangjie 27 | zhanglei 28 | wangqiang 29 | lijuan 30 | wangjun 31 | zhangyan 32 | zhangtao 33 | wangtao 34 | liyan 35 | wangchao 36 | liming 37 | liyong 38 | wangjuan 39 | liujie 40 | liumin 41 | lixia 42 | lili 43 | zhangjun 44 | wangjie 45 | zhangqiang 46 | wangxiulan 47 | wanggang 48 | wangping 49 | liufang 50 | zhangyan 51 | liuyan 52 | liujun 53 | liping 54 | wanghui 55 | wangyan 56 | chenjing 57 | liuyong 58 | liling 59 | liguiying 60 | wangdan 61 | ligang 62 | lidan 63 | liping 64 | wangpeng 65 | liutao 66 | chenwei 67 | zhanghua 68 | liujing 69 | litao 70 | wangguiying 71 | zhangxiulan 72 | lihong 73 | lichao 74 | liuli 75 | zhangguiying 76 | wangyulan 77 | liyan 78 | zhangpeng 79 | lixiulan 80 | zhangchao 81 | wangling 82 | zhangling 83 | lihua 84 | wangfei 85 | zhangyulan 86 | wangguilan 87 | wangying 88 | liuqiang 89 | chenxiuying 90 | liying 91 | lihui 92 | limei 93 | chenyong 94 | wangxin 95 | lifang 96 | zhangguilan 97 | libo 98 | yangyong 99 | wangxia 100 | liguilan 101 | wangbin 102 | lipeng 103 | zhangping 104 | zhangli 105 | zhanghui 106 | zhangyu 107 | liujuan 108 | libin 109 | wanghao 110 | chenjie 111 | wangkai 112 | chenli 113 | chenmin 114 | wangxiuzhen 115 | liyulan 116 | liuxiuying 117 | wangping 118 | wangping 119 | zhangbo 120 | liuguiying 121 | yangxiuying 122 | zhangying 123 | yangli 124 | zhangjian 125 | lijun4 126 | lili 127 | wangbo 128 | zhanghong 129 | liudan 130 | lixin 131 | wangli 132 | yangjing 133 | liuchao 134 | zhangjuan 135 | yangfan 136 | liuyan 137 | liuying 138 | lixue 139 | lixiuzhen 140 | zhangxin 141 | wangjian 142 | liuyulan 143 | liuhui 144 | liubo 145 | zhanghao 146 | zhangming 147 | chenyan 148 | zhangxia 149 | chenyan 150 | yangjie 151 | wangshuai 152 | lihui 153 | wangxue 154 | yangjun 155 | zhangxu 156 | liugang 157 | wanghua 158 | yangmin 159 | wangning 160 | lining 161 | wangjun 162 | liuguilan 163 | liubin 164 | zhangping 165 | wangting 166 | chentao 167 | wangyumei 168 | wangna 169 | zhangbin 170 | chenlong 171 | lilin 172 | wangyuzhen 173 | zhangfengying 174 | wanghong 175 | lifengying 176 | yangyang 177 | liting 178 | zhangjun 179 | wanglin 180 | chenying 181 | chenjun 182 | liuxia 183 | chenhao 184 | zhangkai 185 | wangjing 186 | chenfang 187 | zhangting 188 | yangtao 189 | yangbo 190 | chenhong 191 | liuhuan 192 | wangyuying 193 | chenjuan 194 | chengang 195 | wanghui 196 | zhangying 197 | zhanglin 198 | zhangna 199 | zhangyumei 200 | wangfengying 201 | zhangyuying 202 | lihongmei 203 | liujia 204 | liulei 205 | zhangqian 206 | liupeng 207 | wangxu 208 | zhangxue 209 | liyang 210 | zhangxiuzhen 211 | wangmei 212 | wangjianhua 213 | liyumei 214 | wangying 215 | liuping 216 | yangmei 217 | lifei 218 | wangliang 219 | lilei 220 | lijianhua 221 | wangyu 222 | chenling 223 | zhangjianhua 224 | liuxin 225 | wangqian 226 | zhangshuai 227 | lijian 228 | chenlin 229 | liyang 230 | chenqiang 231 | zhaojing 232 | wangcheng 233 | zhangyuzhen 234 | chenchao 235 | chenliang 236 | liuna 237 | wangqin 238 | zhanglanying 239 | zhanghui 240 | liuchang 241 | liqian 242 | yangyan 243 | zhangliang 244 | zhangjian 245 | liyun 246 | zhangqin 247 | wanglanying 248 | liyuzhen 249 | liuping 250 | chenguiying 251 | liuying 252 | yangchao 253 | zhangmei 254 | chenping 255 | wangjian 256 | liuhong 257 | zhaowei 258 | zhangyun 259 | zhangning 260 | yanglin 261 | zhangjie 262 | gaofeng 263 | wangjianguo 264 | yangyang 265 | chenhua 266 | yanghua 267 | wangjianjun 268 | yangliu 269 | liuyang 270 | wangshuzhen 271 | yangfang 272 | lichunmei 273 | liujun 274 | wanghaiyan 275 | liuling 276 | chenchen 277 | wanghuan 278 | lidongmei 279 | zhanglong 280 | chenbo 281 | chenlei 282 | wangyun 283 | wangfeng 284 | wangxiurong 285 | wangrui 286 | liqin 287 | liguizhen 288 | chenpeng 289 | wangying 290 | liufei 291 | wangxiuyun 292 | chenming 293 | wangguirong 294 | lihao 295 | wangzhiqiang 296 | zhangdan 297 | lifeng 298 | zhanghongmei 299 | liufengying 300 | liyuying 301 | wangxiumei 302 | lijia 303 | wanglijuan 304 | chenhui 305 | zhangtingting 306 | zhangfang 307 | wangtingting 308 | wangyuhua 309 | zhangjianguo 310 | lilanying 311 | wangguizhen 312 | lixiumei 313 | chenyulan 314 | chenxia 315 | liukai 316 | zhangyuhua 317 | liuyumei 318 | liuhua 319 | libing 320 | zhanglei 321 | wangdong 322 | lijianjun 323 | liuyuzhen 324 | wanglin 325 | lijianguo 326 | liying 327 | yangwei 328 | liguirong 329 | wanglong 330 | liuting 331 | chenxiulan 332 | zhangjianjun 333 | lixiurong 334 | liuming 335 | zhoumin 336 | zhangxiumei 337 | lixuemei 338 | huangwei 339 | zhanghaiyan 340 | wangshulan 341 | lizhiqiang 342 | yanglei 343 | lijing 344 | litingting 345 | zhangxiurong 346 | liujianhua 347 | wanglili 348 | zhaomin 349 | chenyun 350 | lihaiyan 351 | zhangguirong 352 | zhangjing 353 | liuli 354 | likai 355 | zhangyu 356 | zhangfeng 357 | liuxiulan 358 | zhangzhiqiang 359 | lilong 360 | lixiuyun 361 | lixiufang 362 | lishuai 363 | lixin 364 | liuyun 365 | zhanglili 366 | lijie 367 | zhangxiuyun 368 | wangshuying 369 | wangchunmei 370 | wanghongmei 371 | chenbin 372 | liyuhua 373 | liguifang 374 | zhangying 375 | chenfei 376 | wangbo 377 | liuhao 378 | huangxiuying 379 | liuyuying 380 | lishuzhen 381 | huangyong 382 | zhouwei 383 | wangxiufang 384 | wanglihua 385 | wangdandan 386 | libin 387 | wangguixiang 388 | wangkun 389 | liuhui 390 | lixiang 391 | zhangrui 392 | zhangguizhen 393 | wangshuhua 394 | liushuai 395 | zhangfei 396 | zhangxiufang 397 | wangyang 398 | chenjie 399 | zhangguifang 400 | zhanglijuan 401 | wangrong 402 | wuxiuying 403 | yangming 404 | liguixiang 405 | mali 406 | liuqian 407 | yangxiulan 408 | yangling 409 | wangxiuhua 410 | yangping 411 | wangbin 412 | liliang 413 | lirong 414 | liguizhi 415 | lilin 416 | liyan 417 | lijian 418 | wangbing 419 | wangguifang 420 | wangming 421 | chenmei 422 | zhangchunmei 423 | liyang 424 | wangyan 425 | wangdongmei 426 | liufeng 427 | lixiuhua 428 | lidandan 429 | yangxue 430 | liuyuhua 431 | maxiuying 432 | zhanglihua 433 | zhangshuzhen 434 | lixiaohong 435 | zhangbo 436 | wangxin 437 | wangguizhi 438 | zhaoli 439 | zhangxiuhua 440 | zhanglin 441 | huangmin 442 | yangjuan 443 | wangjinfeng 444 | zhoujie 445 | wanglei 446 | chenjianhua 447 | liumei 448 | yangguiying 449 | lishuying 450 | chenyuying 451 | yangxiuzhen 452 | sunxiuying 453 | zhaojun 454 | zhaoyong 455 | liubing 456 | yangbin 457 | liwen 458 | chenlin 459 | chenping 460 | sunwei 461 | zhangli 462 | chenjun 463 | zhangnan 464 | liuguizhen 465 | liuyu 466 | liujianjun 467 | zhangshuying 468 | lihongxia 469 | zhaoxiuying 470 | libo 471 | wangli 472 | zhangrong 473 | zhangfan 474 | wangjianping 475 | zhangguizhi 476 | zhangyu 477 | zhouyong 478 | zhangkun 479 | xuwei 480 | wangguihua 481 | liuqin 482 | zhoujing 483 | xumin 484 | liutingting 485 | xujing 486 | yanghong 487 | wanglu 488 | zhangshulan 489 | zhangwen 490 | yangyan 491 | chenguilan 492 | zhouli 493 | lishuhua 494 | chenxin 495 | machao 496 | liujianguo 497 | liguihua 498 | wangfenglan 499 | lishulan 500 | chenxiuzhen -------------------------------------------------------------------------------- /weak.txt: -------------------------------------------------------------------------------- 1 | {user} 2 | {user}0 3 | {user}1 4 | {user}123 5 | {user}321 6 | {user}123456 7 | {user}654321 8 | {user}@123 9 | {user}.123 10 | {user}.123456 11 | {user}.. 12 | {user}!@# 13 | {user}#@! 14 | {user}!@#$%^ --------------------------------------------------------------------------------