diff options
author | van Hauser <vh@thc.org> | 2021-04-20 11:38:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-20 11:38:09 +0200 |
commit | 48cef3c74727407f82c44800d382737265fe65b4 (patch) | |
tree | 07338ec82703c20cc1f78a235ac3ad16e2465bf1 /utils/autodict_ql/strcmp-strings.py | |
parent | f7179e44f6c46fef318b6413d9c00693c1af4602 (diff) | |
parent | 3b5fa3632b0e482b2915709d7fbec827e1d997b9 (diff) | |
download | afl++-48cef3c74727407f82c44800d382737265fe65b4.tar.gz |
Merge pull request #871 from AFLplusplus/dev
push to stable
Diffstat (limited to 'utils/autodict_ql/strcmp-strings.py')
-rw-r--r-- | utils/autodict_ql/strcmp-strings.py | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/utils/autodict_ql/strcmp-strings.py b/utils/autodict_ql/strcmp-strings.py new file mode 100644 index 00000000..9c2520c9 --- /dev/null +++ b/utils/autodict_ql/strcmp-strings.py @@ -0,0 +1,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 + "/strcmp-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() |