The IntelliJ Python plugin supports code completion and this can recognize the Burp API. First, make sure your project has the SDK set to Jython:
Then, add the Burp API as a library:
| package burp; | |
| import java.awt.Component | |
| import java.util.* | |
| class MessageEditorTab : IMessageEditorTab { | |
| var messageEditor = BurpExtender.cb.createMessageEditor(null, true) | |
| override fun getMessage(): ByteArray { | |
| return messageEditor.message |
| JTabbedPane tabbedPane; | |
| ChangeListener changeListener; | |
| // add to constructor | |
| addHierarchyListener(this); | |
| void highlightTab() | |
| { | |
| if(tabbedPane != null) | |
| { |
| #!/bin/bash | |
| orig=$PWD | |
| file=`basename $1` | |
| mkdir -p "/tmp/$file" | |
| cd "/tmp/$file" | |
| jar -xf "$orig/$1" | |
| find . -name \*.jar | while read JAR; do | |
| jar -u0f "$orig/$1" $JAR | |
| done |
| # For use with Python Scripter extension | |
| from java.net import URL | |
| if not messageIsRequest: | |
| request_info = helpers.analyzeRequest(messageInfo.getHttpService(), messageInfo.getRequest()) | |
| if request_info.getUrl().toString() == 'http://blah/': | |
| response_info = helpers.analyzeResponse(messageInfo.getResponse()) | |
| for header in response_info.getHeaders(): | |
| if header.startswith('Location: '): | |
| url = URL(header[len('Location: '):]) | |
| req = helpers.buildHttpRequest(url) |
| package burp; | |
| import java.util.Random; | |
| public class BuildUnencodedRequest | |
| { | |
| private Random random = new Random(); | |
| private IExtensionHelpers helpers; | |
| BuildUnencodedRequest(IExtensionHelpers helpers) |
The IntelliJ Python plugin supports code completion and this can recognize the Burp API. First, make sure your project has the SDK set to Jython:
Then, add the Burp API as a library:
| from burp import IBurpExtender, IHttpListener | |
| import threading, time | |
| class BurpExtender(IBurpExtender, IHttpListener): | |
| count = 0 | |
| lock = threading.Lock() | |
| def registerExtenderCallbacks(self, callbacks): | |
| self.callbacks = callbacks |
| import sys | |
| out = [] | |
| in_summary = False | |
| with open(sys.argv[1]) as input: | |
| for line in input: | |
| if line.startswith('<table cellpadding="0" cellspacing="0" class="summary_table">'): | |
| in_summary = True | |
| if in_summary: | |
| line = line.replace('rowspan="4"', 'rowspan="6"') |
| static JFrame getBurpFrame() | |
| { | |
| for(Frame f : Frame.getFrames()) | |
| { | |
| if(f.isVisible() && f.getTitle().startsWith(("Burp Suite"))) | |
| { | |
| return (JFrame) f; | |
| } | |
| } | |
| return null; |
| import sys, pexpect.popen_spawn, signal | |
| if len(sys.argv) != 3: | |
| print('Usage: license-burp [yes/no] [license-file]') | |
| sys.exit(1) | |
| if sys.argv[1] != 'yes': | |
| print('You must accept the license to use Burp') | |
| sys.exit(1) |