Maison  >  Article  >  interface Web  >  Node.js supprime les informations malveillantes du torrent files_node.js

Node.js supprime les informations malveillantes du torrent files_node.js

WBOY
WBOYoriginal
2016-05-16 16:07:252383parcourir

En 2012, un film japonais intitulé ABS-130 a provoqué un choc sur Internet. Le phénomène « Au début, je ressemblais à un chien, mais maintenant je pense que je suis moche » est apparu sur Internet, ce qui est devenu la tendance Internet. en 2012. un grand événement.

En 2014, l'opération de nettoyage du réseau battait son plein, et toutes les grandes sociétés Internet ont donné l'exemple. Pendant un certain temps, XX Cloud et X Lei ont gardé à l'écart les germes de tout mal. Vive l’Opération Net Cleanup ! ! (Rendez-le-moi, Maître Cang !!)

Les principaux disques réseau et applications de téléchargement extraient les informations clés des graines et les excluent. Où exactement ces informations critiques sont-elles cachées ? Découvrons-le.

Structure des fichiers torrent

Le contenu suivant provient de Wikipédia

Le fichier de départ .torrent est essentiellement un fichier texte, contenant des informations sur le Tracker et des informations sur le fichier. Les informations du Tracker sont principalement l'adresse du serveur Tracker et les paramètres du serveur Tracker qui sont nécessaires aux téléchargements BT. Les informations sur le fichier sont générées sur la base du calcul du fichier cible, et les résultats du calcul sont codés selon les règles Bencode dans. le protocole BitTorrent. Son principe principal est de diviser virtuellement les fichiers proposés au téléchargement en blocs de taille égale. La taille du bloc doit être une puissance entière de 2k (en raison du blocage virtuel, les fichiers de bloc individuels ne sont pas générés sur le disque dur), et chaque bloc est. Les informations d'index et le code de vérification de hachage sont écrits dans le fichier de départ ; par conséquent, le fichier de départ est « l'index » du fichier téléchargé ;

L'image ci-dessus est la structure d'une graine typique. Les mots-clés maléfiques identifiés sont cachés dans le nom et le fichier. name contient le nom du torrent, tel que : abcd-123 Sexy XXXX. Le chemin dans le fichier contient les informations de tous les fichiers à télécharger, tels que : Dernière adresse de la communauté CaoX.txt et ainsi de suite.

Node.js et bibliothèque d'analyse-torrent

Afin de trouver les informations perverses dans le torrent, nous avons demandé aux bibliothèques Node.js et parse-torrent de nous aider.

Préparation de l'expérience :

Une graine pour installer Node.js sur un ordinateur

Nous utilisons d'abord npm pour installer la bibliothèque parse-torrent, qui nous aide à trouver rapidement les informations dans le torrent.

<code>npm install parse-torrent</code>
var fs = require("fs");
var parseTorrent = require('parse-torrent');

var info = parseTorrent(fs.readFileSync('my.torrent'));
console.log(info);

Cette bibliothèque analysera les informations sur les graines et nous les renverra sous la forme d'un objet.

Afficher les résultats :

nom :

fichiers :

Vous pouvez voir que les informations sur le nom et les fichiers analysées par la bibliothèque parse-torrent sont stockées sous forme de tampon.

Nettoyage des graines

Comment nettoyer les informations maléfiques dans les graines et étrangler les graines maléfiques dans le berceau La chose la plus importante est d'effacer les informations du chemin dans le nom et les fichiers.

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

Après cela, notre fichier torrent maléfique ressemblera à ceci :

Étape pratique

Préparez d’abord une graine pour le téléchargement hors ligne de XX Cloud.

Au début, il a été rejeté.

Ensuite, exécutez le script pour nettoyer.

<code>node cleanTorrent IPTD-XXX.torrent</code>

Téléchargement réussi !

Le code source du script est ici, vous devez maintenant jeter un œil à mon contenu téléchargé ! ! !

(Enlevez vos vêtements et montrez-moi ça !!!)

Enfin

Cet article est purement une discussion technique. Merci d'avoir lu. Veuillez signaler toute lacune.

Veuillez prendre un moment pour partager l'article avec vos amis ou laisser un commentaire. Nous vous remercierons sincèrement pour votre soutien !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn