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

📄 packetip.cs

📁 一个抓包工具
💻 CS
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Windows.Forms;

namespace MyClasses
{

	using PACKET_INTERNET = Packet32.PACKET_INTERNET;
	using PACKET_TCP = Packet32.PACKET_TCP;
	using PACKET_UDP = Packet32.PACKET_UDP;
	using PACKET_HTTP = Packet32.PACKET_HTTP;
	using PACKET_ICMP = Packet32.PACKET_ICMP;
	using PACKET_EIGRP = Packet32.PACKET_EIGRP;
	using PACKET_FRAME = Packet32.PACKET_FRAME;
	using PACKET_ITEM = Packet32.PACKET_ITEM;
	using PACKET_NETBIOS_SESSION_SERVICE = Packet32.PACKET_NETBIOS_SESSION_SERVICE;
	using PACKET_SMB = Packet32.PACKET_SMB;
	using PACKET_SMB_SSMB_REQUEST = Packet32.PACKET_SMB_SSMB_REQUEST;
	using PACKET_SMB_BODY = Packet32.PACKET_SMB_BODY;
	using PACKET_SMB_HEADER = Packet32.PACKET_SMB_HEADER;

	public class PacketIP
	{


		public static int PACKET_FRAME_LENGTH = 20;
		public static int PACKET_ETHERNET_LENGTH = 14;
		public static int PACKET_INTERNET_LENGTH = 20;
		public static int PACKET_TCP_LENGTH = 20;
		public static int PACKET_NETBIOS_SESSION_SERVICE_LENGTH = 4;
		public static int PACKET_UDP_LENGTH = 8;
		public static int PACKET_ICMP_LENGTH = 8;
		public static int PACKET_EIGRP_LENGTH = 40;
		public static int PACKET_SMB_HEADER_LENGTH = 32;
		public static int PACKET_SMB_BODY_LENGTH = 3;


		public static byte TCP_FLAGS_CWR_CONGESTION_WINDOW_REDUCED = 0x80;
		public static byte TCP_FLAGS_ECN_ECHO = 0x40;
		public static byte TCP_FLAGS_URGENT = 0x20;
		public static byte TCP_FLAGS_ACKNOWLEDGEMENT = 0x10;
		public static byte TCP_FLAGS_PUSH = 0x08;
		public static byte TCP_FLAGS_RESET = 0x04;
		public static byte TCP_FLAGS_SYN = 0x02;
		public static byte TCP_FLAGS_FIN = 0x01;


		public const int IPPROTO_IP              = 0;               // dummy for IP
		public const int IPPROTO_ICMP            = 1;               // control message protocol
		public const int IPPROTO_IGMP            = 2;               // internet group management protocol
		public const int IPPROTO_GGP             = 3;               // gateway^2 (deprecated)
		public const int IPPROTO_TCP             = 6;               // tcp
		public const int IPPROTO_PUP             = 12;              // pup
		public const int IPPROTO_UDP             = 17;              // user datagram protocol
		public const int IPPROTO_IDP             = 22;              // xns idp
		public const int IPPROTO_IPV6            = 41;              // IPv6
		public const int IPPROTO_ND              = 77;              // UNOFFICIAL net disk proto
		public const int IPPROTO_ICLFXBM         = 78;
		public const int IPPROTO_EIGRP           = 88;              // EIGRP

		public const int IPPROTO_RAW             = 255;             // raw IP packet
		public const int IPPROTO_MAX             = 256;

		public const int IPPORT_ECHO             = 7;
		public const int IPPORT_DISCARD          = 9;
		public const int IPPORT_SYSTAT           = 11;
		public const int IPPORT_DAYTIME          = 13;
		public const int IPPORT_NETSTAT          = 15;
		public const int IPPORT_FTP              = 21;
		public const int IPPORT_TELNET           = 23;
		public const int IPPORT_SMTP             = 25;
		public const int IPPORT_TIMESERVER       = 37;
		public const int IPPORT_NAMESERVER       = 42;
		public const int IPPORT_DNS              = 43;
		public const int IPPORT_MTP              = 57;
		public const int IPPORT_TFTP             = 69;
		public const int IPPORT_RJE              = 77;
		public const int IPPORT_FINGER           = 79;
		public const int IPPORT_HTTP             = 80;
		public const int IPPORT_HTTP2            = 8080;
		public const int IPPORT_SSDP             = 1031;
		public const int IPPORT_TTYLINK          = 87;
		public const int IPPORT_SUPDUP           = 95;
		public const int IPPORT_EPMEP			 = 135;
		public const int IPPORT_NETBIOS_NS		 = 137;
		public const int IPPORT_NETBIOS_DATAGRAM = 138;
		public const int IPPORT_NETBIOS_SSN      = 139;
		public const int IPPORT_EXECSERVER       = 512;
		public const int IPPORT_LOGINSERVER      = 513;
		public const int IPPORT_CMDSERVER        = 514;
		public const int IPPORT_WHOSERVER        = 513;
		public const int IPPORT_ROUTESERVER      = 520;

		public const int NORMAL = 0;
		public const int VALUE = 1;

