構文解析torrentファイルのハッシュ情報(Gettext)
-
29-09-2019 - |
質問
ようにしているため、正しいurl符号化された情報ハッシュに送信するトラッカーを得るために、仲間を一覧です。
試験用いた解析では、激流に このurl.
開封後、ファイルを手動でカットの情報辞書とSHA1-ハッシュ値を取得しますこのバイナリ値:
<<84,124,15,255,155,171,156,168,91,46,204,24,249,116,110, 139,202,167,163,54>>
のASCII文字列から取得後のバイナリ値は788f590f28a799cc1009a9b780b649fd6f0a2e91で同じ値を記のサイトです。
しましょう仮定が正しくできないのですか?).
後のエンコード、バイナリ値をurlエンコードは以下の関数に取得します T%7c%0f%ff%9b%ab%9c%a8%5b.%cc%18%f9tn%8b%ca%a7%a36ないものurlencoded値おいしい食べ物が送信、トラッカー。(かもしかしたらあまりにエラーメッセージが送ってもいいことにトラッカー、プラスとマッチしていない値がIの使用を参照してくださいwiresharkであるx%8fY%0f%28%a7%99%cc%10%09%a9%b7%80%b6I%fdo%0a.%91).
のURLエンコーディング機能を使用してい:
encode(<<Bin:20/binary-unit:8>>)->
%io:format("~p~n", [binary_to_list(Bin)]),
encode(binary_to_list(Bin));
encode(List) -> do_encode(List).
do_encode([])-> [];
do_encode([H|T]) when H>=$a, H=<$z ->
[H| encode(T)];
do_encode([H|T]) when H>=$A, H=<$Z ->
[H| encode(T)];
do_encode([H|T]) when H>=$0, H=<$9 ->
[H| encode(T)];
do_encode([H|T]) when H==$- ->
[H| encode(T)];
do_encode([H|T]) when H==$. ->
[H|do_encode(T)];
do_encode([H|T]) when H==$* ->
[H|do_encode(T)];
do_encode([H|T]) ->
to_hex(H) ++ encode(T).
hex(N) when N < 10 ->
$0+N;
hex(N) when N >= 10, N < 16 ->
$a+(N-10).
to_hex(N) when N < 256 ->
[$%, hex(N div 16), hex(N rem 16)].
の機能を上記の間違いだったのか?私の留守の場合で、原データの取り扱い.でるために/アイデアよろしくお願いいたします!よろしく!
解決
このURLエンコーディングが可能でgettext(ももを隠).
1> B = <<84,124,15,255,155,171,156,168,91,46,204,24,249,116,110, 139,202,167,163,54>>.
<<84,124,15,255,155,171,156,168,91,46,204,24,249,116,110,
2> L = erlang:binary_to_list(B).
[84,124,15,255,155,171,156,168,91,46,204,24,249,116,110,139,
202,167,163,54]
3> edoc_lib:escape_uri(L).
"T%7c%f%c3%bf%c2%9b%c2%ab%c2%9c%c2%a8%5b.%c3%8c%18%c3%b9tn%c2%8b%c3%8a%c2%a7%c2%a36"
での収穫量と同じ結果です。
他のヒント
問題がないとエンコーダが自の初期推定のデータです。の文字列としては"788f590f28a799cc1009a9b780b649fd6f0a2e91"で書いています少しのGimp用ドキュメのコードに変換するバイナリ表現としてリスト:
part([]) -> [];
part([U,L | R]) ->
[{list_to_integer([U], 16),
list_to_integer([L], 16)} | part(R)].
今、求に迅速に受けとる:
(etorrent@127.0.0.1)16> etorrent_utils:build_encoded_form_rfc1738([U*16+L || {U,L} <- foo:part("788f590f28a799cc1009a9b780b649fd6f0a2e91")]).
"x%8FY%0F%28%A7%99%CC%10%09%A9%B7%80%B6I%FDo%0A.%91"
マッチングに期待される。きることを確認しマニュアルとinfohashとSHA1の計算として働きに期待していることの表れである。なおSHA1のバイナリ一致しないのです。