【发布时间】:2013-04-25 05:25:25
【问题描述】:
我在 jpcap 库的帮助下在 java 中的以太网 (eth0) 上嗅探数据包...所以,在我的项目中,我有一个 JpcapCaptor ...
//Open an interface with openDevice(NetworkInterface intrface, int snaplen, boolean promics, int to_ms)
JpcapCaptor captor=JpcapCaptor.openDevice(devices[index], 65535, false, 20);
captor.setFilter("icmp", true);
captor.loopPacket(-1, new PacketPrinter());
然后我有数据包打印机,它打印嗅探数据包的主体......
public class PacketPrinter implements PacketReceiver {
@Override
public void receivePacket(Packet packet) {
InputStream is = new ByteArrayInputStream(packet.data);
try {
String sstr = IOUtils.toString(is, "UTF-8");
System.out.println("STRING " + sstr);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String ss;
try {
ss = new String(packet.data, "UTF-8");
System.out.println("STRING " + ss);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
但是有一个问题... packet.data 是一个字节[]... 而控制台将其打印为
STRING W�xQ�� !"#$%&'()*+,-./01234567
STRING W�xQ�� !"#$%&'()*+,-./01234567
STRING W�xQ�� !"#$%&'()*+,-./01234567
据我了解是因为编码问题???决定这个问题的解决方案是什么?
【问题讨论】:
-
这是一个编码问题,但可能不是您想的那样。这基本上表明,无论是渲染文本,都没有字符的表示。就您的代码而言,我认为没有错。你从哪里显示这个?你试过没有指定编码吗?
-
是的,我已经尝试过了......我已经开始寻找编码解决方案,就在这个问题出现后没有编码......(((我在 Eclipse 的控制台或 Ubuntu 的终端中显示它。 ..
-
那么您的平台上的字符集中根本没有人类可读的字符来显示这些文本位
标签: java libpcap tcpdump packet-sniffers jpcap