[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[harden-mac:0310] md5 hash list




しろやまです。

2003.02.03 の6. のハッシュリストですが、例えばこんな感じではいかがで
しょうか?

lizard> find . -type f -exec md5 {} \;
MD5 (./ni/netinfo/.gdb_history) = 37e0b2a1561aeef52a9e216de246cd35
MD5 (./ni/netinfo/extconf.rb) = 9de73997892ece6ee512e971fe18e879
MD5 (./ni/netinfo/MANIFEST) = 8cb468e5e6a8075c5c664e5dc4495790
MD5 (./ni/netinfo/netinfo.h) = 284c8b242381f38dbeebb2bdb7b5b3f4
MD5 (./ni/netinfo/ni_directory.c) = 62aa0936d7098d9ee71a405a57bc4761
MD5 (./ni/netinfo/ni_domain.c) = 1af25ece76e2817723cef34d4d6a75f4
MD5 (./ni/netinfo/ni_main.c) = 634233747c86edf28aeeb49f272359e8
MD5 (./ni/netinfo/patch/mkmf.rb.patch) = caa4fbc1a18bf309ea8ebaae56328c16
MD5 (./ni/netinfo/patch/README) = 6f8e3e44361ec5a87beaa7f475a2d549
MD5 (./ni/netinfo/README) = 5846dbd330cea8ae615e5448d9f132fd
MD5 (./ni/netinfo/sample/nihost.rb) = 8409510f8d0e0857024b41e41ea49720
MD5 (./ni/ruby-netinfo-extension-0.1.tar.gz) = 5146f6f5b03d4c19228c0aef0412eb36
...

find は条件にマッチするファイルを引き上げてくれるので、ここで . (可憐と
ディレクトリ)から下の ファイルタイプが f (通常ファイル) を引っ張り出させて、
-exec で「 md5 ファイル名 」({}はファイル名に置き換えられ、 ; が終了印、
ただし、 ; はシェルが解するので \ でエスケープする、なお、{}の後には空
白を入れること) を実行させます。
なお、ファイル一個ごとに md5が実行されるのがイヤンという場合は、

lizard> find . -type f | xargs md5

っとすれば、find は適応するファイル名だけを出力し、その出力を(コマンド
ラインの長さ制限に引っかからない様に)適当にまとめて md5 コマンドに複数
ファイルを指定して実行してくれます。


あとは、リリースメディアをマウントすれば、コマンドラインからは /Volumes
の下に見えますので、そこで実行すれば全ての md5がとれるかと。


問題点は、リソースフォークの md5 がとれないって事ですか。リソースフォーク
自体は「 filename/..namedfork/rsrc」とパスを指定すればとれるのですけど、
もちろん find のリストには出てこないのでやっかいです。

単純に逃げるなら

lizard> find . -type f | awk '{ print $1 "\n" $1 "/..namedfork/rsrc" }' | xargs md5 -r
d41d8cd98f00b204e9800998ecf8427e ./hoge
d41d8cd98f00b204e9800998ecf8427e ./hoge/..namedfork/rsrc
37e0b2a1561aeef52a9e216de246cd35 ./netinfo/.gdb_history
d41d8cd98f00b204e9800998ecf8427e ./netinfo/.gdb_history/..namedfork/rsrc
9de73997892ece6ee512e971fe18e879 ./netinfo/extconf.rb
d41d8cd98f00b204e9800998ecf8427e ./netinfo/extconf.rb/..namedfork/rsrc
8cb468e5e6a8075c5c664e5dc4495790 ./netinfo/MANIFEST
d41d8cd98f00b204e9800998ecf8427e ./netinfo/MANIFEST/..namedfork/rsrc
284c8b242381f38dbeebb2bdb7b5b3f4 ./netinfo/netinfo.h
d41d8cd98f00b204e9800998ecf8427e ./netinfo/netinfo.h/..namedfork/rsrc
62aa0936d7098d9ee71a405a57bc4761 ./netinfo/ni_directory.c
d41d8cd98f00b204e9800998ecf8427e ./netinfo/ni_directory.c/..namedfork/rsrc
1af25ece76e2817723cef34d4d6a75f4 ./netinfo/ni_domain.c
d41d8cd98f00b204e9800998ecf8427e ./netinfo/ni_domain.c/..namedfork/rsrc
634233747c86edf28aeeb49f272359e8 ./netinfo/ni_main.c
d41d8cd98f00b204e9800998ecf8427e ./netinfo/ni_main.c/..namedfork/rsrc
caa4fbc1a18bf309ea8ebaae56328c16 ./netinfo/patch/mkmf.rb.patch
d41d8cd98f00b204e9800998ecf8427e ./netinfo/patch/mkmf.rb.patch/..namedfork/rsrc
6f8e3e44361ec5a87beaa7f475a2d549 ./netinfo/patch/README
d41d8cd98f00b204e9800998ecf8427e ./netinfo/patch/README/..namedfork/rsrc
5846dbd330cea8ae615e5448d9f132fd ./netinfo/README
d41d8cd98f00b204e9800998ecf8427e ./netinfo/README/..namedfork/rsrc
8409510f8d0e0857024b41e41ea49720 ./netinfo/sample/nihost.rb
d41d8cd98f00b204e9800998ecf8427e ./netinfo/sample/nihost.rb/..namedfork/rsrc
5146f6f5b03d4c19228c0aef0412eb36 ./ruby-netinfo-extension-0.1.tar.gz
d41d8cd98f00b204e9800998ecf8427e ./ruby-netinfo-extension-0.1.tar.gz/..namedfork/rsrc

こんな感じ( awk で強制的に ../namedfork/rsrc つきのファイル名も生成し、
xargs で md5のせる )ですかね?
( ここでは、md5 に -r オプションつけて、reverse format にしてみました)


実際には、d41d8cd98f00b204e9800998ecf8427e (空ファイルを渡す
とこの MD5値になります )を取り除いたり、フォーマットを調整したりとやらない
といけないかと思いますが、あとは暇さえあればできるかと思います。

---
SHIROYAMA Takayuki
PS: find, sed, awk ってのが オールドタイプなワタシの解き方ですが(^^;、
perl や ruby を使うというニュータイプな解き方もあるかと思います。


--[PR]------------------------------------------------------------------
【 FreeML ユーザー登録はお済みですか?】
 ・登録はメールアドレスとパスワードを入力するだけ。登録すると…
  ┣ WEBメール&ニックネームが使えて、とっても便利!
  ┗ 参加者にだけメッセージを公開しているMLの、過去ログが読める!
▼ いますぐ登録! => http://ad.freeml.com/cgi-bin/ad.cgi?id=bAFsp
------------------------------------------------------------------[PR]--
<GMO GROUP> Global Media Online www.gmo.jp