📄 controlcode.h
字号:
//-----------------------------------------------------------
// Author & Create Date: Tony Zhu, 2002/04/02
//
// Pro0ect: PKF 2.0
//
// Copyright: 2002-2003 Passeck Technology.
//
//
//
#ifndef _CONTROLCODE_H
#define _CONTROLCODE_H
#define FILE_DEVICE_NDISHK (32767 + 87) // 0x7FFF + 78
#define nDisHK_API_BASE (2047 + 87) // 0x07FF + 78
#define CTL_CODE_EX(Function) CTL_CODE(FILE_DEVICE_NDISHK, \
(nDisHK_API_BASE + Function), METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_NDISHK_MALLOC_ACL_BUFFER CTL_CODE_EX(0)
#define IOCTL_NDISHK_FREE_ACL_BUFFER CTL_CODE_EX(1)
#define IOCTL_NDISHK_GET_ACL_BUFFER CTL_CODE_EX(2)
#define IOCTL_NDISHK_GET_BUFFER_POINT CTL_CODE_EX(4)
#define IOCTL_NDISHK_GET_DIRECTION_POINT CTL_CODE_EX(5)
#define IOCTL_NDISHK_ADD_NETBIOS_NAME CTL_CODE_EX(6)
#define IOCTL_NDISHK_SET_FILTER_MODE CTL_CODE_EX(8)
#define IOCTL_NDISHK_SET_PKF_HANDLE CTL_CODE_EX(9)
#define IOCTL_NDISHK_GET_NETBIOS_NAME CTL_CODE_EX(10)
#define IOCTL_NDISHK_GET_NAME_FROM_IP CTL_CODE_EX(11)
#define IOCTL_NDISHK_GET_IP_FROM_NAME CTL_CODE_EX(12)
#define IOCTL_NDISHK_GET_NETBIOS_NAME_LIST CTL_CODE_EX(13)
//
// 2002/08/20 add
//
#define IOCTL_NDISHK_UNMAP_ACL_BUFFER CTL_CODE_EX(14)
#define IOCTL_NDISHK_UNMAP_BUFFER_POINT CTL_CODE_EX(15)
//
// 2002/08/21 add
//
#define IOCTL_NDISHK_REFRESH_HOOK_SEND CTL_CODE_EX(16)
#define IOCTL_NDISHK_GET_MAC_ADDRESS_FROM_IP CTL_CODE_EX(17)
#define IOCTL_NDISHK_GET_PROCESS_INFO CTL_CODE_EX(18)
#define IOCTL_NDISHK_ADD_MAC CTL_CODE_EX(19)
#define IOCTL_NDISHK_SET_DNS_MAC CTL_CODE_EX(20)
#define IOCTL_REGMON_GET_REG_INFO CTL_CODE_EX(21)
#define FILE_DEVICE_DRVFLTIP 0x00654322
//
// Macro definition for defining IOCTL and FSCTL function control codes. Note
// that function codes 0-2047 are reserved for Microsoft Corporation, and
// 2048-4095 are reserved for customers.
//
//
// 2002/08/20 add
//
#define TYPE_IOCTL_UNMAP_BUFFER_1 1
#define TYPE_IOCTL_UNMAP_BUFFER_2 2
//static BYTE CONTROL_CODE_GUID[] = {0x3e,0x83,0x78,0x43,0x82,0x84,0x78,0x43,0x76,0x83,0x7e,0x88,0x55,0x8e,0x7d,0x76,0x7e,0x7f,0x7g,0x78,0x76,0x7f,0x4g,0x89,0x70,0x83,0x43,0x80,0x7e,0x76,0x82,0x84,0x78,0x88,0x70,0x7b,0x55,0x76,0x7e,0x7f,0x7c,0x83,0x7e,0x8e,0x7c,0x83,0x7e,0x8e,0x3d,0x3e,0xd0,0xcf,0x45,0x46,0xg4,0xd5,0xc6,0xc6,0xfd,0xe4,0xc7,0xc5,0xgd,0xdc,0xg9,0xe6,0xc4,0xc8,0xe5,0xdf,0xbe,0xd3,0xc6,0xc6,0x35,0x40,0x4b,0x4d,0x4b,0x4e,0x4d,0x40,0x45,0x46,0x4e,0x48,0x46,0x3d,0xeg,0xcg,0x03,0xe4,0xbg,0xcf,0x4f,0x69,0x60,0x40,0x40,0x45,0x48,0x45,0x4d,0x4f,0x59,0x5e,0x65,};
//#define MAX_SPI_PORT 8192
#define MAX_PACKET_BUFFER 512
#define MAX_PACKET_ONLINE 1024
#define PORT_LENGTH 2
typedef struct __PACKET_BUFFER__ PACKET_BUFFER, *PPACKET_BUFFER;
#define PACKET_BUFFER_LENGTH sizeof(PACKET_BUFFER)
#define PACKET_INIT_LENGTH PACKET_BUFFER_LENGTH
typedef struct __PACKET_DIRECTION__ PACKET_DIRECTION, *PPACKET_DIRECTION;
#define PACKET_DIRECTION_LENGTH sizeof(PACKET_DIRECTION)
#define PACKET_STATUS_FREE 0
#define PACKET_STATUS_USING 1
#define NETBIOS_NAME_MAX_LENTH 64
struct __PACKET_BUFFER__
{
BYTE Status;
BYTE AclType;
BYTE NetType;
BYTE TimeType;
ULONG AclId;
union
{
struct
{
USHORT TcpCode : 6;
USHORT Reserved : 10;
};
struct
{
USHORT TcpFin : 1;
USHORT TcpSyn : 1;
USHORT TcpRst : 1;
USHORT TcpPsh : 1;
USHORT TcpAck : 1;
USHORT TcpUrg : 1;
USHORT Direction : 1; // 0: IN, 1: OUT
USHORT SendOrRecv : 1;
USHORT Action : 8;
};
};
BYTE bReserved[2];
BYTE Protocol;
BYTE Week;
BYTE IcmpType;
BYTE IcmpSubType;
ULONG Time;
BYTE SourceMac[6];
BYTE DestinationMac[6];
char SourceName[NETBIOS_NAME_MAX_LENTH];
char DestinationName[NETBIOS_NAME_MAX_LENTH];
ULONG SourceIp;
ULONG DestinationIp;
union
{
ULONG Id;
struct
{
USHORT SourcePort : 16;
USHORT DestinationPort : 16;
};
};
ULONG DataBytes;
ULONG ProcessHandle;
ULONG bDeleteFlag;//这个标志为零,表示该包可以安全写入,向该包写入信息时,会对该成员置1,读取该包后清零
char sProcess[16];
char szMatchRule[32];
};
struct __PACKET_DIRECTION__
{
ULONG Id;
struct
{
BYTE Direction : 4;
BYTE Action : 4;
};
BYTE NetType;
struct
{
BYTE AclType : 4;
BYTE Reserved : 2;
BYTE DeleteIn : 1;
BYTE DeleteOut: 1;
};
BYTE Protocol;
ULONG AclId;
ULONG Time;
ULONG ProcessHandle;
ULONG SendData;
ULONG RecvData;
ULONG LocalIp;
ULONG RemoteIp;
USHORT LocalPort;
USHORT RemotePort;
ULONG bDeleteFlag;//这个标志为零,表示该包可以安全写入,向该包写入信息时,会对该成员置1,读取该包后清零
char sProcess[16];
char szMatchRule[32];
};
typedef struct __PACKET_BUFFER_POINT__ PACKET_BUFFER_POINT, *PPACKET_BUFFER_POINT;
struct __PACKET_BUFFER_POINT__
{
ULONG dwFlag; //标志:0x12345678
int MaxCount;
int* WriteIndex;
int* ReadIndex;
PPACKET_BUFFER pPacket;
};
typedef struct __DIRECTION_POINT__ DIRECTION_POINT, *PDIRECTION_POINT;
struct __DIRECTION_POINT__
{
int* DirectionCount;
PPACKET_DIRECTION pDirection;
PPACKET_DIRECTION pDelete;
};
typedef struct _NAME_LIST NAME_LIST, *PNAME_LIST;
struct _NAME_LIST
{
PNAME_LIST pNext;
DWORD Address;
char Name[NETBIOS_NAME_MAX_LENTH];
};
#define NAME_LIST_LENTH sizeof(NAME_LIST)
//struct to define filter rules
typedef struct filter
{
USHORT protocol; //protocol used
ULONG sourceIp; //source ip address
ULONG destinationIp; //destination ip address
ULONG sourceMask; //source mask
ULONG destinationMask; //destination mask
USHORT sourcePort; //source port
USHORT destinationPort; //destination port
BOOLEAN drop; //if true, the packet will be drop, otherwise the packet pass
}IPFilter;
//struct to build a linked list
struct filterList
{
IPFilter ipf;
struct filterList *next;
};
//Ip Header
typedef struct IPHeader
{
UCHAR iphVerLen; // Version and length
UCHAR ipTOS; // Type of service
USHORT ipLength; // Total datagram length
USHORT ipID; // Identification
USHORT ipFlags; // Flags
UCHAR ipTTL; // Time to live
UCHAR ipProtocol; // Protocol
USHORT ipChecksum; // Header checksum
ULONG ipSource; // Source address
ULONG ipDestination; // Destination address
} IPPacket;
//TCP Header
typedef struct _TCPHeader
{
USHORT sourcePort; // Source Port
USHORT destinationPort; // Destination Port
ULONG sequenceNumber; // Number of Sequence
ULONG acknowledgeNumber; // Number of aknowledge
UCHAR dataoffset; // Pointer to data
UCHAR flags; // Flags
USHORT windows; // Size of window
USHORT checksum; // Total checksum
USHORT urgentPointer; // Urgent pointer
} TCPHeader;
//UDP Header
typedef struct _UDPHeader
{
USHORT sourcePort; // Source Port
USHORT destinationPort; // Destination Port
USHORT len; // Total length
USHORT checksum; // Total checksum
} UDPHeader;
//Process Info
#define MAX_PROCESS_COUNT 256
typedef struct _ProcessInfo
{
ULONG PID; //Process ID
ULONG CreateTime;
ULONG CloseTime;
ULONG bUsed;
}ProcessInfo;
//
// Definition of type and code field values.
//
#define ICMP_ECHOREPLY 0 /* echo reply */
#define ICMP_UNREACH 3 /* dest unreachable, codes: */
#define ICMP_UNREACH_NET 0 /* bad net */
#define ICMP_UNREACH_HOST 1 /* bad host */
#define ICMP_UNREACH_PROTOCOL 2 /* bad protocol */
#define ICMP_UNREACH_PORT 3 /* bad port */
#define ICMP_UNREACH_NEEDFRAG 4 /* IP_DF caused drop */
#define ICMP_UNREACH_SRCFAIL 5 /* src route failed */
#define ICMP_UNREACH_NET_UNKNOWN 6 /* unknown net */
#define ICMP_UNREACH_HOST_UNKNOWN 7 /* unknown host */
#define ICMP_UNREACH_ISOLATED 8 /* src host isolated */
#define ICMP_UNREACH_NET_PROHIB 9 /* prohibited access */
#define ICMP_UNREACH_HOST_PROHIB 10 /* ditto */
#define ICMP_UNREACH_TOSNET 11 /* bad tos for net */
#define ICMP_UNREACH_TOSHOST 12 /* bad tos for host */
#define ICMP_SOURCEQUENCH 4 /* packet lost, slow down */
#define ICMP_REDIRECT 5 /* shorter route, codes: */
#define ICMP_REDIRECT_NET 0 /* for network */
#define ICMP_REDIRECT_HOST 1 /* for host */
#define ICMP_REDIRECT_TOSNET 2 /* for tos and net */
#define ICMP_REDIRECT_TOSHOST 3 /* for tos and host */
#define ICMP_ECHO 8 /* echo service */
#define ICMP_ROUTERADVERT 9 /* router advertisement */
#define ICMP_ROUTERSOLICIT 10 /* router solicitation */
#define ICMP_TIMXCEED 11 /* time exceeded, code: */
#define ICMP_TIMXCEED_INTRANS 0 /* ttl==0 in transit */
#define ICMP_TIMXCEED_REASS 1 /* ttl==0 in reass */
#define ICMP_PARAMPROB 12 /* ip header bad */
#define ICMP_PARAMPROB_OPTABSENT 1 /* req. opt. absent */
#define ICMP_TSTAMP 13 /* timestamp request */
#define ICMP_TSTAMPREPLY 14 /* timestamp reply */
#define ICMP_IREQ 15 /* information request */
#define ICMP_IREQREPLY 16 /* information reply */
#define ICMP_MASKREQ 17 /* address mask request */
#define ICMP_MASKREPLY 18 /* address mask reply */
#endif // _CONTROLCODE_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -