## page was renamed from CTF/inside/Toolkit/HashPump ## page was renamed from CTF/Toolkit/HashPump = HashPump = 様々なハッシュアルゴリズムについて、[[http://en.wikipedia.org/wiki/Length_extension_attack|Length Extension Attack]]を行うためのツールである。 CRC32, MD5, SHA1, SHA256, SHA512に対応している。 == 使い方 == {{{ hash(UNKNOWN ~ 初期既知文字列) = 既知ハッシュ }}} となることが分かっているとする。付与したい文字列をstrとして、 {{{ hash(UNKNOWN ~ 初期既知文字列 ~ 何らかの文字列 ~ 追加文字列) }}} を求めるには、次のようなコマンドを実行する。 {{{ $ hashpump -s (既知ハッシュ) -d (既知初期文字列) -k (UNKNOWNの長さ) -a (追加文字列) 出力1行目: hash(UNKNOWN ~ 初期既知文字列 ~ 何らかの文字列 ~ 追加文字列) 出力2行目: 初期既知文字列 ~ 何らかの文字列 ~ 追加文字列 }}} md5に対して攻撃を行う例。 {{{ $ hashpump -s 13c786aa2625fe2597aaeef121ff3a68 -d a -k 7 -a aa 8a483d9649f8cad04d0241ab18ae8f4e a\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00aa }}} 実際にはUNKNOWNの長さは分からないことが多いので、様々な数字を試して特定することになる。 == インストール方法 == {{{ $ git clone https://github.com/bwall/HashPump $ cd HashPump $ make $ sudo make install }}} make installしなくとも、生成された!HashPumpコマンドを叩けば利用することが出来る。 == その他 == *既知データの長さが0の場合は入力欄が与えられるが、そこにEOFを入れれば良い。 *標準入出力 or 引数でしかデータが渡せないため、ヌル文字('\0')をデータに含めることが出来ない。 * Ruby Binding( https://gitlab.mma.club.uec.ac.jp/nomeaning/hashpump-rb )では平気。