2016-10-12 1 views
2

Ich bin absolut Anfänger mit den Bittorrent-Protokollen und ich habe versucht, eine Datei an einen Tracker anzufordern. Um dies zu tun, ich analysiert und gedruckt, um eine Arbeits .torrent-Datei mit einem C# -Programm, dann bat ich nur den Tracker mit diesen Info mit PostManWarum funktioniert meine GET-Anfrage an einen Torrent-Tracker nicht?

Die extrahierten Informationen sind:

- announce : 
http://bt1.archive.org:6969/announce 

- announce-list 
http://bt1.archive.org:6969/announce 
http://bt2.archive.org:6969/announce 

- comment : 
This content hosted at the Internet Archive at https://archive.org/details/6201484321_f1a88ca2cb_b 
Files may have changed, which prevents torrents from downloading correctly or completely; please check for an updated torrent at https://archive.org/download/6201484321_f1a88ca2cb_b/6201484321_f1a88ca2cb_b_archive.torrent 
Note: retrieval usually requires a client that supports webseeding (GetRight style). 
Note: many Internet Archive torrents contain a 'pad file' directory. This directory and the files within it may be erased once retrieval completes. 
Note: the file 6201484321_f1a88ca2cb_b_meta.xml contains metadata about this torrent's contents. 

- created by : 
ia_make_torrent 

- creation date : 
1462999235 

- info 
- collections 
org.archive.6201484321_f1a88ca2cb_b 

- crc32 : 
6dbd08b2 

- length : 
970 

- md5 : 
96951c7834ee105660e0447e00ec4b31 

- mtime : 
1462999235 

- path 
6201484321_f1a88ca2cb_b_meta.xml 

- sha1 : 
cc69b6337b4e459ec9428629ca49fb65a6249ee8 

- name : 
6201484321_f1a88ca2cb_b 

- piece length : 
524288 

- pieces : 
üyR¨ÆôO2¿Ù'ù'┼0ö 


- locale : 
en 

- title : 
6201484321_f1a88ca2cb_b 

- url-list 
https://archive.org/download/ 
http://ia600704.us.archive.org/24/items/ 
http://ia800704.us.archive.org/24/items/ 

Also ich haben diese Anfrage zu senden:

http://bt1.archive.org:6969/announce?info_hash=cc69b6337b4e459ec9428629ca49fb65a6249ee8&peer_id=ABCDEFGHIJKLMNOPQRST&ip=80.11.255.166&port=6881&downloaded=0&left=970

Was ist falsch?

EDIT:

ich die Anfrage von uTorrent auf diesem Strom mit Wireshark gemacht traked und die hash_info ist: %ac%c3%b2%e43%d7%c7GZ%bbYA%b5h%1c%b7%a1%ea%26%e2

Aber wenn ich SHA1 die bencoded Form des Info-Wertes, die ist collectionsl35:org.archive.6201484321_f1a88ca2cb_be5:filesld5:crc328:262eacb06:lengthi346936e3:md532:48ab0840ed6501c37072b261fd52bcde5:mtime10:13176646104:pathl27:6201484321_f1a88ca2cb_b.jpge4:sha140:6ce409c363e038a57c79ed17ee97571058101575ed5:crc328:6dbd08b26:lengthi970e3:md532:96951c7834ee105660e0447e00ec4b315:mtime10:14629992354:pathl32:6201484321_f1a88ca2cb_b_meta.xmle4:sha140:cc69b6337b4e459ec9428629ca49fb65a6249ee8ed5:crc328:f94424566:lengthi5253e3:md532:9d665d42153c0b27b5eb4922c4ddef685:mtime10:13176646704:pathl33:6201484321_f1a88ca2cb_b_thumb.jpge4:sha140:e5e775116512cebdc0ad048ce3a0e3dd100becf0ee4:name23:6201484321_f1a88ca2cb_b12:piece lengthi524288e6:pieces20:üyR¨Æô;O2¿Ù‚ù‘†0ö

ich habe den gleichen Hash nicht

+3

Wie diese Frage auch in C# verwandt ist? –

+0

@ Firebug gibt eine ** 400 ungültige Anfrage ** –

+0

