2012 年,一部名为 ABS-130 的日本影片引起了网络的震动,网络上纷纷出现了 “当初求种像条狗,如今*完嫌人丑”的现象,成为了 2012 年互联网的一件大事件。
2014年,净网行动如火如荼地进行,各大互联网公司都作出了表率,一时之间XX云、X雷都把万恶的种子拒之门外。净网行动万岁!!(还我苍老师!!)
各大网盘、下载应用都从种子当中提取关键信息,将种子拒之门外。这些关键信息究竟藏在哪里?让我们一探究竟。
种子文件结构
以下内容来自维基百科
.torrent种子文件本质上是文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的Bencode规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入种子文件中;所以,种子文件就是被下载文件的“索引”。
上图是一个典型种子的结构,那些被识别出来的邪恶关键字就藏在 name 和 file 当中。name 包含了该种子的名字,如:abcd-123 性感XXXX。而 file 当中的 path 则包含了要下载的所有文件的信息,如:草X社区最新地址.txt等等。
Node.js 和 parse-torrent 库
为了寻找出种子当中的邪恶信息我们请出了 Node.js 和 parse-torrent库 作为助手。
实验准备:
种子一枚安装 Node.js 电脑一台
首先我们利用 npm 安装 parse-torrent 库,它帮助我们快速找到种子内的信息。
npm install parse-torrent
var fs = require("fs"); var parseTorrent = require('parse-torrent'); var info = parseTorrent(fs.readFileSync('my.torrent')); console.log(info);
这个库会将种子的信息解析出来,以对象的形式返回给我们。
查看结果:
name:
files:
可以看到用 parse-torrent 库解析出来的 name 和 files 的信息都是以 Buffer 形式存储。
清洗种子
如何将种子里的邪恶信息清洗掉,把万恶的种子扼杀在摇篮之中,最重要的就算要清除调 name 和 files 里面 path 的信息。
function cleanInfo (info) { // 将种子名用 md5 加密 info.name = md5(info.name); info['name.utf-8'] = md5(info['name.utf-8']); var files = info.files; for (var i = 0; i < files.length; i++) { var file = files[i]; for (var key in file) { if (key == "path" || key == "path.utf-8") { for (var j = 0; j < file[key].length; j++) { var text = file[key][j].toString(); var dotIndex = text.lastIndexOf("."); // 将种子名用 md5 加密 file[key][j] = md5(text.slice(0,dotIndex)) + text.slice(dotIndex,text.length); } } } } return info; }
// 将清洗干净后的 info 对象重新生成一个 torrent 文件 var buf = parseTorrent.toTorrentFile({ info: cleanInfos[i] }); fs.writeFile(dir + "/" + cleanInfos[i].name + ".torrent", buf);
经过这样之后,我们的邪恶种子文件就变成这样了:
实战阶段
首先准备一个种子,进行XX云的离线下载。
一开始它是被拒绝的。
然后运行脚本进行清洗。
node cleanTorrent IPTD-XXX.torrent
下载成功了!
脚本源码放在这里了,要去看一下我的下载内容了!!!
(**都脱了你给我看这个!!!)
最后
本文纯属技术讨论,感谢你的阅读,有不足之处请为我指出。
请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持!
Lua 是所有脚本语言中最快、最简洁的,我们爱她的快、她的简洁,但是我们也不得不忍受因为这些快、简洁最后带来的一些弊端,我们来挨个数数 module 有多少“邪恶”的吧。 由于 lua_code_cache off 情况下,缓存的代码会伴随请求完结而释放。module 的最大好处缓存这时候是无法发挥的,所以本章的内容都是基于 lua_code_cache on 的情况下。 先看看下面代码: loc
7.2 邪恶的代码 现在让我们本着学以致用的目的,用注入搞点好玩的东西。我们将创造一个后门程序, 将它命名为一个系统中正规的程序(比如 calc.exe)。只要用户执行了 calc.exe,我们的后门 就能获得系统的控制权。cacl.exe 执行后,就会在执行后门代码的同时,执行原先的 calc.exe (之前我们的后门命名成 calc.exe,将原来的 cacl.exe 移到别的地方)。当 ca
问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 该语言的创造者写的: Go不提供断言。 它们无疑是很方便的,但是我们的经验是程序员将它们用作拐杖,以避免考虑适当的错误处理和报告。正确的错误处理意味着服务器在
本文向大家介绍php读取torrent种子文件内容的方法(测试可用),包括了php读取torrent种子文件内容的方法(测试可用)的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php读取torrent种子文件内容的方法。分享给大家供大家参考,具体如下: 更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数组(Array)操作技巧大全》、《PHP数学运算技巧总结》、《PHP图形与图
问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 9年前关闭。 在这个问题中,有什么方法可以只接受JTextField中的数值吗?答案之一表明JFormattedTextField存在问题。 我还没有使用过它,但是有人可以
本文向大家介绍bat删除邪恶文件之畸形文件与畸形目录的方法,包括了bat删除邪恶文件之畸形文件与畸形目录的方法的使用技巧和注意事项,需要的朋友参考一下 1、开始/运行,输入sendto,回车。打开sendto文件夹。 对于win7以上版本可能找不到sendto文件夹 打开SendTo文件夹拒绝访问解决方法 "C:\Users\用户名\"路径下的SendTo只是一个快捷方式,真正的位置位于: %AP
问题内容: 数据库触发了一个坏主意吗? 以我的经验,它们是邪恶的,因为它们可能导致令人惊讶的副作用,并且难以调试(尤其是当一个触发器触发另一个触发器时)。通常,开发人员甚至根本不考虑是否存在触发器。 另一方面,如果您有每次在数据库中创建新逻辑时都必须发生的逻辑,那么将其放置在最简单的位置就是FOO表上的插入触发器。 我们唯一一次使用触发器是为了完成一些非常简单的事情,例如设置。 问题答案: 触发器
本文向大家介绍Linux下去掉^M的四种方法,包括了Linux下去掉^M的四种方法的使用技巧和注意事项,需要的朋友参考一下 第一种方法: cat -A filename 就可以看到windows下的断元字符 ^M 要去除他,最简单用下面的命令: dos2unix filename 第二种方法: 第三种方法: 第四种方法: 总结 以上所述是小编给大家介绍的Linux下去掉^M的四种方法,希望对大家