-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMenu.java
More file actions
84 lines (72 loc) · 3.01 KB
/
Menu.java
File metadata and controls
84 lines (72 loc) · 3.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package burp;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
/**
* 菜单类,负责显示菜单,处理菜单事件
*/
public class Menu implements IContextMenuFactory {
public List<JMenuItem> createMenuItems(final IContextMenuInvocation invocation) {
List<JMenuItem> menus = new ArrayList();
JMenu encodeMenu = new JMenu("base64encode");
JMenuItem encode = new JMenuItem("Encoding request body");
JMenuItem decode = new JMenuItem("Decoding request body");
JMenuItem config = new JMenuItem("Config");
encodeMenu.add(encode);
encodeMenu.add(decode);
encodeMenu.addSeparator();
encodeMenu.add(config);
//若数据包无法编辑,则将编码解码菜单项设置为禁用
if(invocation.getInvocationContext() != IContextMenuInvocation.CONTEXT_MESSAGE_EDITOR_REQUEST){
encode.setEnabled(false);
decode.setEnabled(false);
}
encode.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
IHttpRequestResponse iReqResp = invocation.getSelectedMessages()[0];
IRequestInfo reqInfo = BurpExtender.helpers.analyzeRequest(iReqResp.getRequest());
// 不对GET请求进行编码
if(!reqInfo.getMethod().equals("POST")){
JOptionPane.showConfirmDialog(null,"GET requests cannot be encoded!","Warning",JOptionPane.CLOSED_OPTION,JOptionPane.WARNING_MESSAGE);
return;
}
try {
byte[] request = Transfer.encoding(iReqResp);
if (request != null) {
iReqResp.setRequest(request);
}
} catch (Exception e) {
BurpExtender.stderr.println(e.getMessage());
}
}
});
decode.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
IHttpRequestResponse iReqResp = invocation.getSelectedMessages()[0];
try {
byte[] request = Transfer.decoding(iReqResp);
if (request != null) {
iReqResp.setRequest(request);
}
} catch (Exception e) {
BurpExtender.stderr.println(e.getMessage());
}
}
});
config.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
try {
ConfigDlg dlg = new ConfigDlg();
BurpExtender.callbacks.customizeUiComponent(dlg);
dlg.setVisible(true);
}catch (Exception e){
e.printStackTrace(BurpExtender.stderr);
}
}
});
menus.add(encodeMenu);
return menus;
}
}