Last active
June 22, 2021 05:57
-
-
Save ThoundsN/759340de5e9f1d83a73b27caf8d6c3b1 to your computer and use it in GitHub Desktop.
burplog2jslink
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import base64 | |
import sys | |
import os | |
import json | |
from invoke import run | |
from pathlib import Path | |
import datetime | |
import argparse | |
counter = 0 | |
lengths_jscontent = set() | |
length_ratio = 0.01 | |
def addLength(jscontent): | |
global lengths_jscontent | |
length = len(jscontent) | |
lengths_jscontent.add(length) | |
def mightBeSimilarString(jscontent): | |
length = len(jscontent) | |
global lengths_jscontent | |
for i in lengths_jscontent: | |
if length >= i * (1-length_ratio) and length <= i * (1+ length_ratio): | |
return True | |
return False | |
def response2Jscontent(response): | |
jscontent = response.split(2*'\r\n',1)[1] | |
return jscontent | |
def writefile(jscontent,folder): | |
global counter | |
counter +=1 | |
filename = folder+os.sep+str(counter)+".js" | |
with open(filename,'w') as w: | |
w.write(jscontent) | |
return | |
def runLinkfinder(jsfile_outfolder,result_file): | |
cmd =f"/root/links/linkfinder.py -i '{jsfile_outfolder}/*' -o {result_file}" | |
result = run(cmd, hide=True, warn=True) | |
print(result.stdout.splitlines()) | |
print(result.stderr.splitlines()) | |
print(result.ok) | |
if __name__ == '__main__': | |
burplog_infile = sys.argv[1] | |
jsfile_outfolder = sys.argv[2] | |
# parser=argparse.ArgumentParser(description="turn burp js log file into link.html by linkfinder.py") | |
# parser.add_argument('-i','--input',help='burplog_infile',type=) | |
bool_linkfinder = sys.argv[3] | |
working_dir = os.sep.join(os.path.realpath(burplog_infile).split(os.sep)[:-1]) | |
jsfile_outfolder = working_dir + os.sep + jsfile_outfolder | |
Path(jsfile_outfolder).mkdir(parents=True, exist_ok=True) | |
b64_responses = set() | |
with open(burplog_infile,'r') as r: | |
data = json.load(r) | |
for i in data: | |
b64_responses.add(i["response"]) | |
jscontents = set() | |
for b64reponse in b64_responses: | |
response = base64.b64decode(b64reponse).decode('utf-8') | |
jscontent = response2Jscontent(response) | |
if len(jscontent) > 1000: | |
if not mightBeSimilarString(jscontent): | |
jscontents.add(jscontent) | |
addLength(jscontent) | |
for jscontent in jscontents: | |
writefile(jscontent,jsfile_outfolder) | |
if bool_linkfinder == 'y': | |
result_file = f"{working_dir}/linkfinder_{datetime.date.today()}.html" | |
runLinkfinder(jsfile_outfolder,result_file) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment