Magic Crypter, un altro programmino

« Older   Newer »
  Share  
Lahace
CAT_IMG Posted on 14/1/2010, 19:50     +1   -1




Signori e Signore! ecco a voi...
*Rullo di tamburi*

Magic Crypter!


questo programmino permette di codificare e decodificare XXTEA , RC4 e Base64
l'md5 e sha1 verranno aggiunti in seguito
due cose da notare
1- è in inglese perchè era destinato ad un forum inglese
2- manca di grafica, sarebbe forse più corretto dire che manca la voglia di farla xD

Aggiornamenti:
-Postata v 1.2 comprende SHA1 (da risolvere) e MD5

magic Crypt.au3:
SPOILER (click to view)
CODICE
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include "Crp.au3"
#include <File.au3>
If Not FileExists(@ScriptDir & "opt.ini") Then
       _FileCreate(@ScriptDir & "opt.ini")
EndIf
$Form1 = GUICreate("Magic Crypt 1.2", 367, 566, 341, 124)
$Edit1 = GUICtrlCreateEdit("", 5, 45, 361, 236)
$Edit2 = GUICtrlCreateEdit("", 5, 309, 361, 236)
$Button1 = GUICtrlCreateButton("Decrypt", 170, 285, 81, 21, 0)
$Button2 = GUICtrlCreateButton("Encrypt", 255, 285, 76, 21, 0)
$Input1 = GUICtrlCreateInput("", 145, 20, 221, 21)
$method = "none"
$Label1 = GUICtrlCreateLabel("Key: ", 105, 20, 28, 17)
$Label2 = GUICtrlCreateLabel("Crypting/Decryping method: ", 105, 0, 139, 17)
$Label3 = GUICtrlCreateLabel("Undefinied", 250, 0, 73, 17)
If IniRead(@ScriptDir & "opt.ini" , "start" , "DefaultEncr" , "1") = 1 Then
       _SetBase64()
ElseIf IniRead(@ScriptDir & "opt.ini" , "start" , "DefaultEncr" , "1") = 2 Then
       _setXXTEA()
ElseIf IniRead(@ScriptDir & "opt.ini" , "start" , "DefaultEncr" , "1") = 3 Then
       _setRC4()
ElseIf IniRead(@ScriptDir & "opt.ini" , "start" , "DefaultEncr" , "1") = 4 Then
       _setSHA1()
ElseIf IniRead(@ScriptDir & "opt.ini" , "start" , "DefaultEncr" , "1") = 5 Then
       _setMD5()
EndIf
$MenuItem5 = GUICtrlCreateMenu("File")
$MenuItem7 = GUICtrlCreateMenuItem("Close", $MenuItem5)
$MenuItem8 = GUICtrlCreateMenuItem("Credits", $MenuItem5)
$MenuItem1 = GUICtrlCreateMenu("Encypt/Decrypt")
$MenuItem2 = GUICtrlCreateMenuItem("Base64", $MenuItem1)
$MenuItem4 = GUICtrlCreateMenuItem("XXTEA", $MenuItem1)
$MenuItem3 = GUICtrlCreateMenuItem("RC4", $MenuItem1)
$MenuItem9 = GUICtrlCreateMenuItem("SHA1", $MenuItem1)
$MenuItem10 = GUICtrlCreateMenuItem("MD5", $MenuItem1)
GUISetState(@SW_SHOW)

While 1
       $nMsg = GUIGetMsg()
       Switch $nMsg
               Case $GUI_EVENT_CLOSE
                       Exit
               Case $MenuItem7
                       Exit
               Case $MenuItem2
                       _SetBase64()
               Case $MenuItem4
                       _SetXXTEA()
               Case $MenuItem3
                       _SetRC4()
               Case $MenuItem9
                       _setSHA1()
               Case $MenuItem10
                       _setMD5()
               Case $Button1
                       If GUICtrlRead($Edit2) <> "" Then
                       ;decripta
                       $mtd = _GetMethod()
                       $read = GUICtrlRead($Edit2)
                       If $mtd = "RC4" Then
                               $key = GUICtrlRead($Input1)
                               $rc4 = _RC4($read , $key)
                               GUICtrlSetData($Edit1 , BinaryToString($rc4))
                       ElseIf $mtd = "XXTEA" Then
                               $key = GUICtrlRead($Input1)
                               $xxtea = _XXTEA_Decrypt($read , $key)
                               GUICtrlSetData($Edit1 , BinaryToString($xxtea))
                       ElseIf $mtd = "Base64" Then
                               $base64 = _Base64Decode($read)
                               GUICtrlSetData($Edit1 , BinaryToString($base64))
                       EndIf
                       EndIf
               Case $Button2
                       If GUICtrlRead($edit1) <> "" Then
                       ;cripta
                       $mtd = _GetMethod()
                       $read = GUICtrlRead($Edit1)
                       If $mtd = "RC4" Then
                               $key = GUICtrlRead($Input1)
                               $rc4 = _RC4($read , $key)
                               GUICtrlSetData($Edit2 , BinaryToString($rc4))
                       ElseIf $mtd = "XXTEA" Then
                               $key = GUICtrlRead($Input1)
                               $xxtea = _XXTEA_Encrypt($read , $key)
                               GUICtrlSetData($Edit2 , BinaryToString($xxtea))
                       ElseIf $mtd = "Base64" Then
                               $base64 = _Base64Encode($read)
                               GUICtrlSetData($Edit2 , $base64)
                       ElseIf $mtd = "SHA1" Then
                               GUICtrlSetData($Edit2 , BinaryToString(_SHA1($read)))
                       ElseIf $mtd = "MD5" Then
                               GUICtrlSetData($Edit2 , StringLower(BinaryToString(_MD5($read))))
                       EndIf
                       EndIf
       EndSwitch
WEnd

Func _SetBase64()
       $method = "Base64"
       IniWrite("opt.ini" , "start" , "DefaultEncr" , "1")
       GUICtrlSetData($label3 , "Base64")
       GUICtrlSetState($label1 , 128)
       GUICtrlSetState($Input1 , 128)
       GUICtrlSetState($Button1 , 64)
EndFunc
Func _SetXXTEA()
       $method = "XXTEA"
       IniWrite("opt.ini" , "start" , "DefaultEncr" , "2")
       GUICtrlSetData($label3 , "XXTEA")
       GUICtrlSetState($label1 , 64)
       GUICtrlSetState($Input1 , 64)
       GUICtrlSetState($Button1 , 64)
EndFunc
Func _SetRC4()
       $method = "RC4"
       IniWrite("opt.ini" , "start" , "DefaultEncr" , "3")
       GUICtrlSetData($label3 , "RC4")
       GUICtrlSetState($label1 , 64)
       GUICtrlSetState($Input1 , 64)
       GUICtrlSetState($Button1 , 64)
EndFunc
Func _setSHA1()
       $method = "SHA1"
       IniWrite("opt.ini" , "start" , "DefaultEncr" , "4")
       GUICtrlSetData($label3 , "SHA1")
       GUICtrlSetState($Button1 , 128)
       GUICtrlSetState($label1 , 128)
       GUICtrlSetState($Input1 , 128)
EndFunc
Func _setMD5()
       $method = "MD5"
       IniWrite("opt.ini" , "start" , "DefaultEncr" , "5")
       GUICtrlSetData($label3 , "MD5")
       GUICtrlSetState($Button1 , 128)
       GUICtrlSetState($label1 , 128)
       GUICtrlSetState($Input1 , 128)
EndFunc
Func _GetMethod()
       Return $method
EndFunc
EndFunc


