
117
4
장
서브도메인 찾기
또한
dns
.
lookup
을 사용하지 않고
dns
.
resolve
를 사용했다는 점에 유의하자. 둘 다 자바스
크립트 관점에서는 비동기적 (호출 순서에 무관 )이지만
dns
.
lookup
이 의존하는 네이티브 구
현은 작업을 동기적으로 수행하는
libuv
를 사용하기 때문이다.
2
앞의 두 스크립트를 하나의 프로그램으로 합치는 것은 아주 쉽다. 먼저 잠재적 서브도메인 목
록을 생성한 다음 서브도메인을 확인하는 비동기적 브루트 포스 시도를 수행한다.
const dns = require('dns');
/*
* 각 서브도메인의 최대 길이를 받아 서브도메인의
* 목록을 브루트 포싱하는 함수.
*/
const generateSubdomains = function(length) {
/*
* 생성할 서브도메인을 구성하는 문자의 목록.
*
* 많이 사용되지 않는 '-' 문자 등을 포함하도록 바꿔도 된다.
*
* 브라우저에 따라 중국어, 아랍어, 라틴 문자열 등을 지원하는
* 경우도 있다.
*/
const charset = 'abcdefghijklmnopqrstuvwxyz'.split('');
let subdomains = charset;
let subdomain;
let letter;
let temp;
/*
* 시간 복잡도: o(n*m)
* ...