下载地址:
http://auto.wst.net.cn/Port_Spy.rar这个是一个非常好的网络监控源代码,其中包含禁用网络端口,请帮助将这部分代码单独提取出来,禁用网络端口这部分代码。

解决方案 »

  1.   

    Port_Spy.rar中没有禁用网络端口的代码!只是过滤外来IP对你端口的访问,并有如果你禁用了这个外来的IP,他还可通过代理来访问你的端口,据我所知,没有办法专门关闭一个端口,防火墙通常也都是对端口进行过滤,即通过防火墙将信息挡在外面,而不是真正关闭了端口.
      

  2.   

    楼主还在孜孜不倦的追求VB禁网的方法?
    我看还是死了这条心吧。。我昨天看了一下资料,看到这么一段话:Windows下的个人防火墙都是基于对数据报的拦截技术之上。当然在具体的实现方式上它们却有很大的不同。总的来说可分为用户级和内核级数据报拦截两类。其中内核级主要是TDI过滤驱动程序,NDIS中间层过滤驱动程序,NDIS过滤钩子驱动程序等,它们都是利用网络驱动来实现的;而用户级的过滤包括SPI接口,Windows2000包过滤接口等。
    那就是说,完全禁止网络访问你还是必须开发驱动。
    如果你用SPI,应该可以禁止TCP,UDP一类的东西。。但是别人还是能够ping你
      

  3.   

    昨天我又看了一下Port_Spy.rar其中只能控制TCP/ICMP连接而对SMTP/POP3, UDP, and IPX/SPX好象不行,
    其中控制开启关闭端口主要是调用了两个iphlpapi.dll中的api,
    GetTcpTable及SetTcpEntry
    其中的 GetTcpTable函数能返回当前系统中全部有效的 TCP连接。其定义为: 
    DWORD GetTcpTable( 
    PMIB_TCPTABLE pTcpTable, // buffer for the connection table 
    PDWORD pdwSize, // size of the buffer 
    BOOL bOrder // sort the table? 
    ); 其中参数一是 TCP连接表缓冲区的指针,参数二是缓冲区大小(当缓冲区不够大时,该参数返回实际需要的大小),参数三指示连接表是否需要按“Local IP”、“Localport”、“Remote IP”、“Remote port”依次进行排序。而 SetTcpEntry函数可以删除连接。其定义为: 
    DWORD SetTcpEntry( 
    PMIB_TCPROW pTcpRow // pointer to struct. with new state info  
    ); 
    在调用此函数之前,应将欲删连接的状态置为 MIB_TCP_STATE_DELETE_TCB(删除)。MIB_TCP_STATE_DELETE_TCB也是目前唯一可在运行时设置的状态。 程序中放了一个定时器,定时检测连接,如果检测到的连接所用的端口是你要关闭的端口则立即调用settcpentry将其删除,达到所谓"关闭"端口听目地.在源程序的frmMain中有一个定时器事件
    Private Sub tmr1_Timer() '
        CheckTcp
    End Sub
    其是CheckTcp就是用于这一目的的.
    其中你所说的关闭端口的程序就是CheckTcp 此程序在模块NetStat.bas中.