📄 common.pas
字号:
unit Common;
interface
uses
Windows, ComCtrls, IniFiles, SysUtils, Forms, WinSock, Snoop;
const
HEADER_FIELD = 1;
ETHERNET_FIELD = 2;
IP_FIELD = 3;
ARP_FIELD = 4;
ICMP_FIELD = 5;
TCP_FIELD = 6;
UDP_FIELD = 7;
TCPDATA_FIELD = 8;
UDPDATA_FIELD = 9;
procedure AddListViewField(ListView: TListView; ListViewField: Integer; AddField: Integer);
procedure LoadListColumnWidth(Form: TForm; IniFileName: String);
procedure SaveListColumnWidth(Form: TForm; IniFileName: String);
procedure ShowColumn(ListView: TListView; StartIndex: Integer; EndIndex: Integer);
procedure HideColumn(ListView: TListView; StartIndex: Integer; EndIndex: Integer);
procedure AddPacketHeader(ListItem: TListItem; PacketHeader: PPCAP_PKTHDR);
procedure AddEthernet(ListItem: TListItem; EthernetHeader: PETHERNET_HDR);
procedure AddIP(ListItem: TListItem; IPHeader: PIP_HDR);
procedure AddARP(ListItem: TListItem; ARPHeader: PARP_HDR);
procedure AddICMP(ListItem: TListItem; ICMPHeader: PICMP_HDR);
procedure AddTCP(ListItem: TListItem; TCPHeader: PTCP_HDR);
procedure AddUDP(ListItem: TListItem; UDPHeader: PUDP_HDR);
procedure AddTCPData(ListItem: TListItem; TCPData: PChar; TCPDataLen: Integer);
procedure AddUDPData(ListItem: TListItem; UDPData: PChar; UDPDataLen: Integer);
implementation
procedure AddListViewField(ListView: TListView; ListViewField: Integer; AddField: Integer);
var
ListColumn: TListColumn;
begin
case AddField of
HEADER_FIELD: begin
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Time';
ListColumn.Width := 100;
ListColumn.Tag := 100;
if (ListViewField = TCPDATA_FIELD) or (ListViewField = UDPDATA_FIELD) then
ListColumn.Width := 0;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Capture';
ListColumn.Width := 50;
ListColumn.Tag := 50;
if (ListViewField = TCPDATA_FIELD) or (ListViewField = UDPDATA_FIELD) then
ListColumn.Width := 0;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Length';
ListColumn.Width := 50;
ListColumn.Tag := 50;
if (ListViewField = TCPDATA_FIELD) or (ListViewField = UDPDATA_FIELD) then
ListColumn.Width := 0;
end;
ETHERNET_FIELD: begin
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'DstMac';
ListColumn.Width := 100;
ListColumn.Tag := 100;
if ListViewField <> ETHERNET_FIELD then
ListColumn.Width := 0;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'SrcMac';
ListColumn.Width := 100;
ListColumn.Tag := 100;
if ListViewField <> ETHERNET_FIELD then
ListColumn.Width := 0;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Protocol(x)';
ListColumn.Width := 50;
ListColumn.Tag := 50;
if ListViewField <> ETHERNET_FIELD then
ListColumn.Width := 0;
end;
IP_FIELD: begin
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'VerLen';
ListColumn.Width := 50;
ListColumn.Tag := 50;
if ListViewField <> IP_FIELD then
ListColumn.Width := 0;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Service';
ListColumn.Width := 50;
ListColumn.Tag := 50;
if ListViewField <> IP_FIELD then
ListColumn.Width := 0;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Length';
ListColumn.Width := 50;
ListColumn.Tag := 50;
if ListViewField <> IP_FIELD then
ListColumn.Width := 0;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Ident';
ListColumn.Width := 50;
ListColumn.Tag := 50;
if ListViewField <> IP_FIELD then
ListColumn.Width := 0;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'FlagOff';
ListColumn.Width := 50;
ListColumn.Tag := 50;
if ListViewField <> IP_FIELD then
ListColumn.Width := 0;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'TimeLive';
ListColumn.Width := 50;
ListColumn.Tag := 50;
if ListViewField <> IP_FIELD then
ListColumn.Width := 0;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Protocol(x)';
ListColumn.Width := 50;
ListColumn.Tag := 50;
if ListViewField <> IP_FIELD then
ListColumn.Width := 0;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Checksum(x)';
ListColumn.Width := 50;
ListColumn.Tag := 50;
if ListViewField <> IP_FIELD then
ListColumn.Width := 0;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'SrcIP';
ListColumn.Width := 100;
ListColumn.Tag := 100;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'DstIP';
ListColumn.Width := 100;
ListColumn.Tag := 100;
end;
ARP_FIELD: begin
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'HardwareType';
ListColumn.Width := 50;
ListColumn.Tag := 50;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'ProtocolType';
ListColumn.Width := 50;
ListColumn.Tag := 50;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'HLen';
ListColumn.Width := 50;
ListColumn.Tag := 50;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'PLen';
ListColumn.Width := 50;
ListColumn.Tag := 50;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Operation';
ListColumn.Width := 50;
ListColumn.Tag := 50;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'SenderHA';
ListColumn.Width := 100;
ListColumn.Tag := 100;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'SenderIP';
ListColumn.Width := 100;
ListColumn.Tag := 100;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'TargetHA';
ListColumn.Width := 100;
ListColumn.Tag := 100;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'TargetIP';
ListColumn.Width := 100;
ListColumn.Tag := 100;
end;
ICMP_FIELD: begin
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'VerPrio';
ListColumn.Width := 50;
ListColumn.Tag := 50;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'FlowLevel';
ListColumn.Width := 50;
ListColumn.Tag := 50;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Length';
ListColumn.Width := 50;
ListColumn.Tag := 50;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'NextHadr';
ListColumn.Width := 50;
ListColumn.Tag := 50;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'HopLimit';
ListColumn.Width := 50;
ListColumn.Tag := 50;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Source';
ListColumn.Width := 100;
ListColumn.Tag := 50;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Destination';
ListColumn.Width := 100;
ListColumn.Tag := 100;
end;
TCP_FIELD: begin
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Src Port';
ListColumn.Width := 50;
ListColumn.Tag := 50;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Dst Port';
ListColumn.Width := 50;
ListColumn.Tag := 50;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Seq';
ListColumn.Width := 100;
ListColumn.Tag := 100;
if ListViewField <> TCP_FIELD then
ListColumn.Width := 0;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Ack';
ListColumn.Width := 100;
ListColumn.Tag := 100;
if ListViewField <> TCP_FIELD then
ListColumn.Width := 0;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Off_Rsvd(x)';
ListColumn.Width := 50;
ListColumn.Tag := 50;
if ListViewField <> TCP_FIELD then
ListColumn.Width := 0;
ListColumn := ListView.Columns.Add;
ListColumn.Caption := 'Rsvd_Flags(x)';
ListColumn.Width := 50;
ListColumn.Tag := 50;
if ListViewField <> TCP_FIELD then
ListColumn.Width := 0;
ListColumn := ListView.Columns.Add;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -