Node.js 去掉种子(torrent)文件里的邪恶信息

 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

?

1
2
3
4
5

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 的信息。

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

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;
}

?

1
2
3
4
5

// 将清洗干净后的 info 对象重新生成一个 torrent 文件
var buf = parseTorrent.toTorrentFile({
info: cleanInfos[i]
});
fs.writeFile(dir + "/" + cleanInfos[i].name + ".torrent", buf);

经过这样之后,我们的邪恶种子文件就变成这样了:

实战阶段

首先准备一个种子,进行XX云的离线下载。

一开始它是被拒绝的。

然后运行脚本进行清洗。

node cleanTorrent IPTD-XXX.torrent

下载成功了!

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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, 信息
, name
, torrent
, Node.js拼接Buffer
, 种子
, info
种子文件
torrent node、nodejs 去掉空格、nodejs 制作bt种子、kittytorrent种子猫、欧美幼 种子torrent,以便于您获取更多的相关知识。

时间: 2024-08-04 12:30:10

Node.js 去掉种子(torrent)文件里的邪恶信息的相关文章

Node.js 去掉种子(torrent)文件里的邪恶信息_node.js

2012 年,一部名为 ABS-130 的日本影片引起了网络的震动,网络上纷纷出现了 "当初求种像条狗,如今*完嫌人丑"的现象,成为了 2012 年互联网的一件大事件. 2014年,净网行动如火如荼地进行,各大互联网公司都作出了表率,一时之间XX云.X雷都把万恶的种子拒之门外.净网行动万岁!!(还我苍老师!!) 各大网盘.下载应用都从种子当中提取关键信息,将种子拒之门外.这些关键信息究竟藏在哪里?让我们一探究竟. 种子文件结构 以下内容来自维基百科 .torrent种子文件本质上是文本

Node.js应用之静态文件分发器

我不久之前翻译过一篇文章: asp.net使用httphandler打包多CSS或JS文件以加快页面加载速度 采用打包并压缩和在浏览器与客户端同时构建缓存的技术,来对页面的加载进行优化.最近在学习Node.js,下面我们来看看Node.js在这方面能做些什么. Node.js的优势是网络通信.I/O不阻塞,可见它是高并发需求的有效解决方案.在Web开发中有许多文件是静态文件,例如CSS文件.JS文件.对它们的请求,通常是页面加载到客户端后,浏览器重新发出的异步请求.通常Web服务器能处理的并发请

node.js实现逐行读取文件内容的代码_node.js

在此之前先介绍一个逐行读取文件内容NPM:https://github.com/nickewing/line-reader,需要的朋友可以看看. 直接上代码: function readLines(input, func) { var remaining = ''; input.on('data', function(data) { remaining += data; var index = remaining.indexOf('\n'); while (index > -1) { var l

node.js开机自启动脚本文件_node.js

复制代码 代码如下: #!/bin/bash ### BEGIN INIT INFO # Provides:       xiyoulib # Required-Start:   $all # Required-Stop:     $all # Default-Start:     2 3 4 5 # Default-Stop:   0 1 6 # Short-Description: Start daemon at boot time # Description:     Enable ser

Node.js中常规的文件操作总结_node.js

前言 Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API. Node 导入文件系统模块(fs)语法如下所示: var fs = require("fs") fs模块是文件操作的封装,它提供了文件的读取.写入.更名.删除.遍历目录.链接等POSIX文件系统操作.与其他模块不同的是,fs模块中所有的操作都提供了异步和同步的两个版本,例如读取文件内容的函数有异步的fs.readFile()和同步的fs.readFileSync() . 一. 目录操作 1. 创建目录 创

node.js实现多图片文件上传实例

先我们来看单文件图片上传 单个的实现我是这样的  代码如下 复制代码 fs.readFile(req.files['file'].path, function(err, data){          fs.writeFile(newPath, data, function(err){                //上传成功           }) }); 如果多文件上传我们只要在此基础上进行修改即可,下面看一个实例. 先看图 这是我当时做多图片的代码,拿出来给大家借鉴一下(有些地方需要亲

node.js入门教程迷你书、node.js入门web应用开发完全示例_基础知识

本书状态 你正在阅读的已经是本书的最终版.因此,只有当进行错误更正以及针对新版本Node.js的改动进行对应的修正时,才会进行更新. 本书中的代码案例都在Node.js 0.6.11版本中测试过,可以正确工作. 读者对象 本书最适合与我有相似技术背景的读者: 至少对一门诸如Ruby.Python.PHP或者Java这样面向对象的语言有一定的经验:对JavaScript处于初学阶段,并且完全是一个Node.js的新手. 这里指的适合对其他编程语言有一定经验的开发者,意思是说,本书不会对诸如数据类型

不错的node.js入门

关于 本书致力于教会你如何用Node.js来开发应用,过程中会传授你所有所需的"高级"JavaScript知识.本书绝不是一本"Hello World"的教程. 状态 你正在阅读的已经是本书的最终版.因此,只有当进行错误更正以及针对新版本Node.js的改动进行对应的修正时,才会进行更新. 本书中的代码案例都在Node.js 0.6.11版本中测试过,可以正确工作. 读者对象 本书最适合与我有相似技术背景的读者: 至少对一门诸如Ruby.Python.PHP或者Ja

运行Node.js的IIS扩展iisnode安装配置笔记

 这篇文章主要介绍了运行Node.js的IIS扩展iisnode安装配置笔记,iisnode的扩展可以把Node.js程序托管到IIS,托管之后也意味着可以使用IIS里面的各种功能,需要的朋友可以参考下     今年年初打算用Node.js基于Express框架重写博客程序,从此告别ASP.NET.然而,我目前用的VPS是Windows Server系统.IIS服务器,如果让Express和IIS都监听80端口,明显会产生冲突.幸好,有一个叫做iisnode的扩展可以把Node.js程序托管到I