awk를 통해 특정 필드와 ascii 데이터 (소스 IP, 대상 IP 및 페이로드)를 tcpdump에 의해 캡처 된 패킷 스트림의 각 패킷에서 추출하도록 파이프 라인을 설정하려고합니다. ,하지만 난 어려움을 겪고 있습니다. 문제는 페이로드가 임의적이며 awk를 통해 레코드에 필터를 적용 할 수있는 고정 된 구조를 찾는 것이 어렵다는 것입니다.awk로 tcpdump 데이터 추출하기
12:45:23.890302 IP 10.0.1.3.52695 > weblnb.fogcreek.com.http: tcp 739
[email protected]@...
T.........P-.....&.....
2U......GET /default.asp?pg=pgRss&ixDiscussGroup=5 HTTP/1.1
Host: discuss.joelonsoftware.com
User-Agent: Vienna/2.6.0.2601
Accept: */*
Accept-Encoding: gzip
Accept-Language: en-us
Cookie: __utma=261409944.1875583.1351297139.1362842383.1362868129.78; __utmz=261409944.1358134504.43.4.utmcsr=joelonsoftware.com|utmccn=(referral)|utmcmd=referral|utmcct=/; fb_SessionId=qc48cvnjvacl3jeo76l8qv69emn119; DBID=LTOJIXRXTFAPXDGFBKCAYLVCILYFCA; fbToken=lqdf3avvfodabtfvd5c4drt18107B8; sUniqueID=20121026230417-66.117.217.10-slb5btkgb5; __utma=131697940.47826445.1351869116.1360335377.1361680499.5; __utmz=131697940.1361680499.5.2.utmccn=(referral)|utmcsr=statcounter.com|utmcct=/p8568424/exit_link_activity/|utmcmd=referral
Connection: keep-alive
이 필터에서 원하는 출력이
10.0.1.3.52695 weblnb.fogcreek.com.http: { [email protected]@...
T.........P-.....&.....
2U......GET /default.asp?pg=pgRss&ixDiscussGroup=5 HTTP/1.1
Host: discuss.joelonsoftware.com
User-Agent: Vienna/2.6.0.2601
Accept: */*
Accept-Encoding: gzip
Accept-Language: en-us
Cookie: __utma=261409944.1875583.1351297139.1362842383.1362868129.78; __utmz=261409944.1358134504.43.4.utmcsr=joelonsoftware.com|utmccn=(referral)|utmcmd=referral|utmcct=/; fb_SessionId=qc48cvnjvacl3jeo76l8qv69emn119; DBID=LTOJIXRXTFAPXDGFBKCAYLVCILYFCA; fbToken=lqdf3avvfodabtfvd5c4drt18107B8; sUniqueID=20121026230417-66.117.217.10-slb5btkgb5; __utma=131697940.47826445.1351869116.1360335377.1361680499.5; __utmz=131697940.1361680499.5.2.utmccn=(referral)|utmcsr=statcounter.com|utmcct=/p8568424/exit_link_activity/|utmcmd=referral
Connection: keep-alive}
주 : 여기
sudo tcpdump -i en1 -A -q -l | awk ' { print "fields are $3 $5 $8} '
I 필터링하기 위해 노력하고있어 출력의 한 줄입니다 : 여기 내 현재의 명령입니다 : 여기서 추상화의 수준은 위의 단일 특정 예에 국한되지 않습니다. 필터링 된 출력의 일반적인 구조는 다음과 같아야합니다
$sourceip $targetip {$raw_packet_data/payload,_could_be_http_stream_or_just_plain_gibberish}
페이로드 필드의 끝 경계는 다음 패킷, 참조의 시작해야한다 $ sourceip.
그리고 awk 필터는 tcpdump 출력 스트림의 모든 행을 단일 행이 아닌이 방식으로 캡처해야합니다.
구현 방법에 대한 제안 사항이 있으십니까?
예상되는 결과를 추가 할 수 있습니까? 결과를 어떻게 보이게 할 것인지 명확하지 않습니다. –