Wat is precies de info_Hash in een torrent-bestand

Ik lees de laatste tijd veel over hash van torrents en magnetische links, enz. Maar er is een vraag die ik niet begrijp.

Ik heb:

  • hash van een bestand
  • en de infohash van een torrent

Is de infohash= hash van het bestand ?

Zo ja, wat als de torrent 6 bestanden beschrijft om te downloaden?

Zo nee, waar staat het voor?


Antwoord 1, autoriteit 100%

Dus ik heb het eindelijk door.

De “infohash” is de SHA1-hash over het deel van een torrent-bestand dat het volgende bevat:

  1. ITEM: lengte(grootte) en pad (pad met bestandsnaam)
  2. Naam: de naam waarnaar moet worden gezocht
  3. Stuklengte: de lengte (maat) van een enkel stuk
  4. Stukken: SHA1 hash van ELK stuk van deze torrent
  5. Privé: markering voor beperkte toegang

Om dit wat meer te laten zien heb ik een willekeurig torrent-bestand genomen en de “BEncode Editor” van Ultima gebruikt om het voor mij duidelijker te maken.

Zoals je kunt zien, markeert het rode vak het informatiegedeelte van het torrent-bestand.
Het torrent-bestand bevat niet de hash van de items, maar de hashes van elk stuk.

  • Voor item1 met: 1069496548
  • en item2 met: 223
  • Het is samen: 1069496771
  • Met een stukgrootte van: 524288
  • Er zijn 2040 stuks. (1069496771/524288=2039.9032 ongeveer)
  • De sectie stukken bevat 40800 bytes aan gegevens, wat neerkomt op 81600 + 2 tekens in het bestand.
  • de +2 omdat 0x aangeeft dat dit hexadecimaal is.
  • Een SHA1-hash heeft 40 0x-tekens of 20 Byte aan gegevens, wat 2040 SHA1-hashes zijn.

Het spijt me dat deze informatie over een torrent gaat die naar een illegale film leidt, maar ik wilde een torrent gebruiken die echt bestaat.


Antwoord 2, autoriteit 5%

Ik wilde nog een voorbeeld toevoegen, iets concreter.

We beginnen met een van de kleinste .torrentbestanden die ik heb:

64 34 3A 69 6E 66 6F 64 35 3A 66 69 6C 65 73 6C 64 36 3A 6C 65 6E 67 74 
68 69 36 31 35 65 34 3A 70 61 74 68 6C 32 36 3A 66 72 65 65 20 61 75 64 
69 6F 62 6F 6F 6B 20 76 65 72 73 69 6F 6E 2E 74 78 74 65 65 64 36 3A 6C 
65 6E 67 74 68 69 33 39 33 34 31 37 65 34 3A 70 61 74 68 6C 36 31 3A 57 
61 72 63 72 61 66 74 5F 20 4F 66 66 69 63 69 61 6C 20 4D 6F 76 69 65 20 
4E 6F 76 65 6C 69 7A 61 74 69 6F 6E 20 62 79 20 43 68 72 69 73 74 69 65 
20 47 6F 6C 64 65 6E 2E 65 70 75 62 65 65 65 34 3A 6E 61 6D 65 36 31 3A 
57 61 72 63 72 61 66 74 5F 20 4F 66 66 69 63 69 61 6C 20 4D 6F 76 69 65 
20 4E 6F 76 65 6C 69 7A 61 74 69 6F 6E 20 62 79 20 43 68 72 69 73 74 69 
65 20 47 6F 6C 64 65 6E 20 45 50 55 42 31 32 3A 70 69 65 63 65 20 6C 65 
6E 67 74 68 69 31 30 34 38 35 37 36 65 36 3A 70 69 65 63 65 73 32 30 3A 
43 92 4C 22 BB 42 9E EA BD FF 66 C6 79 4C 29 E4 F9 D0 F3 B9 65 65

Als we de BEncodering decoderen:

