ฉันลองสิ่งนี้:
tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'
ฉันต้องการเพียงส่วน ascii ของมัน ฉันจะลบที่เหลือได้อย่างไร
ฉันลองสิ่งนี้:
tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'
ฉันต้องการเพียงส่วน ascii ของมัน ฉันจะลบที่เหลือได้อย่างไร
คำตอบ:
ตามที่ Josh แนะนำให้ tcpflow สามารถพิมพ์ข้อมูล TCP แพ็กเก็ตไปยังไฟล์หรือ STDOUT คุณสามารถไพพ์ tcpdump ถึง tcpflow แบบนี้:
tcpdump -i lo -l -w - port 23 | tcpflow -C -r -
เพียงดูด้านใดด้านหนึ่งของการสนทนาคุณสามารถใช้ตัวกรองสำหรับ tcpdump dst port 23
เช่น
tcpflow
รูต?
ฉันไม่แน่ใจเกี่ยวกับไวยากรณ์ที่แน่นอนสำหรับtcpdump
... อันที่จริงฉันได้ทำเครื่องหมายคำถามนี้ว่าเป็นรายการโปรดเพราะฉันอยากจะรู้! แต่เป็นทางเลือกอื่นคุณสามารถลองใช้tcpflow
แทน มันใช้งานได้เหมือนกัน แต่มันพิมพ์ ASCII output ได้ดีกว่ามาก tcpdump
มันได้รับการยกเว้นส่วนหัวและแพ็คเก็ตพิมพ์ตามลำดับเป็นกระแสเพื่อให้มันง่ายต่อการอ่านและปฏิบัติตามในช่วงเวลากว่า
ฉันรู้สึกว่าทางออกที่ดีที่สุดคือทิ้งไว้ tcpdump ไม่มีท่อใด ๆ :
tcpflow -c port 6667
และนั่นคือมัน
วิธีที่รวดเร็วและสกปรกในการทำเช่นนี้คือการกรองเอาต์พุตผ่านสตริง:
tcpdump -nli eth0 '(port 6667) and (length > 74)' -s 0 -w - | strings
บางครั้งคุณไม่มีเครื่องมืออื่น ๆ และเพื่อให้สามารถมองเห็นสิ่งที่บรรจุได้อย่างรวดเร็วก็เพียงพอแล้ว มันไม่ดีถ้าคุณต้องการน้ำหนักบรรทุกที่แน่นอนสำหรับการฉีดหรือการวิเคราะห์ที่แน่นอนแน่นอน
หากคุณต้องการเพียงส่วน ASCII คุณสามารถใช้: tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'|sed 's/\.//g'
หรือกับ ngrep:ngrep -d eth0 -lq . '(port 6667) and (length > 74)' |sed -rn '/^ /s/\.//gp'
ฉันมีปัญหาเดียวกันเมื่อสัปดาห์ที่แล้ว - ฉันใช้ wireshark gui แทนและทำ "คัดลอกอ่าน ascii" สำหรับแพ็กเก็ตที่น่าสนใจ
ฉันพยายามประสบความสำเร็จในการปักหมุดปัญหาด้วยคำขอ http ไปยังบริการเว็บและคำตอบ XML