他们没有做到了。相反,它们有一个精品下载实用程序,它通过模拟POSTED HTML表单来指定请求的字节范围。该实用程序可以完成您期望普通下载管理器完成的所有工作,例如一次下载多个连接并恢复部分完成的下载,但是由于一些棘手的设计问题(例如打开一个完整的进程,而不是一个线程) ,对于每个40MB的数据块)在快速(> 100 Mbps)连接上效率很低。它也是Windows独有的。
我正在尝试在Node.js中编写一个开源替代品,以消除一些麻烦,但是我遇到了一个障碍:实用程序发送其POST请求的过程称为“ bzsanity”,它是帐户电子邮件地址上的16位校验和。不幸的是,我不知道算法是什么。也许我只是傻瓜,但我希望你们能帮助我。
以下是一些校验和值:
test@test.com :028a
Test@test.com:4152
test2@test.com:3d0f
测试:494c
aa:acf2
ab:aaad
ac :8e4d
ad:0436
“”“(空字符串):a93e
a:ce7f
b:1a1e
c:1540
d:6c57
如果您想要更多的测试向量,我可能可以提供。我尝试将字节添加到累加器和CRC-16的一些变体中,但这些方法不起作用。
#1 楼
出于示例目的,我将使用"test@test.com"
。例如,"test@test.com"
的ASCII字节为74 65 73 74 40 74 65 73 74 2E 63 6F 6D
。从那些十六进制字节中减去小写字符串。使用正在运行的示例,这将产生
"7465737440746573742e636f6d"
。计算该字符串的SHA-1哈希。例如,
SHA1("7465737440746573742e636f6d") = 90 A2 78 5A 31 39 E2 2A 3D F7 56 90 0A F3 79 87 A9 35 03 16
。从那些十六进制字节中减去小写字符串。使用正在运行的示例,这将产生
"90a2785a3139e22a3df756900af37987a9350316"
。连接该字符串中的第2、4、6和8个字符以产生
bzsanity
值。使用正在运行的示例,这将是'0'+'2'+'8'+'a' = "028a"
。为了好玩,这是Python中的一行代码段,用于计算
bzsanity
值:import hashlib
"".join(map(lambda i: hashlib.sha1("".join(map(hex, map(ord, "test@test.com"))).replace("0x", "")).hexdigest()[i], [1, 3, 5, 7]))
评论
我很震惊,他可能不是人。
– Ta Thanh Dinh
16 Mar 9 '16 at 22:47
@MrNerdHair:我对客户端软件进行了反向工程。
–詹森·格夫纳(Jason Geffner)
16 Mar 9 '16 at 22:50
IDA Pro + OllyDbg。由于他们使用的是编译器,因此如果不进行动态分析,几乎不可能弄清楚这一点,所以请不要太用力了;)
–詹森·格夫纳(Jason Geffner)
16-3-9在22:55
@JasonGeffner的工作很棒,尽管IMO最好不要将此站点变成“对我不利”,而是提供有关如何解决反向困难的建议。
–维塔利·奥西波夫(Vitaly Osipov)
16年3月11日在20:25
@VitalyOsipov:我希望向人们表明,对于所有这些“通过查看示例输入和输出来确定校验和”的问题,几乎总是需要对代码本身进行反向工程。希望我指出人们今后的答案(和具体评论);)
–詹森·格夫纳(Jason Geffner)
16 Mar 11 '16 at 20:27
#2 楼
作为Backblaze的CTO和创始人,我编写了Backblaze客户端的原始源代码,上面的Jason Geffner是正确的。即:对电子邮件地址进行十六进制编码(所有小写,电子邮件地址均不区分大小写)
使用sha1-结果应为40字节的人类可读的所有小写字符串
如果sha1字符的初始字符索引为“零”,则采用索引1、3、5和7的字符。
-BrianW
评论
也许几年来已经太晚了,但是...您是否曾经在node.js中完成替换?我需要放下几个300-500GB的zip文件,即使使用千兆位互联网,下载速度也很慢。 (我使用的是aria2c 1线程,就像您所说的cos,没有HTTP Range标头。。我在Linux上,所以...无法在其中使用DL应用程序。)@Mint我做到了,然后我迅速忘记了三年。感谢您确保我能及时了解,
传说!!!我几乎没有希望能听到一个功能完整的node.js应用程序的反馈!立即尝试一下,它确实可以工作,“(瞬时513.61 Mbps,总491.52 Mbps,预计到达时间:一个小时)”一个小时肯定比我得到的〜10h快。非常感谢您的分享。