在java中重新创建倒置的ternet

时间:2013-08-05 07:45:04

标签: java network-programming lan administration jpcap

我正在尝试重新创建我在互联网上发现的名为upside-down ternet.的内容,以便在家庭网络上使用。从本质上讲,这个想法是使用ARP Spoofing来改变互联网窃取者的互联网结果,使它们停止。我似乎无法让它工作。它从现在开始读取所有传入/传出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);
    }

1 个答案:

答案 0 :(得分:2)

你所引用的原始页面根本没有提到ARP欺骗,我不确定你想在java中重写什么。该系统有5个组成部分:

  1. 检测未经授权的用户(原始解决方案使用DHCP)
  2. 将他们的流量转发到特殊服务器(原始解决方案使用iptables)
  3. 解析并重写TCP流(原始解决方案使用iptables + linux内核)
  4. 代理HTTP协议(原始解决方案使用squid)
  5. 将图像上下颠倒(原始解决方案使用perl + imagemagick)
  6. 既然你在谈论ARP,看起来你想重写(1)和(2)。我建议不要这样做。您似乎对网络协议非常困惑(您谈论ARP,该功能在名称中使用TCP,您使用仅属于DNS协议的不正确编码的主机名,您不设置数据包类型等...)。

    我建议从工作解决方案开始,然后在java中慢慢重写内容:

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

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