文章目录

ctf中经常用MD5的截断比较做验证。

ctf中经常用MD5的截断比较做验证。可以使用空间换时间。改了下别人的脚本,几分钟生成了6个多G文件,觉得差不多就停了。。。

生成脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# -*- coding: utf-8 -*-
import hashlib
sum = []
j = 0
f = open("gen_md5.txt", "a")
for i in xrange(1000000000):
tmp = (hashlib.md5(str(i)).hexdigest(),i)
sum.append(tmp)
j = j+1
if(j==10000000):
for i in sum:
f.write("{0} {1}".format(i,"\n"))
j=0
sum = []
f.close()

使用

1
cat gen_md5.txt | grep  \(\'54d7ed

匹配前几位,grep支持正则-E很方便。

或者使用python匹配

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# -*- coding: utf-8 -*-

class Load_Corpus_with_Iteration(object): # 使用迭代器读取
def __init__(self, path):
self.path = path

def __iter__(self):
for line in open(self.path):
yield line.split()

corpus = Load_Corpus_with_Iteration('gen_md5.txt')
for item in corpus:
# print item
if(item[0].startswith("('3322cf")):
print item

参考链接:

http://www.beesfun.com/2017/03/21/【CTF】MD5截断比较/

https://strcpy.me/index.php/archives/685/

文章目录