标签: info-hash

torrent文件中的info_Hash究竟是什么?

我最近读了很多关于来自种子和磁链的哈希.

但有一个我不明白的问题.

我有一个文件的哈希和一个torrent的infohash,是文件的infohash =哈希?

如果是,如果torrent描述6要下载的文件怎么办?

如果没有它代表什么.

hash info-hash torrent

27
推荐指数
2
解决办法
3万
查看次数

解析torrent文件 - 哈希信息.(二郎)

我正在尝试提供正确的url编码信息哈希发送到跟踪器以获取对等列表.

为了测试,我尝试在这个URL中解析torrent .

打开文件后,手动剪切信息字典片段和SHA1-hash它的值我得到这个二进制值:

<< 84,124,15,255,155,171,156,168,91,46,204,24,249,116,110,139,202,167,163,54 >>

从后一个二进制值检索的ASCII字符串是788f590f28a799cc1009a9b780b649fd6f0a2e91,它与站点中提到的值相同.

所以我们假设到现在为止一切都是正确的(不是吗?).

在使用下面的url-encoding函数对二进制值进行编码后,得到T%7c%0f%ff%9b%ab%9c%a8%5b.%cc%18​​%f9tn%8b%ca%a7%a36,这不是甚至接近我应发送给跟踪器的正确urlencoded值.(当我将此信息发送给跟踪器时,我收到一条未找到的错误消息,此外,它与我使用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 …
Run Code Online (Sandbox Code Playgroud)

erlang bittorrent info-hash

5
推荐指数
1
解决办法
1638
查看次数

计算torrent文件的info-hash

我正在使用C++来解析torrent文件的信息哈希,与此站点相比,我无法获得"正确"的哈希值:

http://i-tools.org/torrent

我构建了一个非常简单的玩具示例,以确保我有正确的基础知识.

我在sublime中打开了一个.torrent文件并删除了除信息字典之外的所有内容,所以我有一个如下所示的文件:

d6:lengthi729067520e4:name31:ubuntu-12.04.1-desktop-i386.iso12:piece lengthi524288e6:pieces27820:¡´E¶ˆØËš3í   ..............(more unreadable stuff.....)..........
Run Code Online (Sandbox Code Playgroud)

我读了这个文件并用这段代码解析它:

#include <string>
#include <sstream>
#include <iomanip>
#include <fstream>
#include <iostream>

#include <openssl/sha.h>


void printHexRep(const unsigned char * test_sha) {

    std::cout << "CALLED HEX REP...PREPPING TO PRINT!\n";
    std::ostringstream os;
    os.fill('0');
    os << std::hex;
    for (const unsigned char * ptr = test_sha; ptr < test_sha + 20; ptr++) {

        os << std::setw(2) << (unsigned int) *ptr;
    }
    std::cout << os.str() << std::endl << std::endl;
}


int main() {

    using namespace std;

    ifstream …
Run Code Online (Sandbox Code Playgroud)

c++ hash bittorrent sha1 info-hash

4
推荐指数
1
解决办法
6441
查看次数

如何将 Bit Torrent 信息哈希值从 Base 32 转换为 Base 16

我有一个 Base32 信息哈希。例如IXE2K3JMCPUZWTW3YQZZOIB5XD6KZIEQ,我需要将其转换为 base16。

我怎样才能用 PHP 做到这一点?

我的代码如下所示:

$hash32=strtolower($hash32);
echo $hash32; // shows - IXE2K3JMCPUZWTW3YQZZOIB5XD6KZIEQ
$hash32=sha1($hash32);
$hash16=base_convert($hash32, 32, 16);
echo "</br>";
echo $hash16 // shows - 3ee5e7325a282c56fe2011125e0492f6ffbcd467
Run Code Online (Sandbox Code Playgroud)

在我的代码中,基于 16 的信息哈希无效。

有效的信息哈希是45C9A56D2C13E99B4EDBC43397203DB8FCACA090

如何获得有效的信息哈希?

谢谢

php bittorrent info-hash

3
推荐指数
1
解决办法
1483
查看次数

创建 torrent 哈希信息

如何在 torrent 文件上生成 torrent 哈希信息。

我一直在看这个例子:如何使用 Java 计算 torrent 的哈希值,并尝试将其转换为 C++。这是我到目前为止的代码:

void At::ReadTorrent::TorrentParser::create_hash(std::string torrentstub)
{
    std::string info;
    int counter = 0;

    while(info.find("4:info") == -1)
    {
        info.push_back(torrentstub[counter]);
        counter++;
    }

    unsigned char array[torrentstub.size()];
    int test = 0;

    for(int data; (data = torrentstub[counter]) > -1;)
    {
         array[test++] = data;
         counter++;
    }
    std::cout << array << std::endl;

    //SHA-1 some value here to generate the hash.
}
Run Code Online (Sandbox Code Playgroud)

参数torrentstub是以字符串表示的 torrent 文件。据我了解,我必须获得之后的信息4:info。我认为这工作正常,例如:

d6:lengthi2847431620e4:name8:filename12:piece lengthi1143252e6:pieces50264
Run Code Online (Sandbox Code Playgroud)

之后只有我无法读取的信息,我猜这是一些二进制数据?

所以我的问题实际上可以归结为:应该对 后面的所有内容进行哈希处理的信息4:info,以及我应该在哪里停止收集哈希数据?

c++ bittorrent info-hash

2
推荐指数
1
解决办法
2110
查看次数

标签 统计

info-hash ×5

bittorrent ×4

c++ ×2

hash ×2

erlang ×1

php ×1

sha1 ×1

torrent ×1