Crp.au3(include):
SPOILER (click to view)
CODICE
Func _XXTEA_Encrypt($Data, $Key)
Func _XXTEA_Encrypt($Data, $Key)
       $Data = Binary($Data)
       Local $DataLen = BinaryLen($Data)
       If $DataLen = 0 Then
               Return ""
       ElseIf $DataLen < 8 Then
               $DataLen = 8
       EndIf        
       
       Local $Opcode = '0x83EC14B83400000099538B5C2420558B6C242056578B7C9DFCF7FB89C683C606C74424180000000085F68D76FF0F8EEA000000896C24288D4BFF8D549D00894C2410895424148974242081442418B979379E8B4C2418C1E90281E103000000894C241C31F6397424107E568B5424288BCF8B6CB204C1E9058D14AD0000000033CA8BD58BC7C1EA03C1E00433D003CA8B5424188BDE81E303000000335C241C8B4424308B1C9833D533DF03D333CA8B542428010CB28B0CB2463974241089CF7FAA8B5424288BCF8B2AC1E9058D14AD0000000033CA8BD58BC7C1EA03C1E00433D003CA8B5424188BDE81E303000000335C241C8B4424308B1C9833D533DF03D3FF4C242033CA8B542414014AFC8B4AFC8B54242089CF420F8F2DFFFFFF5F31C05E5D5B83C414C21000'
       Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
       DllStructSetData($CodeBuffer, 1, $Opcode)

       Local $V = DllStructCreate("byte[" & Ceiling($DataLen / 4) * 4 & "]")
       DllStructSetData($V, 1, $Data)

       Local $K = DllStructCreate("byte[16]")
       DllStructSetData($K, 1, $Key)

       DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
                                                                                                       "ptr", DllStructGetPtr($V), _
                                                                                                       "int", Ceiling($DataLen / 4), _
                                                                                                       "ptr", DllStructGetPtr($K), _
                                                                                                       "int", 0)

       Local $Ret = DllStructGetData($V, 1)
       $CodeBuffer = 0
       $V = 0
       $K = 0
       Return $Ret
EndFunc

Func _XXTEA_Decrypt($Data, $Key)
       $Data = Binary($Data)
       Local $DataLen = BinaryLen($Data)
       If $DataLen = 0 Then Return ""

       Local $Opcode = '0x83EC10B83400000099538B5C241C55568B742420578B3EF7FB69D0B979379E81C256DA4CB5895424180F84DD000000897424248D4BFF8D149E894C2410895424148B4C2418C1E90281E103000000894C241C8B742410837C2410007E528B5424248B6CB2FC8BCD8BD7C1E905C1E20233CA8BD78BC5C1EA03C1E00433D003CA8B5424188BDE81E3030000008B44242C33D7335C241C8B1C9833DD03D333CA8B542424290CB28B0CB24E89CF85F67FAE8B5424148B6AFC8BCD8BD7C1E905C1E20233CA8BD78BC5C1EA03C1E00433D003CA8B5424188BDE81E3030000008B44242C33D7335C241C8B1C9833DD03D333CA8B542424290A8B0A89CF814424184786C861837C2418000F8535FFFFFF5F31C05E5D5B83C410C21000'
       Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
       DllStructSetData($CodeBuffer, 1, $Opcode)

       Local $V = DllStructCreate("byte[" & Ceiling($DataLen / 4) * 4 & "]")
       DllStructSetData($V, 1, $Data)

       Local $K = DllStructCreate("byte[16]")
       DllStructSetData($K, 1, $Key)

       DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
                                                                                                       "ptr", DllStructGetPtr($V), _
                                                                                                       "int", Ceiling($DataLen / 4), _
                                                                                                       "ptr", DllStructGetPtr($K), _
                                                                                                       "int", 0)

       Local $Ret = DllStructGetData($V, 1)
       $CodeBuffer = 0
       $V = 0
       $K = 0
       Return $Ret
EndFunc

Func _Base64Decode($Data)
       Local $Opcode = "0xC81000005356578365F800E8500000003EFFFFFF3F3435363738393A3B3C3DFFFFFF00FFFFFF000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132338F45F08B7D0C8B5D0831D2E9910000008365FC00837DFC047D548A034384C0750383EA033C3D75094A803B3D75014AB00084C0751A837DFC047D0D8B75FCC64435F400FF45FCEBED6A018F45F8EB1F3C2B72193C7A77150FB6F083EE2B0375F08A068B75FC884435F4FF45FCEBA68D75F4668B06C0E002C0EC0408E08807668B4601C0E004C0EC0208E08847018A4602C0E00624C00A46038847028D7F038D5203837DF8000F8465FFFFFF89D05F5E5BC9C21000"
       
       Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
       DllStructSetData($CodeBuffer, 1, $Opcode)

       Local $Ouput = DllStructCreate("byte[" & BinaryLen($Data) & "]")
       Local $Ret = DllCall("user32.dll", "int", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
                                                                                                       "str", $Data, _
                                                                                                       "ptr", DllStructGetPtr($Ouput), _
                                                                                                       "int", 0, _
                                                                                                       "int", 0)

       Return BinaryMid(DllStructGetData($Ouput, 1), 1, $Ret[0])
