pastebin

- python wrapper for the pastebin api
git clone git://git.acid.vegas/pastebin.git
Log | Files | Refs | Archive | README | LICENSE

commit 31ee5d3a5273142e3467e71dd8a1485db1dc8ec3
Author: acidvegas <acid.vegas@acid.vegas>
Date: Fri, 28 Jun 2019 01:28:33 -0400

Initial commit

Diffstat:
ALICENSE | 15+++++++++++++++
AREADME.md | 11+++++++++++
Apastebin/example.py | 33+++++++++++++++++++++++++++++++++
Apastebin/pastebin.py | 329+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

4 files changed, 388 insertions(+), 0 deletions(-)

diff --git a/LICENSE b/LICENSE
@@ -0,0 +1,15 @@
+ISC License
+
+Copyright (c) 2019, acidvegas <acid.vegas@acid.vegas>
+
+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
@@ -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
@@ -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
@@ -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