From fd098f67ef7e57f7165c06519a3f238f9d4529b0 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期二, 15 十一月 2022 09:19:14 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/entity/other/CheckOutLicense.java | 238 +++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/lf/server/entity/other/ReqParamFloatServer.java | 2 src/main/java/com/lf/server/entity/other/FloatServerResponse.java | 14 +- src/main/java/com/lf/server/controller/other/FloatServerController.java | 26 ++++- 说明.txt | 1 5 files changed, 268 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/lf/server/controller/other/FloatServerController.java b/src/main/java/com/lf/server/controller/other/FloatServerController.java index 8b44250..b207683 100644 --- a/src/main/java/com/lf/server/controller/other/FloatServerController.java +++ b/src/main/java/com/lf/server/controller/other/FloatServerController.java @@ -2,8 +2,8 @@ import com.alibaba.fastjson.JSON; import com.lf.server.controller.all.BaseController; -import com.lf.server.entity.show.FloatServerResponse; -import com.lf.server.entity.show.ReqParamFloatServer; +import com.lf.server.entity.other.FloatServerResponse; +import com.lf.server.entity.other.ReqParamFloatServer; import com.lf.server.helper.HttpHelper; import com.lf.server.helper.LicHelper; import io.swagger.annotations.Api; @@ -43,15 +43,15 @@ LicHelper helper = getHelper(); String reqJson = helper.b(str); - ReqParamFloatServer reqParam = JSON.parseObject(reqJson, ReqParamFloatServer.class); - FloatServerResponse fsr = new FloatServerResponse(reqParam); + ReqParamFloatServer rfs = JSON.parseObject(reqJson, ReqParamFloatServer.class); + FloatServerResponse fsr = new FloatServerResponse(rfs); String resJson = JSON.toJSONString(fsr); String strRes = helper.a(resJson); res.getWriter().write(strRes); } catch (Exception ex) { - // + String str = ex.getMessage(); } } @@ -74,6 +74,22 @@ return licHelper; } + @SuppressWarnings("AlibabaUndefineMagicConstant") + private static String getClientIpAddr(HttpServletRequest req) { + String ip; + if ((ip = req.getHeader("x-forwarded-for")) == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = req.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = req.getHeader("WL-Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = req.getRemoteAddr(); + } + + return ip; + } + public static void test() { try { ReqParamFloatServer reqParam = new ReqParamFloatServer("192.168.20.106", "12316"); diff --git a/src/main/java/com/lf/server/entity/other/CheckOutLicense.java b/src/main/java/com/lf/server/entity/other/CheckOutLicense.java new file mode 100644 index 0000000..136e64d --- /dev/null +++ b/src/main/java/com/lf/server/entity/other/CheckOutLicense.java @@ -0,0 +1,238 @@ +package com.lf.server.entity.other; + +import org.apache.commons.codec.binary.Hex; + +import javax.crypto.Cipher; +import javax.crypto.SecretKey; +import java.io.ByteArrayInputStream; +import java.io.ObjectInputStream; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Random; + +/** + * CheckOutLicense + * @author WWW + */ +@SuppressWarnings("AlibabaUndefineMagicConstant") +public class CheckOutLicense { + public static String createFloatingLicense(int n, String s, long expireDate) { + int[] registeredModules = new int[]{1, 3, 4, 9, 10, 11, 12, 13, 17, 25, 30, 33, 37}; + + long n2; + if ((n2 = System.currentTimeMillis() + 86400000L) > expireDate) { + n2 = expireDate; + } + + CheckOutLicense e = new CheckOutLicense(); + e.a(n2); + e.a(n); + e.cc(s); + e.a(registeredModules); + + return e.aaa(e); + } + + public String aaa(final CheckOutLicense b) { + final CheckOutLicense e = b; + return new String(a(e.a, e.b, e.c)) + new bb().a(new StringBuilder().append(e.ee()).toString()); + } + + private char[] a(final long n, final int[] array, final int i) { + final char[] array2 = new char[48]; + final String b = b(n); + final String value = String.valueOf(i); + + final bb b2 = new bb(); + final String a = b2.a(b); + final String a2 = b2.a(value); + + final cc c = new cc(); + for (int j = 0; j < array.length; ++j) { + c.b(array[j]); + } + + final char[] a3 = c.a(); + for (int k = 0; k < 16; ++k) { + array2[k * 3] = a3[k]; + array2[k * 3 + 1] = a.charAt(k); + array2[k * 3 + 2] = a2.charAt(k); + } + return array2; + } + + private static String b(final long timeInMillis) { + final Calendar instance; + (instance = Calendar.getInstance()).setTimeInMillis(timeInMillis); + final int value = instance.get(1); + final int value2 = instance.get(2); + final int value3 = instance.get(5); + final String substring = Integer.toString(value).substring(2, 4); + String s; + if ((s = Integer.toString(value2 + 1)).length() == 1) { + s = "0".concat(String.valueOf(s)); + } + String s2; + if ((s2 = Integer.toString(value3)).length() == 1) { + s2 = "0".concat(String.valueOf(s2)); + } + return String.valueOf(substring) + s + s2; + } + + public static CheckOutLicense a(String s) { + try { + return null; + } catch (Exception ex) { + return null; + } + } + + public final String ee() { + return this.aa; + } + + private String aa; + private long a; + private int c; + private int[] b; + + public final void a(final long a) { + this.a = a; + } + + public final void a(final int c) { + this.c = c; + } + + public final void a(final int[] b) { + this.b = b; + } + + public final long a() { + return this.a; + } + + public final int[] b() { + return this.b; + } + + public final int c() { + return this.c; + } + + private void cc(String aa) { + this.aa = aa; + } + + @SuppressWarnings("AlibabaClassNamingShouldBeCamel") + public class bb { + private SecretKey a; + + public bb() { + try { + this.a = (SecretKey) new ObjectInputStream(new ByteArrayInputStream(Hex.decodeHex("aced0005737200146a6176612e73656375726974792e4b6579526570bdf94fb3889aa5430200044c0009616c676f726974686d7400124c6a6176612f6c616e672f537472696e673b5b0007656e636f6465647400025b424c0006666f726d617471007e00014c00047479706574001b4c6a6176612f73656375726974792f4b657952657024547970653b7870740003444553757200025b42acf317f8060854e00200007870000000084f5b0e52b33dbf797400035241577e7200196a6176612e73656375726974792e4b6579526570245479706500000000000000001200007872000e6a6176612e6c616e672e456e756d00000000000000001200007870740006534543524554".toCharArray()))).readObject(); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + public String a(final String s) { + try { + final Cipher instance; + (instance = Cipher.getInstance("DES/ECB/PKCS5Padding")).init(1, this.a); + return Hex.encodeHexString(instance.doFinal(s.getBytes())); + } catch (Exception ex) { + return null; + } + } + + public String b(final String s) { + try { + final Cipher instance; + (instance = Cipher.getInstance("DES/ECB/PKCS5Padding")).init(2, this.a); + return new String(instance.doFinal(Hex.decodeHex(s.toCharArray()))); + } catch (Exception ex) { + return null; + } + } + } + + @SuppressWarnings("AlibabaClassNamingShouldBeCamel") + public final class cc { + private int a; + private char[] b; + private int c = 63; + + public cc() { + this.a = 0; + Arrays.fill(this.b = new char[c], '0'); + this.a = new Random().nextInt(16); + String obj; + if ((obj = Integer.toBinaryString(this.a)).length() == 1) { + obj = "000".concat(String.valueOf(obj)); + } else if (obj.length() == 2) { + obj = "00".concat(String.valueOf(obj)); + } else if (obj.length() == 3) { + obj = "0".concat(String.valueOf(obj)); + } + for (int i = 0; i < 4; ++i) { + this.b[i] = obj.charAt(i); + } + } + + public cc(String binaryString) { + this.a = 0; + Arrays.fill(this.b = new char[c], '0'); + final int length; + if ((length = (binaryString = Long.toBinaryString(Long.parseUnsignedLong(binaryString, 16))).length()) <= c) { + for (int i = 0; i < length; ++i) { + this.b[c - length + i] = binaryString.charAt(i); + } + } + final char[] value = new char[4]; + System.arraycopy(this.b, 0, value, 0, 4); + binaryString = new String(value); + this.a = Integer.parseUnsignedInt(binaryString, 2); + } + + @Override + public final String toString() { + String string = ""; + for (int i = 0; i < c; ++i) { + string = String.valueOf(string) + this.b[i]; + } + return string; + } + + public final char[] a() { + final String hexString = Long.toHexString(Long.parseUnsignedLong(this.toString(), 2)); + final int n; + final char[] array; + Arrays.fill(array = new char[n = (c + 1) / 4], '0'); + for (int length = hexString.length(), i = 0; i < length; ++i) { + array[n - length + i] = hexString.charAt(i); + } + return array; + } + + public final boolean a(int c) { + return (c = this.c(c)) < c && this.b[c] == '1' && c >= 4; + } + + private int c(int n) { + if (n >= 0 && n < 59) { + if ((n += 4 + this.a) >= 63) { + n -= 59; + } + return n; + } + return -1; + } + + public final void b(int c) { + if ((c = this.c(c)) < c && c >= 4) { + this.b[c] = '1'; + } + } + } +} diff --git a/src/main/java/com/lf/server/entity/show/FloatServerResponse.java b/src/main/java/com/lf/server/entity/other/FloatServerResponse.java similarity index 79% rename from src/main/java/com/lf/server/entity/show/FloatServerResponse.java rename to src/main/java/com/lf/server/entity/other/FloatServerResponse.java index 9aaab2a..de5ed9d 100644 --- a/src/main/java/com/lf/server/entity/show/FloatServerResponse.java +++ b/src/main/java/com/lf/server/entity/other/FloatServerResponse.java @@ -1,9 +1,8 @@ -package com.lf.server.entity.show; +package com.lf.server.entity.other; import com.lf.server.helper.StringHelper; import java.util.Calendar; -import java.util.Date; /** * FloatServerResponse @@ -29,16 +28,17 @@ public FloatServerResponse() { } - public FloatServerResponse(ReqParamFloatServer req) { + public FloatServerResponse(ReqParamFloatServer rfs) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, 2025); - this.id = req.getId(); - this.localId = req.getLocalId(); - this.availableNum = req.getAvailableNum(); + this.id = rfs.getId(); + this.localId = rfs.getLocalId(); + this.availableNum = rfs.getAvailableNum(); this.time = calendar.getTimeInMillis(); this.expireDate = StringHelper.YMD_FORMAT.format(this.time); - this.licenseCode = "78a82f0920de0f557f8177bec1e48601c4dc25e4054a00728e4314b56528d3a1632de5298edee38a65412277977a174fea5d91c452b19ef138dbc2ba089ba632"; + //this.licenseCode = "78a82f0920de0f557f8177bec1e48601c4dc25e4054a00728e4314b56528d3a1632de5298edee38a65412277977a174fea5d91c452b19ef138dbc2ba089ba632"; + this.licenseCode = CheckOutLicense.createFloatingLicense(rfs.getAvailableNum(), rfs.getId(), this.time); } public String getModules() { diff --git a/src/main/java/com/lf/server/entity/show/ReqParamFloatServer.java b/src/main/java/com/lf/server/entity/other/ReqParamFloatServer.java similarity index 98% rename from src/main/java/com/lf/server/entity/show/ReqParamFloatServer.java rename to src/main/java/com/lf/server/entity/other/ReqParamFloatServer.java index d512d4e..2342e00 100644 --- a/src/main/java/com/lf/server/entity/show/ReqParamFloatServer.java +++ b/src/main/java/com/lf/server/entity/other/ReqParamFloatServer.java @@ -1,4 +1,4 @@ -package com.lf.server.entity.show; +package com.lf.server.entity.other; import java.net.Inet4Address; import java.net.InetAddress; diff --git "a/\350\257\264\346\230\216.txt" "b/\350\257\264\346\230\216.txt" index 1f54a4d..fd25d20 100644 --- "a/\350\257\264\346\230\216.txt" +++ "b/\350\257\264\346\230\216.txt" @@ -149,6 +149,7 @@ ---------------------------------------------------------------------------------------------------- floatserver http://localhost:12316/floatserver/checkout/license String str = EntityUtils.toString(entity, "UTF-8"); +java -jar C:\360\luyten054\luyten-0.5.4.jar 璇锋眰锛� 8dfb75298185cbcc4b2d485fdb4f25627f7aeb4dd41329076b5015586e4d56cf755f0dfd19be0d80e2573e0a2a22edca35215b390607b0ff68deab90c69296df60934315036bd8a64ee668a39502754b701be7534d0ca2e790161194d673d9454c44c570a1dbe604ac5952be731ca15809f9f4d43ad1b023f69981ce77abacc50e8e5217627eb236d5f6d114e00585d9a597f3a195b0b0c0ff8cf1e2445ca12e -- Gitblit v1.9.3