Показать полную графическую версию : [решено] Можно ли с помощю (.bat) кода узнать MD5 файла?
turbolover
09-07-2015, 19:12
Можно ли с помощю (.bat) кода узнать MD5 файла?
На пример узнать MD5 файла: (Regedit.exe).
Вроде как кто-то делал, но сие очень накладно. Используйте стороннюю утилиту, WSH или PowerShell.
C помощью сторонней утилиты
@Echo Off
Set file=c:\Windows\Regedit.exe
For /F %%i In ('md5sum.exe "%file%"') Do Set md5=%%i
Echo %md5%
Pause
Утилита должна лежать рядом со скриптом
@CertUtil -hashfile "%windir%\regedit.exe" MD5| findstr/v :& pause>nul
greg zakharov
09-07-2015, 23:07
Можно ли с помощю (.bat) кода узнать MD5 файла?Без стронних утилит (сохранить как батник):<!-- ::
@mshta "%~f0"&exit /b
-->
<html>
<head>
<title>Hasher</title>
<meta name="author" content="greg zakharov" />
<hta:application id="iHasher"
applicationname="Hasher"
border="thin"
contextmenu="no"
maximizebutton="no"
minimizebutton="no"
scroll="no"
singleinstance="yes"
sysmenu="yes"
version="1.0" />
<style type="text/css">
html, body {
background: #eee;
font-size: 90%;
margin: 3px 3px;
padding: 0;
}
p {
font-weight: bold;
margin: 1px 1px;
padding: 0;
}
#filename {
width: 100%;
}
</style>
<script language="VBScript">
Sub Resize()
window.resizeTo 430, 130
End Sub
Sub GetHash()
Dim objFile, objSize, objBuff, objType, objHash, objDone
Dim objNS
document.getElementById("result").value = ""
objFile = document.getElementById("filename").value
If objFile = "" Then
alert("Nothing choosed.")
Exit Sub
End If
With CreateObject("Scripting.FileSystemObject")
objSize = .GetFile(objFile).Size
End With
If objSize = 0 Then
alert("Specified file has null length.")
Exit Sub
End If
With CreateObject("SAPI.SpFileStream")
.Open objFile, 0
.Read objBuff, objSize
.Close
End With
For Each h In hash
If h.checked Then
objType = LCase(h.value)
Exit For
End If
Next
objNS = "System.Security.Cryptography."
Select Case objType
Case "md5" Set objHash = CreateObject(objNS & "MD5CryptoServiceProvider")
Case "sha1" Set objHash = CreateObject(objNS & "SHA1Managed")
Case "sha256" Set objHash = CreateObject(objNS & "SHA256Managed")
Case "sha384" Set objHash = CreateObject(objNS & "SHA384Managed")
Case "sha512" Set objHash = CreateObject(objNS & "SHA512Managed")
Case "ripemd160" Set objHash = CreateObject(objNS & "RIPEMD160Managed")
End Select
objType = objHash.ComputeHash_2((objBuff))
For i = 1 To LenB(objType)
objDone = objDone & Right("0" & Hex(AscB(MidB(objType, i, 1))), 2)
Next
document.getElementById("result").value = LCase(objDone)
End Sub
</script>
</head>
<body onload="Resize()">
<p><input type="file" id="filename" onchange="GetHash()" /></p>
<p>
<input type="radio" name="hash" value="MD5" onclick="GetHash()" />MD5
<input type="radio" name="hash" value="SHA1" onclick="GetHash()" />SHA1
<input type="radio" name="hash" value="SHA256" checked="true" onclick="GetHash()" />SHA256
<input type="radio" name="hash" value="SHA384" onclick="GetHash()" />SHA384
<input type="radio" name="hash" value="SHA512" onclick="GetHash()" />SHA512
<input type="radio" name="hash" value="RIPEMD160" onclick="GetHash()" />RIPEMD160
</p>
<textarea cols="49" id="result"></textarea>
</body>
</html>
@CertUtil »Не для Windows XP.
В XP придётся применять:
Windows Server 2003 Administration Tools Pack (http://www.microsoft.com/en-us/download/details.aspx?id=16770) или Windows Server 2003 Service Pack 1 Administration Tools Pack (http://www.microsoft.com/en-us/download/details.aspx?id=3725)
Как узнать контрольную сумму MD5-Digest, SHA1-Digest файла с помощью командной строки?
sov44, сообщение с простынёй, за одно до вашего, не помогло? ("Без стронних утилит (сохранить как батник)")
сообщение с простынёй, за одно до вашего, не помогло? »
Я пробовал его использовать. Вынул vbs скрипт, его и использовал. При расчете кеша больших файлов (порядка гигабайта и более) система очень сильно грузилась и компьютер фактически повисал. Процесс подсчета сильно затягивался. Пришлось отказаться в пользу сторонних утилит (7z.exe).
gora, я-то пользую Total Commander — но вопрос был о командной строке, поэтому не упоминал.
А тут спрашивал про использование не про vbs, как у вас, а про cmd (bat).
sov44, сообщение с простынёй, за одно до вашего, не помогло? »
Нет. Мне нужен MD5-Digest, а не MD5. Немного "поправил" расширение, оно не устанавливается, т.к. перестали совпадать контрольные в manifest.mf. Удаление манифеста не помогло.
Нет. Мне нужен MD5-Digest, а не MD5. »
http://webtoolkitonline.com/md5-digest-message.html — проверил; не увидел разницы между MD5-Digest и MD5 Sum, в т.ч. сравнив их.
Может не разобрался... Хотя из http://re.mipt.ru/infsec/2004/essay/2004_MD5_Message-Digest_Algorithm__Strelnikov.pdf вроде бы следует то же самое.
Нет. Мне нужен MD5-Digest, а не MD5. »
Присоединюсь к вопросу — а в чём именно разница, где можно об этом почитать?
Iska, для наглядности, из манифеста
Name: icon64.png
Digest-Algorithms: MD5 SHA1
MD5-Digest: I7n/2sFtqgnztNWs9oXulg==
SHA1-Digest: RRqSHQk5Jnl7jZdoJ7XHblHske4=
с помощью HashTab:
MD5: 23B9FFDAC16DAA09F3B4D5ACF685EE96
SHA1: 451A921D093926797B8D976827B5C76E51EC91EE
Как определялись взялись цифры в манифесте, самому интересно. файл http://rghost.ru/8qq2CfjkY
К сожалению не знаю иного способа заставить ставится расширение кроме как править контрольные суммы измененных файлов в манифесте. Желающим помочь с расширением - в личку или icq
sov44, насколько я понимаю, это самый обычный MD5 и самый обычный SHA1, в строках MD5-Digest/SHA1-Digest должно быть записано их Base64 представление.
в строках MD5-Digest/SHA1-Digest должно быть записано их Base64 представление. »
sov44
На что и намекает знак равенства в конце обеих строк первого кода. Однако число символов в MD5-Digest здесь существенно меньше 32 (т.е. в самой MD-5 сумме), и тем более меньше 44 в её Encoding: base64. Т.е. это дополнительная свёртка самой суммы MD-5 (ну и SHA1 тоже) — но вопрос, по какому алгоритму.
Да, хотелось бы увидеть существующие корректные образцы, дабы поиграться.
помогите допилить функцию для работы:
-сторонними ПО пользоваться нельзя.
задача получить хэш md5 любого выбранного файла.
добавил в контекстное меню кнопку обозвав "md5" значением: cmd.exe /c @chcp 1251 & CertUtil –hashfile “%1” MD5 | Clip
и вот вопросы:
- как сделать, чтоб запуска cmd вообще не было видно?
- Чтоб в буфер обмена копировался только хеш - чтоб сразу вставлять куда нужно, сейчас выводит:
MD5 хеш файла C:\Users\Администратор\Downloads\A_5omf3cGvM.jpg:
ad 58 b6 de da 58 7b ef bf a2 32 16 5a eb 07 55
CertUtil: -hashfile — команда успешно выполнена.
а нужно: ad 58 b6 de da 58 7b ef bf a2 32 16 5a eb 07 55
наверно это просто - прост не шарю.
rakdm,
certUtil -hashfile "file.txt" MD5|find /v ":"|clip
скрытый запуск ищите поиском, разбиралось столько раз уже, что за вас искать уже будет неправильно.
- как сделать, чтоб запуска cmd вообще не было видно? »
Элементарно: не использовать cmd.
Чтоб в буфер обмена копировался только хеш »
Фильтровать «лишние» строки. Пример — в предыдущем сообщении.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.