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

📄 packetframe.cs

📁 一个抓包工具
💻 CS
字号:
using System;
using System.Windows.Forms;
using System.Collections;

namespace MyClasses
{

	public class PacketFRAME
	{

		public struct PACKET_FRAME
		{
			public uint Seconds;         // seconds 
			public uint MicroSeconds;        // and microseconds 
			public uint CaptureLength;	/* length of portion present */
			public string CaptureTimeStr;
			public uint PacketLength;	/* length this packet (off wire) */
			public uint Reserved;
			public byte [] Data;
		};


		PacketParser.PACKET_ITEM PItem;

		public PacketFRAME()
		{

		}

		/*public TreeNode GetFRAMENode( PACKET_FRAME Frame )
		{
			TreeNode mNode;
			string Tmp = "";

			mNode = new TreeNode();
			Tmp = "FRAME ( Captured : " + Frame.CaptureLength.ToString() +
				" , Original : " + Frame.PacketLength.ToString() + " )";

			mNode.Text = Tmp;
			Tmp = " Seconds : " + Frame.Seconds.ToString();
			mNode.Nodes.Add( Tmp );
			Tmp = " Microseconds : " + Frame.MicroSeconds.ToString();
			mNode.Nodes.Add( Tmp );
			Tmp = " Captured Length : " + Frame.CaptureLength.ToString();
			mNode.Nodes.Add( Tmp );
			Tmp = " Packet Length : " + Frame.PacketLength.ToString();
			mNode.Nodes.Add( Tmp );

			return mNode;
		}

		public PACKET_FRAME GetFRAMEPart( byte [] PacketData , ref int Index , bool PacketOnOff )
		{
			int i = 0;

			PacketFrame.Seconds = Function.Get4Bytes( PacketData , ref Index , VALUE );
			PacketFrame.MicroSeconds = Function.Get4Bytes( PacketData , ref Index , VALUE );
			PacketFrame.CaptureLength = Function.Get4Bytes( PacketData , ref Index , VALUE );
			PacketFrame.PacketLength = Function.Get4Bytes( PacketData , ref Index , VALUE );
			PacketFrame.Reserved = 0;
			if( PacketOnOff )
				PacketFrame.Reserved = Function.Get4Bytes( PacketData , ref Index , VALUE );
			PacketFrame.CaptureTimeStr = "";

			PacketFrame.Data = new byte[ PacketFrame.CaptureLength ];

			for( i = 0; i < PacketFrame.CaptureLength; i ++ )
				PacketFrame.Data[i] = PacketData[ Index++ ];

			return PacketFrame;
		}*/


		/*public bool FRAMEParser( ref TreeNodeCollection mNode, 
			byte [] PacketData , 
			ref int Index , 
			ref ListView LVw , 
			int ItemIndex ,
			ref RichTextBox Rtx ,
			ref ArrayList CapturedPackets ,
			bool PacketOnOff ,
			ref PacketParser.PACKET_STATISTIC Pst ,
			ref bool StatisticUpdated ,
			ref Packet32.CAPTURE_OPTIONS mCaptureOptions )*/

		public bool FRAMEParser( 
				ref ListView LVw , 
				ref TreeNodeCollection mNode, 
				ref RichTextBox Rtx ,
				byte [] PacketData , 
				ref int Index , 
				int ItemIndex ,
				
				ref ArrayList CapturedPackets ,
				bool PacketOnOff ,
				ref PacketParser.PACKET_STATISTIC Pst ,
				ref bool StatisticUpdated ,
				ref Packet32.CAPTURE_OPTIONS mCaptureOptions )

		{
			TreeNode mNodex;
			string Tmp = "";
			int i = 0;

			mNode.Clear();

			mNodex = new TreeNode();
	
			try
			{
				PItem.Seconds = Function.Get4Bytes( PacketData , ref Index , VALUE );
				Tmp = " Seconds : " + PItem.Seconds.ToString();
				mNodex.Nodes.Add( Tmp );

				PItem.MicroSeconds = Function.Get4Bytes( PacketData , ref Index , VALUE );
				Tmp = " Microseconds : " + PItem.MicroSeconds.ToString();
				mNodex.Nodes.Add( Tmp );

				PItem.CaptureLength = Function.Get4Bytes( PacketData , ref Index , VALUE );
				Tmp = " Captured Length : " + PItem.CaptureLength.ToString();
				mNodex.Nodes.Add( Tmp );

				PItem.PacketLength = Function.Get4Bytes( PacketData , ref Index , VALUE );
				Tmp = " Packet Length : " + PItem.PacketLength.ToString();
				mNodex.Nodes.Add( Tmp );

				PItem.Reserved = 0;
				if( PacketOnOff )
					PItem.Reserved = Function.Get4Bytes( PacketData , ref Index , VALUE );

				Tmp = "FRAME ( Captured : " + PItem.CaptureLength.ToString() +
					" , Original : " + PItem.PacketLength.ToString() + " )";
				mNodex.Text = Tmp;
				mNodex.Tag = "0," + PItem.CaptureLength.ToString();

				PItem.CaptureTimeStr = "";

				PItem.Data = new byte[ PItem.CaptureLength ];

				for( i = 0; i < PItem.CaptureLength; i ++ )
					PItem.Data[i] = PacketData[ Index++ ];

				Rtx.Text = "";
				Rtx.AppendText( Function.GetHexString( PItem.Data ) );

				LVw.Items[ ItemIndex ].SubItems[ Const.LIST_VIEW_INFO_INDEX ].Text = "Fram Data";

				mNode.Add( mNodex );

				//CapturedPackets.Add( PacketFrame );
				
			}
			catch( Exception Ex )
			{
				mNode.Add( mNodex );
				Tmp = "[ Malformed FRAME packet. Remaining bytes don't fit an FRAME packet. Possibly due to bad decoding ]";
				mNode.Add( Tmp );
				Tmp = "[ Exception raised is <" + Ex.GetType().ToString() + "> at packet index <" + Index.ToString() + "> ]";
				mNode.Add( Tmp );
				LVw.Items[ ItemIndex ].SubItems[ Const.LIST_VIEW_INFO_INDEX ].Text = "[ Malformed FRAME packet. Remaining bytes don't fit an FRAME packet. Possibly due to bad decoding ]";

				return false;
			}

			return true;

		}


	}
}

⌨️ 快捷键说明

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