diff --git a/pbincli/cli.py b/pbincli/cli.py index f604989..7e06ed1 100755 --- a/pbincli/cli.py +++ b/pbincli/cli.py @@ -38,7 +38,8 @@ def main(): choices=["zlib", "none"], help="set compression for paste (default: zlib). Note: works only on v2 paste format") # URL shortener send_parser.add_argument("-S", "--short", default=False, action="store_true", help="use URL shortener") - send_parser.add_argument("--short-api", default=argparse.SUPPRESS, action="store", choices=["tinyurl", "clckru", "isgd", "vgd", "cuttly", "yourls"], help="API used by shortener service") + send_parser.add_argument("--short-api", default=argparse.SUPPRESS, action="store", + choices=["tinyurl", "clckru", "isgd", "vgd", "cuttly", "yourls"], help="API used by shortener service") send_parser.add_argument("--short-url", default=argparse.SUPPRESS, help="URL of shortener service API") send_parser.add_argument("--short-user", default=argparse.SUPPRESS, help="Shortener username") send_parser.add_argument("--short-pass", default=argparse.SUPPRESS, help="Shortener password") @@ -47,7 +48,8 @@ def main(): send_parser.add_argument("-s", "--server", default=argparse.SUPPRESS, help="PrivateBin service URL (default: https://paste.i2pd.xyz/)") send_parser.add_argument("-x", "--proxy", default=argparse.SUPPRESS, help="Proxy server address (default: None)") send_parser.add_argument("--no-check-certificate", default=False, action="store_true", help="disable certificate validation") - send_parser.add_argument("--no-insecure-warning", default=False, action="store_true", help="suppress InsecureRequestWarning (only with --no-check-certificate)") + send_parser.add_argument("--no-insecure-warning", default=False, action="store_true", + help="suppress InsecureRequestWarning (only with --no-check-certificate)") # send_parser.add_argument("-d", "--debug", default=False, action="store_true", help="enable debug") send_parser.add_argument("--dry", default=False, action="store_true", help="invoke dry run") @@ -61,7 +63,8 @@ def main(): get_parser.add_argument("-s", "--server", default=argparse.SUPPRESS, help="PrivateBin service URL (default: https://paste.i2pd.xyz/)") get_parser.add_argument("-x", "--proxy", default=argparse.SUPPRESS, help="Proxy server address (default: None)") get_parser.add_argument("--no-check-certificate", default=False, action="store_true", help="disable certificate validation") - get_parser.add_argument("--no-insecure-warning", default=False, action="store_true", help="suppress InsecureRequestWarning (only with --no-check-certificate)") + get_parser.add_argument("--no-insecure-warning", default=False, action="store_true", + help="suppress InsecureRequestWarning (only with --no-check-certificate)") get_parser.add_argument("-d", "--debug", default=False, action="store_true", help="enable debug") get_parser.set_defaults(func=pbincli.actions.get) @@ -72,7 +75,8 @@ def main(): delete_parser.add_argument("-s", "--server", default=argparse.SUPPRESS, help="PrivateBin service URL (default: https://paste.i2pd.xyz/)") delete_parser.add_argument("-x", "--proxy", default=argparse.SUPPRESS, help="Proxy server address (default: None)") delete_parser.add_argument("--no-check-certificate", default=False, action="store_true", help="disable certificate validation") - delete_parser.add_argument("--no-insecure-warning", default=False, action="store_true", help="suppress InsecureRequestWarning (only with --no-check-certificate)") + delete_parser.add_argument("--no-insecure-warning", default=False, action="store_true", + help="suppress InsecureRequestWarning (only with --no-check-certificate)") delete_parser.add_argument("-d", "--debug", default=False, action="store_true", help="enable debug") delete_parser.set_defaults(func=pbincli.actions.delete) diff --git a/pbincli/format.py b/pbincli/format.py index 3ed854b..45397bf 100644 --- a/pbincli/format.py +++ b/pbincli/format.py @@ -5,8 +5,6 @@ import zlib # try import AES cipher and check if it has GCM mode (prevent usage of pycrypto) try: from Crypto.Cipher import AES - from Crypto.Random import get_random_bytes - if not hasattr(AES, 'MODE_GCM'): try: from Cryptodome.Cipher import AES @@ -19,6 +17,8 @@ try: "\tpip install pycryptodomex\n" + "... otherwise use separate python environment or uninstall pycrypto:\n" + "\tpip uninstall pycrypto") + else: + from Crypto.Random import get_random_bytes except ImportError: PBinCLIError("Unable import pycryptodome") @@ -281,7 +281,8 @@ class Paste: cipher = self.__initializeCipher(key, iv, adata) ciphertext, tag = cipher.encrypt_and_digest(self.__compress(json_encode(cipher_message))) - if self._debug: print("PBKDF2 Key:\t{}\nCipherText:\t{}\nCipherTag:\t{}".format(b64encode(key), b64encode(ciphertext), b64encode(tag))) + if self._debug: print("PBKDF2 Key:\t{}\nCipherText:\t{}\nCipherTag:\t{}" + .format(b64encode(key), b64encode(ciphertext), b64encode(tag))) self._data = {'v':2,'adata':adata,'ct':b64encode(ciphertext + tag).decode(),'meta':{'expire':self._expiration}} @@ -290,7 +291,8 @@ class Paste: from sjcl import SJCL from pbincli.utils import json_encode - self._data = {'expire':self._expiration,'formatter':self._formatter,'burnafterreading':int(self._burnafterreading),'opendiscussion':int(self._discussion)} + self._data = {'expire':self._expiration,'formatter':self._formatter, + 'burnafterreading':int(self._burnafterreading),'opendiscussion':int(self._discussion)} password = self.__preparePassKey() if self._debug: print("Password:\t{}".format(password))