万恶的种子

torrent文件,又被称为种子,原来只是用于记录 bt下载当中所需信息的一种文件。但是随着互联网的极大发展,一些人士将一些邪恶的信息注入到了小小的 torrent文件当中,种子从此变成了邪恶的代名词。

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

下载成功了!

脚本源码放在这里了,要去看一下我的下载内容了!!!

(**都脱了你给我看这个!!!)

最后

本文纯属技术讨论,感谢你的阅读,有不足之处请为我指出。

本文同步于我的个人博客 http://blog.acwong.org/2015/03/25/clean-your-torrent-with-node/

Node.js 清洗万恶的种子相关推荐

  1. Github 4 万 Star!最全面的 Node.js 资源汇总推荐

    点击"程序员成长指北",选择"星标????" 让一部分开发者看到未来 作者@前哨君|地址@https://github.com/jobbole/awesome- ...

  2. [读书笔记]从物联到万联——Node.js与树莓派万维物联网构建实战

    前言 本文是"从物联到万联,Node.js与树莓派万维物联网构建实战"一书的读书笔记,该书翻译自"Building the Web of Things with exam ...

  3. node.js创建WebSocket服务,并使用原生js ES6完成对WebSocket数据交互

    注意,前情提示: 本代码基于<Node.js(nodejs)对本地JSON文件进行增.删.改.查操作(轻车熟路)> 传送门Node.js(nodejs)对本地JSON文件进行增.删.改.查 ...

  4. Node.js 究竟是什么?

    2019独角兽企业重金招聘Python工程师标准>>> 简介 如果您听说过 Node,或者阅读过一些文章,宣称 Node 是多么多么的棒,那么您可能会想:"Node 究竟是 ...

  5. [转]为什么我要用 Node.js? 案例逐一介绍

    原文地址:http://blog.jobbole.com/53736/ 介绍 JavaScript 高涨的人气带来了很多变化,以至于如今使用其进行网络开发的形式也变得截然不同了.就如同在浏览器中一样, ...

  6. Node.js的核心与红利

    唯有明晰历史,才能了然当下,预知未来.作者从历史角度解读Node.js,帮助读者透过猜忌和谣言,看清真实的Node.js,了解Node.js的核心与红利. 令人惴惴不安的Node.js 我们越来越频繁 ...

  7. 如何更好的利用Node.js的性能极限

    通过使用非阻塞.事件驱动的I/O操作,Node.js为构建和运行大规模网络应用及服务提供了很好的平台,也受到了广泛的欢迎.其主要特性表现为能够处理庞大的并且高吞吐量的并发连接,从而构建高性能.高扩展性 ...

  8. node.js入门系列(一)--Node.js简介

    什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器. 每一种解析器都是一 ...

  9. Node.js的3m安装法

    原文地址:https://cnodejs.org/topic/57f628098489e7ca69f4e839 安装Node.js Node.js是支持多个平台,Mac.Linux以及Windows, ...

  10. node.js学习总结

    NodeJS介绍 1.概述: Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎 进行了封装,它主要用于创建快速的.可扩展的网 ...

最新文章

  1. fastReport 随记
  2. eclipse安装插件的三种方法
  3. PAT甲级1005 Spell It Right :[C++题解]字符串处理
  4. 第三章关系数据库标准语言SQL
  5. 0227网页提取技术
  6. 获取Access数据库字段的所有属性(转)
  7. 奎享添加自己字体_奎享雕刻软件写字操作简要说明
  8. 2021-09-23
  9. ssim算法计算图片_OpenCV 实现图像结构相似度算法 (SSIM 算法)
  10. 计算机网络纠错码,纠错码
  11. 方程求全微分结果和法向量、切向量的关系
  12. 分析DuxCms之AdminUserModel
  13. 【TL学习笔记】1:领域自适应(Domain Adaptation)方法综述
  14. win10兼容VC++6.0(绿色完整版)安装方法
  15. 苹果产品信息查询_苹果维修召回计划 + iPhone辨别真伪
  16. Linux之find 命令
  17. 要访问1KB的内存为啥需要10位地址线,而不是13位?
  18. python linspace
  19. 开源免费天气预报接口API以及全国所有地区代码
  20. Sun培训开放日归来

热门文章

  1. 计算机绘图 精品课程,机械制图与计算机绘图精品课程建设与成效.doc
  2. Matlab之聚类分析
  3. JAVA程序入门(✨详解✨)
  4. 假设某台台式计算机的内存储器容量为128,假设某台计算机的内存储器容量为128MB,硬盘容量为10GB,硬盘的容量是内存容量的多少倍?...
  5. 腾讯支持html5吗,WebQQ全面升级支持IE9 充分运用HTML5优势
  6. echarts同时带有颜色和光圈的中国地图
  7. 《深入浅出WPF》-刘铁猛学习笔记——XAML
  8. Asp.net core 中实现AOP面向切面编程
  9. DynamipsGUI使用方法
  10. 扫描工具扫描法查看网内IP使用情况