쉽고 간단하게 딥웹 실시간 채팅 사이트를 만들어보자

From Hidden Wiki
Jump to navigation Jump to search
필독 사항 유닠스 계열 저작물, 성인물, 도박 웹 써버 보안 프로그래밍 그래핔 파싱
필독 사항 고스트BSD 표면 웹 싸이트 제작 리눅스 마스터 파이썬 트킨터 뷰티펄 숲
수학 아이투피 마약, 아청물, 해킹 웹 싸이트 보안 웹 프로그래밍 데이터 분석 게임 제작
통계학 뮤와이어 다크넽 싸이트 제작 정보 보안 기사 쟁고우 팬더즈 파이게임

개요

쉽고 간단하게 딥웹 실시간 채팅 사이트를 만들어보자.

너는몰라야한다

https://www.ilbe.com/10829756249

2018.11.17 16:00:13


딥웹에 대해서 : https://www.ilbe.com/10829276349

작성하고 묻혔다고 생각하고 잠잤는데


자고 일어났더니 일베가 있어서 놀랐다.



우선 일베에 생각보다 많은 전문가가 있어서 놀랐다.

그 전문가들에 비해 나는 그냥 코더이고 경력도 그 사람들에 비하면 초라하기 짝이없기때문에 그부분은 감안해주고 봐주길 바란다.


처음에는

java나 php로 제작할까 하다 사전 설정이 귀찮아

서버사이드 언어는 제외시켜버렸다


클라이언트 사이드 라이브러리나 프레임워크로 유명한

앵귤러 뷰 리액트 역시 제외했다

뷰나 리액트는 나도 아직 배우는 단계라 제외

앵귤러는 사전 설정이 귀찮아 제외


남은건 간단한 node


따라서 node로 진행하기로 하자


준비물은 node 하나 끝!





구글에서 node를 검색하고 node 공식홈페이지에 접속한다.

사진의 노랑부분을 클릭하면 다운로드가 진행될것이다.

옆에있는 최신버전 다운로드 하여도 상관없슴


다운로드가 완료되면

그냥 실행해서 설치한다.


  • 참고로 node.js는 오픈소스이며 수많은 여러 개발자들이 참여해서 만든 첫 javascript 로 구현된 서버사이드 언어이다



윈도우키를 눌러 cmd 를 입력해주면


검은 창이 하나 뜬다

거기서

node -v

를 입력해보자



현재 나는 다운로드 받아둔 시점에 대한 버전이 나온다

최신버전을 받은 사람은 저 이상의 버전이 뜰것이다



node 설치가 완료되었으니 이제 사이트를 코딩해보자

귀찮은 작업은 미리 다 해두었다.


아직 쪼렙이고 다른 사람한테 부탁 할 수 없어 부트스트랩을 이용하여 간단하게 틀과 이미지를 잡았다.

원래라면 깃주소 남기고 다운받는걸로 끝나는데 ..


  • 텍스트는 코드는 index.jpg , server.jpg 각각 index.html , server.js 로 변경하면 된다


해당 파일을 적절한 곳에 위치시킨다

나같은 경우는 C:\workspace\deepbe


추가로 node에서 socket 모듈을 이용하여 채팅을 구현할 예정이니 해당 폴더에 package.json 파일을 하나 만든다

만든 후

{

 "dependencies": {
   "express": "^4.16.3",
   "socket.io": "^2.1.1",
   "http": "^0.0.0"
 }

}


package.json은 명렁어가 입력되었을때 적혀있는 내용대로 필요한 모듈을 다운로드 받을수 있도록 도와주는 파일이다


노랑 부분이 명령어다

cd는 체인지 디렉토리 경로를 바꾸는 명령어

자기 폴더 찾아 들어가서 package.json 있는 곳에서 npm install 입력하면 알아서 다운로드 받을 것임

뭐 package.json에 설명이 없고 뭐 없고 하는데

필요없는거 다 제거한거니 딱히 신경쓰지 않아도 된다.


다운받은 node 를 이용하여 node server.js 를 입력하여 서버를 실행시키자


이후 index.html 을 더블클릭하면

자신의 로컬호스트에서



명령 프롬프트에서 서버가 돌아가고 있는 이상은

채팅이 정상적으로 동작하는걸 볼 수 있다.


아직은 내부에서만 접속가능 외부에서 접속은 불가능하다


이제 외부접속 허용을 위한 작업을 시작해보자



제어판 -> 프로그램 -> window 기능 켜기/끄기


노랑부분은 필수적으로 체크해야 하는 부분

상위 항목을 체크하면 필요한 최소한의 부분은 알아서 다 체크가 된다.

스샷은 내 개인적인 설정이기때문에 게이들것과 다를 수가 있다. 참고하길 바란다.




iis 가 설치가 완료되면 사이트 우측클릭하고 웹사이트추가하여 노란색 정보를 채워준다.

사이트 이름은 자유이며

실제 경로는 폴더의 주소

포트는 80이면 깔끔하지만

혹시 이것 저것 시도한 게이들 있을까봐 충돌이 없을꺼같은 8099포트를 잡았다. 실제로 사용중인 포트가 게이들 입맛에 맞게 넣어도 문제없슴



확인을 누르면 지구모양에 deepweb이 생겼을테고



파일로 접속할 필요없이



127.0.0.1:8099 로 접속하면된다

127.0.0.1 자기 주소이며 localhost로 대체하여도 문제없다.


해당 주소로 들어갔을때 채팅이 문제 없이 동작한다 .





명령프롬프트에서 ipconfig 를 입력했을때



192.168.x.x 가 아닌 다른 주소가 나온 사람은 외부 IP를 사용중인 사람이고

192.168.x.x 가 나온 사람은 내부 IP를 사용중인 사람임


나같은 경우는 외부아이피를 사용중이고

공유기는 와이파이 용으로 별개로 사용중이다.


외부아이피인 사람은 정말 쉽게 마무리 작업이 가능하지만

내부 아이피인 사람은 포트포워딩 작업을 해야한다.


내가 지금 외부 아이피라 스크린샷을 첨부 못해 링크를 남기겠다

http://programmerchoo.tistory.com/2


해당 링크의 3번째 스샷을 추가로 설명하자면


규칙이름은 자유이며

내부 IP에는 ipconfig 명령어를 입력했때 나오는 ip를 입력하면 될것이고

외부포트는 8099로하자 . 80으로 해도 되는데 8099하기로 했으니 통일하자

내부포트 iis 에서 8099 로 설정했으니 8099로 잡고 추가를하자


그럼 포트포워딩 작업이 완료되었다.


** 

포트포워딩을 하는 이유

인터넷 아이피는 한계가 있다.

생각을 해보자

xxx.xxx.xxx.xxx 경우의 수는 한정이다. 무한이 아니다


전세계사람들이 각자 개개인이 외부 ip를 가진다면 한정된 수량만큼 한정된 사람에게 나누어줄것이다

그럼 자원은 마르게 될것이고 인터넷 ip의 값어치는 어마 무시하게 비싸진다.

그걸 방지하고자 외부 아이피 하나에 여러 내부 아이피를 가지도록 하자라는 ㅆㅅㅌㅊ 아이디어와 함께 내부 아이피가 만들어진다


그렇다면

어떤 단체가 있으면 그 단체는 외부아이피 하나와 내부아이피 수십 수백개를 사용중일것이다


다른 사람이 그 단체의 특정인물의 컴퓨터에 엑세스하기 위해서는 어떻게 해야할까 ?

외부아이피로 들어가되 포트를 지정해서 들어가야한다

외부아이피:8099 라는 ip와 포트가 있으면

공유기에서는 외부포트 8099로 들어오는 사람은 내부 ip주소의 내부포트로 들어가라 라고 안내를하게된다

이 작업이 바로 포트포워딩이다.


추가로 명령어필요없이 외부주소가 궁금하면 그냥 네이버에 "내 IP" 를 검색해라

포트포워딩 작업도 끝났다면



내친구나 지인에게

외부아이피:8099

로 접속을 해보라고 하자


그럼 친구나 지인들과 채팅을 할 수 있다.


       var sock = io.connect('http://127.0.0.1:9091');


아참 index.html 의 72번라인 주소를 127.0.0.1을 외부아이피로 변경하고

공유기쓰는사람들은 9091 포트도 포트포워딩 작업을 해주면 된다.



이제 본격적으로 딥웹으로 연결해보자


tor 브라우저를 다운받고 실행해보자


그냥 검색해서 들어가서 다운로드 받으면 된다.



토르브라우저가 실행된 모습 한글 ㅆㅅㅌㅊ





노랑색 보면 알겠지만

자기가 생성한 프로젝트 경로와

밑에는 포트와 주소:포트 그리고 저장

저장후 다시 토르브라우저를 끄고 실행하면



자신의 경로에 해당 파일들이 생성되어있다



hostname을 텍스트프로그램으로 열면 주소가 있는데

해당 주소:포트가 바로 토르브라우저에서의 현재 본인 사이트 주소이다



근데 막상들어가니 채팅을 할 수 없다.


ssl 인증 관련 문제인데 한숨만 나온다.

실제로 나도 공부겸 하는 중이기 때문에 ssl을 사용해본적이 없다.



( 11월은 취업준비와 여행도 갔다오고 바뻐서 글을 작성 못함 .. )


쉽고 간단하게 만들어볼려고 했지만. ssl까지 등판할지 몰랐기에 16일에 집에도착하고 ssl 관련 공부를했다.

ssl 도입한 개발자한테도 물어봤지만 그쪽은 리눅스 서버에서 실행한것이고 웹서버를 nginx 나 apache 등을 이용했기 때문에 우리와 상황이 다르다


따라서 직접 구글링하면서 검색했는데

관련 정보도 찾기 힘들고 오래된 자료가 많아 매우 힘들었다


그리고 처음에는 자체성명으로 해보고 그것도 tor브라우저에서는 안되는걸 알고 자체서명이 아닌 방식으로 진행했슴


자 ssl을 적용시켜보자


ssl에 관련해서는 나도 잘 모른다. 아마 구글링하는게 더 빠를 것이다. 구글링 귀찮은 사람을 위해 내가 아는 선에서 설명하자면

http프로토콜로 통신을 할 경우 패킷에 아이디 비밀번호가 노출된다.

https프로토콜은 이러한 문제점은 보안한 통신으로 패킷내용을 암호화 한다고 한다



우리는 무료 ssl letsencrypt 적용할 것이다 해당 깃허브에 접속하여

https://github.com/PKISharp/win-acme/releases








노랑색 파일을 다운로드 받아준다

받은 압축된 파일을 풀어주면

letsencrypt.exe 파일이 나오는데 해당 파일을 관리자 권한으로 실행하면




스샷에는 없지만 마지막에 no를 입력한다


도메인은 외부 아이피를 입력해봤으나 안되고

한글 도메인을 입력해봤으나 안되고

영문 도메인만 입력받을 수 있는 것 같다. 자신이 소유하고있는 영문 도메인을 입력해준다.



var options = {

   key: fs.readFileSync("/ProgramData/win-acme/httpsacme-v01.api.letsencrypt.org/dlatl.com-key.pem"),
   cert: fs.readFileSync("/ProgramData/win-acme/httpsacme-v01.api.letsencrypt.org/dlatl.com-crt.pem"),
   ca: fs.readFileSync("/ProgramData/win-acme/httpsacme-v01.api.letsencrypt.org/dlatl.com-chain.pem"),
   secure: true,
   reconnect: true,
   rejectUnauthorized : false,
   requestCert: false

};


var https = require('https'); var server = https.createServer( options, app ); 서버코드에 해당 문구를 추가해준다. ** server.jpg 파일에 포함되어 있다


클라이언트 사이드 코드도 수정해주자

var sock = io.connect('https://dlatl.com', {

           secure: true
       });

73번 라인에 주소를 외부아이피가 아닌 도메인으로 입력했고 두번째 아규먼트로 secure: true 오브젝트를 넣었슴

이후 자신의 프로젝트 경로에서 ' node server.js ' 입력하고 엔턴을 누르면

서버가 실행되며



tor 브라우저에서 채팅이 된다.



http://hkbmp6aczlf4omku.onion:8099/




쉽고 간단하게... 만들어보았다

..

그리고 ㅁㅈㅎ달게받겠다 ㅠㅠ


같이 보기