0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

windowのcmdでクリップボードのMD5とファイルのハッシュを比較

0
Posted at

下記ファイルをどっかに置いとく。
僕の趣味としては常々スクリプトファイル置き場を作っているのでそこ

HitHash\HitHash2ClipMD5.bat
@echo off

for /f "usebackq delims=" %%a in (`powershell get-clipboard`) do set hash=%%a

echo clip:%hash%
echo file:%1

certutil -hashfile %1 MD5|findstr /I /X %hash%

if errorlevel 1 (
  echo "NOT MATCH"
) else (
  echo "matched"
)

pause
exit /b

使い方

  1. クリップボードにMD5をコピーする
  2. 上記batchに、downloadした検証対象をドラッグ&ドロップ
  3. 結果を眺める

sendToに入れとけばドラッグ&ドロップの代わりに
右クリックメニュー>送る>バッチファイル名
の操作でどこからでも呼べる
バッチファイルをそのまま置くと権限がめんどい可能性があるのでショートカットにしている。

sendToって何って「送る」のこと
%appdata%\microsoft\windows\sendTo

何やってんの?

for /f "usebackq delims=" %%a in (`powershell get-clipboard`) do set hash=%%a

クリップボードの取得powershell get-clipboardと変数hashへの格納

certutil -hashfile %1 MD5|findstr /I /X %hash%

ファイルのハッシュ値取得certutil -hashfileと一致確認findstr
MD5の部分を別のアルゴリズム名に置き換えれば別のハッシュ値とも照合できる。
findstrのオプションで/Iはあるとダメな場合もあった気がする

if errorlevel 1 ( echo "NOT MATCH" ) else ( echo "matched" )

certutilとfindstrとでエラーが出ると1以上になる。
certutilだとファイルがないとかで出ると思う。
findstrは検索結果がないとerrorlevelを1にする。

懸念

クリップボードの内容とかファイル名(がくるはずの第一引数)とかを利用しているが、
ここに「>」が入り込んだりするとファイル更新かかっちゃったりして危険かもしれんので、本当はエスケープすべきかも。

%hash:>=%
とかでいいのかしらん

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?