【问题标题】:A Packet Blocker Software封包拦截软件
【发布时间】:2011-05-09 18:38:52
【问题描述】:

谁能给我推荐一款封包拦截软件??

我的要求是阻止局域网内的数据包。(互联网不包括在内)。

假设 CLIENT_A 在同一个网络 (LAN) 中与 CLIENT_B 通信。

我想要一个 CLIENT_C(在同一个网络中)来捕获(我可以为此目的使用 jpcap 库的嗅探器)并阻止 CLIENT_A 发送到 CLIENT_B 的数据包。

如何通过 LAN 阻止数据包..?

提前谢谢你。

问候, 维尼特·沙阿

【问题讨论】:

    标签: java networking blocking packet lan


    【解决方案1】:

    这类事情通常使用单独的防火墙(例如在路由器或网关盒中)或运行在一台或两台客户端计算机上的防火墙软件来完成。

    这不是用 Java 实现的明智之举。

    EDIT - 对此后续行动的回应

    我知道这样的事情在 Java 中是不可取的..但仍然必须实现它..所以有什么方法可以这样做..?

    让我们假设您正在讨论在 Linux 机器上实现客户端防火墙。我可以想到两种方法:

    • 您可以使用Process.execute() 和朋友来运行Linux iptables(8) 管理实用程序,该实用程序操纵操作系统内核的网络数据包过滤器。这是最简单的基于 Java 的方法。但它要求您的 Java 应用程序以 root 运行。

    • 您可以对 iptables(8) 的操作进行逆向工程,以操纵数据包过滤器并在 Java 中编写相同的功能。那将是更多的编码工作,包括通过 JNI 或 JNA 在 C 中实现部分功能。并且您的应用需要以root 身份运行。

    但是一个简单得多的方法是简单地从命令行运行iptables(8),或者使用基于 GUI 的精美管理工具进行更改。

    请注意,在上述场景中,防火墙本身并不是用 Java 实现的。您所做的只是从 Java 应用程序管理防火墙。我想不出任何在 Java 中实际执行过滤/阻塞的方法,甚至是远程实用的。

    【讨论】:

    • 我知道这样的事情在 Java 中是不可取的..但仍然必须实现它..所以有什么办法可以这样做..?
    【解决方案2】:

    您可能需要一些 arp 攻击东西来将数据包从 CLIENT-A 重定向到 Client-C 而不是 CLIent-B。

    我认为这不是一个好主意。

    【讨论】:

      【解决方案3】:

      如果您在客户端 C 上读取网络上的数据包,则客户端 B 已经收到它,因此阻止它为时已晚。如果您使用的是交换式以太网,那么客户端 C 甚至都看不到发送给 B 的数据包。

      这样做的唯一方法是让 A 通过 C 与 B 通信,然后 C 可以决定是否应该发送数据包。这称为防火墙。您可以在 Linux 上使用 iptables 来执行此操作,而不是编写一个。

      但要利用这一点,您需要了解网络的工作原理,根据您的问题,我不确定您目前是否这样做。所以你需要学习很多关于以太网的知识(假设你使用的是以太网)和不同的网络层。我不确定这方面的资源。

      【讨论】:

      • 在windows环境下可以吗..?一种中间人攻击..?
      • 是的,可以使用 Windows。
      猜你喜欢
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 1970-01-01
      • 2013-06-25
      相关资源
      最近更新 更多