EndFunc

Func _Base64Encode($Data, $LineBreak = 76)
       Local $Opcode = "0x5589E5FF7514535657E8410000004142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2F005A8B5D088B7D108B4D0CE98F0000000FB633C1EE0201D68A06880731C083F901760C0FB6430125F0000000C1E8040FB63383E603C1E60409C601D68A0688470183F90176210FB6430225C0000000C1E8060FB6730183E60FC1E60209C601D68A06884702EB04C647023D83F90276100FB6730283E63F01D68A06884703EB04C647033D8D5B038D7F0483E903836DFC04750C8B45148945FC66B80D0A66AB85C90F8F69FFFFFFC607005F5E5BC9C21000"

       Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
       DllStructSetData($CodeBuffer, 1, $Opcode)

       $Data = Binary($Data)
       Local $Input = DllStructCreate("byte[" & BinaryLen($Data) & "]")
       DllStructSetData($Input, 1, $Data)

       $LineBreak = Floor($LineBreak / 4) * 4
       Local $OputputSize = Ceiling(BinaryLen($Data) * 4 / 3)
       $OputputSize = $OputputSize + Ceiling($OputputSize / $LineBreak) * 2 + 4

       Local $Ouput = DllStructCreate("char[" & $OputputSize & "]")
       DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
                                                                                                       "ptr", DllStructGetPtr($Input), _
                                                                                                       "int", BinaryLen($Data), _
                                                                                                       "ptr", DllStructGetPtr($Ouput), _
                                                                                                       "uint", $LineBreak)
       Return DllStructGetData($Ouput, 1)
EndFunc

Func _RC4($Data, $Key)
       Local $Opcode = "0xC81001006A006A005356578B551031C989C84989D7F2AE484829C88945F085C00F84DC000000B90001000088C82C0188840DEFFEFFFFE2F38365F4008365FC00817DFC000100007D478B45FC31D2F775F0920345100FB6008B4DFC0FB68C0DF0FEFFFF01C80345F425FF0000008945F48B75FC8A8435F0FEFFFF8B7DF486843DF0FEFFFF888435F0FEFFFFFF45FCEBB08D9DF0FEFFFF31FF89FA39550C76638B85ECFEFFFF4025FF0000008985ECFEFFFF89D80385ECFEFFFF0FB6000385E8FEFFFF25FF0000008985E8FEFFFF89DE03B5ECFEFFFF8A0689DF03BDE8FEFFFF860788060FB60E0FB60701C181E1FF0000008A840DF0FEFFFF8B750801D6300642EB985F5E5BC9C21000"
       Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
       DllStructSetData($CodeBuffer, 1, $Opcode)

       Local $Buffer = DllStructCreate("byte[" & BinaryLen($Data) & "]")
       DllStructSetData($Buffer, 1, $Data)

       DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
                                                                                                       "ptr", DllStructGetPtr($Buffer), _
                                                                                                       "int", BinaryLen($Data), _
                                                                                                       "str", $Key, _
                                                                                                       "int", 0)

       Local $Ret = DllStructGetData($Buffer, 1)
       $Buffer = 0
       $CodeBuffer = 0
       Return $Ret
EndFunc

