比如我的IP是192.168.1.2,我做了个小程序来监视对我80端口的连接
当发现有IP连接我的80端口时,就禁止他连接我的80端口
监视是实现的,但是如何断开他对我80的连接?
不要告诉我用防火墙或者什么什么工具,需要代码 !-_-
谢谢

解决方案 »

  1.   


    获取对方IP.
    xIP=对方IP
    if(xIP="192.168.1.2")
    {
       // this.close()
       关闭程序,或转向.
    }
      

  2.   

    最简单的办法...使用ARP
    CMD.EXE
    ARP -S IP地址 00-00-00-00-00-00  ...恢复时候 ARP -D IP地址.
      

  3.   

      System.Diagnostics.Process _Process = new System.Diagnostics.Process();
                _Process.StartInfo.FileName = "CMD.EXE";
                _Process.StartInfo.Arguments = "/C ARP -S 192.168.0.200 00-00-00-00-00-00";
                _Process.StartInfo.CreateNoWindow = true;
                _Process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                _Process.Start();  //禁止连接                     
                          System.Diagnostics.Process _Process = new System.Diagnostics.Process();
                _Process.StartInfo.FileName = "CMD.EXE";
                _Process.StartInfo.Arguments = "/C ARP -D 192.168.0.200";
                _Process.StartInfo.CreateNoWindow = true;
                _Process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                _Process.Start();  //恢复连接
      

  4.   

    其实,我做的类似个防火墙策略,虽然禁止了某个IP对我的连接,但是不是所有的连接都禁止
    如果ARP...那所有人都连接不到我了.
      

  5.   


    哎.....ARP -S 192.168.0.200 .....只是200连接不到你了...怎么你理解成全部连接不到你了.
      

  6.   

    似乎...没啥作用...还是好好的可以访问我
    我是192.168.1.207
    他是192.168.1.202
    我执行了ARP -S 192.168.0.202 00-00-00-00-00-00
    但是他依然幸福的访问着我...
      

  7.   

    回来再看老大的回复!
    另外如果用这种方法,会有什么坏处?只会对200那个IP有影响?
    我怎么觉得如果ARP欺骗,那不就把所有都骗了吗?
      

  8.   

    ARP不是欺骗啊.........天啊.... 我是192.168.1.207 
    他是192.168.1.202 
    我执行了ARP -S 192.168.0.202 00-00-00-00-00-00 
    是 ARP -S 192.168.1.202 00-00-00-00-00-00  好不好...
    ARP是地址解析协议  
    ARP -S 192.168.1.202 00-00-00-00-00-00  的意思就是在于 192.168.1.202 的MAC地址必须是 00-00-00-00-00-00 ... 只是对你自己有效啊.
      

  9.   

    呵呵呵呵,不好意思不好意思,是俺太粗心,我还以为是ARP欺骗..不是很了解这些
    先去试试
      

  10.   

    老大,是有效果,但是这样的话,是把他完全断开了,我跟他之间的通讯是完全不通的,我只想断开他对我80的请求,还有什么好办法?
    或者有没有什么办法能将两个.exe合并,再或者,把一个.exe文件加入到我的工程,当满足我某条件时再去运行?
    请高人指点迷津.
      

  11.   


    winpcap发送ip欺骗包可以吗?
      

  12.   


    大哥,winpcap是组件,可以自定义ip包头,可以侦听端口.
    自己伪造一个ip断开连接的包发过去应该可以.http://www.winpcap.org/
      

  13.   

    不愿意用winpcap就自己写驱动,应该也可以,我在书店看过一本介绍这个的书,不算太复杂.
    好像是在ddk上开发,本质上和wincap组件一个效果.
      

  14.   

    是,昨天搜索了大量资料,基本都建议在驱动层拦截,类似sniffer这种,但是我觉得,以我的水平...肯定是实现不了 !-_-
      

  15.   

    winpcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据报。也就是说,winpcap不能阻塞,过滤或控制其他应用程序数据报的发收,它仅仅只是监听共享网络上传送的数据报。因此,它不能用于QoS调度程序或个人防火墙。完,它不行.
      

  16.   

    <<windows 驱动开发技术详解 >>我感觉挺不错的,
    有兴趣你可以慢慢读.没你想的那么复杂.其实我看过一本书上有拦截的源代码.
    明白了驱动层的运行机制.
    不是太复杂的.你说的功能有本书上给过源代码,总共也没多少行.要搞这个最好提前把系统ghost下,我那会竟弄蓝屏了.
      

  17.   

    80端口一般是HTTP服务用的,你不开HTTP服务的话,别人怎么连都连不上你的80端口。
    如果仅仅禁止某些IP访问HTTP服务的话,在目录安全性里添加IP地址限制即可。
      

  18.   

    呵呵,我看过网上的帖子,说是蓝屏了.
    其实我做的这个工具,是给一个朋友用,他要监视他服务器上的某端口,会有多人连接
    当某IP连接时,被我的程序检测到,于是判断这个连接是否有权限,比如验证码是否正确啊什么的,如果不符合
    就强制断开该IP与服务器端口的一切请求,直到他满足条件时才会建立真正的连接
    类似一个proxy如果这个路子不通的话,哪位可以解决下面的问题:
    将两个.exe合并,合并要通过C#完成,或在我的一个工程中将一个.exe文件加进来,然后运行我的程序,程序满足某个条件,再去执行加进来的另外一个EXE文件
    我试过将exe加入资源,也看了CSDN的一个帖子,但是EXE执行不了,有人说将EXE以流的形式读出来,但是我感觉读出的EXE头不正确,所以根本无法执行.
      

  19.   

    那个玩意解析pe可能可以,但是我不清楚两个main函数的入口点怎么处理.
    给你出个土的掉渣的办法,防火墙控制界面长期开着,用CreateRemoteThread操作那个窗体,用防火墙来实现.
      

  20.   

    这个我也想过,但是windows自己的防火墙好象不能单独对某个IP做限制吧?
    或者去修改windows的IP策略