WeMartiansAreFriendly Posted April 29, 2007 Posted April 29, 2007 (edited) i got bored.. so i made a little udfit uses a dll file available here, (Download) that retrieves a files/string checksum, and supports a crapload of hashes"Supported the following HASHES:MD2,MD4,MD5,SHA1,SHA256,SHA384,SHA512,HAVAL128,HAVAL160,HAVAL192,HAVAL224,HAVAL256GHOST,TIGER128,TIGER160,TIGER192,RIPE-MD128,RIPE-MD160,CRC32,CRC16,ARC-CRC"Update: Added better error checking, added another example.. Update: Now support strings and files.. expandcollapse popup#cs This DLL is free for non commercial use. My site: http://www.paehl.de Supported the following HASHES: MD2,MD4,MD5,SHA1,SHA256,SHA384,SHA512,HAVAL128,HAVAL160,HAVAL192,HAVAL224,HAVAL256 GHOST,TIGER128,TIGER160,TIGER192,RIPE-MD128,RIPE-MD160,CRC32,CRC16,ARC-CRC #ce ;Example-Strings SHA1 Local $s[2], $h[3], $DLLHashes = DllOpen('hashes.dll') ;written $s[0] = 'Hello World' $h[0] = _Hashes($s[0], 'SHA1', $DLLHashes) ;rechecked $h[1] = _Hashes($s[0], 'SHA1', $DLLHashes) ;modified $s[1] = StringLower($s[0]) $h[2] = _Hashes($s[1], 'SHA1', $DLLHashes) ConsoleWrite($s[0] &@LF& $h[0] &@lf& $h[1] &@lf& $s[1] &@lf& $h[2] &@lf&@lf) ;Example-File SHA1 $s[1] = @AutoItExe $h[0] = _Hashes($s[1], 'SHA1', $DLLHashes, 1) ConsoleWrite($s[1] &@lf& $h[0] &@lf&@lf) ;Hash test ConsoleWrite('Hash test' &@lf) $s[1] = 'abcdefghijklmnopqrstuvwxyz' $shash = StringSplit('MD2,MD4,MD5,SHA1,SHA256,SHA384,SHA512,HAVAL128,HAVAL160,HAVAL192,HAVAL224,HAVAL256,'& _ 'GHOST,TIGER128,TIGER160,TIGER192,RIPE-MD128,RIPE-MD160,CRC32,CRC16,ARC-CRC',',') For $y = 1 to $shash[0] ConsoleWrite('String:'& $s[1] &': Hash-'& $shash[$y] &':'& _Hashes($s[1], $shash[$y], $DLLHashes, 0) & @lf) Next ;------------------------------------ ;$sValue = string or file (need to set sfile = 0 for string, sfile = 1 for file) ;$sHash = hash algorthm ;$DLLHashes = the dll location or handle ;$sFile = 0 = string [default], 1 = file ;------------------------------------ Func _Hashes($sValue, $sHash = 'MD5', $DLLHashes = 'hashes.dll', $sFile = 0) Local $aValue[1], $sSplit, $hashes = Random(-100,100) & 'hashes.txt' If $sFile = 1 And FileExists($sValue) Then $hashes = $sValue If $sFile = 0 Then FileWrite($hashes,$sValue) ;seems to only want files so well write a temp one $aValue = DllCall($DLLHashes, 'str', 'testit', 'str', $hashes, 'str',$sHash, 'int', false) If $sFile = 0 Then FileDelete($hashes) ;then delete it If Not @error And IsArray($aValue) Then $sSplit = StringSplit($aValue[0],@LF) ;extract hash string If Not @error Then $aValue[0] = StringTrimRight($sSplit[1],1) If StringInStr($aValue[0],'Error:') Then Return SetError(1,0,0) Return $aValue[0] EndIf SetError(1,0,0) EndFunc Edited April 29, 2007 by mrRevoked Don't bother, It's inside your monitor!------GUISetOnEvent should behave more like HotKeySet()
ConsultingJoe Posted April 30, 2007 Posted April 30, 2007 Looks cool but I cant see too many uses for this. I could be wrong. Check out ConsultingJoe.com
WeMartiansAreFriendly Posted May 1, 2007 Author Posted May 1, 2007 well i do have a habbit of posting useless scripts at this forum.. maybe i'll refrain from doing so in the future. Don't bother, It's inside your monitor!------GUISetOnEvent should behave more like HotKeySet()
smashly Posted May 1, 2007 Posted May 1, 2007 Thank You mrRevoked and nice work. I used this script for hashing over 300 bios files. It was usefull Looks cool but I cant see too many uses for this. I could be wrong.Yep your wrong ! lolI admit that I don't hash strings and files on a hourly basis, but I do use hashing functions on regular occasions.@ mrRevokedYour scripts aren't useless and your script writing style is great and getting greater all the time.I've silently learnt things from post snippets of your scripts around the forums.Please don't refrain Cheers
smashly Posted May 1, 2007 Posted May 1, 2007 Error IN URL File DLL ..Please New Link Download..The download link works fine for me.hashes_dll.zip SHA1: FFE78D66C47BB9727202CEC2A35CF278C5EBA4AD(generated SHA1 with the udf ... lol)
JSThePatriot Posted May 1, 2007 Posted May 1, 2007 I am curious would you run a test on the time it takes to create the hashes in comparison with my FileString Hash plugin in my signature? I haven't been as active on the forums, so I dont think as many people know about my plugin anymore. I am just trying to see if I need to further optimize the code I have in my plugin. Thanks, JS AutoIt Links File-String Hash Plugin Updated! 04-02-2008Â Plugins have been discontinued. I just found out. ComputerGetInfo UDF's Updated! 11-23-2006 External Links Vortex Revolutions Engineer / Inventor (Web, Desktop, and Mobile Applications, Hardware Gizmos, Consulting, and more)
smashly Posted May 1, 2007 Posted May 1, 2007 Hi JSThePatriot and thank you. Your hash plugin is the first hash plugin I used when I needed to hash some files some time back and it's a pleasure to use. I found it to be fast and stable. I haven't compared mrRevoked and your plugin in a speed test yet. The dll that mrRevoked uses with his udf is 37kb in size and supports alot of differant types of hashing. (most of which I'll probly never use..lol) So I thought why not give it a go since I had a few hundred bios files I needed to identify I may as well give his script a go. Must admit hashing of 300+ files @ 256kb - 1024kb in size went by pretty quick without any fuss, but I didn't actually log the time it took. Cheers.
JSThePatriot Posted May 1, 2007 Posted May 1, 2007 Hi JSThePatriot and thank you. Your hash plugin is the first hash plugin I used when I needed to hash some files some time back and it's a pleasure to use. I found it to be fast and stable. I haven't compared mrRevoked and your plugin in a speed test yet. The dll that mrRevoked uses with his udf is 37kb in size and supports alot of differant types of hashing. (most of which I'll probly never use..lol)So I thought why not give it a go since I had a few hundred bios files I needed to identify I may as well give his script a go.Must admit hashing of 300+ files @ 256kb - 1024kb in size went by pretty quick without any fuss, but I didn't actually log the time it took.Cheers.I love to see people developing with AutoIt. I know my plugin is a bit slow in some places. Not to mention the size of my DLL seems a bit larger for some reason, and it only has two of the hash formats. I am just interested in if there is a speed difference. There seems to be a bigger speed difference with mine after more operations than with small short operations. (That atleast gives me an idea of where to start looking)Thanks,JS AutoIt Links File-String Hash Plugin Updated! 04-02-2008Â Plugins have been discontinued. I just found out. ComputerGetInfo UDF's Updated! 11-23-2006 External Links Vortex Revolutions Engineer / Inventor (Web, Desktop, and Mobile Applications, Hardware Gizmos, Consulting, and more)
nobbe Posted May 29, 2007 Posted May 29, 2007 great program, thanks a lot! i find it useful as is need it for my file compare tool...
mrbond007 Posted May 29, 2007 Posted May 29, 2007 Iv'e been looking for something like this. Great Job Projects : Space Regain - Memory Fusion - PWGT - Chip-ITGames : BrainPain - BrainPain Director's Cut - ProSpeed Games Pack (New)Vista vs XP : the forbidden fight
Proph Posted June 9, 2007 Posted June 9, 2007 I did some MD5 speed tests and it seems that this hashes.dll plugin is faster for most files. It was slower on really small files though. Here's the code I used for testing. Just change the paths to your dll files in this script. It makes a MD5.log file in your @ScriptDir with the File/Path, MD5 Hash code, and the amount of time it took. CODE$dllIs = "C:\trash\hashes_dll\hashes.dll" $dll2Is = "C:\trash\hashes_dll\f-shash.dll" $GetFile = FileOpenDialog('Get Files', '', "Files (*.*)", 1 + 4 ) ; LNG - Hold down Ctrl or Shift to choose multiple RVMAddons. If $GetFile = '' Then Exit $DLLHashes = DllOpen($dllIs) $plHND = PluginOpen($dll2Is) $Split = StringSplit($GetFile, '|') If Not @error Then FileDelete(@ScriptDir&'\md5.log') For $i = 2 to $Split[0] MrRevoked($Split[1]&'\'&$Split[$i]) JSThePatriot($Split[1]&'\'&$Split[$i]) Next Else MrRevoked($GetFile) JSThePatriot($GetFile) EndIf DllClose($DLLHashes) PluginClose($plHND) Func MrRevoked($file) $Timerinit = TimerInit() $mymd5 = _Hashes($file, 'MD5', $dllIs, 1) $Amount = TimerDiff($Timerinit) Logg('MrRevoked:'&@CRLF&$file&@CRLF&$mymd5&@CRLF&$Amount&@CRLF&@CRLF) EndFunc Func JSThePatriot($file) $Timerinit = TimerInit() $mymd5 = MD5Check($file) $Amount = TimerDiff($Timerinit) Logg('JSThePatriot:'&@CRLF&$file&@CRLF&$mymd5&@CRLF&$Amount&@CRLF&@CRLF) EndFunc Func Logg($String) FileWriteLine(@ScriptDir&'\md5.log', $String) EndFunc ;------------------------------------ ;$sValue = string or file (need to set sfile = 0 for string, sfile = 1 for file) ;$sHash = hash algorthm ;$DLLHashes = the dll location or handle ;$sFile = 0 = string [default], 1 = file ;------------------------------------ Func _Hashes($sValue, $sHash = 'MD5', $DLLHashes = 'hashes.dll', $sFile = 0) Local $s[2], $h[3] Local $aValue[1], $sSplit, $hashes = Random(-100,100) & 'hashes.txt' If $sFile = 1 And FileExists($sValue) Then $hashes = $sValue If $sFile = 0 Then FileWrite($hashes,$sValue) ;seems to only want files so well write a temp one $aValue = DllCall($DLLHashes, 'str', 'testit', 'str', $hashes, 'str',$sHash, 'int', false) If $sFile = 0 Then FileDelete($hashes) ;then delete it If Not @error And IsArray($aValue) Then $sSplit = StringSplit($aValue[0],@LF) ;extract hash string If Not @error Then $aValue[0] = StringTrimRight($sSplit[1],1) If StringInStr($aValue[0],'Error:') Then Return SetError(1,0,0) Return StringUpper($aValue[0]) EndIf SetError(1,0,0) EndFunc Func MD5Check($file) $md5File = StringUpper(FileHash($file, 1)) Return $md5File EndFunc
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now