Global $_SHA1Opcode = '0xC86800005356576A006A006A008D459850E829000000FF7514FF750CFF75088D459850E88A0000006A006A008D459850FF7510E8490000005F5E5BC9C210005589E5538B5D08836314008363180083635C00C70301234567C7430489ABCDEFC74308FEDCBA98C7430C76543210C74310F0E1D2C383636000836364005B5DC210005589E55657FF750CE8850200008B7D088B750C6A0559A58A47FF8647FC8847FF8A47FE8647FD8847FEE2EB5F5E5DC210005589E55356578B5D08837D10007502EB59837B60007506837B640074076A018F4364EB468B4D108B7D0CEB3449518A078B735C8844331CFF435C83431408837B1400750EFF4318837B180075056A018F4364837B5C40750653E813000000475985C97406837B640074C25F5E5B5DC21000C84801005356578B5D086A10598D51FF89D7C1E7020FB6443B1CC1E018898495BCFEFFFF0FB6443B1DC1E010098495BCFEFFFF0FB6443B1EC1E008098495BCFEFFFF0FB6443B1F098495BCFEFFFFE2BD6A105A83FA5073288B8495B0FEFFFF3384959CFEFFFF33849584FEFFFF3384957CFEFFFFD1C0898495BCFEFFFF42EBD38B4D088B318B59048B51088B790C8B41108985B8FEFFFF8365FC00837DFC147D3C89D131F921D931F989F0C1C00501C80385B8FEFFFF8B4DFC03848DBCFEFFFF059979825A5089BDB8FEFFFF89D789D8C1C01E89C289F35EFF45FCEBBE6A148F45FC837DFC287D3A89D931D131F989F0C1C00501C80385B8FEFFFF8B4DFC03848DBCFEFFFF05A1EBD96E5089BDB8FEFFFF89D789D8C1C01E89C289F35EFF45FCEBC06A288F45FC837DFC3C7D4689D821F85089D021F889D921D109C15809C189F0C1C00501C80385B8FEFFFF8B4DFC03848DBCFEFFFF05DCBC1B8F5089BDB8FEFFFF89D789D8C1C01E89C289F35EFF45FCEBB46A3C8F45FC837DFC507D3A89D931D131F989F0C1C00501C80385B8FEFFFF8B4DFC03848DBCFEFFFF05D6C162CA5089BDB8FEFFFF89D789D8C1C01E89C289F35EFF45FCEBC08B4D088B0101F089018B410401D88941048B410801D08941088B410C01F889410C8B41100385B8FEFFFF89411083615C005F5E5BC9C204005589E55356578B5D08837B6400740431C0EB14837B6000750B53E80F0000006A018F436031C0405F5E5B5DC204005589E553578B5D088B7B5C83FF37762EC6443B1C8047EB06C6443B1C004783FF4072F5897B5C53E8B6FDFFFF8B7B5CEB06C6443B1C004783FF3872F5EB13C6443B1C8047EB06C6443B1C004783FF3872F5897B5C8B4318C1E81825FF0000008843548B4318C1E81025FF0000008843558B4318C1E80825FF0000008843568B431825FF0000008843578B4314C1E81825FF0000008843588B4314C1E81025FF0000008843598B4314C1E80825FF00000088435A8B431425FF00000088435B53E81EFDFFFF5F5B5DC20400'

Func _SHA1($Data)
       Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($_SHA1Opcode) & "]")
       DllStructSetData($CodeBuffer, 1, $_SHA1Opcode)

       Local $Input = DllStructCreate("byte[" & BinaryLen($Data) & "]")
       DllStructSetData($Input, 1, $Data)

       Local $Digest = DllStructCreate("byte[20]")

       DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
                                                                                                       "ptr", DllStructGetPtr($Input), _
                                                                                                       "int", BinaryLen($Data), _
                                                                                                       "ptr", DllStructGetPtr($Digest), _
                                                                                                       "int", 0)

       Local $Ret = DllStructGetData($Digest, 1)
       $Input = 0
       $Digest = 0
       $CodeBuffer = 0
       Return $Ret
EndFunc

