QQ浏览器 v12.2.3.7053版本的 MD5 值为:8285ab3059e5c8b521a264dfbc5c3685
以下内容为反编译后的 nr.java 源代码,内容仅作参考
package kcsdkint;
import android.os.Build;
import android.text.TextUtils;
import com.xiaomi.mipush.sdk.Constants;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.NetworkInterface;
import java.net.SocketAddress;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.List;
public final class nr {
private static int f84864a;
public static int a() {
List<InterfaceAddress> interfaceAddresses;
int i = 1;
if (Build.VERSION.SDK_INT < 9) {
return 1;
}
System.currentTimeMillis();
try {
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
boolean z = false;
boolean z2 = false;
while (networkInterfaces.hasMoreElements()) {
NetworkInterface nextElement = networkInterfaces.nextElement();
if (nextElement.isUp() && (interfaceAddresses = nextElement.getInterfaceAddresses()) != null && interfaceAddresses.size() != 0) {
nextElement.getDisplayName();
boolean z3 = z2;
boolean z4 = z;
for (int i2 = 0; i2 < interfaceAddresses.size(); i2++) {
InetAddress address = interfaceAddresses.get(i2).getAddress();
if (!address.isLoopbackAddress()) {
if (address instanceof Inet4Address) {
z4 = true;
} else if ((address instanceof Inet6Address) && !address.isAnyLocalAddress() && !address.isLoopbackAddress() && !address.isLinkLocalAddress()) {
z3 = true;
}
}
}
z = z4;
z2 = z3;
}
}
if ((z && z2) || !(z || z2)) {
boolean d2 = d();
boolean c2 = c();
if (d2 && c2) {
i = 3;
} else if (!d2) {
}
} else if (!z) {
}
} catch (Throwable unused) {
}
f84864a = i;
return i;
i = 0;
f84864a = i;
return i;
}
public static boolean a(String str) {
if (TextUtils.isEmpty(str)) {
return false;
}
try {
if (str.matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}")) {
String[] split = str.split("\\.");
if (split.length >= 4 && Integer.parseInt(split[0]) <= 255 && Integer.parseInt(split[1]) <= 255 && Integer.parseInt(split[2]) <= 255) {
if (Integer.parseInt(split[3]) <= 255) {
return true;
}
}
}
} catch (Exception unused) {
}
return false;
}
private static boolean a(InetAddress inetAddress) {
DatagramSocket datagramSocket = null;
try {
byte[] bArr = new byte[0];
DatagramSocket datagramSocket2 = new DatagramSocket((SocketAddress) null);
try {
datagramSocket2.send(new DatagramPacket(bArr, 0, inetAddress, 65535));
datagramSocket2.close();
return true;
} catch (Throwable unused) {
datagramSocket = datagramSocket2;
if (datagramSocket != null) {
datagramSocket.close();
}
return false;
}
} catch (Throwable unused2) {
}
}
public static int b() {
int i = f84864a;
return i != 0 ? i : a();
}
public static boolean b(String str) {
if (TextUtils.isEmpty(str)) {
return false;
}
boolean contains = str.contains("::");
if (contains && str.indexOf("::") != str.lastIndexOf("::")) {
return false;
}
if ((str.startsWith(Constants.COLON_SEPARATOR) && !str.startsWith("::")) || (str.endsWith(Constants.COLON_SEPARATOR) && !str.endsWith("::"))) {
return false;
}
String[] split = str.split(Constants.COLON_SEPARATOR);
if (contains) {
ArrayList arrayList = new ArrayList(Arrays.asList(split));
if (str.endsWith("::")) {
arrayList.add("");
} else if (str.startsWith("::") && !arrayList.isEmpty()) {
arrayList.remove(0);
}
split = (String[]) arrayList.toArray(new String[arrayList.size()]);
}
if (split.length > 8) {
return false;
}
int i = 0;
int i2 = 0;
for (int i3 = 0; i3 < split.length; i3++) {
String str2 = split[i3];
if (str2.length() == 0) {
i2++;
if (i2 > 1) {
return false;
}
} else {
if (i3 != split.length - 1 || !str2.contains(".")) {
if (str2.length() > 4) {
return false;
}
try {
int parseInt = Integer.parseInt(str2, 16);
if (parseInt >= 0 && parseInt <= 65535) {
i2 = 0;
}
} catch (NumberFormatException unused) {
}
return false;
}
if (!a(str2)) {
return false;
}
i += 2;
i2 = 0;
}
i++;
}
return i <= 8 && (i >= 8 || contains);
}
private static boolean c() {
try {
return a(InetAddress.getByName("2000::0"));
} catch (Throwable th) {
th.printStackTrace();
return false;
}
}
private static boolean d() {
try {
return a(InetAddress.getByName("8.8.8.8"));
} catch (Throwable th) {
th.printStackTrace();
return false;
}
}
}