Ich analysierte die Datei mit einem C# -Programm, es ist vielleicht aus diesem Grund:/ Ja, ich weiß, dass der Http-Statuscode zurückgegeben 400 ist, ist meine Frage warum ist Anfrage falsch? – LeCintas

Antwort

1

Es gibt zwei Probleme zu berechnen:

  1. Der Hash Sie ist die info_hash nicht senden. Sie haben irgendwie von den Metadaten in der .torrent-Datei stattdessen den SHA1-Hash einer der Dateien im Torrent bekommen.
    die .torrent-Datei abrufen von: https://archive.org/download/6201484321_f1a88ca2cb_b/6201484321_f1a88ca2cb_b_archive.torrent zeigt, dass die hex-encoded info_hashACC3B2E433D7C7475ABB5941B5681CB7A1EA26E2
  2. Das ist info_hash Sie in der Anforderung senden ist hex-codiert.Es muss wie diese URL-kodiert sein:
    %ac%c3%b2%e43%d7%c7GZ%bbYA%b5h%1c%b7%a1%ea%26%e2

dass korrigieren und Senden:
http://bt1.archive.org:6969/announce?info_hash=%ac%c3%b2%e43%d7%c7GZ%bbYA%b5h%1c%b7%a1%ea%26%e2&peer_id=ABCDEFGHIJKLMNOPQRST&ip=80.11.255.166&port=6881&downloaded=0&left=970

gibt die Antwort:
d8:completei0e10:downloadedi2e10:incompletei2e8:intervali1950e12:min intervali975e5:peers12:************e

1

Sie müssen URL kodieren der Hash, anstatt es in rohen Hex zu senden.

Vom BitTorrent Tracker Protocol

Grunde Tracker anfordern Anmelden

info_hash Der 20-Byte-SHA1-Hash der bencoded Form des Info-Wertes aus der metainfo Datei. Beachten Sie, dass dies eine Teilzeichenfolge der Metainfo-Datei ist. Vergessen Sie nicht, dies zu URL-encodieren.

aktualisieren

BencodeNET Bibliothek scheint zu tun, was Sie, was warum nicht Sie es ausprobieren ?. Die Beispiele zeigen deutlich, wie ein Hash eines torrent

// Parse torrent by specifying the file path 
var parser = new BencodeParser(); // Default encoding is Encoding.UT8F, but you can specify another if you need to 
var torrent = parse.Parse<Torrent>("C:\ubuntu.torrent"); 

// Alternatively, handle the stream yourself 
using (var stream = File.OpenRead("C:\ubuntu.torrent")) 
{ 
    torrent = parse.Parse<Torrent>(stream); 
} 

// Calculate the info hash 
string infoHash = torrent.GetInfoHash(); 
// "B415C913643E5FF49FE37D304BBB5E6E11AD5101" 

// or as bytes instead of a string 
byte[] infoHashBytes = torrent.GetInfoHashBytes(); 

// Get Magnet link 
string magnetLink = torrent.GetMagnetLink(); 
// magnet:?xt=urn:btih:1CA512A4822EDC7C1B1CE354D7B8D2F84EE11C32&dn=ubuntu-14.10-desktop-amd64.iso&tr=http://torrent.ubuntu.com:6969/announce&tr=http://ipv6.torrent.ubuntu.com:6969/announce 

// Convert Torrent to it's BDictionary representation 
BDictionary bencode = torrent.ToBDictionary(); 
+0

habe ich bereits getan, und der codierte Hash ist nicht verschieden von dem nicht kodierten. Momentan benutze ich das 'sha1'-Feld der Datei, die im Torrent enthalten ist, aber nach ein paar weiteren Recherchen habe ich festgestellt, dass ich das Feld' pieces' verwenden muss (http://stackoverflow.com/questions/28348678/what- Genaues-ist-die-Info-Hash-in-einem-Torrent-Datei) Aber schauen Sie sich den Feldinhalt, dies ist nicht gut codiert, ich weiß nicht, welche Codierung verwendet wird EDIT: der Zeichensatz ist UTF-8 – LeCintas

+0

@LeCintas Die Dokumentation sagt 'Hash der bencodierten Form des Info-Wertes aus der Metainfo-Datei ' –

Verwandte Themen