ฉันจะจับแพ็คเก็ต N วินาทีสุดท้ายโดยใช้ tcpdump ได้อย่างไร
ฉันจะจับแพ็คเก็ต N วินาทีสุดท้ายโดยใช้ tcpdump ได้อย่างไร
คำตอบ:
หากคุณต้องการให้ tcpdump รันเป็นเวลา n วินาทีแล้วออกจากคุณสามารถใช้การหมดเวลาได้
ตัวอย่างเช่น:
timeout 2 tcpdump -eni mon0
มิฉะนั้นฉันไม่เชื่อว่า tcpdump มีตัวเลือกในการทำเช่นนี้
ฉันคิดว่าวิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้คือการใช้แฟล็ก -G ของ tcpdump ซึ่งเมื่อใช้กับ -w จะบันทึกดัมพ์ของคุณไปยังไฟล์ใหม่ทุก ๆ N วินาที ตัวอย่างเช่น
tcpdump -w outfile-% s -G 10
สิ่งนี้จะสร้างไฟล์ใหม่ด้วยชื่อ 'outfile-XXXX' (โดยที่ XXXX แสดงถึงจำนวนวินาทีนับตั้งแต่ยุค) ทุก ๆ 10 วินาที
ดู man pages สำหรับ tcpdump (8) และ strftime (3) สำหรับรายละเอียดเพิ่มเติม
คุณสามารถใช้ tethereal แทน tcpdump คุณสามารถใช้ตัวเลือกบรรทัดคำสั่งนี้:
-a duration:X
tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcap
จะได้รับปริมาณการรับส่งข้อมูลจากอินเตอร์เฟส eth0 สิบนาทีในไฟล์ $ (ชื่อโฮสต์) .10mins.pcap
tcpdump options -w new.tcpdump
ps -ef |grep tcpdump
จดบันทึก PID บอกว่าเป็น 11193
at 11:00
kill 11193
ตอนนี้รอจนถึง 11:00 น. และการจับกุมของคุณจะถูกฆ่า แต่รอด
ฉันพยายามแก้ไขปัญหาเดียวกันดังนั้นฉันจึงเขียนสคริปต์แบบพกพาเพื่อเรียกใช้ tcpdump เป็นเวลา n วินาที
#tcpdump_for_n_sec.sh
n=$1
shift #remove first arg from $@
tcpdump $@ & x=$!
sleep $n
kill $x
การใช้งาน. /tcpdump_for_n_sec.sh วินาทีใช้สำหรับ tcpdump
./tcpdump_for_n_sec.sh 5 i- any not port 22 -s0 -wfile.pcap
sudo tcpdump -i -w และสิ่งนี้จะเรียกใช้ tcpdump เป็นโหมดสลีป