Created
December 27, 2022 23:16
-
-
Save moonexpr/69e2330d8895f2266300cbd37d2c7639 to your computer and use it in GitHub Desktop.
Uploads a file to https://0x0.st
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
#!/usr/bin/env python3 | |
import requests | |
import sys | |
def dbgoff(): | |
sys.tracebacklimit = 0 | |
def dbgon(): | |
sys.tracebacklimit = 1 | |
def parse_args(): | |
try: | |
# argparse: attempt to nicely parse our arguments # | |
import argparse | |
parser = argparse.ArgumentParser( | |
prog = 'upload', | |
description = 'Uploads files to https://0x0.st/ passes from arg.' | |
) | |
parser.add_argument('-s', '--secret') | |
parser.add_argument('-E', '--expires') | |
parser.add_argument('filename') | |
args = parser.parse_args() | |
return { | |
'filename': args.filename, | |
'secret': args.secret, | |
'expires': args.expires | |
} | |
# argparse # | |
except ModuleNotFoundError: | |
return { | |
'filename': sys.argv[max(0, len(sys.argv) - 1)], | |
'secret': None, | |
'expires': None | |
} | |
args = parse_args() | |
dbgoff() | |
req = None | |
with open(args['filename'], 'r') as file: | |
files = {'file': file} | |
headers = {} | |
if not args['secret'] is None: | |
headers['secret'] = args['secret'] | |
if not args['expires'] is None: | |
# arrow: attempt to parse expires using human friendly time format. | |
try: | |
import arrow | |
headers['expires'] = str(arrow.now().dehumanize(args['expires']).int_timestamp) | |
except ModuleNotFoundError: | |
print('W: \'Arrow\' dateimte module is not installed, interpreting expires literally.') | |
headers['expires'] = int(args['expires']) | |
req = requests.post('https://0x0.st/', files=files, headers=headers) | |
dbgon() | |
def success(req): | |
print(req.text) | |
# pyperclip: attempt to copy to clipboard # | |
try: | |
import pyperclip | |
pyperclip.copy(req.text) | |
print('The URL has been copied to your clipboard.') | |
except ModuleNotFoundError: | |
pass | |
# pyperclip # | |
sys.exit(0) | |
def fail(req): | |
print('0x0.st: ', file=sys.stderr, end='') | |
print(req.text, file=sys.stderr) | |
sys.exit(1) | |
if 200 <= req.status_code <= 299: | |
success(req) | |
else: | |
fail(req) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment