>웹 프론트엔드 >JS 튜토리얼 >Node.js는 토렌트 파일에서 사악한 정보를 제거합니다_node.js

Node.js는 토렌트 파일에서 사악한 정보를 제거합니다_node.js

WBOY
WBOY원래의
2016-05-16 16:07:252433검색

2012년 ABS-130이라는 일본 영화가 인터넷에 충격을 안겨줬는데, '처음엔 개 같았는데 지금은 못생겼다'는 현상이 인터넷에 등장해 인터넷 트렌드가 됐다. 2012년. 큰 사건이다.

2014년 네트워크 정리 작업이 본격화되면서 모든 주요 인터넷 기업이 한동안 모범을 보였고, XX Cloud와 X Lei는 모든 악의 씨앗을 막아냈습니다. 망 정리 작전 만세! ! (돌려주세요 창선생님!!)

주요 네트워크 디스크 및 다운로드 애플리케이션은 시드에서 주요 정보를 추출하여 제외합니다. 이 중요한 정보는 정확히 어디에 숨겨져 있습니까? 알아봅시다.

토렌트 파일 구조

다음 내용은 위키피디아에서 발췌한 내용입니다

.torrent 시드 파일은 기본적으로 트래커 정보와 파일 정보가 포함된 텍스트 파일입니다. 트래커 정보는 주로 BT 다운로드에 필요한 트래커 서버의 주소와 트래커 서버에 대한 설정입니다. 파일 정보는 대상 파일의 계산을 기반으로 생성되며 계산 결과는 Bencode 규칙에 따라 인코딩됩니다. BitTorrent 프로토콜. 주요 원칙은 다운로드용으로 제공되는 파일을 동일한 크기의 블록으로 가상으로 나누는 것입니다. 블록 크기는 2k의 정수 거듭제곱이어야 하며(가상 차단으로 인해 개별 블록 파일이 하드 디스크에 생성되지 않음) 각 블록은 인덱스 정보와 해시 확인 코드는 시드 파일에 기록되므로 시드 파일은 다운로드된 파일의 "인덱스"입니다.

위 사진은 일반적인 시드의 구조입니다. 식별된 악성 키워드는 이름과 파일에 숨겨져 있습니다. name에는 abcd-123 Sex XXXX와 같은 토렌트 이름이 포함됩니다. 파일의 경로에는 CaoX Community.txt의 최신 주소 등 다운로드할 모든 파일의 정보가 포함되어 있습니다.

Node.js 및 파싱-토렌트 라이브러리

토렌트에 있는 사악한 정보를 찾기 위해 Node.js와 Parse-Torrent 라이브러리에 조수로 요청했습니다.

실험 준비:

한 대의 컴퓨터에 Node.js를 설치하기 위한 하나의 시드

먼저 npm을 사용하여 토렌트에서 정보를 빠르게 찾는 데 도움이 되는 Parse-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);

이 라이브러리는 시드 정보를 파싱하여 객체 형태로 우리에게 반환합니다.

결과 보기:

이름:

파일:

parse-torrent 라이브러리에서 파싱한 이름과 파일 정보가 Buffer 형태로 저장되어 있는 것을 확인할 수 있습니다.

씨앗 청소

씨앗에 있는 사악한 정보를 정화하고 요람에 있는 사악한 씨앗을 목졸라 죽이는 방법 가장 중요한 것은 이름과 파일에 있는 경로의 정보를 지우는 것입니다.

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 Cloud의 오프라인 다운로드를 위한 시드를 준비하세요.

처음에는 거절당했어요.

그런 다음 스크립트를 실행하여 정리합니다.

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

다운로드가 성공했습니다!

스크립트 소스 코드는 여기 있습니다. 이제 다운로드 콘텐츠를 살펴보세요! ! !

(옷벗고 이거 보여주세요!!!)

드디어

이 글은 순전히 기술적인 논의입니다. 읽어주셔서 감사합니다.

잠시 시간을 내어 기사를 친구들과 공유하거나 댓글을 남겨주세요. 여러분의 지원에 진심으로 감사드립니다!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.