blob: 270a697c9082eeb6be01511065b01661aa9b6043 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
#!/usr/bin/env python3
# Autodict-QL - Optimal token generation for fuzzing
# Part of AFL++ Project
# Author : Microsvuln - Arash.vre@gmail.com
import os
import string
import binascii
import codecs
import errno
import struct
import argparse
import re
from binascii import unhexlify
def ensure_dir(dir):
try:
os.makedirs(dir)
except OSError as e:
if e.errno != errno.EEXIST:
raise
def parse_args():
parser = argparse.ArgumentParser(
description=(
"Helper - Specify input file analysis and output folder to save corpus for strings in the overall project --------------------------------------------------------------------------- Example usage : python2 thisfile.py outdir str.txt"
)
)
parser.add_argument(
"corpdir", help="The path to the corpus directory to generate strings."
)
parser.add_argument(
"infile",
help="Specify file output of codeql analysis - ex. ooo-atr.txt, analysis take place on this file, example : python2 thisfile.py outdir strings.txt",
)
return parser.parse_args()
def do_string_analysis(corpdir, infile1):
with open(infile1, "r") as f1:
lines = f1.readlines()[1:]
f1.close()
new_lst1 = []
n = 1
for i, num1 in enumerate(lines):
if i != 0:
new_lst1.append(num1)
# print("num : %s" % num1)
str11 = str(num1)
str11 = str11.replace("|", "")
str11 = str11.replace("\n", "")
str11 = str11.lstrip()
str11 = str11.rstrip()
str11 = str(str11)
if (
(" " in str11)
or (")" in str11)
or ("(" in str11)
or ("<" in str11)
or (">" in str11)
):
print("Space / Paranthesis String : %s" % str11)
else:
with open(corpdir + "/memcmp-str{0}".format(n), "w") as file:
file.write(str11)
print(
"AFL++ Autodict-QL by Microsvuln : Writing Token : %s"
% str11
)
n = n + 1
def main():
args = parse_args()
ensure_dir(args.corpdir)
do_string_analysis(args.corpdir, args.infile)
if __name__ == "__main__":
main()
|