Created
January 16, 2018 17:27
-
-
Save pajswigger/a015edf71465d8d1e919611b329ee194 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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