From 8a101843792913f4380bc365c38654d1c4667e0e Mon Sep 17 00:00:00 2001 From: Roman Hergenreder Date: Wed, 4 Oct 2023 12:24:41 +0200 Subject: [PATCH] template features --- fileserver.py | 12 +++++++++--- template.py | 6 +++--- util.py | 7 +++++++ win/FullPowers.exe | Bin 0 -> 36864 bytes 4 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 win/FullPowers.exe diff --git a/fileserver.py b/fileserver.py index 2fa2504..7a43bf8 100755 --- a/fileserver.py +++ b/fileserver.py @@ -79,9 +79,14 @@ class FileServerRequestHandler(BaseHTTPRequestHandler): result = route(self) blacklist_headers = ["transfer-encoding", "content-length", "content-encoding", "allow", "connection"] - status_code = 200 if len(result) < 1 else result[0] - data = b"" if len(result) < 2 else result[1] - headers = { } if len(result) < 3 else result[2] + if isinstance(result, tuple): + status_code = 200 if len(result) < 1 else result[0] + data = b"" if len(result) < 2 else result[1] + headers = { } if len(result) < 3 else result[2] + else: + status_code = result + data = b"" + headers = {} if path in self.server.dumpRequests: headers["Access-Control-Allow-Origin"] = "*" @@ -123,6 +128,7 @@ class FileServerRequestHandler(BaseHTTPRequestHandler): print("==========") except Exception as e: print("Exception on handling http", str(e)) + raise e def log_message(self, format, *args): if self.server.logRequests: diff --git a/template.py b/template.py index 3dd38d1..72d3ee3 100755 --- a/template.py +++ b/template.py @@ -4,10 +4,10 @@ import sys def generate_template(base_url, features): - if "proxy" in features or "burp" in features: + if "proxies" in features or "burp" in features: proxy = """ - if \"proxy\" not in kwargs: - kwargs[\"proxy\"] = {\"http\":\"http://127.0.0.1:8080\", \"https\":\"http://127.0.0.1:8080\"} + if \"proxies\" not in kwargs: + kwargs[\"proxies\"] = {\"http\":\"http://127.0.0.1:8080\", \"https\":\"http://127.0.0.1:8080\"} """ else: proxy = "" diff --git a/util.py b/util.py index 4e76d95..ac2db6b 100755 --- a/util.py +++ b/util.py @@ -83,6 +83,13 @@ def assert_header_present(res, header, err=None): err = f"[-] '{res.url}' did not return header: {header}" if err is None else err exit_with_error(res, err) +def assert_empty(res, err=None): + if not res.content or len(res.content) == 0: + return + + err = f"[-] '{res.url}' did not return unexpected data" if err is None else err + exit_with_error(res, err) + def assert_not_empty(res, err=None): if len(res.content) > 0: return diff --git a/win/FullPowers.exe b/win/FullPowers.exe new file mode 100644 index 0000000000000000000000000000000000000000..cee79b147627ac641a131df98569e351ee4934dc GIT binary patch literal 36864 zcmeHw4R}<=)&Fdg4IvPA`B)5!vfu(i1p+}0U$RSf@kVzsLIPC5BqSS>l8^0vK)|nH zlFEABn%dS#Y+5W-4ykW9|iop|KFLpclRbF!D`?C z^M9VVo9FJ#oH=vOnKNh3oSA!X)^lA8OJO-{kF=Rh3l|53NT9F2>5goywm1#dSAmupTyv4NDr4$*usT zP(Xu=keYekZlHwnNsOg(P$Fer0FV;#NoFNmv_@)MKm`#kAv_gAS>|p+b7Bx>tc%iJ zjEzz0p~P6H5UFz`W4RpA|ChO*u{18IT3^7}DjMJcJ~M*e`XK5)U5GCdi2APQi=vgW zk{SN;(qJiLt#$xFlPy*+B-+OgvzZ~#SoRP=TX8{G41Lpo?C9kTpFre&+=W_F=(qJ) z+y?D4`~iO%z+5L$WQg9KxO5*o@%4MF>ww6ItrL}m_Z=M)vUVYLZ{Yv(k`yt1d=F!7 zht!W0cH7dVaG}lY4m)j`ZWOJ{SFDs8-^rHbkEKY^wrUTVmtuKkF=LW^G`3e!6j#mx zDIBy}-EzAmKQGB?ilvRJ8~0}y-*A1LICx0m)i$#fuC`_J21M8{$;O-S0(Q=R2|RNf z=YsCb!QoOQV}z5jSQQxLoODNwS(vjqN96Y+OOq7K)fi1lJ}oszO-)ZiB1!I0EK>k% zj)ul678`PMCrJDXjbc+k;)L-D5?qp>RV*hltDE07HQft{{Dsu+v}FTBQ7nH#g*$@c zUK7U!%~6EQX?7yVY5sy}9{B<^tLEl#LEj}v6c9;v+p?ud9{T9CWjXec8M<XpVo3uUiGgNZezV4F2vHtIyq2oG77~O3BFW3mQUt6N%fz^lFCoV} zzLd~j{#+;IodjtI?n0QSIRjQ`^z*!U2R(>$lDboDOwv}x(Y z&`$O!YH_0|o}(7+^LedFEzT0f32JeYC{9(2qfw*@Cw6$!5j{IX7djjc3T#dNy!gUW|EEOLEeW{N!o`=om+gvn#7XP zi#{zDIme{PVntdAUv;Y_zweX}?peu(G&oIH9>|wtuI2;vw@Trg;58zf6*uN}wi|0! zeQXTGpd!RLOk!Z#TP68LELBqD0fSgau&7A;nxpmOrESvu_KlX%_=@oO zTV!|}q727FA`OXVp%lQu zQRl2QD%@WR`6I@aL_mHSG-#~z&D``P*`O4dCHd-1)e>hRUbUZWHv}{GTDf=!V;7OM zq|Vh?oIsf*6(1oVg!`0y1gAX!<>6c;^zXULfvJio;tLT~G;Yeo)c-~%v}|fV1

{ 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 U>$cWtt9F+F!2f*yzt_P31qbJ;00000 literal 0 HcmV?d00001