diff options
author | Alexander Shvedov <60114847+a-shvedov@users.noreply.github.com> | 2024-06-01 13:03:55 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-01 13:03:55 +0300 |
commit | 5fb657f56945dcc7bc2ed2817fac863b69315ac7 (patch) | |
tree | 0101749066affab71fba43989734f3f1e433ef09 /utils/libtokencap/generate_libtoken_dict.sh | |
parent | d2700c7525254e9400227afe2010d366bea2aabf (diff) | |
download | afl++-5fb657f56945dcc7bc2ed2817fac863b69315ac7.tar.gz |
Rename make_dict_v2.sh to generate_libtoken_dict.sh
Diffstat (limited to 'utils/libtokencap/generate_libtoken_dict.sh')
-rw-r--r-- | utils/libtokencap/generate_libtoken_dict.sh | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/utils/libtokencap/generate_libtoken_dict.sh b/utils/libtokencap/generate_libtoken_dict.sh new file mode 100644 index 00000000..1ddec06b --- /dev/null +++ b/utils/libtokencap/generate_libtoken_dict.sh @@ -0,0 +1,45 @@ +#help +usage() { + echo "Usage: $0 -o <target_output> -b <target_bin> -p <LD_PRELOAD_PATH> [-t <timeout_sec>]" + echo "Options:" + echo " -o Path to target output directory" + echo " -b Path to target program binary" + echo " -p Path to LD_PRELOAD library" + echo " -t Timeout in seconds" + exit 1 +} + +#parse cli options +while getopts ":o:b:p:t:" opt; do + case $opt in + o) target_output="$OPTARG" ;; + b) target_bin="$OPTARG" ;; + p) LD_PRELOAD_PATH="$OPTARG" ;; + t) timeout_sec="$OPTARG" ;; + \?) echo "Invalid option: -$OPTARG" >&2; usage ;; + :) echo "Option -$OPTARG requires an argument." >&2; usage ;; + esac +done + +#check options +if [ -z "$target_output" ] || [ -z "$target_bin" ] || [ -z "$LD_PRELOAD_PATH" ]; then + echo "Error: Missing mandatory opts" >&2 + usage +fi + +# initialize vars +AFL_TOKEN_FILE="${PWD}/temp_output.txt" +AFL_DICT_FILE="$(basename "$target_output").dict" + +#generate token-file +{ + touch "$AFL_TOKEN_FILE" + for i in $(find "$target_output" -type f -name "id*"); do + LD_PRELOAD="$LD_PRELOAD_PATH" \ + timeout -s SIGKILL "$timeout_sec" \ + "$target_bin" "$i" + done +} >"$AFL_TOKEN_FILE" + +# sort & remove duplicates +sort -u "$AFL_TOKEN_FILE" >"$AFL_DICT_FILE" |