From 31ee5d3a5273142e3467e71dd8a1485db1dc8ec3 Mon Sep 17 00:00:00 2001 From: acidvegas Date: Fri, 28 Jun 2019 01:28:33 -0400 Subject: [PATCH] Initial commit --- LICENSE | 15 ++ README.md | 11 ++ pastebin/example.py | 32 +++++ pastebin/pastebin.py | 328 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 386 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 pastebin/example.py create mode 100644 pastebin/pastebin.py diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..69997e8 --- /dev/null +++ b/LICENSE @@ -0,0 +1,15 @@ +ISC License + +Copyright (c) 2019, acidvegas + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..366cbcc --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +###### Requirements +* [Python](https://www.python.org/downloads/) *(**Note:** This script was developed to be used with the latest version of Python.)* + +###### API Documentation: +* [Pastebin API](https://pastebin.com/api) + +###### Mirrors +- [acid.vegas](https://acid.vegas/pastebin) *(main)* +- [SuperNETs](https://git.supernets.org/acidvegas/pastebin) +- [GitHub](https://github.com/acidvegas/pastebin) +- [GitLab](https://gitlab.com/acidvegas/pastebin) diff --git a/pastebin/example.py b/pastebin/example.py new file mode 100644 index 0000000..7675a2d --- /dev/null +++ b/pastebin/example.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +# PasteBin API Class - Developed by acidvegas in Python (https://acid.vegas/pastebin) + +import getpass + +import pastebin + +# API Settings +api_dev_key = 'CHANGEME' +api_user_key = None + +# Define API +if api_user_key: + api = pastebin.PasteBin(api_dev_key, api_user_key) +else: + api = pastebin.PasteBin(api_dev_key) + username = input('[?] - Username: ') + password = getpass.getpass('[?] - Password: ') + api_user_key = api.create_user_key(username, password) + if 'Bad API request' not in api_user_key: + print('[+] - You API user key is: ' + ap_user_key) + api = pastebin.PasteBin(api_dev_key, api_user_key) + else: + raise SystemExit('[!] - Failed to create API user key! ({0})'.format(api_user_key.split(', ')[1])) + +# Create a Paste +data = open(__file__).read() +result = api.paste(data, guest=True, name='Example Script', format='Python', private='1', expire='10M') +if 'Bad API request' not in result: + print('[+] - PasteBin URL: ' + result) +else: + raise SystemExit('[!] - Failed to create paste! ({0})'.format(api_user_key.split(', ')[1])) \ No newline at end of file diff --git a/pastebin/pastebin.py b/pastebin/pastebin.py new file mode 100644 index 0000000..15bb26a --- /dev/null +++ b/pastebin/pastebin.py @@ -0,0 +1,328 @@ +#!/usr/bin/env python +# PasteBin API Class - Developed by acidvegas in Python (https://acid.vegas/pastebin) + +''' +API Documentation: + https://pastebin.com/api +''' + +import urllib.parse +import urllib.request + +# Values +format_values = { + '4cs' : '4CS', + '6502acme' : '6502 ACME Cross Assembler', + '6502kickass' : '6502 Kick Assembler', + '6502tasm' : '6502 TASM/64TASS', + 'abap' : 'ABAP', + 'actionscript' : 'ActionScript', + 'actionscript3' : 'ActionScript 3', + 'ada' : 'Ada', + 'aimms' : 'AIMMS', + 'algol68' : 'ALGOL 68', + 'apache' : 'Apache Log', + 'applescript' : 'AppleScript', + 'apt_sources' : 'APT Sources', + 'arm' : 'ARM', + 'asm' : 'ASM (NASM)', + 'asp' : 'ASP', + 'asymptote' : 'Asymptote', + 'autoconf' : 'autoconf', + 'autohotkey' : 'Autohotkey', + 'autoit' : 'AutoIt', + 'avisynth' : 'Avisynth', + 'awk' : 'Awk', + 'bascomavr' : 'BASCOM AVR', + 'bash' : 'Bash', + 'basic4gl' : 'Basic4GL', + 'dos' : 'Batch', + 'bibtex' : 'BibTeX', + 'blitzbasic' : 'Blitz Basic', + 'b3d' : 'Blitz3D', + 'bmx' : 'BlitzMax', + 'bnf' : 'BNF', + 'boo' : 'BOO', + 'bf' : 'BrainFuck', + 'c' : 'C', + 'c_winapi' : 'C (WinAPI)', + 'c_mac' : 'C for Macs', + 'cil' : 'C Intermediate Language', + 'csharp' : 'C#', + 'cpp' : 'C++', + 'cpp-winapi' : 'C++ (WinAPI)', + 'cpp-qt' : 'C++ (with Qt extensions)', + 'c_loadrunner' : 'C: Loadrunner', + 'caddcl' : 'CAD DCL', + 'cadlisp' : 'CAD Lisp', + 'ceylon' : 'Ceylon', + 'cfdg' : 'CFDG', + 'chaiscript' : 'ChaiScript', + 'chapel' : 'Chapel', + 'clojure' : 'Clojure', + 'klonec' : 'Clone C', + 'klonecpp' : 'Clone C++', + 'cmake' : 'CMake', + 'cobol' : 'COBOL', + 'coffeescript' : 'CoffeeScript', + 'cfm' : 'ColdFusion', + 'css' : 'CSS', + 'cuesheet' : 'Cuesheet', + 'd' : 'D', + 'dart' : 'Dart', + 'dcl' : 'DCL', + 'dcpu16' : 'DCPU-16', + 'dcs' : 'DCS', + 'delphi' : 'Delphi', + 'oxygene' : 'Delphi Prism (Oxygene)', + 'diff' : 'Diff', + 'div' : 'DIV', + 'dot' : 'DOT', + 'e' : 'E', + 'ezt' : 'Easytrieve', + 'ecmascript' : 'ECMAScript', + 'eiffel' : 'Eiffel', + 'email' : 'Email', + 'epc' : 'EPC', + 'erlang' : 'Erlang', + 'euphoria' : 'Euphoria', + 'fsharp' : 'F#', + 'falcon' : 'Falcon', + 'filemaker' : 'Filemaker', + 'fo' : 'FO Language', + 'f1' : 'Formula One', + 'fortran' : 'Fortran', + 'freebasic' : 'FreeBasic', + 'freeswitch' : 'FreeSWITCH', + 'gambas' : 'GAMBAS', + 'gml' : 'Game Maker', + 'gdb' : 'GDB', + 'genero' : 'Genero', + 'genie' : 'Genie', + 'gettext' : 'GetText', + 'go' : 'Go', + 'groovy' : 'Groovy', + 'gwbasic' : 'GwBasic', + 'haskell' : 'Haskell', + 'haxe' : 'Haxe', + 'hicest' : 'HicEst', + 'hq9plus' : 'HQ9 Plus', + 'html4strict' : 'HTML', + 'html5' : 'HTML 5', + 'icon' : 'Icon', + 'idl' : 'IDL', + 'ini' : 'INI file', + 'inno' : 'Inno Script', + 'intercal' : 'INTERCAL', + 'io' : 'IO', + 'ispfpanel' : 'ISPF Panel Definition', + 'j' : 'J', + 'java' : 'Java', + 'java5' : 'Java 5', + 'javascript' : 'JavaScript', + 'jcl' : 'JCL', + 'jquery' : 'jQuery', + 'json' : 'JSON', + 'julia' : 'Julia', + 'kixtart' : 'KiXtart', + 'kotlin' : 'Kotlin', + 'latex' : 'Latex', + 'ldif' : 'LDIF', + 'lb' : 'Liberty BASIC', + 'lsl2' : 'Linden Scripting', + 'lisp' : 'Lisp', + 'llvm' : 'LLVM', + 'locobasic' : 'Loco Basic', + 'logtalk' : 'Logtalk', + 'lolcode' : 'LOL Code', + 'lotusformulas' : 'Lotus Formulas', + 'lotusscript' : 'Lotus Script', + 'lscript' : 'LScript', + 'lua' : 'Lua', + 'm68k' : 'M68000 Assembler', + 'magiksf' : 'MagikSF', + 'make' : 'Make', + 'mapbasic' : 'MapBasic', + 'markdown' : 'Markdown', + 'matlab' : 'MatLab', + 'mirc' : 'mIRC', + 'mmix' : 'MIX Assembler', + 'modula2' : 'Modula 2', + 'modula3' : 'Modula 3', + '68000devpac' : 'Motorola 68000 HiSoft Dev', + 'mpasm' : 'MPASM', + 'mxml' : 'MXML', + 'mysql' : 'MySQL', + 'nagios' : 'Nagios', + 'netrexx' : 'NetRexx', + 'newlisp' : 'newLISP', + 'nginx' : 'Nginx', + 'nimrod' : 'Nimrod', + 'text' : 'None', + 'nsis' : 'NullSoft Installer', + 'oberon2' : 'Oberon 2', + 'objeck' : 'Objeck Programming Langua', + 'objc' : 'Objective C', + 'ocaml-brief' : 'OCalm Brief', + 'ocaml' : 'OCaml', + 'octave' : 'Octave', + 'oorexx' : 'Open Object Rexx', + 'pf' : 'OpenBSD PACKET FILTER', + 'glsl' : 'OpenGL Shading', + 'oobas' : 'Openoffice BASIC', + 'oracle11' : 'Oracle 11', + 'oracle8' : 'Oracle 8', + 'oz' : 'Oz', + 'parasail' : 'ParaSail', + 'parigp' : 'PARI/GP', + 'pascal' : 'Pascal', + 'pawn' : 'Pawn', + 'pcre' : 'PCRE', + 'per' : 'Per', + 'perl' : 'Perl', + 'perl6' : 'Perl 6', + 'php' : 'PHP', + 'php-brief' : 'PHP Brief', + 'pic16' : 'Pic 16', + 'pike' : 'Pike', + 'pixelbender' : 'Pixel Bender', + 'pli' : 'PL/I', + 'plsql' : 'PL/SQL', + 'postgresql' : 'PostgreSQL', + 'postscript' : 'PostScript', + 'povray' : 'POV-Ray', + 'powershell' : 'Power Shell', + 'powerbuilder' : 'PowerBuilder', + 'proftpd' : 'ProFTPd', + 'progress' : 'Progress', + 'prolog' : 'Prolog', + 'properties' : 'Properties', + 'providex' : 'ProvideX', + 'puppet' : 'Puppet', + 'purebasic' : 'PureBasic', + 'pycon' : 'PyCon', + 'python' : 'Python', + 'pys60' : 'Python for S60', + 'q' : 'q/kdb+', + 'qbasic' : 'QBasic', + 'qml' : 'QML', + 'rsplus' : 'R', + 'racket' : 'Racket', + 'rails' : 'Rails', + 'rbs' : 'RBScript', + 'rebol' : 'REBOL', + 'reg' : 'REG', + 'rexx' : 'Rexx', + 'robots' : 'Robots', + 'rpmspec' : 'RPM Spec', + 'ruby' : 'Ruby', + 'gnuplot' : 'Ruby Gnuplot', + 'rust' : 'Rust', + 'sas' : 'SAS', + 'scala' : 'Scala', + 'scheme' : 'Scheme', + 'scilab' : 'Scilab', + 'scl' : 'SCL', + 'sdlbasic' : 'SdlBasic', + 'smalltalk' : 'Smalltalk', + 'smarty' : 'Smarty', + 'spark' : 'SPARK', + 'sparql' : 'SPARQL', + 'sqf' : 'SQF', + 'sql' : 'SQL', + 'standardml' : 'StandardML', + 'stonescript' : 'StoneScript', + 'sclang' : 'SuperCollider', + 'swift' : 'Swift', + 'systemverilog' : 'SystemVerilog', + 'tsql' : 'T-SQL', + 'tcl' : 'TCL', + 'teraterm' : 'Tera Term', + 'thinbasic' : 'thinBasic', + 'typoscript' : 'TypoScript', + 'unicon' : 'Unicon', + 'uscript' : 'UnrealScript', + 'upc' : 'UPC', + 'urbi' : 'Urbi', + 'vala' : 'Vala', + 'vbnet' : 'VB.NET', + 'vbscript' : 'VBScript', + 'vedit' : 'Vedit', + 'verilog' : 'VeriLog', + 'vhdl' : 'VHDL', + 'vim' : 'VIM', + 'visualprolog' : 'Visual Pro Log', + 'vb' : 'VisualBasic', + 'visualfoxpro' : 'VisualFoxPro', + 'whitespace' : 'WhiteSpace', + 'whois' : 'WHOIS', + 'winbatch' : 'Winbatch', + 'xbasic' : 'XBasic', + 'xml' : 'XML', + 'xorg_conf' : 'Xorg Config', + 'xpp' : 'XPP', + 'yaml' : 'YAML', + 'z80' : 'Z80 Assembler', + 'zxbasic' : 'ZXBasic' +} + +expire_values = { + 'N' : 'Never', + '10M' : '10 Minutes', + '1H' : '1 Hour', + '1D' : '1 Day', + '1W' : '1 Week', + '2W' : '2 Weeks', + '1M' : '1 Month' +} + +private_values = { + '0' : 'Public', + '1' : 'Unlisted', + '2' : 'Private' +} + +class PasteBin: + def __init__(self, api_dev_key, api_user_key=None, timeout=10): + self.api_dev_key = api_dev_key + self.api_user_key = api_user_key + self.timeout = timeout + + def api_call(self, method, params): + response = urllib.request.urlopen('https://pastebin.com/api/' + method, urllib.parse.urlencode(params).encode('utf-8'), timeout=self.timeout) + return response.read().decode() + + def create_user_key(self, username, password): + params = {'api_dev_key':self.api_dev_key, 'api_user_name':username, 'api_user_password':password} + return api_call('api_login.php', params) + + def paste(self, data, guest=False, name=None, format=None, private=None, expire=None): + params = {'api_dev_key':self.api_dev_key, 'api_option':'paste', 'api_paste_code':data} + if not guest : params['api_user_key'] = self.api_user_key + if name : params['api_paste_name'] = name + if format : params['api_paste_format'] = format + if private : params['api_paste_private'] = private + if expire : params['api_paste_expire_date'] = expire + return self.api_call('api_post.php', params) + + def list_pastes(self, results_limit=None): + params = {'api_dev_key':self.api_dev_key, 'api_user_key':self.api_user_key, 'api_option':'list'} + if results_limit: # Default 50, Minimum 1, Maximum 1000 + params['api_results_limit'] = results_limit + return self.api_call('api_post.php', params) + + def trending_pastes(self): + params = {'api_dev_key':self.api_dev_key, 'api_option':'trends'} + return self.api_call('api_post.php', params) + + def delete_paste(self, paste_key): + params = {'api_dev_key':self.api_dev_key, 'api_user_key':self.api_user_key, 'api_paste_key':paste_key, 'api_option':'delete'} + return self.api_call('api_post.php', params) + + def user_info(self): + params = {'api_dev_key':self.api_dev_key, 'api_user_key':self.api_user_key, 'api_option':'userdetails'} + return self.api_call('api_post.php', params) + + def raw_pastes(self, paste_key): + params = {'api_dev_key':self.api_dev_key, 'api_user_key':self.api_user_key, 'api_paste_key':paste_key, 'api_option':'show_paste'} + return self.api_call('api_raw.php', params) \ No newline at end of file