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

📄 myfunctions.cs

📁 一个抓包工具
💻 CS
📖 第 1 页 / 共 5 页
字号:
		{
			int ptrptr;

			byte* ptr = (byte*) &variable;
			ptrptr = (int) ptr;

			return ptrptr;
		}

		unsafe public static int AddressOf(int variable)
		{
			int ptrptr;

			int* ptr = (int*) &variable;
			ptrptr = (int) ptr;

			return ptrptr;
		}

		unsafe public static int AddressOf(short variable)
		{
			int ptrptr;

			short* ptr = (short*) &variable;
			ptrptr = (int) ptr;

			return ptrptr;
		}

		unsafe public static int AddressOf(long variable)
		{
			int ptrptr;

			long* ptr = (long*) &variable;
			ptrptr = (int) ptr;

			return ptrptr;
		}

		unsafe public static int AddressOf(string variable)
		{
			int ptrptr;

			fixed(char* ptr = variable)
			{ptrptr = (int) ptr;}

			return ptrptr;
		}


		unsafe public static void WriteToCharPtr( ref char * p, string s )
		{
			int i = 0;
			
			for( i = 0; i < s.Length; i ++ )
				*p = s[i];
			*(p+1) = (char) 0;

		}


		public static string Space( int num )
		{
			string tmp = "";
			for( int i = 0; i < num; i ++ )
				tmp += " ";

			return tmp;

		}


		public static string StrReverse( string ReverseStr )
		{
			int i;
			string Tmp = "";

			for( i = ReverseStr.Length - 1; i >= 0; i -- )
			{
				Tmp += ReverseStr[i];
			}

			return Tmp;
		}

		public static string RemovePossibleIpAddress( string strCheck )
		{
			int i,ttt;
			string Tmp = "";
			string [] Tmps;
			char [] seperator = new char[1];

			seperator[0] = (char) 46;
			Tmps = strCheck.Split(seperator);
			ttt = Tmps.GetUpperBound(0);
			if( ttt > 4 )
			{
				for( i = 0; i < ttt - 4; i ++ )
				{
					Tmp += Tmps[i] + ".";
				}

				Tmp = Tmp.Substring(0,Tmp.Length - 1 );
			}
			else
				Tmp = strCheck;

			return Tmp;
		}


		public static string Cisco7LevelDecrypt(string encrypted, ref string ErrMessage)
		{
			int seed, i,j,k, val = 0;
			byte[] dec_pw = new byte[512];
			byte[] enc_pw = new Byte[512];
			string res;
			byte[] xlat = {0x64, 0x73, 0x66, 0x64, 0x3b, 0x6b, 0x66, 0x6f,0x41, 0x2c, 0x2e, 0x69, 0x79, 0x65, 0x77, 0x72,0x6b, 0x6c, 0x64, 0x4a, 0x4b, 0x44, 0x48, 0x53 , 0x55, 0x42};

			encrypted = encrypted.ToUpper();
			encrypted = encrypted.Trim();

			if( encrypted.Substring(0,2) == "7 " )
			{
				encrypted = encrypted.Substring( 2 , encrypted.Length - 2 );
			}

			res = "";
			ErrMessage = "";
			k = 0;

			for(i = 0; i < encrypted.Length; i++)
			{
				//
				enc_pw[i] = (byte) encrypted[i];
			}

			if((encrypted.Length & 1) > 0 )
			{
				ErrMessage = "Encrypted Text length cann't have odd values !!!";
				return "";
			}

			seed = (enc_pw[0] - 48) * 10 + enc_pw[1] - 48;

			if (seed > 15 || ( enc_pw[0] < 48 || enc_pw[0] > 57 ) || ( enc_pw[1] < 48 || enc_pw[1] > 57 ))
			{
				ErrMessage = "Encrypted Text has some invalid characters !!!";
				return "";
			}

			for (i = 2 ; i <= encrypted.Length; i++) 
			{
				if( i != 2 && ( ( i & 1 ) == 0 ) ) 
				{
					k = i / 2 - 2;
					if( k < 0 ) k = 0;
					dec_pw[k] = (byte) (val ^ xlat[seed++]);
					val = 0;
				}

				val *= 16;

				//
				//
				if(enc_pw[i] >= 48 && enc_pw[i] <= 57) 
				{
					val += enc_pw[i] - 48;
					continue;
				}

				if((enc_pw[i] >= 65) && (enc_pw[i] <= 70)) 
				{
					val += enc_pw[i] - 65 + 10;
					continue;
				}

				if(enc_pw.Length != i)
				{
					k = ( ++i / 2 ) - 1;
					dec_pw[k] = 0;
					for( j = 0; j < i + 1; j ++ )
						res += (char) dec_pw[j];

				}
			}

			return res;

		}


		public static string Cisco7LevelDecrypt( string encrypted )
		{
			int seed, i,j,k, val = 0;
			byte[] dec_pw = new byte[512];
			byte[] enc_pw = new Byte[512];
			string res;
			byte[] xlat = {0x64, 0x73, 0x66, 0x64, 0x3b, 0x6b, 0x66, 0x6f,0x41, 0x2c, 0x2e, 0x69, 0x79, 0x65, 0x77, 0x72,0x6b, 0x6c, 0x64, 0x4a, 0x4b, 0x44, 0x48, 0x53 , 0x55, 0x42};

			encrypted = encrypted.ToUpper();
			encrypted = encrypted.Trim();

			if( encrypted.Substring(0,2) == "7 " )
			{
				encrypted = encrypted.Substring( 2 , encrypted.Length - 2 );
			}

			res = "";
			k = 0;

			for(i = 0; i < encrypted.Length; i++)
			{
				//
				enc_pw[i] = (byte) encrypted[i];
			}

			if((encrypted.Length & 1) > 0 )
			{
				return "";
			}

			seed = (enc_pw[0] - 48) * 10 + enc_pw[1] - 48;

			if (seed > 15 || ( enc_pw[0] < 48 || enc_pw[0] > 57 ) || ( enc_pw[1] < 48 || enc_pw[1] > 57 ))
			{
				return "";
			}

			for (i = 2 ; i <= encrypted.Length; i++) 
			{
				if( i != 2 && ( ( i & 1 ) == 0 ) ) 
				{
					k = i / 2 - 2;
					if( k < 0 ) k = 0;
					dec_pw[k] = (byte) (val ^ xlat[seed++]);
					val = 0;
				}

				val *= 16;

				//
				//
				if(enc_pw[i] >= 48 && enc_pw[i] <= 57) 
				{
					val += enc_pw[i] - 48;
					continue;
				}

				if((enc_pw[i] >= 65) && (enc_pw[i] <= 70)) 
				{
					val += enc_pw[i] - 65 + 10;
					continue;
				}

				if(enc_pw.Length != i)
				{
					k = ( ++i / 2 ) - 1;
					dec_pw[k] = 0;
					for( j = 0; j < i + 1; j ++ )
						res += (char) dec_pw[j];

				}
			}

			return res;

		}

		public static bool IsDigit( char xxx )
		{
			char[] yyy = {'0','1','2','3','4','5','6','7','8','9'};
			int i;

			for(i = 0; i < 10; i++ )
			{
				if( xxx == yyy[i] )
				{
					return true;
				}
			}

			return false;

		}


		public static string ReturnErrorMessage( Exception Ex )
		{
			string Err = "";

			Err = "Error Type is " + Ex.GetType().ToString() + (char) 13 + (char) 10;
			Err += "Error Source is " + Ex.Source + (char) 13 + (char) 10;
			Err += "Error Trace is " + Ex.StackTrace + (char) 13 + (char) 10;
			Err += "Error Message is " + Ex.Message;

			return Err;
		}


		public static bool CheckTFTPServer()
		{
			bool IsTftpServerRunning = false;

			try
			{
				IPHostEntry ipHostEntry = new IPHostEntry();
				ipHostEntry = Dns.Resolve( Dns.GetHostName() );

				IPEndPoint ipEndPoint = new IPEndPoint( ipHostEntry.AddressList[0] , 69 );
				Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,ProtocolType.Udp );
				socket.Bind( ipEndPoint );
				socket.Connect( ipEndPoint );
				socket.Close();
			}
			catch
			{
				IsTftpServerRunning = true;
			}

			return IsTftpServerRunning;

		}

		public static int CharPos(string SrchStr, char SrchChr , int StartIndex )
		{
			int i;

			if( SrchStr == "" )
			{
				return (-1);
			}

			for( i = StartIndex; i <= SrchStr.Length; i ++ )
			{
				if( SrchStr[i] == SrchChr )
					return i;
			}

			return (-1);

		}

		public static void CopyStrToChr( string Src, ref char [] Dst )
		{
			int i = 0;
			int k = Src.Length;

			for( i = 0; i < k; i ++ )
				Dst[i] = Src[i];

		}


		unsafe public static char * wcsrchr( char * Source , char Srch )
		{
			char * Tmp = Source;

			while ( ( *Tmp++ == Srch ) && ( *Tmp != (char) 0 ) );

			
			return Tmp;

		}

		public static string [] ReFormatGetStrings( byte [] Unformatted )
		{
			int i = 0;
			int Size = Unformatted.GetLength(0);
			byte [] NewArray;
			int RealLength = 0;
			string FullNames = "";
			string [] Names;
			char [] separator = new char[1];
		
			separator[0] = (char) 59;

			for( i = Size - 1; i >=0 ; i -- )
			{
				if( Unformatted[i] != 0 )
				{
					RealLength = i + 1;
					break;
				}
			}

			if( RealLength == 0 ) RealLength = Size;

			NewArray = new byte[ RealLength ];

			for( i = 0; i < RealLength; i ++ )
			{
				if( Unformatted[i] == 0 )
					NewArray[i] = 35;
				else
					NewArray[i] = Unformatted[i];

			}

			FullNames = Encoding.ASCII.GetString( NewArray );
			FullNames = FullNames.Replace( "####" , ";" );
			FullNames = FullNames.Replace( "##" , ";" );
			FullNames = FullNames.Replace( "#" , "" );
			FullNames = FullNames.Trim();
			Names = FullNames.Split( separator );

			return Names;

		}

		public static int MakeLangId( uint p, uint s)
		{ return (int) ( s * 1024 + p ); }


		public static string GetSystemErrorMessage( int ErrorNo )
		{
			byte [] lpMsgBuf = new byte[4096];
			int lpMsgBufPtr = AddressOf( lpMsgBuf );
			string Tmp = "";
			int error = 0;
			int Buffer = 0;

			int Result = FormatMessage( 
							(int) ( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM ),
							0,
							ErrorNo,
							MakeLangId( LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
							ref Buffer,
							4096,
							0 
										);

			if( Result == 0 )
			{
				error = GetLastError();
				return "";
			}

			StrCpy( lpMsgBufPtr , Buffer );
			if( lpMsgBuf[1] == 0 )
				Tmp = Encoding.Unicode.GetString( lpMsgBuf );
			else
				Tmp = Encoding.ASCII.GetString( lpMsgBuf );

			LocalFree( Buffer );

			return Tmp;

		}

		unsafe public static ushort Get2Bytes( byte * ptr , int Type )
		{
			ushort u = 0;
			ushort * uptr = ( ushort * ) ptr;

			if( Type == NORMAL )
			{
				u = ( ushort ) *( ptr );
				u *= 256;
				u += ( ushort ) *( ptr + 1 );
			}
			else if( Type == VALUE )
			{
				u = *( uptr );
			}

			return u;
		}

		public static ushort Get2Bytes( byte [] ptr , ref int Index , int Type )
		{
			ushort u = 0;

			if( Type == NORMAL )
			{
				u = ( ushort ) ptr[ Index++ ];
				u *= 256;
				u += ( ushort ) ptr[ Index++ ];
			}
			else if( Type == VALUE )
			{
				u = ( ushort ) ptr[ ++Index ];
				u *= 256; Index--;
				u += ( ushort ) ptr[ Index++ ]; Index++;
			}

			return u;
		}

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

			if( Type == NORMAL )
			{
				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 );
				Index += 2;

				/*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 uint Get3Bytes( byte * ptr , int Type )
		{
			uint ui = 0;
			uint * uiptr = ( uint * ) ptr;

			if( Type == NORMAL )
			{
				ui = (uint) *( ptr );
				ui <<= 16;
				ui += ( (uint) *( ptr + 1 ) ) << 8;
				ui += (uint) *( ptr + 2 );

⌨️ 快捷键说明

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