		private PACKET_INTERNET PInternet;
		private PACKET_TCP PTcp;
		private PACKET_UDP PUdp;
		private PACKET_HTTP PHttp;
		private PACKET_ICMP PIcmp;
		private PACKET_EIGRP PEigrp;
		private PACKET_NETBIOS_SESSION_SERVICE PNBSessionService;
		private PACKET_SMB PSmb;
		private PACKET_SMB_SSMB_REQUEST PSsmbRequest;
		private PACKET_SMB_BODY PSmbBody;
		private PACKET_SMB_HEADER PSmbHeader;

		public PacketIP()
		{

		}


		unsafe public string GetProtocolStr( int Prtcl )
		{
			string Tmp = "";

			switch( Prtcl )
			{
				case IPPROTO_IP			: Tmp = "IP Protocol" ; break;
				case IPPROTO_ICMP       : Tmp = "ICMP Protocol" ; break;
				case IPPROTO_IGMP       : Tmp = "IGMP Protocol" ; break;
				case IPPROTO_GGP        : Tmp = "GGP Protocol" ; break;
				case IPPROTO_TCP        : Tmp = "TCP Protocol" ; break;
				case IPPROTO_PUP        : Tmp = "PUP Protocol" ; break;
				case IPPROTO_UDP        : Tmp = "UDP Protocol" ; break;
				case IPPROTO_IDP        : Tmp = "IDP Protocol" ; break;
				case IPPROTO_IPV6       : Tmp = "IPV6 Protocol" ; break;
				case IPPROTO_ND         : Tmp = "ND Protocol" ; break;
				case IPPROTO_ICLFXBM	: Tmp = "ICLFXBM Protocol" ; break;
				case IPPROTO_EIGRP      : Tmp = "EIGRP Protocol" ; break;
				case IPPROTO_RAW        : Tmp = "RAW Protocol" ; break;
				case IPPROTO_MAX        : Tmp = "MAX Protocol" ; break;
				default					: Tmp = "Unknown Protocol" ; break;
			}

			return Tmp;

		}

		unsafe public string GetPortStr( int Prt )
		{
			string Tmp = "";

			switch( Prt )
			{

				case IPPORT_ECHO             : Tmp = "ECHO"; break;
				case IPPORT_DISCARD          : Tmp = "DISCARD"; break;
				case IPPORT_SYSTAT           : Tmp = "SYSTAT"; break;
				case IPPORT_DAYTIME          : Tmp = "DAYTIME"; break;
				case IPPORT_NETSTAT          : Tmp = "NETSTAT"; break;
				case IPPORT_FTP              : Tmp = "FTP"; break;
				case IPPORT_TELNET           : Tmp = "TELNET"; break;
				case IPPORT_SMTP             : Tmp = "SMPTP"; break;
				case IPPORT_TIMESERVER       : Tmp = "TIMESERVER"; break;
				case IPPORT_NAMESERVER       : Tmp = "NAMESERVER"; break;
				case IPPORT_DNS              : Tmp = "DNS"; break;
				case IPPORT_MTP              : Tmp = "MTP"; break;
				case IPPORT_TFTP             : Tmp = "TFTP"; break;
				case IPPORT_RJE              : Tmp = "RJE"; break;
				case IPPORT_FINGER           : Tmp = "FINGER"; break;
				case IPPORT_HTTP             : Tmp = "HTTP"; break;
				case IPPORT_HTTP2            : Tmp = "HTTP"; break;
				case IPPORT_SSDP             : Tmp = "SSDP"; break;
				case IPPORT_TTYLINK          : Tmp = "TTYLINK"; break;
				case IPPORT_SUPDUP           : Tmp = "SUPDUP"; break;
				case IPPORT_EPMEP			 : Tmp = "EPMEP"; break;
				case IPPORT_NETBIOS_NS		 : Tmp = "NETBIOS NAME SERVICE"; break;
				case IPPORT_NETBIOS_DATAGRAM : Tmp = "NETBIOS DATAGRAM"; break;
				case IPPORT_NETBIOS_SSN      : Tmp = "NETBIOS SSN"; break;
				case IPPORT_EXECSERVER       : Tmp = "EXECSERVER"; break;
				case IPPORT_CMDSERVER        : Tmp = "CMDSERVER"; break;
				case IPPORT_WHOSERVER        : Tmp = "WHOSERVER"; break;
				case IPPORT_ROUTESERVER      : Tmp = "ROUTESERVER"; break;
				default						 : Tmp = "Unknown Port"; break;
			}

			return Tmp;

		}

		unsafe static string GetTCPFLAGSStr( byte Flg )
		{
			string Tmp = "";

			if( ( ( Flg & 0x80 ) >> 7 ) == 1 )
				Tmp += "Congestion window reduced ( CWR ),";

			if( ( ( Flg & 0x40 ) >> 6 ) == 1 )
				Tmp += "ECN-Echo,";

			if( ( ( Flg & 0x20 ) >> 5 ) == 1 )
				Tmp += "Urgent,";

			if( ( ( Flg & 0x10 ) >> 4 ) == 1 )
				Tmp += "Acknowldegement,";

			if( ( ( Flg & 0x08 ) >> 3 ) == 1 )
				Tmp += "Push,";

			if( ( ( Flg & 0x04 ) >> 2 ) == 1 )
				Tmp += "Reset,";

			if( ( ( Flg & 0x02 ) >> 1 ) == 1 )
				Tmp += "Sync,";

			if( ( Flg & 0x01 ) == 1 )
				Tmp += "Fin,";

			if( Tmp != "" )
				Tmp = Tmp.Substring( 0 , Tmp.Length - 1 );

			return Tmp;
		}

