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

📄 myfunctions.cs

📁 一个抓包工具
💻 CS
📖 第 1 页 / 共 5 页
字号:
			}

			return ui;
		}

		public static uint Get3Bytes( byte [] ptr , ref int Index , int Type )
		{
			uint ui = 0;

			if( Type == NORMAL )
			{
				ui = (uint) ptr[ Index++ ];
				ui <<= 16;
				ui += ( (uint) ptr[ Index++ ] ) << 8;
				ui += (uint) ptr[ Index++ ];
			}

			return ui;
		}

		unsafe public static uint Get4Bytes( byte * ptr , int Type )
		{
			uint ui = 0;
			uint * uiptr = ( uint * ) ptr;

			if( Type == NORMAL )
			{
				ui = (uint) *( ptr ); 
				ui <<= 24;
				ui += ( (uint) *( ptr + 1 ) ) << 16;
				ui += ( (uint) *( ptr + 2 ) ) << 8;
				ui += (uint) *( ptr + 3 );
			}
			else if( Type == VALUE )
			{
				ui = *( uiptr );
			}

			return ui;
		}

		public static uint Get4Bytes( byte [] ptr , ref int Index , int Type )
		{
			uint ui = 0;

			if( Type == NORMAL )
			{
				ui = (uint) ptr[ Index++ ]; 
				ui <<= 24;
				ui += ( (uint) ptr[ Index++ ] ) << 16;
				ui += ( (uint) ptr[ Index++ ] ) << 8;
				ui += (uint) ptr[ Index++ ];
			}
			else if( Type == VALUE )
			{
				ui = (uint) ptr[ Index + 3 ]; 
				ui <<= 24;
				ui += ( (uint) ptr[ Index + 2 ] ) << 16;
				ui += ( (uint) ptr[ Index + 1 ] ) << 8;
				ui += (uint) ptr[ Index ]; Index += 4;
			}

			return ui;
		}

		public static void Set4Bytes( ref byte [] ptr , ref int Index , uint NewValue , int Type )
		{
			//uint ui = NewValue;
			//byte b1 , b2 , b3 , b4;

			if( Type == NORMAL )
			{
				ptr[ Index ++ ] = (byte) ( NewValue >> 24 );
				ptr[ Index ++ ] = (byte) ( NewValue >> 16 );
				ptr[ Index ++ ] = (byte) ( NewValue >> 8 );
				ptr[ Index ++ ] = (byte) NewValue ;

				/*ui = (uint) ptr[ Index++ ]; 
				ui <<= 24;
				ui += ( (uint) ptr[ Index++ ] ) << 16;
				ui += ( (uint) ptr[ Index++ ] ) << 8;
				ui += (uint) ptr[ Index++ ];*/
			}
			else if( Type == VALUE )
			{
				ptr[ Index + 0 ] = (byte) NewValue;
				ptr[ Index + 1 ] = (byte) ( NewValue >> 8 );
				ptr[ Index + 2 ] = (byte) ( NewValue >> 16 );
				ptr[ Index + 3 ] = (byte) ( NewValue >> 24 );
				Index += 4;

				/*ui = (uint) ptr[ Index + 3 ]; 
				ui <<= 24;
				ui += ( (uint) ptr[ Index + 2 ] ) << 16;
				ui += ( (uint) ptr[ Index + 1 ] ) << 8;
				ui += (uint) ptr[ Index ]; Index += 4;*/
			}

			//return ui;
		}

		unsafe public static string GetIpAddress( byte * ptr )
		{
			byte b = 0;
			string str = "";

			b = *( ptr );
			str += b.ToString() + ".";
			b = *( ptr + 1 );
			str += b.ToString() + ".";
			b = *( ptr + 2 );
			str += b.ToString() + ".";
			b = *( ptr + 3 );
			str += b.ToString();

			return str;
		}

		public static string GetIpAddress( byte [] ptr , ref int Index )
		{
			string str = "";

			str += ptr[ Index++ ].ToString() + ".";
			str += ptr[ Index++ ].ToString() + ".";
			str += ptr[ Index++ ].ToString() + ".";
			str += ptr[ Index++ ].ToString();

			return str;
		}

		public static string GetIpAddress( byte [] ptr , ref int Index , int Length )
		{
			string str = "";
			int i = 0;

			for( i = 0; i < Length - 1; i ++ )
				str += ptr[ Index++ ].ToString() + ".";

			str += ptr[ Index++ ].ToString();

			return str;
		}

		public static int MakeFont( int Handle )		{
			int iFontSize = 10;
			int hFont = 0;
			int CurrentFont = 0;
			int hdc = GetDC( Handle );

			int nHeight = -MulDiv( iFontSize, GetDeviceCaps(hdc, LOGPIXELSY), 72 ); //72);
			ReleaseDC( Handle , hdc );
			int cset;
			cset = ANSI_CHARSET;
			CurrentFont = SendMessage( Handle , WM_GETFONT , 0 , 0 );
			hFont = CreateFont( nHeight,0,0,0,700,0,0,0,(uint)cset,OUT_DEFAULT_PRECIS,
				CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH | FF_DONTCARE,0);

			SendMessage( Handle , WM_SETFONT , hFont , 0x00010000 );
			if( CurrentFont > 0 )
				DeleteObject( CurrentFont );

			return 1;
		}

		private static string PadZeros( int inInt )
		{
			StringBuilder TextField = new StringBuilder();

			string hex = Convert.ToString( inInt , 16 );

			if( hex.Length < 8 )
			{
				int ix = 8-hex.Length;
				for( int i = 0; i < ix; ++i )
				{
					TextField.Append( "0" );
				}
			}
			TextField.Append( hex );
			return TextField.ToString().ToUpper();
		}


		private static string ConvertByteToHexString( byte inByte )
		{
			StringBuilder TextField = new StringBuilder();

			string hex = Convert.ToString( inByte , 16 );

			if( hex.Length == 1 )
				TextField.Append( "0" );

			TextField.Append( hex );

			return TextField.ToString().ToLower();
		}


		public static string GetHexString( byte [] mData )
		{
			StringBuilder HexField = new StringBuilder();
			StringBuilder TextField = new StringBuilder();
			string HeaderStr = "";
			string HeaderStr2 = "";
			byte [] Data;
			int i = 0;

			int newrow = 0;
			int global = 0;
			//int forth = 0;
			string hex = " ";
			string numb = " ";
			string Tmp = "";
			int LastRow = mData.GetLength(0) / 16;
			int RemainingBytes = ( LastRow * 16 ) - mData.GetLength(0);

			if( RemainingBytes < 0 ) 
			{
				LastRow++;
				RemainingBytes += 16;
			}

			Data = new byte[ LastRow * 16 ];
			for (i = 0; i < mData.Length; ++i )
			{
				Data[i] = mData[i];
			}

			HeaderStr =  " Offset   ";
			HeaderStr2 = " ---------";
			for( i = 0; i < 16; i ++ )
			{
				HeaderStr += " " + i.ToString("d02");
				HeaderStr2 += "---";
			}

			HexField.Append( HeaderStr + "                  \n" );
			HexField.Append( HeaderStr2 + "-------------------\n" );

			for (i = 0; i < Data.Length; ++i )
			{
				if( newrow == 0 )
				{
					numb = PadZeros( global );
					HexField.Append( " " + numb + " " );
					//HexField.Append( " " + numb + "-" );
					global += 16;
				}

				hex = ConvertByteToHexString( Data[i] );
				/*if( forth == 3 )
				{
					HexField.Append( " " + hex + " -" );	// 3 characters
					forth = 0;
				}
				else
				{
					HexField.Append( " " + hex );	// 3 characters
					forth++;
				}*/

				HexField.Append( " " + hex );	// 3 characters

				int g = Data[i];
				if( g > 31 && g < 127 )
				{
					TextField.Append( (char) Data[i] );
				}
				else
				{
					TextField.Append( "." );
				}

				++newrow;

				if( newrow >= 16 )
				{
					HexField.Append( "   " + TextField.ToString() + "\n" );
					TextField = new StringBuilder();	// clear
					newrow = 0;						// reset
				}
			}

			HexField.Append( "\n\n" );
			Tmp = HexField.ToString();

			return Tmp;
		}


		public static string ReFormatString( object Value , object AdditionalValue )
		{
			string tmp = Value.GetType().ToString();
			string ret = "", Ad = "";
			byte b = 0;
			ushort u = 0;
			short s = 0;
			uint ui = 0;
			int i = 0;
			ulong ul = 0;
			long l = 0;
			
			if( AdditionalValue != null )
				Ad = (string) AdditionalValue;

			if( tmp == "System.Byte" )
			{
				b = (byte) Value;
				ret = " 0x" + b.ToString("x02") + "( " + b.ToString() + " ) ";
			}
			else if( tmp == "System.UInt16" )
			{
				u = (ushort) Value;
				ret = " 0x" + u.ToString("x04") + "( " + u.ToString() + " ) ";
			}
			else if( tmp == "System.Int16" )
			{
				s = (short) Value;
				ret = " 0x" + s.ToString("x04") + "( " + s.ToString() + " ) ";
			}
			else if( tmp == "System.UInt32" )
			{
				ui = (uint) Value;
				ret = " 0x" + ui.ToString("x08") + "( " + ui.ToString() + " ) ";
			}
			else if( tmp == "System.Int32" )
			{
				i = (int) Value;
				ret = " 0x" + i.ToString("x08") + "( " + i.ToString() + " ) ";
			}
			else if( tmp == "System.UInt64" )
			{
				ul = (ulong) Value;
				ret = " 0x" + ul.ToString("x16") + "( " + ul.ToString() + " ) ";
			}
			else if( tmp == "System.Int64" )
			{
				l = (long) Value;
				ret = " 0x" + l.ToString("x16") + "( " + l.ToString() + " ) ";
			}

			if( Ad != "" )
				ret += Ad;

			return ret;
		}


		public static string GetObjectType( object o )
		{
			string tmp = o.GetType().ToString();
			int pluspos = tmp.IndexOf( "+" );

			if( pluspos >= 0 )
				tmp = tmp.Substring( pluspos + 1 , tmp.Length - pluspos - 1 );

			return tmp;
		}


		public static string GetNetBiosName( byte [] Data , ref int Index , ref byte NameNumber )
		{
			string Tmp = "";
			byte b1 = 0, b2 = 0;
			int i = 0;

			while( Data[ Index ] == 0 ) Index ++;

			for( i = 0; i < 15; i ++ )
			{
				b1 = Data[ Index ++ ]; b2 = Data[ Index ++ ];
				b1 &= 0x0f; b2 &= 0x0f;
				b1 <<= 4; b1 += b2; b1 -= 17;
				Tmp += (char) b1;
			}

			Tmp = Tmp.Trim();

			b1 = Data[ Index ++ ]; b2 = Data[ Index ++ ];
			b1 &= 0x0f; b2 &= 0x0f;
			b1 <<= 4; b1 += b2; b1 -= 17;
			Tmp += "<" + b1.ToString("x02") + ":" + b1.ToString() + ">";
			Index ++;

			NameNumber = b1;

			return Tmp;

		}

		public static string GetNetBiosNameSerial( byte [] Data , ref int Index , ref byte NameNumber )
		{
			string Tmp = "";
			byte b1 = 0;
			int i = 0;

			while( Data[ Index ] == 0 ) Index ++;

			for( i = 0; i < 15; i ++ )
			{
				Tmp += (char) Data[ Index ++ ];
			}

			Tmp = Tmp.Trim();

			b1 = Data[ Index ++ ];
			Tmp += "<" + b1.ToString("x02") + ":" + b1.ToString() + ">";

			NameNumber = b1;

			return Tmp;

		}

		public static string DecodeBitField( byte Value , uint Mask , string TrueText , string FalseText )
		{
			byte [] MyArray;
			int GroupLength = 0;
			byte b = 0, mb = 0, tb = 0;
			string ExpStr = "";
			string ReturnStr = "";
			int iii = 0, k = 0;

			GroupLength = 2;
			b = Value;
			mb = (byte) Mask;
			MyArray = new byte[ GroupLength * 4 ];
			for( iii = 0; iii < MyArray.GetLength(0); iii ++ )
				MyArray[ iii  ] = 46;

			if( ( b & mb ) > 0 ) ExpStr = TrueText;
			else ExpStr = FalseText;

			iii = 0;
			tb = mb;
			while( tb > 0 ) { iii ++; tb >>= 1; }
			MyArray[ MyArray.GetLength(0) - iii ] = ( b & mb ) > 0 ? (byte) 49 : (byte) 48;
			k = 0;
			ReturnStr = "";
			for( iii = 0; iii < MyArray.GetLength(0); iii ++ )
			{
				if( k == 3 )
				{
					ReturnStr += (char) MyArray[ iii ] + " ";
					k = 0;
				}
				else
				{
					ReturnStr += (char) MyArray[ iii ];
					k ++;
				}
			}

			ReturnStr += "= " + ExpStr;

			return ReturnStr;

		}

		public static string DecodeBitField( byte Value , int Mask , string TrueText , string FalseText )
		{
			return DecodeBitField( Value , (uint) Mask , TrueText , FalseText );
		}

		public static string DecodeBitField( ushort Value , uint Mask , string TrueText , string FalseText )
		{
			byte [] MyArray;
			int GroupLength = 0;
			ushort b = 0, mb = 0, tb = 0;
			string ExpStr = "";
			string ReturnStr = "";
			int iii = 0, k = 0;

			GroupLength = 4;
			b = Value;
			mb = (ushort) Mask;
			MyArray = new byte[ GroupLength * 4 ];
			for( iii = 0; iii < MyArray.GetLength(0); iii ++ )
				MyArray[ iii  ] = 46;

			if( ( b & mb ) > 0 ) ExpStr = TrueText;
			else ExpStr = FalseText;

			iii = 0;
			tb = mb;
			while( tb != 0 ) { iii ++; tb >>= 1; }
			MyArray[ MyArray.GetLength(0) - iii ] = ( b & mb ) > 0 ? (byte) 49 : (byte) 48;
			k = 0;
			ReturnStr = "";
			for( iii = 0; iii < MyArray.GetLength(0); iii ++ )
			{
				if( k == 3 )
				{
					ReturnStr += (char) MyArray[ iii ] + " ";
					k = 0;
				}
				else
				{
					ReturnStr += (char) MyArray[ iii ];
					k ++;
				}
			}

			ReturnStr += "= " + ExpStr;

			return ReturnStr;

		}


		public static string DecodeBitField( short Value , uint Mask , string TrueText , string FalseText )
		{
			return DecodeBitField( (ushort) Value , Mask , TrueText , FalseText );
		}

		public static string DecodeBitField( short Value , int Mask , string TrueText , string FalseText )
		{
			return DecodeBitField( (ushort) Value , (uint) Mask , TrueText , FalseText );
		}

		public static string DecodeBitField( ushort Value , int Mask , string TrueText , string FalseText )
		{
			return DecodeBitField( Value , (uint) Mask , TrueText , FalseText );
		}


		public static string DecodeBitField( uint Value , uint Mask , string TrueText , string FalseText )
		{
			byte [] MyArray;
			int GroupLength = 0;

⌨️ 快捷键说明

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