common.pas

来自「一个SNOOP控件,各位看看可以对网络包进行分析.」· PAS 代码 · 共 550 行 · 第 1/2 页

PAS
550
字号
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 + =
减小字号Ctrl + -
显示快捷键?