├── README.md ├── java ├── .gitignore ├── BurpExtender.java ├── build.gradle └── settings.gradle ├── python └── HelloWorld.py └── ruby └── HelloWorld.rb /README.md: -------------------------------------------------------------------------------- 1 | # Sample Burp Suite extension: Hello World 2 | 3 | Our first sample extension is about as basic as things can get, while actually 4 | doing something. It demonstrates the following techniques: 5 | - Setting the name of the extension, which will be shown to the user in the UI. 6 | - Obtaining the extension-specific output and error streams. 7 | - Writing messages to the output and error streams. 8 | - Writing a message to the main Burp alerts log. 9 | - Generating an exception to demonstrate how this is reported to the user. 10 | 11 | This repository includes source code for Java, Python and Ruby. 12 | -------------------------------------------------------------------------------- /java/.gitignore: -------------------------------------------------------------------------------- 1 | .gradle/ 2 | build/ 3 | -------------------------------------------------------------------------------- /java/BurpExtender.java: -------------------------------------------------------------------------------- 1 | package burp; 2 | 3 | import java.io.PrintWriter; 4 | 5 | public class BurpExtender implements IBurpExtender 6 | { 7 | // 8 | // implement IBurpExtender 9 | // 10 | 11 | @Override 12 | public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) 13 | { 14 | // set our extension name 15 | callbacks.setExtensionName("Hello world extension"); 16 | 17 | // obtain our output and error streams 18 | PrintWriter stdout = new PrintWriter(callbacks.getStdout(), true); 19 | PrintWriter stderr = new PrintWriter(callbacks.getStderr(), true); 20 | 21 | // write a message to our output stream 22 | stdout.println("Hello output"); 23 | 24 | // write a message to our error stream 25 | stderr.println("Hello errors"); 26 | 27 | // write a message to the Burp alerts tab 28 | callbacks.issueAlert("Hello alerts"); 29 | 30 | // throw an exception that will appear in our error stream 31 | throw new RuntimeException("Hello exceptions"); 32 | } 33 | } -------------------------------------------------------------------------------- /java/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java' 2 | 3 | repositories { 4 | mavenCentral() 5 | } 6 | 7 | dependencies { 8 | implementation 'net.portswigger.burp.extender:burp-extender-api:1.7.13' 9 | } 10 | 11 | sourceSets { 12 | main { 13 | java { 14 | srcDir '.' 15 | } 16 | } 17 | } 18 | 19 | task fatJar(type: Jar) { 20 | baseName = project.name + '-all' 21 | from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } 22 | with jar 23 | } 24 | -------------------------------------------------------------------------------- /java/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'HelloWorld' 2 | -------------------------------------------------------------------------------- /python/HelloWorld.py: -------------------------------------------------------------------------------- 1 | from burp import IBurpExtender 2 | from java.io import PrintWriter 3 | from java.lang import RuntimeException 4 | 5 | class BurpExtender(IBurpExtender): 6 | 7 | # 8 | # implement IBurpExtender 9 | # 10 | 11 | def registerExtenderCallbacks(self, callbacks): 12 | # set our extension name 13 | callbacks.setExtensionName("Hello world extension") 14 | 15 | # obtain our output and error streams 16 | stdout = PrintWriter(callbacks.getStdout(), True) 17 | stderr = PrintWriter(callbacks.getStderr(), True) 18 | 19 | # write a message to our output stream 20 | stdout.println("Hello output") 21 | 22 | # write a message to our error stream 23 | stderr.println("Hello errors") 24 | 25 | # write a message to the Burp alerts tab 26 | callbacks.issueAlert("Hello alerts") 27 | 28 | # throw an exception that will appear in our error stream 29 | raise RuntimeException("Hello exception") 30 | -------------------------------------------------------------------------------- /ruby/HelloWorld.rb: -------------------------------------------------------------------------------- 1 | require 'java' 2 | java_import 'burp.IBurpExtender' 3 | 4 | class BurpExtender 5 | include IBurpExtender 6 | 7 | def registerExtenderCallbacks(callbacks) 8 | # set our extension name 9 | callbacks.setExtensionName "Hello world extension" 10 | 11 | # obtain our output and error streams 12 | stdout = java.io.PrintWriter.new callbacks.getStdout, true 13 | stderr = java.io.PrintWriter.new callbacks.getStderr, true 14 | 15 | # write a message to our output stream 16 | stdout.println "Hello output" 17 | 18 | # write a message to our error stream 19 | stderr.println "Hello errors" 20 | 21 | # write a message to the Burp alerts tab 22 | callbacks.issueAlert "Hello alerts" 23 | 24 | # throw an exception that will appear in our error stream 25 | raise "Hello exception" 26 | end 27 | end 28 | --------------------------------------------------------------------------------