【问题标题】:Java TCP Socket SniffingJava TCP 套接字嗅探
【发布时间】:2010-10-10 02:00:09
【问题描述】:

我正在使用 TCP 套接字在服务器和客户端程序之间使用同一台计算机 (localhost) 上的特定端口号进行数据通信。

我需要一个可以捕获通过该套接字发送/接收的数据的软件?

(或)

在 Java 中从指定端口嗅探数据包的最简单方法是什么?

【问题讨论】:

    标签: java sockets client


    【解决方案1】:

    像这样运行你的程序:

    java -Djavax.net.debug=all helloworld.java

    Oracle JSSE page 上已完整记录了该开关

    优点:

    • 比其他建议的解决方案简单得多(不需要外部软件)
    • 还可以解密/转储 TLS/SSL 连接:)

    缺点:

    • 这只有在您使用来自java.net.* 的类时才有效例如OutputStreamInputStream 如果您使用的是原始套接字,这将不起作用。这在链接中有记录。
    • 相信这可能只适用于 Oracle JDK。

    【讨论】:

      【解决方案2】:

      Tcpdump也可以直接使用,如果流量不高,不用wireshark。就像

      tcpdump -ni lo0 port 1234
      

      应该是你所需要的(lo0 是所有 Unix/Linux 系统上的环回接口;当然也要更改端口号)。

      【讨论】:

        【解决方案3】:

        您可以使用tcpdump,它为您提供多种选择。使用 -w 选项将捕获保存在 .pcap 文件中,完成后使用 wireshark 打开该文件。这种方式的优点是您可以每秒捕获很高的数据包率,而不会影响您电脑的整体性能(即使它是低端的)。

        【讨论】:

          【解决方案4】:

          如果您正在编写一些代码(而不仅仅是运行 wireshark/tcpdump),那么您几乎没有选择。如果您想坚持使用 Java,那么使用原始套接字的唯一(?)选项是通过 JNI,并且很少有库可以提供帮助,例如:

          • jNetPcap - 原生 libpcap/winpcap 库的封装,暴露了它们的所有功能和结构
          • RockSaw - 使用原始套接字的 API

          【讨论】:

            【解决方案5】:

            如果你不介意使用命令行来搞砸,你可以试试netcat。 如果您愿意,它可以让您监听端口并将输出转储到文件中。
            你也可以让它发送虚假数据并记录响应。

            我经常将它用作伪装的 HTTP 代理(并配置 Firefox 以使用它)来发现通过网络发送的内容。

            【讨论】:

              【解决方案6】:

              最简单的方法是使用代理实现从其中一个程序中的套接字替换InputStream/OutputStream,该代理实现可以打印/记录或“三通”到原始和打印/日志流。

              但如果你真的想弄得一团糟,那里有很多嗅探器。

              【讨论】:

                【解决方案7】:

                我建议使用 Wireshark。它易于使用并且可以在许多平台上运行。

                http://www.wireshark.org/

                【讨论】:

                • 很遗憾,当客户端和服务器在同一台机器上时,它将无法工作。
                • 会的。只需选择环回接口进行捕获即可。
                • wiki.wireshark.org/CaptureSetup/Loopback(“替代方案”部分) - 另一种方法是通过网关添加到本地计算机的路由
                猜你喜欢
                • 2012-10-25
                • 1970-01-01
                • 2014-02-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-05-14
                相关资源
                最近更新 更多