Func _MD5($string)

  $string = String($string)

  Local $bitLen, $bytes, $bytesLen, $blockN, $i

  Local $A, $B, $C, $D, $X[16], $Am, $Bm, $Cm, $Dm, $T[65]

  $bytes = StringToBinary($string)

  $bitLen = 8 * BinaryLen($bytes)

  $bytes += BinaryMid(Binary(0x80), 1, 1)

  $bytesLen = BinaryLen($bytes)

  While Mod($bytesLen + 8, 64) <> 0

     $bytes += BinaryMid(Binary(0x00), 1, 1)

     $bytesLen = BinaryLen($bytes)

  WEnd

  $bytes += BinaryMid(Binary($bitLen) + Binary(0), 1, 8)

  $bytesLen = BinaryLen($bytes)

  $A = 0x67452301

  $B = 0xEFCDAB89

  $C = 0x98BADCFE

  $D = 0x10325476

  For $i = 0 To 64 Step 1

     $T[$i] = 4294967296 * Abs(Sin($i))

  Next

  $blockN = 0

  Do

     For $i = 0 To 15 Step 1

        $X[$i] = BinaryMid($bytes, $blockN * 64 + 4 + $i * 4, 1) & BinaryMid($bytes, $blockN * 64 + 3 + $i * 4, 1)& BinaryMid($bytes, $blockN * 64 + 2 + $i * 4, 1) & BinaryMid($bytes, $blockN * 64 + 1 + $i * 4, 1)

     Next

     $Am = $A

     $Bm = $B

     $Cm = $C

     $Dm = $D

     ;Stage 1

     $A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[0])) + $T[1])) + BitOR(BitAND($B, $C), BitAND(BitNOT($B), $D)))) + $A)), 7, "D") + $B))

     $D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[1])) + $T[2])) + BitOR(BitAND($A, $B), BitAND(BitNOT($A), $C)))) + $D)), 12, "D") + $A))

     $C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[2])) + $T[3])) + BitOR(BitAND($D, $A), BitAND(BitNOT($D), $B)))) + $C)), 17, "D") + $D))

     $B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[3])) + $T[4])) + BitOR(BitAND($C, $D), BitAND(BitNOT($C), $A)))) + $B)), 22, "D") + $C))

     $A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[4])) + $T[5])) + BitOR(BitAND($B, $C), BitAND(BitNOT($B), $D)))) + $A)), 7, "D") + $B))

     $D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[5])) + $T[6])) + BitOR(BitAND($A, $B), BitAND(BitNOT($A), $C)))) + $D)), 12, "D") + $A))

     $C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[6])) + $T[7])) + BitOR(BitAND($D, $A), BitAND(BitNOT($D), $B)))) + $C)), 17, "D") + $D))

     $B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[7])) + $T[8])) + BitOR(BitAND($C, $D), BitAND(BitNOT($C), $A)))) + $B)), 22, "D") + $C))

     $A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[8])) + $T[9])) + BitOR(BitAND($B, $C), BitAND(BitNOT($B), $D)))) + $A)), 7, "D") + $B))

     $D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[9])) + $T[10])) + BitOR(BitAND($A, $B), BitAND(BitNOT($A), $C)))) + $D)), 12, "D") + $A))

     $C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[10])) + $T[11])) + BitOR(BitAND($D, $A), BitAND(BitNOT($D), $B)))) + $C)), 17, "D") + $D))

     $B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[11])) + $T[12])) + BitOR(BitAND($C, $D), BitAND(BitNOT($C), $A)))) + $B)), 22, "D") + $C))

     $A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[12])) + $T[13])) + BitOR(BitAND($B, $C), BitAND(BitNOT($B), $D)))) + $A)), 7, "D") + $B))

     $D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[13])) + $T[14])) + BitOR(BitAND($A, $B), BitAND(BitNOT($A), $C)))) + $D)), 12, "D") + $A))

     $C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[14])) + $T[15])) + BitOR(BitAND($D, $A), BitAND(BitNOT($D), $B)))) + $C)), 17, "D") + $D))

     $B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[15])) + $T[16])) + BitOR(BitAND($C, $D), BitAND(BitNOT($C), $A)))) + $B)), 22, "D") + $C))

     ;Stage 2

     $A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[1])) + $T[17])) + BitOR(BitAND($B, $D), BitAND($C, BitNOT($D))))) + $A)), 5, "D") + $B))

     $D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[6])) + $T[18])) + BitOR(BitAND($A, $C), BitAND($B, BitNOT($C))))) + $D)), 9, "D") + $A))

     $C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[11])) + $T[19])) + BitOR(BitAND($D, $B), BitAND($A, BitNOT($B))))) + $C)), 14, "D") + $D))

     $B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[0])) + $T[20])) + BitOR(BitAND($C, $A), BitAND($D, BitNOT($A))))) + $B)), 20, "D") + $C))

     $A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[5])) + $T[21])) + BitOR(BitAND($B, $D), BitAND($C, BitNOT($D))))) + $A)), 5, "D") + $B))

     $D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[10])) + $T[22])) + BitOR(BitAND($A, $C), BitAND($B, BitNOT($C))))) + $D)), 9, "D") + $A))

     $C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[15])) + $T[23])) + BitOR(BitAND($D, $B), BitAND($A, BitNOT($B))))) + $C)), 14, "D") + $D))

     $B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[4])) + $T[24])) + BitOR(BitAND($C, $A), BitAND($D, BitNOT($A))))) + $B)), 20, "D") + $C))

     $A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[9])) + $T[25])) + BitOR(BitAND($B, $D), BitAND($C, BitNOT($D))))) + $A)), 5, "D") + $B))

     $D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[14])) + $T[26])) + BitOR(BitAND($A, $C), BitAND($B, BitNOT($C))))) + $D)), 9, "D") + $A))

     $C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[3])) + $T[27])) + BitOR(BitAND($D, $B), BitAND($A, BitNOT($B))))) + $C)), 14, "D") + $D))

     $B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[8])) + $T[28])) + BitOR(BitAND($C, $A), BitAND($D, BitNOT($A))))) + $B)), 20, "D") + $C))

     $A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[13])) + $T[29])) + BitOR(BitAND($B, $D), BitAND($C, BitNOT($D))))) + $A)), 5, "D") + $B))

     $D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[2])) + $T[30])) + BitOR(BitAND($A, $C), BitAND($B, BitNOT($C))))) + $D)), 9, "D") + $A))

     $C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[7])) + $T[31])) + BitOR(BitAND($D, $B), BitAND($A, BitNOT($B))))) + $C)), 14, "D") + $D))

     $B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[12])) + $T[32])) + BitOR(BitAND($C, $A), BitAND($D, BitNOT($A))))) + $B)), 20, "D") + $C))

     ;Stage 3

     $A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[5])) + $T[33])) + BitXOR($B, $C, $D))) + $A)), 4, "D") + $B))

     $D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[8])) + $T[34])) + BitXOR($A, $B, $C))) + $D)), 11, "D") + $A))

     $C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[11])) + $T[35])) + BitXOR($D, $A, $B))) + $C)), 16, "D") + $D))

     $B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[14])) + $T[36])) + BitXOR($C, $D, $A))) + $B)), 23, "D") + $C))

     $A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[1])) + $T[37])) + BitXOR($B, $C, $D))) + $A)), 4, "D") + $B))

     $D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[4])) + $T[38])) + BitXOR($A, $B, $C))) + $D)), 11, "D") + $A))

     $C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[7])) + $T[39])) + BitXOR($D, $A, $B))) + $C)), 16, "D") + $D))

     $B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[10])) + $T[40])) + BitXOR($C, $D, $A))) + $B)), 23, "D") + $C))

     $A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[13])) + $T[41])) + BitXOR($B, $C, $D))) + $A)), 4, "D") + $B))

     $D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[0])) + $T[42])) + BitXOR($A, $B, $C))) + $D)), 11, "D") + $A))

     $C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[3])) + $T[43])) + BitXOR($D, $A, $B))) + $C)), 16, "D") + $D))

     $B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[6])) + $T[44])) + BitXOR($C, $D, $A))) + $B)), 23, "D") + $C))

     $A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[9])) + $T[45])) + BitXOR($B, $C, $D))) + $A)), 4, "D") + $B))

     $D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[12])) + $T[46])) + BitXOR($A, $B, $C))) + $D)), 11, "D") + $A))

     $C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[15])) + $T[47])) + BitXOR($D, $A, $B))) + $C)), 16, "D") + $D))

     $B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[2])) + $T[48])) + BitXOR($C, $D, $A))) + $B)), 23, "D") + $C))

     ;Stage 4

     $A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[0])) + $T[49])) + BitXOR($C, BitOR($B, BitNOT($D))))) + $A)), 6, "D") + $B))

     $D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[7])) + $T[50])) + BitXOR($B, BitOR($A, BitNOT($C))))) + $D)), 10, "D") + $A))

     $C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[14])) + $T[51])) + BitXOR($A, BitOR($D, BitNOT($B))))) + $C)), 15, "D") + $D))

     $B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[5])) + $T[52])) + BitXOR($D, BitOR($C, BitNOT($A))))) + $B)), 21, "D") + $C))

     $A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[12])) + $T[53])) + BitXOR($C, BitOR($B, BitNOT($D))))) + $A)), 6, "D") + $B))

     $D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[3])) + $T[54])) + BitXOR($B, BitOR($A, BitNOT($C))))) + $D)), 10, "D") + $A))

     $C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[10])) + $T[55])) + BitXOR($A, BitOR($D, BitNOT($B))))) + $C)), 15, "D") + $D))

     $B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[1])) + $T[56])) + BitXOR($D, BitOR($C, BitNOT($A))))) + $B)), 21, "D") + $C))

     $A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[8])) + $T[57])) + BitXOR($C, BitOR($B, BitNOT($D))))) + $A)), 6, "D") + $B))

     $D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[15])) + $T[58])) + BitXOR($B, BitOR($A, BitNOT($C))))) + $D)), 10, "D") + $A))

     $C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[6])) + $T[59])) + BitXOR($A, BitOR($D, BitNOT($B))))) + $C)), 15, "D") + $D))

     $B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[13])) + $T[60])) + BitXOR($D, BitOR($C, BitNOT($A))))) + $B)), 21, "D") + $C))

     $A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[4])) + $T[61])) + BitXOR($C, BitOR($B, BitNOT($D))))) + $A)), 6, "D") + $B))

     $D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[11])) + $T[62])) + BitXOR($B, BitOR($A, BitNOT($C))))) + $D)), 10, "D") + $A))

     $C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[2])) + $T[63])) + BitXOR($A, BitOR($D, BitNOT($B))))) + $C)), 15, "D") + $D))

     $B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[9])) + $T[64])) + BitXOR($D, BitOR($C, BitNOT($A))))) + $B)), 21, "D") + $C))

     $A = Dec(Hex($A + $Am))

     $B = Dec(Hex($B + $Bm))

     $C = Dec(Hex($C + $Cm))

     $D = Dec(Hex($D + $Dm))

     $blockN += 1

  Until $blockN * 64 >= $bytesLen

  Return Hex(Binary($A) + Binary($B) + Binary($C) + Binary($D))

