forked from r4sas/PBinCLI
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.3 KiB
35 lines
1.3 KiB
"""Action functions for argparser""" |
|
import base64 |
|
import pbincli.actions |
|
from Crypto.Hash import SHA256 |
|
from Crypto.Random import get_random_bytes |
|
from pbincli.sjcl_gcm import SJCL |
|
from pbincli.transports import privatebin |
|
from pbincli.utils import PBinCLIException, check_readable, check_writable |
|
from zlib import compress |
|
import json |
|
|
|
def send(args): |
|
""" Sub-command for sending paste """ |
|
check_readable(args.filename) |
|
with open(args.filename, "rb") as f: |
|
contents = f.read() |
|
file = base64.b64encode(compress(contents)) |
|
|
|
passphrase = base64.b64encode(get_random_bytes(32)) |
|
if not args.password: |
|
password = passphrase |
|
else: |
|
p = SHA256.new() |
|
p.update(args.password.encode("UTF-8")) |
|
password = passphrase + p.hexdigest().encode("UTF-8") |
|
|
|
data = SJCL().encrypt(file, password) |
|
#request = "data={}&expire={}&formatter={}&burnafterreading={}&opendiscussion={}".format(json.dumps(data, ensure_ascii=False), args.expire, args.format, int(args.burn), int(args.discus)) |
|
request = {'data':json.dumps(data, ensure_ascii=False),'expire':args.expire,'formatter':args.format,'burnafterreading':int(args.burn),'opendiscussion':int(args.discus) |
|
} |
|
print(request) |
|
|
|
'''Here we must run function post from pbincli.transports''' |
|
print(request) |
|
privatebin().post(request)
|
|
|