1

我正在尝试重新创建我在互联网上找到的称为颠倒互联网的东西。它用于我的家庭网络。本质上,这个想法是使用 ARP 欺骗来改变互联网窃取者的互联网结果,使他们停止。我似乎无法让它工作。到目前为止,它会读取所有传入/传出 arp 数据包的往返地址,但是当网络浏览无法正确解析它们时,我似乎无法让它发送任何数据包,或者至少无法发送我的计算机。问题似乎出在 tcp/ip 数据包发送的某个地方:

public void sendTCPForKittens(IPPacket p) {
        if (p.src_ip.getAddress().equals(
                Util.get_inet4(devices[0]).address.getAddress()))
            return;
        String incoming = Util.parseBytes(p.data);
        System.out.println("Packet from: " + p.src_ip.toString() + "\nData: "
                + incoming);
        IPPacket falsep2 = p;
        // p.datalink = ethpack;
        if (p.src_ip.getAddress() == Util.encodeStringToByte("192.168.1.1")) {
            falsep2.src_ip = p.src_ip;
            falsep2.dst_ip = p.dst_ip;
            falsep2.data = Util.encodeStringToByte("www.twitter.com");
            outgoing.sendPacket(falsep2);
        }
        // spoofed packet
        /*
         * System.out.println("SPOOFED IP DATA: ");
         * System.out.println("Packet from: " + falsep2.src_ip.toString() +
         * " To: " + falsep2.dst_ip.toString() + "\nData: " +
         * Util.parseBytes(falsep2.data));
         */
        p.data = new byte[] { 0 };
        p.header = new byte[] { 0 };
        outgoing.sendPacket(p);
    }
4

1 回答 1

2

您所指的原始页面根本没有提到 ARP 欺骗,我不确定您要在 java 中重写什么。该系统有5个组件:

  1. 检测未授权用户(原方案使用DHCP)
  2. 将他们的流量转发到特殊服务器(原始解决方案使用 iptables)
  3. 解析和重写 TCP 流(原始解决方案使用 iptables + linux 内核)
  4. 代理HTTP协议(原方案使用squid)
  5. 颠倒图像(使用 perl + imagemagick 的原始解决方案)

既然你在谈论 ARP,看起来你想重写 (1) 和 (2)。我建议不要这样做。您似乎对网络协议感到非常困惑(您谈论 ARP,该功能的名称中有 TCP,您使用了仅属于 DNS 协议的不正确编码的主机名,您没有设置数据包类型等...)。

我建议从可行的解决方案开始,然后慢慢地用 java 重写东西:

  • 为自己准备一个 Linux/OpenWRT 路由器,然后设置防火墙 NAT 规则,以便所有未经授权的 Web 连接都通过您的主计算机。更好的是,您当前的路由器可能已经支持 OpenWRT,那么您将无需购买任何东西。这将立即处理最难的部分 - (1) (2) 和 (3)。您应该立即看到所有未经授权的流量都流向您的机器。
  • 安装 Squid(用于第 4 步)。所有未经授权的流量都将通过 squid。
  • 在 Java 中实现倒置旋转图像(步骤 5)。
  • 当这工作时,您可以添加 Java HTTP 代理,这样您就不必再使用 Squid。

如果您想这样做,我可以更详细地描述这些步骤。

于 2013-09-02T19:21:44.503 回答