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

📄 communit.pas

📁 网络监听程序
💻 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 + -