		public unsafe int GetPNBSSPart( int CurrentPtr )
		{
			byte * ptr = ( byte * ) CurrentPtr;
			byte b = 0;
			ushort u = 0;

			b = *( ptr );
			PNBSessionService.MessageType = b;
			b = *( ptr + 1 );
			PNBSessionService.Flags = b;
			u = AllFunctions.Get2Bytes( ptr + 2 , NORMAL );
			PNBSessionService.Length = u;

			return ( CurrentPtr + PACKET_NETBIOS_SESSION_SERVICE_LENGTH );

		}

		public unsafe void GetSMBPart( int CurrentPtr )
		{
			byte * ptr = ( byte * ) CurrentPtr;
			byte b = 0;
			ushort u = 0;
			int i = 0;

			PSmbHeader.ServerComponent = ""; ptr++;
			PSmbHeader.ServerComponent += (char) *( ptr++ );
			PSmbHeader.ServerComponent += (char) *( ptr++ );
			PSmbHeader.ServerComponent += (char) *( ptr++ );

			b = *( ptr++ );
			PSmbHeader.Command = b;

			b = *( ptr++ );
			PSmbHeader.ErrorClass = b;

			b = *( ptr++ );
			PSmbHeader.Reserved1 = b;

			u = AllFunctions.Get2Bytes( ptr , NORMAL ); ptr += 2;
			PSmbHeader.ErrorCode = u;

			b = *( ptr++ );
			PSmbHeader.Flags = b;

			u = AllFunctions.Get2Bytes( ptr , NORMAL ); ptr += 2;
			PSmbHeader.Flags2 = u;

			PSmbHeader.Reserved2 = new byte[12];
			for( i = 0; i < 12; i ++ )
				PSmbHeader.Reserved2[i] = *( ptr++ );

			u = AllFunctions.Get2Bytes( ptr , NORMAL ); ptr += 2;
			PSmbHeader.TreeId = u;

			u = AllFunctions.Get2Bytes( ptr , NORMAL ); ptr += 2;
			PSmbHeader.ProcessId = u;

			u = AllFunctions.Get2Bytes( ptr , NORMAL ); ptr += 2;
			PSmbHeader.UserId = u;

			u = AllFunctions.Get2Bytes( ptr , NORMAL ); ptr += 2;
			PSmbHeader.MultiplexId = u;

			if( PSmbHeader.Command == 0x0d )
			{
				PSmbBody.WordCount = *( ptr++ );
				PSmbBody.ByteCount = AllFunctions.Get2Bytes( ptr , NORMAL ); ptr += 2;
				if( PSmbBody.ByteCount > 0 )
				{
					PSsmbRequest.OriginatorBufferFormat = *( ptr++ );
					i = 0;
					PSsmbRequest.OriginatorName = "";
					while( *( ptr++ ) != 0 )
						PSsmbRequest.OriginatorName += (char) *( ptr );

					ptr++;
					PSsmbRequest.DestinationBufferFormat = *( ptr++ );
					PSsmbRequest.DestinationName = "";
					while( *( ptr++ ) != 0 )
						PSsmbRequest.DestinationName += (char) *( ptr );
					
					ptr++;
					PSsmbRequest.MessageBufferFormat = *( ptr++ );
					PSsmbRequest.MessageLen = AllFunctions.Get2Bytes( ptr , NORMAL ); ptr += 2;
					PSsmbRequest.Message = "";
					for( i = 0; i < PSsmbRequest.MessageLen; i ++ )
						PSsmbRequest.Message += (char) *( ptr++ );

					PSmb.ConnectedObject = PSsmbRequest;
				}

				PSmb.SmbHeader = PSmbHeader;
				PSmb.SmbBody = PSmbBody;

			}

		}

		public unsafe int GetICMPPart( int CurrentPtr , int PacketSize )
		{
			byte * ptr = ( byte * ) CurrentPtr;
			int Size = 0;
			byte b;
			ushort val = 0;
			int i = 0;

			b = *( ptr++ );
			PIcmp.Type = b;

			b = *( ptr++ );
			PIcmp.Code = b;

			val = AllFunctions.Get2Bytes( ptr , NORMAL ); ptr += 2;
			PIcmp.Checksum = val;

			val = AllFunctions.Get2Bytes( ptr , NORMAL ); ptr += 2;
			PIcmp.Identifier = val;

			val = AllFunctions.Get2Bytes( ptr , NORMAL ); ptr += 2;
			PIcmp.SequenceNumber = val;

			Size = PacketSize - PACKET_ETHERNET_LENGTH - PACKET_INTERNET_LENGTH - PACKET_ICMP_LENGTH;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -