📄 communit.pas
字号:
unit communit;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,mmsystem;
const
SYSERR =-1;
OK =0;
RECV_MAX =32;
BUFFER_SIZE =16384;
FLAG_READ =1;
FLAG_WRITE =2;
IOCTL_PROTOCOL_QUERY_OID =$80000000;
IOCTL_PROTOCOL_SET_OID =$80000004;
IOCTL_PROTOCOL_STATISTICS =$80000008;
IOCTL_PROTOCOL_READ =$80000010;
IOCTL_PROTOCOL_WRITE =$80000014;
IOCTL_PROTOCOL_BIND =$8000001c;
OID_802_3_PERMANENT_ADDRESS =$01010101;
OID_802_3_CURRENT_ADDRESS =$01010102;
OID_802_3_MULTICAST_LIST =$01010103;
OID_802_3_MAXIMUM_LIST_SIZE =$01010104;
OID_802_3_RCV_ERROR_ALIGNMENT =$01020101;
OID_802_3_XMIT_ONE_COLLISION =$01020102;
OID_802_3_XMIT_MORE_COLLISIONS =$01020103;
OID_802_3_XMIT_DEFERRED =$01020201;
OID_802_3_XMIT_MAX_COLLISIONS =$01020202;
OID_802_3_RCV_OVERRUN =$01020203;
OID_802_3_XMIT_UNDERRUN =$01020204;
OID_802_3_XMIT_HEARTBEAT_FAILURE =$01020205;
OID_802_3_XMIT_TIMES_CRS_LOST =$01020206;
OID_802_3_XMIT_LATE_COLLISIONS =$01020207;
OID_GEN_SUPPORTED_LIST =$00010101;
OID_GEN_HARDWARE_STATUS =$00010102;
OID_GEN_MEDIA_SUPPORTED =$00010103;
OID_GEN_MEDIA_IN_USE =$00010104;
OID_GEN_MAXIMUM_LOOKAHEAD =$00010105;
OID_GEN_MAXIMUM_FRAME_SIZE =$00010106;
OID_GEN_LINK_SPEED =$00010107;
OID_GEN_TRANSMIT_BUFFER_SPACE =$00010108;
OID_GEN_RECEIVE_BUFFER_SPACE =$00010109;
OID_GEN_TRANSMIT_BLOCK_SIZE =$0001010A;
OID_GEN_RECEIVE_BLOCK_SIZE =$0001010B;
OID_GEN_VENDOR_ID =$0001010C;
OID_GEN_VENDOR_DESCRIPTION =$0001010D;
OID_GEN_CURRENT_PACKET_FILTER =$0001010E;
OID_GEN_CURRENT_LOOKAHEAD =$0001010F;
OID_GEN_DRIVER_VERSION =$00010110;
OID_GEN_MAXIMUM_TOTAL_SIZE =$00010111;
OID_GEN_PROTOCOL_OPTIONS =$00010112;
OID_GEN_MAC_OPTIONS =$00010113;
OID_GEN_XMIT_OK =$00020101;
OID_GEN_RCV_OK =$00020102;
OID_GEN_XMIT_ERROR =$00020103;
OID_GEN_RCV_ERROR =$00020104;
OID_GEN_RCV_NO_BUFFER =$00020105;
OID_GEN_DIRECTED_BYTES_XMIT =$00020201;
OID_GEN_DIRECTED_FRAMES_XMIT =$00020202;
OID_GEN_MULTICAST_BYTES_XMIT =$00020203;
OID_GEN_MULTICAST_FRAMES_XMIT =$00020204;
OID_GEN_BROADCAST_BYTES_XMIT =$00020205;
OID_GEN_BROADCAST_FRAMES_XMIT =$00020206;
OID_GEN_DIRECTED_BYTES_RCV =$00020207;
OID_GEN_DIRECTED_FRAMES_RCV =$00020208;
OID_GEN_MULTICAST_BYTES_RCV =$00020209;
OID_GEN_MULTICAST_FRAMES_RCV =$0002020A;
OID_GEN_BROADCAST_BYTES_RCV =$0002020B;
OID_GEN_BROADCAST_FRAMES_RCV =$0002020C;
OID_GEN_RCV_CRC_ERROR =$0002020D;
OID_GEN_TRANSMIT_QUEUE_LENGTH =$0002020E;
NDIS_PACKET_TYPE_DIRECTED =$0001;
NDIS_PACKET_TYPE_MULTICAST =$0002;
NDIS_PACKET_TYPE_ALL_MULTICAST =$0004;
NDIS_PACKET_TYPE_BROADCAST =$0008;
NDIS_PACKET_TYPE_SOURCE_ROUTING =$0010;
NDIS_PACKET_TYPE_PROMISCUOUS =$0020;
NDIS_PACKET_TYPE_SMT =$0040;
NDIS_PACKET_TYPE_MAC_FRAME =$8000;
NDIS_PACKET_TYPE_FUNCTIONAL =$4000;
NDIS_PACKET_TYPE_ALL_FUNCTIONAL =$2000;
NDIS_PACKET_TYPE_GROUP =$1000;
ETHER_PROTO_IP =$0800; //* Ethernet protocol IP */
ETHER_PROTO_ARP =$0806; //* Ethernet protocol ARP */
ETHER_HEAD_LEN =14;//* Ethernet head length */
ARP_HARD_TYPE =1 ; //* Ethernet card*/
ARP_PROTO_TYPE =$0800; //* IP protocol */
ARP_HARD_ADDR_LEN =6 ; //* Ethernet card address length */
ARP_ADDR_LEN =4 ; //* IP protocol address length */
ARP_OPER_ARP_REQ =1 ; //* Arp request */
ARP_OPER_ARP_ANS =2 ; //* Arp answer */
ARP_OPER_RARP_REQ =3 ; //* Rarp request */
ARP_OPER_RARP_ANS =4 ; //* Rarp answer */
ARP_PACKET_LEN =28 ; //* Arp packet length */
IP_VER =4 ; //* IP version */
IP_HEAD_LEN =5 ; //* IP head length */
IP_SERV_TYPE =0 ; //* IP service type */
IP_PROTO_TCP =6 ; //* TCP protocol */
IP_PROTO_UDP =17 ; //* UDP protocol */
IP_PROTO_ICMP =1 ; //* ICMP protocol */
IP_PAD =0 ; //* IP pseudohead padding */
IP_MF =$4000 ; //* IP MF */
IP_DF =$2000 ; //* IP DF */
IP_FLAG_MASK =$1fff ; //* IP flagoffset mask */
IP_HEAD_BYTE_LEN =20 ; //* IP head length in byte */
TCP_HEAD_LEN =5 ; //* TCP head length */
TCP_URG =$20 ; //* TCP URG */
TCP_ACK =$10 ; //* TCP ACK */
TCP_PSH =$08 ; //* TCP PSH */
TCP_RST =$04 ; //* TCP RST */
TCP_SYN =$02 ; //* TCP SYN */
TCP_FIN =$01 ; //* TCP FIN */
TCP_HEAD_BYTE_LEN =20 ; //* TCP head length in byte */
UDP_HEAD_LEN =8 ; //* UDP head length */
PSEUDO_HEAD_LEN =12 ; //* Pseudo head length */
ICMP_HEAD_LEN =4 ; //* ICMP head length */
type
PEtherAddr=^EtherAddr;
EtherAddr=record
AddrByte:array [0..5] of byte;
end;
PIPAddr=^IPAddr;
IPAddr=record
AddrByte:array [0..3] of char;
end;
PPACKET_OID_DATA=^PACKET_OID_DATA;
PACKET_OID_DATA=record
Oid:ULONG;
Length:ULONG;
Data:array [0..0] of UCHAR;
end;
PPacketTable=^PacketTable;
PacketTable=record
hEvent:THandle;
Active:BOOL;
Overlap:TOVERLAPPED;
Size:DWORD;
Buffer:array [0..BUFFER_SIZE-1] of BYTE;
Length:DWORD;
PackType:WORD;
end;
PEtherPacketHead=^EtherPacketHead;
EtherPacketHead=record
DestEther:EtherAddr;
SourEther:EtherAddr;
ServType:Word;
end;
PIPPacketHead=^IPPacketHead;
IPPacketHead=record
VerHLen:BYTE;
PackType:BYTE;
TtlLen:WORD;
Id:WORD;
FlgOff:WORD;
TTL:BYTE;
Proto:BYTE;
ChkSum:WORD;
SourIP:IPAddr;
DestIP:IPAddr;
end;
PTCPPacketHead=^TCPPacketHead;
TCPPacketHead=record
SourPort:WORD ;
DestPort:WORD ;
SeqNo:DWORD ;
AckNo:DWORD ;
HLen:BYTE ;
Flag:BYTE ;
WndSize:WORD ;
ChkSum:WORD ;
UrgPtr:WORD ;
end;
PICMPPacketHead=^ICMPPacketHead;
ICMPPacketHead=record
PackType:BYTE;
Code:BYTE;
ChkSum:WORD;
end;
PUDPPacketHead=^UDPPacketHead;
UDPPacketHead=record
SourPort:WORD;
DestPort:WORD;
Len:WORD;
ChkSum:WORD;
end;
PPseudoHead=^PseudoHead;
PseudoHead=record
SourIP:IPAddr;
DestIP:IPAddr;
Pad:BYTE;
Proto:BYTE;
Len:WORD;
end;
PARPPacket=^ARPPacket;
ARPPacket=record
PackType:WORD;
Proto:WORD;
HardAddrLen:BYTE;
AddrLen:BYTE;
Oper:WORD;
SourEther:EtherAddr;
SourIP:IPAddr;
DestEther:EtherAddr;
DestIP:IPAddr;
end;
var
hVxD:THandle;
InBuff:array [0..(sizeof(PACKET_OID_DATA) + 127)] of Byte;
m_EtherAddr:EtherAddr;
filter:WORD;
RecvTab:array [0..RECV_MAX-1] of PacketTable;
EventTab:array [0..RECV_MAX-1] of THandle;
packnum:integer;
temp:array [0..10] of char;
m_EtherAddr1,m_EtherAddr2:EtherAddr;
i:integer;
SendTab:PacketTable;
implementation
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -