내 응용 프로그램이 일부 서버로 HTTP 요청을 보내고 있으며 실제로 전송하는 데이터를보고 싶습니다. 내가보고 싶은 몇 가지 세부 사항 :
- 요청 방법 (GET / POST / PUT 등)
- 컨텐츠 타입
- 몸
이것을 달성하는 가장 좋고 간단한 방법은 무엇입니까?
내 응용 프로그램이 일부 서버로 HTTP 요청을 보내고 있으며 실제로 전송하는 데이터를보고 싶습니다. 내가보고 싶은 몇 가지 세부 사항 :
이것을 달성하는 가장 좋고 간단한 방법은 무엇입니까?
답변:
글쎄, 모든 tcpdump 팬들에게는 =)
루트로 모든 이러한 명령을 실행하십시오!
터미널에서 루트를 얻습니다.
sudo -i
RAW 패킷을 캡처하려면 ...
sudo tcpdump -i any -w /tmp/http.log &
이것은 모든 원시 패킷, 모든 포트, 모든 인터페이스에서 캡처하여 파일에 씁니다 /tmp/http.log
.
응용 프로그램을 실행하십시오. HTTP (웹 브라우저)를 사용하는 다른 응용 프로그램을 실행하지 않으면 분명히 도움이됩니다.
죽이다 tcpdump
killall tcpdump
로그를 읽으려면 -A
플래그를 사용 하여 출력을 파이프하십시오 less
.
tcpdump -A -r /tmp/http.log | less
-A
패킷에서 "페이로드"또는 ASCII 텍스트 밖으로 플래그 인쇄합니다. 출력을로 보내면 less
페이지를 상하로 이동할 수 있습니다. 종료하려면을 less
입력하십시오 Q.
Google에 갈 때 (원시 패킷으로) 다음을 볼 수 있습니다.
20:42:38.179759 IP ufbt.local.56852 > sea09s02-in-f3.1e100.net.www: Flags [P.], seq 1:587, ack 1, win 913, options [nop,nop,TS val 25523484 ecr 492333202], length 586
E..~.v@.@..q......!#...P.(.gS.c..............u..Xh.GET /generate_204 HTTP/1.1
Host: clients1.google.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) rekonq Safari/534.34
Referer: http://www.google.com/
Accept: */*
Accept-Encoding: gzip, deflate, x-gzip, x-deflate
Accept-Charset: utf-8,*;q=0.5
Accept-Language: en-US, en-US; q=0.8, en; q=0.6
Cookie: PREF=ID=dd958d4544461998:FF=0:TM=1323842648:LM=1360205486:S=Fg_QCDsLMr4ZepIo; NID=67=OQJWjIDHG-B8r4EuM19F3g-nkaMcbvYwoY_CsOjzvYTOAxwqAos5kfzsk6Q14E70gIfJjHat8d8PuQIloB12BE-JuSHgsKHR2QSpgN12qSWoxeqhdcSQgzw5CHKtbR_a
tcpdump
네트워크 인터페이스 지정에서 포트, 소스 및 대상 IP 주소에 이르기까지 데이터 수집을 세분화하는 긴 옵션 세트가 있습니다. 암호를 해독 할 수 없으므로 HTTPS에서는 작동하지 않습니다.
관심있는 것을 알고 나면 여러 가지 옵션을 사용하여 tcpdump
관심있는 데이터 만 기록 할 수 있습니다 . 일반적인 전략은 먼저 모든 패킷을 기록하고 원시 데이터를 검토 한 다음 관심있는 패킷 만 캡처하는 것입니다.
유용한 플래그 (옵션) :
-i Specify an interface
-i eth0
tcp port xx
tcp port 80
dst 1.2.3.4
specify a destination ip address
tcpdump
수집 한 데이터를 분석하고 사용 하는 방법에 대한 학습 곡선이 있습니다 . 추가로 읽으 려면 Daniel Miessler의 tcpdump
Primer with Examples를 강력히 제안 합니다.
0 packets captured 0 packets received by filter 0 packets dropped by kernel
그러나 tcpdump가 모니터링 할 때 Chrome 브라우저에서 많은 사이트를 열었습니다.
tcpdump -i any -w /tmp/http.log &
일했다.
tcpflow
Ubuntu 공식 저장소에서 먼저 설치하십시오 .
sudo apt-get install tcpflow
그런 다음이 명령을 실행하여 표준 포트에서 모든 HTTP 요청을 검사하십시오.
sudo tcpflow -p -c port 80
Wireshark 를 사용해 보는 것이 좋습니다.
Wireshark는 상당히 발전된 기술이므로 약간 익숙해 질 수 있습니다. 몇 년 동안 사용하지는 않았지만 기능이 너무 많지 않은 경우에도 여전히 완벽합니다.
Wireshark에 대한 정보 및 사용 방법 은 Wireshark 홈페이지 에서 찾을 수 있습니다 .