安全中心 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");
}
}