java - jpcap 嗅探数据包

标签 java libpcap tcpdump packet-sniffers jpcap

我在 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 是一个 byte[]... 控制台将其打印为

    STRING W�xQ��       !"#$%&'()*+,-./01234567
    STRING W�xQ��       !"#$%&'()*+,-./01234567
    STRING W�xQ��       !"#$%&'()*+,-./01234567 

据我了解,这是因为编码问题???解决这个问题的办法是什么?

最佳答案

As I understand it is because of problem with encoding?

这可能是正确的。也可能您尝试转换为字符串的内容根本不是文本。事实上,如果您嗅探到的是原始网络数据包,则几乎保证某些数据包(IP/ICMP 数据包 header )不会是文本。

What is the solution to this problem?

解决方案是了解您正在尝试解码的内容以及将其像编码文本一样解码是否合适。如果没有,您需要以不同的方式解码/显示它......具体取决于相关 RFC 关于您尝试显示的数据包的说明。

关于java - jpcap 嗅探数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16206959/

相关文章:

java - 在网络级别合并的 TCP 数据包

linux - 如何安排 tcpdump 在特定时间段内运行?

java - 如何让数字越来越大

java - 如何在基于 Spring-boot 的应用程序的测试中更改基于 Java 的配置?

python - Libpcap 过滤 src 和 dst 端口

linux - tcpdump 获取特定端口上请求的唯一 IP

java - 递归与堆栈实现。为什么递归返回 StackOverflow 而 Stack 不返回?

java - 在 ExceptionMapper 中注入(inject)单例

linux - tcpdump -dd 输出与 pcap_compile_nopcap 不匹配

c - 如何为 Arm Linux 构建静态版本的 pcap 库