⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.cpp

📁 IP数据包过滤
💻 CPP
字号:
#include <stdio.h>
#include <windows.h> 
/*#import "sign.dll" */ 
//定义函数指针
//typedef int (*FUN)(int, int); 
//typedef  int (*FUN)(char *,char *,char *,char *,char *,char *,char *,int);
//内网定义
#define NETWORK_LIST  0

//访问外网     
#define ACCESS_INTERNET  1

//白名单     
#define WHITE_LIST  2
//全部数据包
#define ALL_FILTER  3
//本机端口过滤
#define LOCAL_PORT_FILTER 4
//IP黑名单
#define BLACK_LIST 5
//网络过滤
#define NET_FILTER 6


typedef  int (*REG)(char *);


typedef  int (*STOP)(char *);
typedef  int (*RUN)(char *);

typedef  int (*ADD_RULER)(char *,USHORT ,USHORT, char * ,USHORT ,char *,char *,USHORT , char *, char *, USHORT  ,BOOLEAN);

typedef  int (*START_FILTER)(char *);


//#import  "add.dll"   no_namespace

int main(int argc,char **argv)
{
	
	//HINSTANCE hInst = LoadLibrary("testdll.dll"); 
	//FUN add;
	//if(hInst) 
	//{ 
	//add=(FUN)GetProcAddress(hInst, "add"); 
	//}
	///*if(add)*/
	//int i = add(1,2);
	//printf("%d\n",i);
	//if(hInst)
	//FreeLibrary(hInst);

	HINSTANCE hInst = LoadLibrary("ctr_filter.dll");
	
	STOP unInstall_filter;
	ADD_RULER addRule;
    REG RegHandelDev;
	RUN startFilter;
	if(hInst) 
	{ 

	
    addRule=(ADD_RULER)GetProcAddress(hInst, "addRule");  
    startFilter = (RUN)GetProcAddress(hInst, "startFilter");
	unInstall_filter=(STOP)GetProcAddress(hInst, "unInstall_filter"); 
    RegHandelDev = (REG)GetProcAddress(hInst, "RegHandelDev"); 

	}
	 int rtn,i=0;
	 rtn = RegHandelDev("IPPackageFilter");
	 /**
	  * 规则函数: addRule(char *driver_name,USHORT type,USHORT protocol,char *sourceIp,char *sourceMask,USHORT sourcePort, char *destinationIp, char *destinationMask, USHORT  destinationPort,BOOLEAN isDrop);
	  * 规则说明:
	  *  type:参数
	  *     LOCAL_PORT_FILTER类型: 端口过滤。
	  *     BLANK_IP_FILTER类型: IP黑名单过滤。
	  *     NET_FILTER类型:子网过滤。
      *  protocol参数:协议号
	  *     协议可以指定协议类型,TCP=6,UDP=17,ICMP=1。如果指定=0,表示对所有协议作用。
	  * sourceIp、sourceMask参数:源IP地址和掩码
	  * sourcePort参数:源端口号。等于0表示不指定端口。
	  * destinationIp、destinationMask参数:目的地址、目的掩码。
	  * destinationPort参数:目的端口。等于0表示不指定端口。
	  * isDrop参数:是否丢弃这个数据分组。TRUE:丢弃;FALSE:放过。
	  */
     //一个应用层上的过滤。不让访问ORACLE数据库
//白名单需要先添加在端口过滤之后,
     
   //  rtn = addRule("IPPackageFilter", LOCAL_PORT_FILTER, 0, "",  "", 0, "139.9.9.37", "", 1521, FALSE);

	 rtn = addRule("IPPackageFilter", WHITE_LIST,0,"139.9.9.144", 0, "",  "", 0, "139.9.9.8", "", 0, TRUE);
    // rtn = addRule("IPPackageFilter", ALL_FILTER, 0, "",  "",0, "", "", 0, TRUE);
	 //IP黑名单
     //rtn = addRule("IPPackageFilter", BLANK_IP_FILTER, 0, "",  "", 0, "139.9.9.37", "", 0, TRUE);
	 //子网过滤,限制子网访问
     rtn = addRule("IPPackageFilter", NET_FILTER,0,"139.9.9.144", 0, "",  "",0, "139.9.9.0", "255.255.255.0", 0, TRUE);
	 rtn = startFilter("IPPackageFilter");
     rtn = unInstall_filter("IPPackageFilter");

    if(hInst)
	FreeLibrary(hInst);



	//HINSTANCE hInst = LoadLibrary("sign.dll");
	//FUN  Sign_File;
	//if(hInst) 
	//{ 
	//Sign_File=(FUN)GetProcAddress(hInst, "Sign_File"); 
	//}
	//Sign_File("1234","c:\\1.txt","c:\\dfadfafjasf.txt");
 //   if(hInst)
	//FreeLibrary(hInst);


	//HINSTANCE hInst = LoadLibrary("VerifyLdap.dll");
	//FUN  verify_id;
	//int flag;
	//if(hInst) 
	//{ 
	//verify_id=(FUN)GetProcAddress(hInst, "verify_id"); 
	//}
	//flag = verify_id("/C=86/ST=Beijing/O=Police/OU=info_office/CN=policeofficer/emailAddress=po@police.cn","d:\\数据库设计说明(运维分系统).doc","d:\\数据库设计说明(运维分系统).sign","139.9.2.165","cn=root,dc=tjhn,dc=com","dc=tjhn,dc=com","secret",389);
	///*(char *usr_id,char *data_file,char *sign_file,char *HOSTNAME,char *ROOT_ID ,char *BASE,char *ROOT_PSW,int PORT_NUMBER)*/
	//printf("flag = %d\n",flag);
	//if(hInst)
	//FreeLibrary(hInst);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -