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

📄 common.pas

📁 一个SNOOP控件,各位看看可以对网络包进行分析.
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -