expload/expload.py

55 lines
1.7 KiB
Python
Raw Normal View History

2024-09-20 09:53:08 +00:00
import tempfile
from pyfsig import constants
import httpx
2024-09-20 09:53:08 +00:00
import mimetypes
2024-09-21 11:02:56 +00:00
import exploadlib.parse
2024-09-20 09:53:08 +00:00
mimetypes.init()
def grabsig(ext):
for sig in constants.SIGNATURES:
if sig["file_extension"] == ext:
return "".join([chr(h) for h in sig["hex"]]).encode("utf-8"), mimetypes.types_map[f".{ext}"]
def fileupload():
ext=args.ext
name=args.name
filename=args.filename if not args.doubleextend else ".".join(args.filename.split(".")[0:-1])+f".{args.ext}."+args.filename.split(".")[-1]
2024-09-20 09:53:08 +00:00
with open(args.payload,"r") as payload:
content=payload.read().encode("utf-8")
with tempfile.NamedTemporaryFile() as tmp:
2024-09-20 10:21:30 +00:00
try:
sig,mime=grabsig(ext)
except TypeError:
print("Error: most likely this file type is not in the available signature list")
exit()
2024-09-20 09:53:08 +00:00
tmp.write(sig)
tmp.write(b"\n")
tmp.write(content)
tmp.seek(0)
files = {name: (filename, tmp, mime)}
with httpx.Client(http2=args.http2) as client:
try:
r = client.post(args.url, files=files, headers=args.headers)
except httpx.ReadTimeout:
print("Error: Response timed out but file may have been uploaded")
exit()
except httpx.RemoteProtocolError:
print("Error: Server disconnected without sending a response")
exit()
except httpx.ConnectError:
print("Error: Connection refused")
exit()
print("file posted")
if args.response:
print(r.text)
2024-09-20 09:53:08 +00:00
if __name__ == "__main__":
2024-09-21 11:02:56 +00:00
args=exploadlib.parse.parser()
2024-09-20 09:53:08 +00:00
fileupload()