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

📄 protocol.h

📁 这是一个用vc++编写的
💻 H
字号:
#include "ntddndis.h"

#define UNICODE 1

#define __LITTLE_ENDIAN_BITFIELD

#pragma pack(push)
#pragma pack(1)

typedef unsigned char __u8;
typedef unsigned short __u16;
typedef unsigned int __u32;

/************************************************/
/*  PROTOCOL DATA STRUCTURE                     */
/************************************************/

/* Frame type field must be "8"
|   6 Bytes         |    6 Bytes       |  2 Bytes  |
---------------------------------------------------------------
|Destination address|  Source address  |Frame type | Frame data
---------------------------------------------------------------
*/

/*
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]       Ethernet destination address (first 32 bits)            ]
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ] Ethernet dest (last 16 bits)  ]Ethernet source (first 16 bits)]
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]       Ethernet source address (last 32 bits)                  ]
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]        Type code              ]
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]  IP header, then TCP header, then your data                   ]
    ]                                                               ]
        ...
    ]                                                               ]
    ]   end of your data                                            ]
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]                       Ethernet Checksum                       ]
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
typedef struct _ETH_HEADER
{
    unsigned char   h_dest[6];
    unsigned char   h_source[6];
    unsigned short  h_proto;
}ETH_HEADER;

/*
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]Version]  IHL  ]Type of Service]          Total Length         ]
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]         Identification        ]Flags]      Fragment Offset    ]
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]  Time to Live ]    Protocol   ]         Header Checksum       ]
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]                       Source Address                          ]
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]                    Destination Address                        ]
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]  TCP header, then your data ......                            ]
    ]                                                               ]
*/
typedef struct _IP_HEADER
{
#if defined(__LITTLE_ENDIAN_BITFIELD)
	__u8	        ihl:4,
		            version:4;
#elif defined (__BIG_ENDIAN_BITFIELD)
	__u8	        version:4,
  		            ihl:4;
#endif
    __u8            tos;
    __u16           tot_len;
    __u16           id;
    __u16           frag_off;
    __u8            ttl;
    __u8            protocol;
    __u16           check;
    __u32           saddr;
    __u32           daddr;
}               IP_HEADER;

/*
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]          Source Port          ]       Destination Port        ]
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]                        Sequence Number                        ]
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]                    Acknowledgment Number                      ]
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]  Data ]           ]U]A]P]R]S]F]                               ]
    ] Offset] Reserved  ]R]C]S]S]Y]I]            Window             ]
    ]       ]           ]G]K]H]T]N]N]                               ]
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]           Checksum            ]         Urgent Pointer        ]
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]   your data ... next 500 octets                               ]
    ]   ......                                                      ]
*/
typedef struct _TCP_HEADER
{
    __u16           source;
    __u16           dest;
    __u32           seq;
    __u32           ack_seq;
#if defined(__LITTLE_ENDIAN_BITFIELD)
	__u16	        res1:4,
		            doff:4,
		            fin:1,
		            syn:1,
		            rst:1,
		            psh:1,
		            ack:1,
		            urg:1,
		            res2:2;
#elif defined(__BIG_ENDIAN_BITFIELD)
	__u16	        doff:4,
		            res1:4,
		            res2:2,
		            urg:1,
		            ack:1,
		            psh:1,
		            rst:1,
		            syn:1,
		            fin:1;
#endif	
    __u16           window;
    __u16           check;
    __u16           urg_ptr;
}               TCP_HEADER;

typedef struct _ETHER_PACKET
{
    ETH_HEADER      ETH;
    IP_HEADER       IP;
    TCP_HEADER      TCP;
}ETHER_PACKET;


typedef struct _CONTROL_BLOCK
{
    PVOID       hFile;
    HANDLE      hEvent;
    TCHAR       AdapterName[128];

    HANDLE      hMem;
    LPBYTE      lpMem;

    ULONG       PacketLength;
    ULONG       LastReadSize;
    UINT        BufferSize;
}CONTROL_BLOCK, *PCONTROL_BLOCK;

#pragma pack(pop)
/*
#define   MAX_LINK_NAME_LENGTH   64
typedef struct _ADAPTER {
    HANDLE     hFile;
    TCHAR      SymbolicLink[MAX_LINK_NAME_LENGTH];
}ADAPTER, *LPADAPTER;
typedef struct _PACKET {
    HANDLE       hEvent;
    OVERLAPPED   OverLapped;
    PVOID        Buffer;
    UINT         Length;
} PACKET, *LPPACKET;

extern "C"
{
	ULONG PacketGetAdapterNames(PTSTR   pStr,PULONG  BufferSize);
	PVOID PacketOpenAdapter(LPTSTR   AdapterName);
	VOID  PacketCloseAdapter(LPADAPTER   lpAdapter);
	BOOLEAN PacketSetFilter(LPADAPTER  AdapterObject,ULONG      Filter);
	PVOID PacketAllocatePacket(LPADAPTER   AdapterObject);
	VOID PacketInitPacket(LPPACKET lpPacket,PVOID Buffer,UINT Length);
	VOID PacketFreePacket( LPPACKET    lpPacket  );
#ifdef WINNT
	BOOLEAN PacketReceivePacket(LPADAPTER AdapterObject,LPPACKET lpPacket,BOOLEAN Sync,PULONG BytesReceived);
#else
	BOOLEAN PacketReceivePacket(LPADAPTER AdapterObject,LPPACKET lpPacket,BOOLEAN Sync,PULONG BytesReceived,int shitbuski);
#endif
}*/
#include "./packet32/packet32.h"

⌨️ 快捷键说明

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