Skip to content

Commit ef5f45d

Browse files
author
isayan
committed
Yagura Menu URL Unicode サポート
1 parent 5f5e198 commit ef5f45d

File tree

8 files changed

+41
-24
lines changed

8 files changed

+41
-24
lines changed

release/YaguraExtension-v3.0.jar

1.23 KB
Binary file not shown.

src/main/java/burp/BurpExtension.java

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@
9494
import javax.swing.JMenuItem;
9595
import javax.swing.JRadioButtonMenuItem;
9696
import javax.swing.JTextArea;
97+
import javax.swing.KeyStroke;
9798
import javax.swing.event.ChangeEvent;
9899
import javax.swing.event.ChangeListener;
99100
import passive.signature.MatchAlert;
@@ -631,7 +632,18 @@ public String translate(String selectedText) {
631632

632633
yaguraEncoderMenu.add(yaguraEncoderURLMenu);
633634

634-
JMenuItem yaguraEncoderUnicodeMenu = createMenuItem("Unicode(\\uhhhh)", KeyEvent.VK_N, new ITranslateAction() {
635+
JMenuItem yaguraEncoderURLUnicodeMenu = createMenuItem("Unicode(%uhhhh) - URL", KeyEvent.VK_N, new ITranslateAction() {
636+
637+
@Override
638+
public String translate(String selectedText) {
639+
return SmartCodec.toUnocodeUrlEncode(selectedText, SmartCodec.ENCODE_PATTERN_BURP, false);
640+
}
641+
642+
});
643+
644+
yaguraEncoderMenu.add(yaguraEncoderURLUnicodeMenu);
645+
646+
JMenuItem yaguraEncoderUnicodeMenu = createMenuItem("Unicode(\\uhhhh) - JSON", KeyEvent.VK_J, new ITranslateAction() {
635647

636648
@Override
637649
public String translate(String selectedText) {
@@ -705,7 +717,18 @@ public String translate(String selectedText) {
705717

706718
yaguraDecoderMenu.add(yaguraDecoderURLMenu);
707719

708-
JMenuItem yaguraDecoderUnicodeMenu = createMenuItem("Unicode(\\uhhhh)", KeyEvent.VK_N, new ITranslateAction() {
720+
JMenuItem yaguraDecoderURLUnicodeMenu = createMenuItem("Unicode(%uhhhh) - URL", KeyEvent.VK_N, new ITranslateAction() {
721+
722+
@Override
723+
public String translate(String selectedText) {
724+
return SmartCodec.toUnicodeUrlDecode(selectedText);
725+
}
726+
727+
});
728+
729+
yaguraDecoderMenu.add(yaguraDecoderURLUnicodeMenu);
730+
731+
JMenuItem yaguraDecoderUnicodeMenu = createMenuItem("Unicode(\\uhhhh) - JSON", KeyEvent.VK_J, new ITranslateAction() {
709732

710733
@Override
711734
public String translate(String selectedText) {
@@ -814,21 +837,21 @@ public String translate(String selectedText) {
814837

815838
yaguraConverterMenu.add(yaguraConverterHex2BinMenu);
816839

817-
JMenuItem yaguraConverterFull2Half = createMenuItem("Full Height -> Half Height", KeyEvent.VK_F, new ITranslateAction() {
840+
JMenuItem yaguraConverterFull2Half = createMenuItem("Full width -> Half width", KeyEvent.VK_F, new ITranslateAction() {
818841

819842
@Override
820843
public String translate(String selectedText) {
821-
return TransUtil.translateFullHeight2HalfHeight(selectedText);
844+
return TransUtil.translateFullWidth2HalfWidth(selectedText);
822845
}
823846

824847
});
825848
yaguraConverterMenu.add(yaguraConverterFull2Half);
826849

827-
JMenuItem yaguraConverterHalf2Full = createMenuItem("Half Height -> Full Height", KeyEvent.VK_K, new ITranslateAction() {
850+
JMenuItem yaguraConverterHalf2Full = createMenuItem("Half width -> Full width", KeyEvent.VK_K, new ITranslateAction() {
828851

829852
@Override
830853
public String translate(String selectedText) {
831-
return TransUtil.translateHalfHeight2FullHeight(selectedText);
854+
return TransUtil.translateHalfWidth2FullWidth(selectedText);
832855
}
833856

834857
});

src/main/java/extend/util/external/TransUtil.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2307,8 +2307,8 @@ public static ZonedDateTime toZoneWithZoneDate(Date date, ZoneId zoneId) {
23072307
return zdtm;
23082308
}
23092309

2310-
private final static char[] HALF_HEIGHT = {' ','!','"','#','$','%','&','\'','(',')','*','+',',','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\\',']','^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','{','|','}','~','。','「','」','、','・','ヲ','ァ','ィ','ゥ','ェ','ォ','ャ','ュ','ョ','ッ','ー','ア','イ','ウ','エ','オ','カ','キ','ク','ケ','コ','サ','シ','ス','セ','ソ','タ','チ','ツ','テ','ト','ナ','ニ','ヌ','ネ','ノ','ハ','ヒ','フ','ヘ','ホ','マ','ミ','ム','メ','モ','ヤ','ユ','ヨ','ラ','リ','ル','レ','ロ','ワ','ン','゙','゚',};
2311-
private final static char[] FULL_HEIGHT = {' ','!','”','#','$','%','&','’','(',')','*','+',',','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','¥',']','^','_','‘','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','{','|','}',' ̄','。','「','」','、','・','ヲ','ァ','ィ','ゥ','ェ','ォ','ャ','ュ','ョ','ッ','ー','ア','イ','ウ','エ','オ','カ','キ','ク','ケ','コ','サ','シ','ス','セ','ソ','タ','チ','ツ','テ','ト','ナ','ニ','ヌ','ネ','ノ','ハ','ヒ','フ','ヘ','ホ','マ','ミ','ム','メ','モ','ヤ','ユ','ヨ','ラ','リ','ル','レ','ロ','ワ','ン','゛','゜',};
2310+
private final static char[] HALF_WIDTH = {' ','!','"','#','$','%','&','\'','(',')','*','+',',','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\\',']','^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','{','|','}','~','。','「','」','、','・','ヲ','ァ','ィ','ゥ','ェ','ォ','ャ','ュ','ョ','ッ','ー','ア','イ','ウ','エ','オ','カ','キ','ク','ケ','コ','サ','シ','ス','セ','ソ','タ','チ','ツ','テ','ト','ナ','ニ','ヌ','ネ','ノ','ハ','ヒ','フ','ヘ','ホ','マ','ミ','ム','メ','モ','ヤ','ユ','ヨ','ラ','リ','ル','レ','ロ','ワ','ン','゙','゚',};
2311+
private final static char[] FULL_WIDTH = {' ','!','”','#','$','%','&','’','(',')','*','+',',','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','¥',']','^','_','‘','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','{','|','}',' ̄','。','「','」','、','・','ヲ','ァ','ィ','ゥ','ェ','ォ','ャ','ュ','ョ','ッ','ー','ア','イ','ウ','エ','オ','カ','キ','ク','ケ','コ','サ','シ','ス','セ','ソ','タ','チ','ツ','テ','ト','ナ','ニ','ヌ','ネ','ノ','ハ','ヒ','フ','ヘ','ホ','マ','ミ','ム','メ','モ','ヤ','ユ','ヨ','ラ','リ','ル','レ','ロ','ワ','ン','゛','゜',};
23122312

23132313
private static String translate(String target, char [] search, char [] translate) {
23142314
String result = target;
@@ -2319,12 +2319,12 @@ private static String translate(String target, char [] search, char [] translate
23192319
return result;
23202320
}
23212321

2322-
public static String translateFullHeight2HalfHeight(String target) {
2323-
return translate(target, FULL_HEIGHT, HALF_HEIGHT);
2322+
public static String translateFullWidth2HalfWidth(String target) {
2323+
return translate(target, FULL_WIDTH, HALF_WIDTH);
23242324
}
23252325

2326-
public static String translateHalfHeight2FullHeight(String target) {
2327-
return translate(target, HALF_HEIGHT, FULL_HEIGHT);
2326+
public static String translateHalfWidth2FullWidth(String target) {
2327+
return translate(target, HALF_WIDTH, FULL_WIDTH);
23282328
}
23292329

23302330
}

src/main/java/yagura/view/HtmlCommetViewTab.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
package yagura.view;
22

3-
import burp.BurpExtender;
43
import burp.BurpExtension;
54
import burp.api.montoya.http.message.MimeType;
65
import burp.api.montoya.http.message.HttpRequestResponse;
76
import burp.api.montoya.ui.Selection;
87
import burp.api.montoya.ui.editor.extension.ExtensionProvidedEditor;
98
import extend.util.external.ThemeUI;
109
import extend.util.external.TransUtil;
11-
import extension.helpers.ConvertUtil;
1210
import extension.helpers.HttpResponseWapper;
1311
import extension.helpers.HttpUtil;
1412
import extension.helpers.SmartCodec;

src/main/java/yagura/view/JSONView.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,6 @@ private void customizeComponents() {
135135
this.txtJSON.setCurrentLineHighlightColor(SystemColor.textHighlight);
136136
this.txtJSON.setBackground(SystemColor.text);
137137
this.txtJSON.setEditable(false);
138-
// scrollURaw.setViewportView(txtURaw);
139138

140139
add(this.scrollJSON, java.awt.BorderLayout.CENTER);
141140

src/main/java/yagura/view/ParamsViewTab.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import burp.api.montoya.http.message.ContentType;
55
import burp.api.montoya.http.message.HttpRequestResponse;
66
import burp.api.montoya.http.message.params.HttpParameterType;
7-
import static burp.api.montoya.http.message.params.HttpParameterType.COOKIE;
87
import burp.api.montoya.http.message.params.ParsedHttpParameter;
98
import burp.api.montoya.http.message.requests.HttpRequest;
109
import burp.api.montoya.ui.Selection;

src/main/java/yagura/view/RawViewTab.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,6 @@ public void setMessageEncoding(String encoding) {
175175
if (this.httpRequestResponse == null) {
176176
return;
177177
}
178-
BurpExtender.helpers().outPrintln("enter:setMessageEncoding:" + this.isRequest + ":" + encoding);
179178
this.txtURaw.setText("");
180179
SwingWorker swText = new SwingWorker<String, Object>() {
181180
@Override
@@ -357,7 +356,6 @@ public HttpRequestResponse getHttpRequestResponse() {
357356
if (this.isRequest) {
358357
HttpRequest httpRequest = ExtensionHelper.httpRequest(this.httpRequestResponse.httpService(), ByteArray.byteArray(StringUtil.getBytesCharset(modifiedText, encoding)));
359358
HttpRequestResponse http = HttpRequestResponse.httpRequestResponse(httpRequest, this.httpRequestResponse.response(), this.httpRequestResponse.annotations());
360-
BurpExtender.helpers().outPrintln("request:getHttpRequestResponse:" + StringUtil.getStringRaw( httpRequestResponse.request().toByteArray().getBytes()));
361359
return http;
362360
} else {
363361
HttpResponse httpResponse = HttpResponse.httpResponse(ByteArray.byteArray(StringUtil.getBytesCharset(modifiedText, encoding)));

src/test/java/extend/util/external/TransUtilTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -949,32 +949,32 @@ public void testCrypt() {
949949
public void testTranslate() {
950950
System.out.println("translate");
951951
{
952-
String value = TransUtil.translateHalfHeight2FullHeight(" !”#$%&’()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_‘abcdefghijklmnopqrstuvwxyz{|} ̄。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜");
952+
String value = TransUtil.translateHalfWidth2FullWidth(" !”#$%&’()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_‘abcdefghijklmnopqrstuvwxyz{|} ̄。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜");
953953
String except = " !”#$%&’()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_‘abcdefghijklmnopqrstuvwxyz{|} ̄。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜";
954954
assertEquals(except, value);
955955
}
956956
{
957-
String value = TransUtil.translateFullHeight2HalfHeight(" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚");
957+
String value = TransUtil.translateFullWidth2HalfWidth(" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚");
958958
String except = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚";
959959
assertEquals(except, value);
960960
}
961961
{
962-
String value = TransUtil.translateFullHeight2HalfHeight(" !”#$%&’()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_‘abcdefghijklmnopqrstuvwxyz{|} ̄。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜");
962+
String value = TransUtil.translateFullWidth2HalfWidth(" !”#$%&’()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_‘abcdefghijklmnopqrstuvwxyz{|} ̄。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜");
963963
String except = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚";
964964
assertEquals(except, value);
965965
}
966966
{
967-
String value = TransUtil.translateFullHeight2HalfHeight("<SCRIPT>alert('警告');</SCRIPT>");
967+
String value = TransUtil.translateFullWidth2HalfWidth("<SCRIPT>alert('警告');</SCRIPT>");
968968
String except = "<SCRIPT>alert('警告');</SCRIPT>";
969969
assertEquals(except, value);
970970
}
971971
{
972-
String value = TransUtil.translateHalfHeight2FullHeight("<SCRIPT>alert('警告');</SCRIPT>");
972+
String value = TransUtil.translateHalfWidth2FullWidth("<SCRIPT>alert('警告');</SCRIPT>");
973973
String except = "<SCRIPT>alert(’警告’);</SCRIPT>";
974974
assertEquals(except, value);
975975
}
976976
{
977-
String value = TransUtil.translateHalfHeight2FullHeight(" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚");
977+
String value = TransUtil.translateHalfWidth2FullWidth(" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚");
978978
String except = " !”#$%&’()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_‘abcdefghijklmnopqrstuvwxyz{|} ̄。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜";
979979
assertEquals(except, value);
980980
}

0 commit comments

Comments
 (0)