安全中心 v4.9.2版本的 MD5 值为:d64c0ec7920c532fa6e6d9bb001cf9bf

以下内容为反编译后的 b.java 源代码,内容仅作参考


package mars.tvcontroler.Native;

import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class b implements Runnable {
    private TVControler eRh;

    public b(TVControler tVControler) {
        this.eRh = tVControler;
    }

    private static List e(ByteBuffer byteBuffer) {
        int i;
        ArrayList arrayList = new ArrayList();
        while (true) {
            try {
                i = byteBuffer.get();
            } catch (Exception e) {
            }
            if (i == 0) {
                break;
            }
            if ((i & 192) == 192) {
                int i2 = ((i & 63) * 256) + (byteBuffer.get() & 255);
                if (i2 <= 0 || i2 >= byteBuffer.limit()) {
                    break;
                }
                ByteBuffer duplicate = byteBuffer.duplicate();
                duplicate.position(i2);
                int i3 = duplicate.get();
                if (i3 <= 0 || i3 >= byteBuffer.limit() || i3 <= 0) {
                    break;
                }
                byte[] bArr = new byte[i3];
                for (int i4 = 0; i4 < i3; i4++) {
                    bArr[i4] = duplicate.get();
                }
                arrayList.add(new String(bArr));
                break;
            }
            byte[] bArr2 = new byte[i];
            for (int i5 = 0; i5 < i; i5++) {
                bArr2[i5] = byteBuffer.get();
            }
            arrayList.add(new String(bArr2));
        }
        return arrayList;
    }

    private static String f(ByteBuffer byteBuffer) {
        List e = e(byteBuffer);
        if (e.size() == 0) {
            return null;
        }
        return (String) e.get(0);
    }

    private static String a(DatagramPacket datagramPacket) {
        try {
            ByteBuffer wrap = ByteBuffer.wrap(datagramPacket.getData(), datagramPacket.getOffset(), datagramPacket.getLength());
            wrap.getShort();
            wrap.getShort();
            short s = wrap.getShort();
            short s2 = wrap.getShort();
            wrap.getShort();
            wrap.getShort();
            for (int i = 0; i < s; i++) {
                f(wrap);
                wrap.getShort();
                wrap.getShort();
            }
            for (short s3 = 0; s3 < s2; s3++) {
                String f = f(wrap);
                short s4 = wrap.getShort();
                wrap.getShort();
                wrap.getInt();
                short s5 = wrap.getShort();
                wrap.duplicate().position(wrap.position()).limit(wrap.position() + s5);
                wrap.position(s5 + wrap.position());
                if (s4 == 1) {
                    return f;
                }
            }
        } catch (Exception e) {
        }
        return null;
    }

    @Override
    public void run() {
        String str;
        String str2;
        String str3;
        boolean z;
        Map map;
        String a;
        String aa;
        Map map2;
        String str4;
        str = this.eRh.Rc;
        defpackage.a.a(str, "mMdnsSearchRunable:start");
        this.eRh.eBJ = false;
        try {
            MulticastSocket multicastSocket = new MulticastSocket(5353);
            multicastSocket.joinGroup(InetAddress.getByName("224.0.0.251"));
            DatagramPacket datagramPacket = new DatagramPacket(new byte[4096], 4096);
            while (!z) {
                multicastSocket.receive(datagramPacket);
                String hostAddress = datagramPacket.getAddress().getHostAddress();
                map = this.eRh.eFu;
                if (!map.containsKey(hostAddress) && (a = a(datagramPacket)) != null) {
                    this.eRh.a(1, hostAddress, a, 0);
                    aa = this.eRh.aa(hostAddress);
                    map2 = this.eRh.eFs;
                    map2.put(hostAddress, a);
                    str4 = this.eRh.Rc;
                    defpackage.a.a(str4, "mMdnsSearchRunable:" + hostAddress + "  " + aa + "  " + a);
                }
            }
            multicastSocket.close();
        } catch (Exception e) {
            str2 = this.eRh.Rc;
            defpackage.a.a(str2, "mMdnsSearchRunable:error:" + e.toString());
        }
        this.eRh.eBJ = true;
        str3 = this.eRh.Rc;
        defpackage.a.a(str3, "mMdnsSearchRunable:stop");
    }
}