(String type,String str)
| 108 | |
| 109 | |
| 110 | private String encdoeLable(String type,String str) throws IOException { // 处理请求编码 |
| 111 | String encodeStr = ""; |
| 112 | |
| 113 | switch (type){ |
| 114 | case "BASE64": |
| 115 | if(str.startsWith("[base64]")){ |
| 116 | str = str.replace("[base64]",""); |
| 117 | encodeStr = base64Encode(base64Decode(str)); |
| 118 | }else { |
| 119 | encodeStr = base64Encode(str); |
| 120 | } |
| 121 | break; |
| 122 | case "URLENCODE": |
| 123 | if(str.startsWith("[base64]")) { |
| 124 | str = str.replace("[base64]",""); |
| 125 | byte[] byteRes = base64Decode(str); |
| 126 | encodeStr = URLEncode(new String(byteRes)); |
| 127 | }else { |
| 128 | encodeStr = URLEncode(str); |
| 129 | } |
| 130 | break; |
| 131 | case "IMG_RAW": |
| 132 | // System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaa"); |
| 133 | String strr = new String(byteImage); |
| 134 | String words = BurpExtender.gui.tfWords.getText(); |
| 135 | |
| 136 | |
| 137 | if (!words.trim().equals("") && strr.contains(words)){ |
| 138 | byteImage = dataimgToimg(strr,words); |
| 139 | |
| 140 | }else { |
| 141 | if ((strr.contains("data:image") ) || (strr.contains("data%3Aimage"))) { |
| 142 | |
| 143 | // 0.20 注释下面,原因是响应包里有直接data:image开头的 |
| 144 | // if ((strr.contains("data:image") && !strr.startsWith("data:image")) || (strr.contains("data%3Aimage") && !strr.startsWith("data%3Aimage"))) { |
| 145 | |
| 146 | |
| 147 | //strr = new String(byteImage); |
| 148 | strr = strr.replace("\\r\\n","").replace("\\n",""); |
| 149 | strr = strr.replace("\\",""); |
| 150 | String pattern = "(data:image.*?)[\"|&]|(data%2Aimage.*?)[\"|&]"; |
| 151 | Pattern r = Pattern.compile(pattern); |
| 152 | Matcher m = r.matcher(strr); |
| 153 | if (m.find()) { |
| 154 | strr = m.group(0).replace("\"", "").replace("&", "").replace("Base64:", "").replace("base64:", ""); |
| 155 | } |
| 156 | if (!strr.contains("data:image")) { |
| 157 | strr = "o;base64," + strr; |
| 158 | } |
| 159 | // BurpExtender.stdout.println(strr); |
| 160 | // byteImage = strr.getBytes(); |
| 161 | byteImage = DatatypeConverter.parseBase64Binary(strr.substring(strr.indexOf(",") + 1)); |
| 162 | } |
| 163 | } |
| 164 | //注意:byte[]转string后,string再转byte[]无法还原的,故该地方采用base64编码存储byte[],等到使用时在解码为byte[]。 |
| 165 | String base64Img = base64Encode(byteImage); |
| 166 | encodeStr = "[base64]" + base64Img + "[base64]"; |
| 167 | // System.out.println(encodeStr); |
no test coverage detected