def run(self): from java.net import URL # Add new scope if self.opts.add_to_scope: self.burp.includeInScope(URL(self.opts.add_to_scope)) print("[--] Added new scope ...") # Send URL to spider if self.opts.send_to_spider: self.burp.sendToSpider(URL(self.opts.send_to_spider)) print("[--] Starting spider ...") # Start interactive jython console if self.opts.interactive: from java.util import Properties pre_properties = System.getProperties() pre_properties['python.console'] = 'org.python.util.ReadlineConsole' post_properties = Properties() PythonInterpreter.initialize(pre_properties, post_properties, []) # Attach threaded console to BurpExtender self.burp.console = console = JLineConsole() console.set('Burp', self.burp) try: self.burp.stdout.write('Launching interactive session...\n') except Exception: sys.stdout.write('Launching interactive session...\n') ConsoleThread(console).start()
def setCommandLineArgs(self, args): ''' This method is invoked immediately after the implementation's constructor to pass any command-line arguments that were passed to Burp Suite on startup. The following command-line options have been made available: -i, --interactive Run Burp in interactive mode (Jython Console) -f <FILE> Restore from burp state file upon startup -h ''' from optparse import OptionParser parser = OptionParser() parser.add_option('-i', '--interactive', action='store_true', help='Run Burp in interactive mode (Jython Console)') parser.add_option('-f', '--file', metavar='FILE', help='Restore Burp state from FILE on startup') parser.add_option('-P', '--python-path', default='', help='Set PYTHONPATH used by Jython') parser.add_option('--disable-reloading', action='store_true', help='Disable hot-reloading when a file is changed') opt, args = parser.parse_args(list(args)) if opt.interactive: from java.util import Properties pre_properties = System.getProperties() pre_properties['python.console'] = 'org.python.util.ReadlineConsole' post_properties = Properties() if opt.python_path: post_properties['python.path'] = opt.python_path PythonInterpreter.initialize(pre_properties, post_properties, sys.argv[1:]) self.console = JLineConsole() self.console.exec('import __builtin__ as __builtins__') self.console.exec('from gds.burp import HttpRequest, HttpResponse') self.console.set('Burp', self) sys.stderr.write('Launching interactive session...\n') ConsoleThread(self.console).start() self.opt, self.args = opt, args return
def setCommandLineArgs(self, args): ''' This method is invoked immediately after the implementation's constructor to pass any command-line arguments that were passed to Burp Suite on startup. The following command-line options have been made available: -i, --interactive Run Burp in interactive mode (Jython Console) -f <FILE> Restore from burp state file upon startup -d, --debug Set log level to DEBUG -v, --verbose Set log level to INFO -C, --config Specify an alternate config (default: burp.ini) --disable-reloading Disable monitoring of plugins for changes -h ''' from optparse import OptionParser parser = OptionParser() parser.add_option('-i', '--interactive', action='store_true', help='Run Burp in interactive mode (Jython Console)') parser.add_option('-f', '--file', metavar='FILE', help='Restore Burp state from FILE on startup') parser.add_option('-d', '--debug', action='store_true', help='Set log level to DEBUG') parser.add_option('-v', '--verbose', action='store_true', help='Set log level to INFO') parser.add_option('-P', '--python-path', default='', help='Set PYTHONPATH used by Jython') parser.add_option('-C', '--config', default='burp.ini', help='Specify alternate jython-burp config file') parser.add_option('--disable-reloading', action='store_true', help='Disable hot-reloading when a file is changed') opt, args = parser.parse_args(list(args)) if opt.debug: logging.basicConfig( filename='jython-burp.log', format='%(asctime)-15s - %(levelname)s - %(message)s', level=logging.DEBUG) elif opt.verbose: logging.basicConfig( filename='jython-burp.log', format='%(asctime)-15s - %(levelname)s - %(message)s', level=logging.INFO) self.config = Configuration(opt.config) if opt.interactive: from java.util import Properties pre_properties = System.getProperties() pre_properties['python.console'] = 'org.python.util.ReadlineConsole' post_properties = Properties() if opt.python_path: post_properties['python.path'] = opt.python_path PythonInterpreter.initialize( pre_properties, post_properties, sys.argv[1:]) self.console = JLineConsole() self.console.exec('import __builtin__ as __builtins__') self.console.exec('from gds.burp import HttpRequest, HttpResponse') self.console.set('Burp', self) sys.stderr.write('Launching interactive session...\n') ConsoleThread(self.console).start() self.opt, self.args = opt, args return
def start_burp(options, *args): sys.path.extend([os.path.join('java', 'src'), options.burp]) from burp_extender import BurpExtender as MyBurpExtender, ConsoleThread from burp import StartBurp import BurpExtender from gds.burp.config import Configuration if options.debug: logging.basicConfig( filename='jython-burp.log', format='%(asctime)-15s - %(levelname)s - %(message)s', level=logging.DEBUG) elif options.verbose: logging.basicConfig( filename='jython-burp.log', format='%(asctime)-15s - %(levelname)s - %(message)s', level=logging.INFO) else: logging.basicConfig( filename='jython-burp.log', format='%(asctime)-15s - %(levelname)s - %(message)s', level=logging.WARN) # Set the BurpExtender handler to the Pythonic BurpExtender Burp = MyBurpExtender() Burp.config = Configuration(os.path.abspath(opt.config)) Burp.opt = options Burp.args = args BurpExtender.setHandler(Burp) StartBurp.main(args) # In latest Burp, callbacks might not get registered immediately while not Burp.cb: time.sleep(0.1) # Disable Burp Proxy Interception on startup Burp.setProxyInterceptionEnabled(False) if options.interactive: from java.util import Properties pre_properties = System.getProperties() pre_properties['python.console'] = 'org.python.util.ReadlineConsole' post_properties = Properties() PythonInterpreter.initialize(pre_properties, post_properties, []) # Attach threaded console to BurpExtender Burp.console = console = JLineConsole() console.set('Burp', Burp) try: Burp.stdout.write('Launching interactive session...\n') except Exception: sys.stdout.write('Launching interactive session...\n') ConsoleThread(console).start()
def setCommandLineArgs(self, args): ''' This method is invoked immediately after the implementation's constructor to pass any command-line arguments that were passed to Burp Suite on startup. The following command-line options have been made available: -i, --interactive Run Burp in interactive mode (Jython Console) -f <FILE> Restore from burp state file upon startup -d, --debug Set log level to DEBUG -v, --verbose Set log level to INFO -C, --config Specify an alternate config (default: burp.ini) --disable-reloading Disable monitoring of plugins for changes -h ''' from optparse import OptionParser parser = OptionParser() parser.add_option('-i', '--interactive', action='store_true', help='Run Burp in interactive mode (Jython Console)') parser.add_option('-f', '--file', metavar='FILE', help='Restore Burp state from FILE on startup') parser.add_option('-d', '--debug', action='store_true', help='Set log level to DEBUG') parser.add_option('-v', '--verbose', action='store_true', help='Set log level to INFO') parser.add_option('-P', '--python-path', default='', help='Set PYTHONPATH used by Jython') parser.add_option('-C', '--config', default='burp.ini', help='Specify alternate jython-burp config file') parser.add_option('--disable-reloading', action='store_true', help='Disable hot-reloading when a file is changed') opt, args = parser.parse_args(list(args)) if opt.debug: logging.basicConfig( filename='jython-burp.log', format='%(asctime)-15s - %(levelname)s - %(message)s', level=logging.DEBUG) elif opt.verbose: logging.basicConfig( filename='jython-burp.log', format='%(asctime)-15s - %(levelname)s - %(message)s', level=logging.INFO) self.config = Configuration(os.path.abspath(opt.config)) if opt.interactive: from java.util import Properties pre_properties = System.getProperties() pre_properties['python.console'] = 'org.python.util.ReadlineConsole' post_properties = Properties() if opt.python_path: post_properties['python.path'] = opt.python_path PythonInterpreter.initialize( pre_properties, post_properties, sys.argv[1:]) self.console = JLineConsole() self.console.exec('import __builtin__ as __builtins__') self.console.exec('from gds.burp import HttpRequest, HttpResponse') self.console.set('Burp', self) sys.stderr.write('Launching interactive session...\n') ConsoleThread(self.console).start() self.opt, self.args = opt, args return