Skip to content

Instantly share code, notes, and snippets.

@pajswigger
Created January 16, 2018 17:27
Show Gist options
  • Save pajswigger/a015edf71465d8d1e919611b329ee194 to your computer and use it in GitHub Desktop.
Save pajswigger/a015edf71465d8d1e919611b329ee194 to your computer and use it in GitHub Desktop.
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
}
override fun isModified(): Boolean {
return messageEditor.isMessageModified
}
override fun getTabCaption(): String {
return "Base64"
}
override fun getSelectedData(): ByteArray? {
return null
}
override fun getUiComponent(): Component {
return messageEditor.component
}
override fun setMessage(content: ByteArray, isRequest: Boolean) {
messageEditor.setMessage(decodeBody(content, isRequest), isRequest)
}
override fun isEnabled(content: ByteArray, isRequest: Boolean): Boolean {
try {
return decodeBody(content, isRequest).size > 0
}
catch(ex: IllegalArgumentException) {
return false
}
}
fun decodeBody(content: ByteArray, isRequest: Boolean): ByteArray {
val helpers = BurpExtender.cb.helpers
var body: ByteArray
if(isRequest) {
body = Arrays.copyOfRange(content, helpers.analyzeRequest(content).bodyOffset, content.size)
}
else {
body = Arrays.copyOfRange(content, helpers.analyzeResponse(content).bodyOffset, content.size)
}
return Base64.getDecoder().decode(body)
}
}
class MessageEditorTabFactory : IMessageEditorTabFactory {
override fun createNewInstance(controller: IMessageEditorController?, editable: Boolean): IMessageEditorTab {
return MessageEditorTab()
}
}
class BurpExtender : IBurpExtender {
companion object {
lateinit var cb: IBurpExtenderCallbacks
}
override fun registerExtenderCallbacks(callbacks: IBurpExtenderCallbacks) {
cb = callbacks
cb.registerMessageEditorTabFactory(MessageEditorTabFactory())
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment