问题标签 [bencoding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
encoding - 如何对非ASCII字符串和非整数进行编码?
根据编码规范:
Bencoded 字符串编码如下:
<string length encoded in base ten ASCII>:<string data>
, 或key:value
请注意,没有恒定的开始分隔符,也没有结束分隔符。示例:4:spam 表示字符串“spam”
示例:0:表示空字符串“”整数编码如下:i
<integer encoded in base ten ASCII>
e 初始i和尾随e是开始和结束分隔符。您可以有负数,例如i -3 e。只能使用有效数字,不能用零填充整数。例如i 04 e。但是,i 0 e是有效的。示例:i 3 e表示整数“3”
我的问题:
问题 1:我应该如何使用非 ascii 字符对字符串进行编码?例如:mûrier
或者die höhe Zeit
我应该将这样的字符串转换为字节序列,使用UTF-8
编码还是另一种?它如何应用于规范?
问题 2:如何对非整数数字进行编码,例如1.0002910
or -0.0049172
?
python - 使用 Debian 在 Python 中进行 Bencode?
我正在尝试将 bencode 放在我的 debian 上以解码一些 bittorrent 数据,但我不知道如何从这样的链接中做到这一点,例如: https ://pypi.python.org/pypi/bencode/ 1.0
我下载了与我的版本相对应的包,即 py2.7,但后来我不知道如何处理这个 zip,除了解压缩它。
我的目标是在我的脚本中调用 bencode ,from bencode import *
并像大多数网站一样使用“解码”来展示如何做。不幸的是,它与 bencode 安装不一样,因为互联网上没有教程。
谢谢你的时间。
python - 如何干净地导入bencode?
我正在尝试使用 bencode 库中的 bdecode ,也就是说:
位于 init 中:
但是使用我的代码 de,由于错误,我无法得到任何结果。确实导入找不到 bdecode 但我不明白为什么。这是简单的代码和错误输出:
有关 bencode 安装的信息,我刚刚做了“pip install bencode”
python - 如何解码经过编码的 torrent 数据
我正在尝试从 torrent 文件中提取大小和名称,并使用 bencode 解码 torrent 文件的内容。
我做了pip install bencode
然后我用一个种子文件的一行进行了测试,你可以在那里看到。
这是 pip install 放在 python 库中的文件:
事实是我真的不明白如何用这个 bencode 解码我的线路。
我已经尝试过 defbdecode
但这是输出:
所以我尝试使用 defdecode_string
但decode_string(blabla, 1)
它只解码第一个单词:
并且像 2、3、4 这样的数字不起作用并显示如下错误:
我想解码所有行,但我不明白如何使用这个 bencode 来做到这一点。
java - java中的编码字符串长度
我对编码有点困惑。
根据规范,当我对字符串进行编码时,我需要使用以下格式:
长度:字符串
字符串垃圾邮件变成4:spam
我的问题:4是编码字符串的符号数量,还是 utf-8 字节的数量?
例如,如果我要对字符串gâteau进行编码
应该指定什么数字作为该字符串的长度?
我想我必须指定7,最终形式应该是7:gâteau
这是因为符号â按照utf-8编码占用了2个字节,而这个字符串中的所有其余符号按照utf-8编码占用了1个字节。
另外我听说不建议将编码数据存储在 java String 实例中。
换句话说,当我对数据块进行编码时,我应该将其存储为字节数组,并且不应将其转换为 java String 值以避免编码问题。
我的假设正确吗?
c# - 解码 (BEncode) 种子文件
您好,我正在使用 C# 在 VS15 中制作控制台应用程序。
如何解码 torrent 文件?要获取 torrent 文件的名称、大小和日期?我想从服务器下载一个 torrent 文件,然后对其进行解码以查看名称、大小和日期。到目前为止,我可以使用 WebCLient 下载文件,但我已经搜索并搜索如何解码 torrent 文件,但没有运气。
我已经尝试过这个库并做到了:
但我不太明白字典给了我什么?我想在控制台中输出种子信息。
bittorrent - KRPC query message dict mysterious prefix
My torrent client DHT implementation frequently receives KRPC dict messages with 4 extra bytes before the message dictionary. Here is an example:
Following that, is a bencoded dict, d
, the contents, and then e
, per the specification.
It appears the dictionary following the 4 bytes seems to always contain a y
of q
, so they're presumably queries.
windows - 从 torcache 下载种子时,cURL 使编码无效
标题说明了一切。我意识到在https://askubuntu.com/questions/307566/wget-and-curl-somehow-modifying-bencode-file-when-downloading/310507#310507上提出了类似的问题,但我不认为相同的解决方案有效,因为我尝试使用 7zip 和 Gzip for windows ( http://gnuwin32.sourceforge.net/packages/gzip.htm ) 解压缩文件。两者都声称该文件格式错误。将其扩展名重命名为 .gz 或 .zip 也无济于事。--compressed 属性也无济于事。所以,我的猜测是在 torcache 网站上发生了一些变化。我也尝试过使用用户代理,但无济于事。
在一个相关问题中,我想,当我尝试从 https 站点下载时,我收到“curl: (52) Empty reply from server”。只有 http 有效,这给了我无效的编码。当我在浏览器上输入 URL 时,torrent 文件会自行下载。
我输入的命令如下:
curl -O http://torcache.net/torrent/006DDC8C407ACCDAF810BCFF41E77299A373296A.torrent
c# - BEncode.net urllist 为空
我想从仅使用网络种子的无跟踪器洪流中获取 url-list 的值。
我写了这个
但这不起作用,因为 urllist 为空。如何获取 url-list ?
node.js - BitTorrent 协议有问题
我正在尝试为学校项目制作一个简单的 BitTorrent 跟踪器。它现在完全被破解了,但我找不到哪里出错了。我想知道我是否对服务器响应应该是什么有误解。我正在使用 node.js 和 express。
服务器接收带有 ?info_hash 数据的 /GET 请求没有问题。而且我能够将该信息保存到 JSON 文件中。服务器还能够使用编码响应客户端。响应是一个字典,它有一个间隔和一个对等列表。列表里面有几个字典,每个字典都包含一个对等点的 ip 和端口。
目前,虽然没有一个对等方将相互连接。我将把我的笔记本电脑放在与我的桌面不同的网络上,它会将桌面视为潜在的对等点、正确的 ip 和端口(据我所知),但过了一会儿它就会从对等点列表中删除。我在每个客户端上都使用 deluge 和 qBitTorrent。
这是应用程序的代码:
我能够连接到托管在 Amazon AWS 上的跟踪器,并且 qBitTorrent 将其报告为“工作”。我还可以看到 GET 请求发出,服务器响应通过 wireshark 进入。该请求具有以下经过编码的字符串,我认为这是必要的:
根据 www.bittorrent.org 的说法,响应中所需的只是一个间隔和一个映射到对等点列表的对等点列表。每个对等点都需要 id、ip 和端口。
我已将端口切换到客户端在请求中报告的端口,并确保我的 torrent 客户端已转发它的端口并且它现在似乎正在工作。虽然我仍然会继续努力。目前,当他们停止播种/吸血时,我没有办法删除同行。