Heim  >  Artikel  >  Web-Frontend  >  Node.js entfernt böse Informationen aus Torrent-Dateien_node.js

Node.js entfernt böse Informationen aus Torrent-Dateien_node.js

WBOY
WBOYOriginal
2016-05-16 16:07:252330Durchsuche

Im Jahr 2012 sorgte ein japanischer Film namens ABS-130 für Aufsehen im Internet. Das Phänomen „Ich sah zuerst aus wie ein Hund, aber jetzt denke ich, ich bin hässlich“ tauchte im Internet auf, was zum Internet-Trend wurde im Jahr 2012. ein großes Ereignis.

Im Jahr 2014 war die Netzwerkbereinigung in vollem Gange und alle großen Internetunternehmen gingen mit gutem Beispiel voran. Eine Zeit lang hielten XX Cloud und X Lei die Saat allen Übels fern. Es lebe Operation Net Cleanup! ! (Gib es mir zurück, Lehrer Cang!!)

Große Netzwerkfestplatten und Download-Anwendungen extrahieren wichtige Informationen aus Seeds und schließen sie aus. Wo genau sind diese wichtigen Informationen versteckt? Finden wir es heraus.

Torrent-Dateistruktur

Der folgende Inhalt stammt von Wikipedia

.torrent-Seed-Datei ist im Wesentlichen eine Textdatei, die Tracker-Informationen und Dateiinformationen enthält. Bei den Tracker-Informationen handelt es sich hauptsächlich um die Adresse des Tracker-Servers und die Einstellungen für den Tracker-Server, die für BT-Downloads erforderlich sind. Die Dateiinformationen werden basierend auf der Berechnung der Zieldatei generiert und die Berechnungsergebnisse werden gemäß den Bencode-Regeln codiert das BitTorrent-Protokoll. Sein Hauptprinzip besteht darin, die zum Download bereitgestellten Dateien virtuell in gleich große Blöcke aufzuteilen. Die Blockgröße muss eine ganzzahlige Potenz von 2 KB sein (aufgrund der virtuellen Blockierung werden keine einzelnen Blockdateien auf der Festplatte generiert), und jeder Block ist es auch Die Indexinformationen und der Hash-Verifizierungscode werden in die Seed-Datei geschrieben; daher ist die Seed-Datei der „Index“ der heruntergeladenen Datei.

Das Bild oben zeigt die Struktur eines typischen Seeds. Die identifizierten bösen Schlüsselwörter sind im Namen und in der Datei versteckt. Name enthält den Namen des Torrents, zum Beispiel: abcd-123 Sexy XXXX. Der Pfad in der Datei enthält die Informationen aller herunterzuladenden Dateien, wie zum Beispiel: Neueste Adresse der CaoX-Community.txt und so weiter.

Node.js und Parse-Torrent-Bibliothek

Um die bösen Informationen im Torrent zu finden, haben wir die Bibliotheken Node.js und Parse-Torrent als Assistenten angefragt.

Experimentvorbereitung:

Ein Seed zum Installieren von Node.js auf einem Computer

Zuerst verwenden wir npm, um die Parse-Torrent-Bibliothek zu installieren, die uns hilft, die Informationen im Torrent schnell zu finden.

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

Diese Bibliothek analysiert die Seed-Informationen und gibt sie in Form eines Objekts an uns zurück.

Ergebnisse anzeigen:

Name:

Dateien:

Sie können sehen, dass der Name und die Dateiinformationen, die von der Parse-Torrent-Bibliothek analysiert werden, in Pufferform gespeichert werden.

Saatgut reinigen

Wie man die bösen Informationen in den Samen reinigt und die bösen Samen in der Wiege erstickt. Das Wichtigste ist, die Informationen des Pfades im Namen und in den Dateien zu löschen.

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

Danach sieht unsere böse Torrent-Datei so aus:

Praxisphase

Bereiten Sie zunächst einen Seed für den Offline-Download von XX Cloud vor.

Zuerst wurde es abgelehnt.

Führen Sie dann das Skript zum Bereinigen aus.

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

Download erfolgreich!

Der Quellcode des Skripts ist da, jetzt müssen Sie sich meinen Download-Inhalt ansehen! ! !

(Zieh dich aus und zeig mir das!!!)

Endlich

Dieser Artikel ist eine rein technische Diskussion. Vielen Dank für das Lesen. Bitte weisen Sie auf etwaige Mängel hin.

Bitte nehmen Sie sich einen Moment Zeit, um den Artikel mit Ihren Freunden zu teilen oder einen Kommentar zu hinterlassen. Für Ihre Unterstützung danken wir Ihnen herzlich!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn