Skip to content

Instantly share code, notes, and snippets.

@ratnadip1998
Created February 5, 2025 17:25
Show Gist options
  • Save ratnadip1998/6d8886a414a4c6664f8936ad95e993a6 to your computer and use it in GitHub Desktop.
Save ratnadip1998/6d8886a414a4c6664f8936ad95e993a6 to your computer and use it in GitHub Desktop.
ray
#!python2
#!/usr/bin/env python2
# -*- coding:utf-8 -*-
from burp import IBurpExtender, ITab
from burp import IContextMenuFactory
# from java.awt import Color
from javax.swing import JMenuItem
from javax.swing import JPanel
from javax.swing import JLabel,JTextField,JButton
import socket
# import urllib
# import urllib2
# import ssl
# try:
# _create_unverified_https_context = ssl._create_unverified_context
# except AttributeError:
# # Legacy Python that doesn't verify HTTPS certificates by default
# pass
# else:
# # Handle target environment that doesn't support HTTPS verification
# ssl._create_default_https_context = _create_unverified_https_context
class BurpExtender(IBurpExtender, ITab, IContextMenuFactory):
def registerExtenderCallbacks(self, callbacks):
self.messages = []
self.callbacks = callbacks
self.helpers = callbacks.getHelpers()
self.callbacks.setExtensionName('Send to Ray')
self.mainPanel = JPanel()
self.testLabel = JLabel("Prxoy: ")
self.testHost = JTextField("127.0.0.1",10)
self.testPort = JTextField("8081",4)
self.statusLabel = JLabel("")
# self.testPort.setForeground(Color.RED);
self.testBtn = JButton('check', actionPerformed=self.statusCheck)
self.mainPanel.add(self.testLabel)
self.mainPanel.add(self.testHost)
self.mainPanel.add(self.testPort)
self.mainPanel.add(self.testBtn)
self.mainPanel.add(self.statusLabel)
self.callbacks.customizeUiComponent(self.mainPanel)
self.callbacks.addSuiteTab(self)
self.callbacks.registerContextMenuFactory(self)
print 'Ray-Scanner!'
self.statusCheck()
def getTabCaption(self):
return 'Ray Proxy'
def getUiComponent(self):
return self.mainPanel
def statusCheck(self,event=None):
proxy_host = self.testHost.getText()
proxy_port = int(self.testPort.getText())
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
sock.connect((proxy_host, proxy_port))
except Exception as e:
print "Connetion Ray Error: " + e.__class__.__name__
self.statusLabel.setText("fail")
return
finally:
if sock:
sock.close()
print "Connetion Ray Success!"
self.statusLabel.setText("success")
def eventHandler(self,x):
proxy_host = self.testHost.getText()
proxy_port = int(self.testPort.getText())
for m in self.messages:
h = self.helpers.analyzeRequest(m)
t = m.getRequest()
r = t.tostring()
url = str(h.getUrl())
# headers = h.getHeaders()
# method = h.getMethod()
# body = r[h.bodyOffset:]
# print url
# headerd = {}
# for x in headers[1:]:
# print x
# x,b = x.split(":",1)
# if url.startswith("https"):
# opener=urllib2.build_opener(urllib2.ProxyHandler({"https":"127.0.0.1:9999"}))
# else:
# opener=urllib2.build_opener(urllib2.ProxyHandler({"http":"127.0.0.1:9999"}))
# req = urllib2.Request(url,data=body,headers=headerd)
# req.get_method = lambda: method
# print opener.open(req).read()
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
sock.connect((proxy_host, proxy_port))
sock.send(r)
except Exception:
self.statusLabel.setText("fail")
print e.__class__.__name__
return
finally:
if sock:
sock.close()
print "Send to Ray: "+url
def createMenuItems(self, invocation):
self.menus = []
self.menus.append(JMenuItem("Send to Ray",None,actionPerformed=lambda x: self.eventHandler(x)))
self.messages = invocation.getSelectedMessages()
return self.menus
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment