특정 프로토콜(이 경우 포트 80의 HTTP 프로토콜)이 어떻게 작동하는지 확인하려면 두 개의 터미널 창을 엽니다.
nc -l 80
nc google.com 80
그런 다음 "중간"으로 사용하려는 프로그램(이 경우 FireFox)을 실행하고 http://localhost:80
.
왼쪽 터미널에서 메시지를 보내면 데이터를 복사해서 오른쪽 터미널에 붙여넣습니다. 오른쪽 단말기가 메시지를 보낼 때, 왼쪽 단말기도 똑같이 합니다.
이 프로세스는 수동적이고 지루할 뿐만 아니라 두 가지 단점도 있습니다.
- 속도가 충분히 빠르지 않으면 연결 시간이 초과될 수 있습니다.
- 복사 및 붙여넣기는 바이너리 데이터에서는 제대로 작동하지 않습니다.
이 프로세스를 자동화할 수 있나요? 한 포트에서 자동으로 데이터를 다른 포트나 다른 컴퓨터로 전달하여 주고받는 데이터를 검사하고 디버깅할 수 있습니까?
답변1
사용소캇, 이는 netcat의 향상된 버전입니다.
왼쪽: 1951년 모델 스위스 군용 칼,사진: Evelianfs. 오른쪽: "거인" 벵거,사진 제공: Slati Bartfas.
socat TCP-LISTEN:8080 TCP:google.com:80
(1024보다 낮은 포트를 수신하려면 루트 권한이 필요하므로 더 높은 포트를 선택하세요.)
그러나 트래픽을 관찰하고 싶고 루트 액세스 권한이 있으면 삭제하고 실행하십시오.와이어샤크. 시작하고 필터를 로 설정하고 tcp.port == 80
기본 네트워크 인터페이스에서 수신을 시작한 다음 탐색을 시작합니다.
Google은 귀하를 HTTPS로 리디렉션합니다. HTTPS 트래픽을 살펴보면 암호화된 TLS 연결만 볼 수 있는데, 이는 TLS 핸드셰이크를 관찰하지 않는 한 큰 의미가 없습니다. 브라우저에 가짜 인증 기관을 제공하면 HTTPS 세션을 가로챌 수 있지만 설정이 어렵습니다. HTTP 프로토콜을 관찰하려면 암호화되지 않은 버전, 즉 SSL을 사용하지 않는 사이트를 고수하세요.
답변2
**localhost에 있다면 스니핑할 수 있습니다. ngrep, tcdpump 또는 Wireshark를 확인하세요.
ngrep -q "." "port 80"
또는 루프에서 socat를 사용할 수 있습니다.