64                                             ; DICTIONARY (d)
|  34 3A 69 6E 66 6F                           ;  - 4:info
|  64                                          ;  - DICTIONARY (d)
|  |  35 3A 66 69 6C 65 73                     ;     - 5:files
|  |  6C                                       ;     - LIST (l)
|  |  |  64                                    ;        - DICTIONARY (d)
|  |  |  |  36 3A 6C 65 6E 67 74 68            ;           - 6:length
|  |  |  |  69 36 31 35 65                     ;           - i615e
|  |  |  |  34 3A 70 61 74 68                  ;           - 4:path
|  |  |  |  6C                                 ;           - LIST (l)
|  |  |  |  |  32 36 3A 66 72 65 65 20 61 75   ;              - 26:free audiobook verison.txt
|  |  |  |  |  64 69 6F 62 6F 6F 6B 20 76 65   ;                  
|  |  |  |  |  72 73 69 6F 6E 2E 74 78 74      ;                  
|  |  |  |  65                                 ;              - END (e)
|  |  |  65                                    ;           - END (e)
|  |  |  64                                    ;           - DICTIONARY (d)
|  |  |  |  36 3A 6C 65 6E 67 74 68            ;              - 6:length
|  |  |  |  69 33 39 33 34 31 37 65            ;              - i393417e
|  |  |  |  34 3A 70 61 74 68                  ;              - 4:path
|  |  |  |  6C                                 ;              - LIST (l)
|  |  |  |  |  36 31 3A 57 61 72 63 72 61 66   ;                 - 61:Warcraft_ Official Movie Novelization by Christie Golden.epub
|  |  |  |  |  74 5F 20 4F 66 66 69 63 69 61   ;                  
|  |  |  |  |  6C 20 4D 6F 76 69 65 20 4E 6F   ;                  
|  |  |  |  |  76 65 6C 69 7A 61 74 69 6F 6E   ;                  
|  |  |  |  |  20 62 79 20 43 68 72 69 73 74   ;                  
|  |  |  |  |  69 65 20 47 6F 6C 64 65 6E 2E   ;                  
|  |  |  |  |  65 70 75 62                     ;                  
|  |  |  |  65                                 ;              - END (e)
|  |  |  65                                    ;           - END (e)
|  |  65                                       ;        - END (e)
|  |  34 3A 6E 61 6D 65                        ;        - 4:name
|  |  36 31 3A 57 61 72 63 72 61 66            ;        - 61:Warcraft_ Official Movie Novelization by Christie Golden EPUB 
|  |  74 5F 20 4F 66 66 69 63 69 61            ;         
|  |  6C 20 4D 6F 76 69 65 20 4E 6F            ;         
|  |  76 65 6C 69 7A 61 74 69 6F 6E            ;         
|  |  20 62 79 20 43 68 72 69 73 74            ;         
|  |  69 65 20 47 6F 6C 64 65 6E 20            ;         
|  |  45 50 55 42                              ;          
|  |  31 32 3A 70 69 65 63 65 20 6C            ;        - 12:piece length
|  |  65 6E 67 74 68                           ;         
|  |  69 31 30 34 38 35 37 36 65               ;        - i10485765e
|  |  36 3A 70 69 65 63 65 73                  ;        - 6:pieces
|  |  32 30 3A 43 92 4C 22 BB 42 9E            ;        - 20:43 92 4C 22 BB 42 9E EA BD FF 66 C6 79 4C 29 E4 F9 D0 F3 B9 65 65
|  |  EA BD FF 66 C6 79 4C 29 E4 F9            ;
|  |  D0 F3 B9                                 ;
|  65                                          ;     - END (e)
65                                             ;  - END (e)

Of, in pseudo-json:

{
   info: {
      files: [
         { length: 615,    path: ["free audiobook verison.txt"] },
         { length: 393417, path: ["Warcraft_ Official Movie Novelization by Christie Golden.epub"] }
      ],
      name:           "Warcraft_ Official Movie Novelization by Christie Golden EPUB",
      "piece length": 10485765,
      pieces:         43 92 4C 22 BB 42 9E EA BD FF 66 C6 79 4C 29 E4 F9 D0 F3 B9 65 65
   }
}

InfoHash is hash van de info

De InfoHashis de SHA-1-hash van de infowoordenboekinhoud.

We willen de SHA-1-hash van waardevan de woordenboeksleutel infonemen:

64                                          ;  - DICTIONARY (d)
|  35 3A 66 69 6C 65 73                     ;     - 5:files
|  6C                                       ;     - LIST (l)
|  |  64                                    ;        - DICTIONARY (d)
|  |  |  36 3A 6C 65 6E 67 74 68            ;           - 6:length
|  |  |  69 36 31 35 65                     ;           - i615e
|  |  |  34 3A 70 61 74 68                  ;           - 4:path
|  |  |  6C                                 ;           - LIST (l)
|  |  |  |  32 36 3A 66 72 65 65 20 61 75   ;              - 26:free audiobook verison.txt
|  |  |  |  64 69 6F 62 6F 6F 6B 20 76 65   ;                  
|  |  |  |  72 73 69 6F 6E 2E 74 78 74      ;                  
|  |  |  65                                 ;              - END (e)
|  |  65                                    ;           - END (e)
|  |  64                                    ;           - DICTIONARY (d)
|  |  |  36 3A 6C 65 6E 67 74 68            ;              - 6:length
|  |  |  69 33 39 33 34 31 37 65            ;              - i393417e
|  |  |  34 3A 70 61 74 68                  ;              - 4:path
|  |  |  6C                                 ;              - LIST (l)
|  |  |  |  36 31 3A 57 61 72 63 72 61 66   ;                 - 61:Warcraft_ Official Movie Novelization by Christie Golden.epub
|  |  |  |  74 5F 20 4F 66 66 69 63 69 61   ;                  
|  |  |  |  6C 20 4D 6F 76 69 65 20 4E 6F   ;                  
|  |  |  |  76 65 6C 69 7A 61 74 69 6F 6E   ;                  
|  |  |  |  20 62 79 20 43 68 72 69 73 74   ;                  
|  |  |  |  69 65 20 47 6F 6C 64 65 6E 2E   ;                  
|  |  |  |  65 70 75 62                     ;                  
|  |  |  65                                 ;              - END (e)
|  |  65                                    ;           - END (e)
|  65                                       ;        - END (e)
|  34 3A 6E 61 6D 65                        ;        - 4:name
|  36 31 3A 57 61 72 63 72 61 66            ;        - 61:Warcraft_ Official Movie Novelization by Christie Golden EPUB 
|  74 5F 20 4F 66 66 69 63 69 61            ;         
|  6C 20 4D 6F 76 69 65 20 4E 6F            ;         
|  76 65 6C 69 7A 61 74 69 6F 6E            ;         
|  20 62 79 20 43 68 72 69 73 74            ;         
|  69 65 20 47 6F 6C 64 65 6E 20            ;         
|  45 50 55 42                              ;          
|  31 32 3A 70 69 65 63 65 20 6C            ;        - 12:piece length
|  65 6E 67 74 68                           ;         
|  69 31 30 34 38 35 37 36 65               ;        - i10485765e
|  36 3A 70 69 65 63 65 73                  ;        - 6:pieces
|  32 30 3A 43 92 4C 22 BB 42 9E            ;        - 20:43 92 4C 22 BB 42 9E EA BD FF 66 C6 79 4C 29 E4 F9 D0 F3 B9 65 65
|  EA BD FF 66 C6 79 4C 29 E4 F9            ;
|  D0 F3 B9                                 ;
65                                          ;     - END (e)

We voeren al deze bytes samen uit:

64 35 3A 66 69 6C 65 73 6C 64 36 3A 6C 65 6E 67 74 68 69 36 31 35 65 34 
3A 70 61 74 68 6C 32 36 3A 66 72 65 65 20 61 75 64 69 6F 62 6F 6F 6B 20 
76 65 72 73 69 6F 6E 2E 74 78 74 65 65 64 36 3A 6C 65 6E 67 74 68 69 33 
39 33 34 31 37 65 34 3A 70 61 74 68 6C 36 31 3A 57 61 72 63 72 61 66 74 
5F 20 4F 66 66 69 63 69 61 6C 20 4D 6F 76 69 65 20 4E 6F 76 65 6C 69 7A 
61 74 69 6F 6E 20 62 79 20 43 68 72 69 73 74 69 65 20 47 6F 6C 64 65 6E 
2E 65 70 75 62 65 65 65 34 3A 6E 61 6D 65 36 31 3A 57 61 72 63 72 61 66 
74 5F 20 4F 66 66 69 63 69 61 6C 20 4D 6F 76 69 65 20 4E 6F 76 65 6C 69 
7A 61 74 69 6F 6E 20 62 79 20 43 68 72 69 73 74 69 65 20 47 6F 6C 64 65 
6E 20 45 50 55 42 31 32 3A 70 69 65 63 65 20 6C 65 6E 67 74 68 69 31 30 
34 38 35 37 36 65 36 3A 70 69 65 63 65 73 32 30 3A 43 92 4C 22 BB 42 9E 
EA BD FF 66 C6 79 4C 29 E4 F9 D0 F3 B9 65

En neem vervolgens de SHA-1-hash om een 160-bit (20-byte) samenvatting te genereren:

7EDA978ED7628595BB91C48B947F025BAE78CB77

Wat is het juiste antwoord:


Antwoord 3

Hier is hoe u het pertinente segment van een * .torrent-datum kunt trekken voor een bittorrent “info hash”.

Ik heb dit voor een voorbeeld gemaakt.

0000000: 6438 3A61 6E6E 6F75 6E63 6530 3A31 303A  d8:announce0:10:
0000010: 6372 6561 7465 6420 6279 3133 3A6D 6B74  created by13:mkt
0000020: 6F72 7265 6E74 2031 2E30 3133 3A63 7265  orrent 1.013:cre
0000030: 6174 696F 6E20 6461 7465 6931 3537 3037  ation datei15707
0000040: 3530 3238 3565 343A 696E 666F 6436 3A6C  50285e4:infod6:l
0000050: 656E 6774 6869 3230 6534 3A6E 616D 6534  engthi20e4:name4
0000060: 3A70 7269 7631 323A 7069 6563 6520 6C65  :priv12:piece le
0000070: 6E67 7468 6932 3632 3134 3465 363A 7069  ngthi262144e6:pi
0000080: 6563 6573 3230 3AF1 D7EE 4236 3434 D06F  eces20:...B644.o
0000090: 27C4 BBAD 87F0 F089 7A22 2B37 3A70 7269  '.......z"+7:pri
00000a0: 7661 7465 6931 6565 65                   vatei1eee

De inhoud van de “Info” -toets is tussen (inclusief) Offsets 0x4D en 0xA7. Dus …

#!/crit/shell/bsh
bbe  \
    -e '
        d 0x0 0x4C ;
        d 0xA8 * ;
      '  \
    ${example}   \
 |
shasum  -a 1  -b

U moet dit zien:

1799a58b9f8ff2b9b9bcecd0d438c5f37f19a31c *-

Hier is de xxdOUTPUT, IN-LIEU VAN shasum, voor meer opheldering:

0000000: 6436 3A6C 656E 6774 6869 3230 6534 3A6E  d6:lengthi20e4:n
0000010: 616D 6534 3A70 7269 7631 323A 7069 6563  ame4:priv12:piec
0000020: 6520 6C65 6E67 7468 6932 3632 3134 3465  e lengthi262144e
0000030: 363A 7069 6563 6573 3230 3AF1 D7EE 4236  6:pieces20:...B6
0000040: 3434 D06F 27C4 BBAD 87F0 F089 7A22 2B37  44.o'.......z"+7
0000050: 3A70 7269 7661 7465 6931 6565            :privatei1ee

Je kunt verwijzen naar De BitTorrent-protocolspecificatievoor een uitleg, zij het beknopt en nogal grammaticaal onelegante, wat betreft hun nomenclatuur en waarom de laatste 0x65 moet worden uitgesloten.
Kort samengevat: het hele gegeven is ingekapseld in een paar US-ASCII ‘d’ en ‘e’; de inhoud van de “info” -toets, of het veld, is op dezelfde manier ingekapseld. Je wilt alles tussen de eerste 0x64 — ‘d’, — die volgt op de US-ASCII-string 4:info, en de terminal 0x65 — ‘e’, — die is gekoppeld aan de eerder genoemde 0x64.

Other episodes