EndFunc
EndFunc


Edited by Lahace - 24/1/2010, 17:31
 
Top
xdmisterx
CAT_IMG Posted on 15/1/2010, 09:28     +1   -1




g00d work :)
ti do un consiglio: quando aggiungerai l'md5, metti la possibilità di fare un brute force con dizionario o caratteri xD
 
Top
Lahace
CAT_IMG Posted on 15/1/2010, 16:45     +1   -1




CITAZIONE (xdmisterx @ 15/1/2010, 09:28)
g00d work :)
ti do un consiglio: quando aggiungerai l'md5, metti la possibilità di fare un brute force con dizionario o caratteri xD

si peccato che non abbia idea di come farlo xD
 
Top
xdmisterx
CAT_IMG Posted on 15/1/2010, 16:58     +1   -1




look this xD
in poche parole usa un file txt con dentro la worldlist. devi fare un modo che il programma legga una riga per volta e faccia il confronto con la stringa da decriptare.
se è diversa continua con quella successiva, altrimenti bingo xD
 
Top
Lahace
CAT_IMG Posted on 15/1/2010, 19:55     +1   -1




eh ma sarà bella lunga come questa word list xD
 
Top
Lahace
CAT_IMG Posted on 24/1/2010, 17:30     +1   -1




postata versione 1.2
aggiornamenti riportati nel post principale
 
Top
5 replies since 14/1/2010, 19:50   231 views
  Share