📄 myfunctions.cs
字号:
{
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 + -