Tesla.Angela 发表于 2010-11-7 00:42:28

[转载]禁止上传下载

#include "stdafx.h"
#include <windows.h>
#include <fltdefs.h>
#include <winsock.h>
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"iphlpapi.lib")

void DisNet()
{
    DWORD err = NO_ERROR;
    INTERFACE_HANDLE hInterface;
    WORD wVersionRequested;
    WSADATA wsaData;
    char name;
    char *ip;
    PHOSTENT hostinfo;
    wVersionRequested = MAKEWORD( 2, 0 );
    if ( WSAStartup( wVersionRequested, &wsaData ) == 0 )
    {
      if( gethostname ( name, sizeof(name)) == 0)
            if((hostinfo = gethostbyname(name)) != NULL)
                ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
    }
    OutputDebugStringA(ip);
    PfCreateInterface(0,
      PF_ACTION_DROP,
      PF_ACTION_DROP,
      FALSE, TRUE, &hInterface);
    BYTE localIp[] = {192,168,18,100};
    RtlCopyMemory(localIp,&(*(struct in_addr *)*hostinfo->h_addr_list).S_un.S_addr,4);
    BYTE DestIp[] = {0,0,0,0};
    PfBindInterfaceToIPAddress(hInterface, PF_IPV4, localIp);
    FILTER_HANDLE fHandle;// 填充过滤包的规则结构
    PF_FILTER_DESCRIPTOR inFilter;
    inFilter.dwFilterFlags = FD_FLAGS_NOSYN;
    inFilter.dwRule = 0;
    inFilter.pfatType = PF_IPV4; //用 ipV4 地址
    inFilter.SrcAddr = localIp; //设置本地IP地址
    inFilter.SrcMask = (PBYTE)"\xff\xff\xff\xff"; //设置本地子网掩码
    inFilter.wSrcPort = FILTER_TCPUDP_PORT_ANY; //任意来源端口
    inFilter.wSrcPortHighRange = FILTER_TCPUDP_PORT_ANY;
    inFilter.DstAddr = 0;
    inFilter.DstMask = 0;
    inFilter.wDstPort =FILTER_TCPUDP_PORT_ANY;
    inFilter.wDstPortHighRange =FILTER_TCPUDP_PORT_ANY;
    inFilter.fLateBound = 0;
    inFilter.dwProtocol = FILTER_PROTO_ANY;
    PfAddFiltersToInterface(hInterface, 0, NULL,1, &inFilter, &fHandle);
    if(err != NO_ERROR)
    {
      OutputDebugStringA("PfAddFiltersToInterface is Wrong\n");
      return ;
    }
    MessageBoxA(NULL,"成功关闭全部上传下载功能","反上传下载",0x1000);
    //移除过滤接口
    PfRemoveFilterHandles(hInterface, 1, &fHandle);
    PfUnBindInterface(hInterface);
    PfDeleteInterface(hInterface);
}

int main(int argc,char **argv)
{
    DisNet();
    return 0;
}

Tesla.Angela 发表于 2010-11-7 00:43:06

原始出处:不知道。。。
朋友在QQ上给我发来的,我总不能说来自qq.com吧。。。

Tesla.Angela 发表于 2013-6-21 21:51:39

这份代码当年没细看,现在发现还挺有使用价值的。
页: [1]
查看完整版本: [转载]禁止上传下载