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;
        }
    }
}