วิธีการจับแพ็กเก็ต N วินาทีสุดท้ายโดยใช้ tcpdump


14

ฉันจะจับแพ็คเก็ต N วินาทีสุดท้ายโดยใช้ tcpdump ได้อย่างไร


1
"ให้ฉัน" จะไม่พาคุณไปที่นี่ บางทีคุณควรแสดงให้เราเห็นว่าคุณได้ลองอะไรมาบ้างและตรงไหนที่คุณมีปัญหาคุณไม่สามารถแก้ปัญหาได้ด้วยตัวเอง
matthias krull

คำสั่ง bash ที่คุณต้องการคือ: "man tcpdump"
William Pursell

คำตอบ:


15

หากคุณต้องการให้ tcpdump รันเป็นเวลา n วินาทีแล้วออกจากคุณสามารถใช้การหมดเวลาได้

ตัวอย่างเช่น:

timeout 2 tcpdump -eni mon0

มิฉะนั้นฉันไม่เชื่อว่า tcpdump มีตัวเลือกในการทำเช่นนี้


น่าเสียดายที่คำสั่ง timeout ไม่มีอยู่ใน CentOS 5.x มันถูกเพิ่มเข้ามาใน coreutils รุ่นใหม่ แรงจูงใจอีกอย่างสำหรับฉันในการอัพเกรดระบบปฏิบัติการ
Mister_Tom

ผมคิดว่าถ้าคุณไม่ได้หมดเวลาคุณแทนสามารถสร้างสิ่งที่ต้องการหมดเวลากับสคริปต์:
นอนพักกลางวัน

ใช้งานได้ดีสำหรับฉัน ฉันใช้สิ่งนี้เพื่อตรวจสอบปริมาณการใช้งานทั้งหมดสำหรับโปรแกรมที่ไม่ทำงาน ฉันเริ่ม tcpdump ด้วยการหมดเวลาของ N วินาที จากนั้นฉันก็เริ่มโปรแกรม (ซึ่งใช้เวลาไม่เกิน N วินาที)
Trevor Boyd Smith

คำถามขอให้จับภาพN วินาทีสุดท้าย คำตอบของคุณบอกว่าจะจับครั้งแรกวินาที N
Flimzy

3

ฉันคิดว่าวิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้คือการใช้แฟล็ก -G ของ tcpdump ซึ่งเมื่อใช้กับ -w จะบันทึกดัมพ์ของคุณไปยังไฟล์ใหม่ทุก ๆ N วินาที ตัวอย่างเช่น

tcpdump -w outfile-% s -G 10

สิ่งนี้จะสร้างไฟล์ใหม่ด้วยชื่อ 'outfile-XXXX' (โดยที่ XXXX แสดงถึงจำนวนวินาทีนับตั้งแต่ยุค) ทุก ๆ 10 วินาที

ดู man pages สำหรับ tcpdump (8) และ strftime (3) สำหรับรายละเอียดเพิ่มเติม


tcpdump 3.9.4 ตามที่จัดส่งกับ CentOS 5.10 ไม่มีตัวเลือก -G ฉันต้องการอัพเกรดระบบปฏิบัติการของฉันจริงๆ
Mister_Tom

-G ไม่หยุดคำสั่ง tcpdump มันยังคงวิ่งตลอดไป การหมดเวลา 2 tcpdump จะหยุดคำสั่งหลังจาก 2 วินาที
ciceron

@ciceron: คำถามไม่ได้เกี่ยวกับการหยุด tcpdump มันเป็นเรื่องของการจับภาพวินาที N สุดท้าย ข้อเสนอแนะของคุณจะจับภาพแรกวินาที N ไม่ใช่สิ่งที่ OP ต้องการโดยเด็ดขาด
Flimzy

1

คุณสามารถใช้ tethereal แทน tcpdump คุณสามารถใช้ตัวเลือกบรรทัดคำสั่งนี้:

-a duration:X

แม้ว่าสิ่งนี้อาจตอบคำถามได้ แต่มันจะเป็นคำตอบที่ดีกว่าถ้าคุณสามารถให้คำอธิบายได้ว่าทำไมถึงเป็นเช่นนั้น
DavidPostill

tcpdump เองไม่อนุญาตให้มีการติดตามแพ็กเก็ตที่ จำกัด เวลา แต่ tshark ทำ (nb ตั้งแต่คำถามนี้ถูกถามและตอบว่า Ethereal กลายเป็น Wireshark) tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcapจะได้รับปริมาณการรับส่งข้อมูลจากอินเตอร์เฟส eth0 สิบนาทีในไฟล์ $ (ชื่อโฮสต์) .10mins.pcap
Andrew Beals

0

tcpdump options -w new.tcpdump

ps -ef |grep tcpdump

จดบันทึก PID บอกว่าเป็น 11193

at 11:00 kill 11193

ตอนนี้รอจนถึง 11:00 น. และการจับกุมของคุณจะถูกฆ่า แต่รอด


fwiw pgrep เป็นทางเลือกที่ดีกว่ามากสำหรับ ps | grep; โดยเฉพาะที่นี่
บุคคลที่ดี

0

ฉันพยายามแก้ไขปัญหาเดียวกันดังนั้นฉันจึงเขียนสคริปต์แบบพกพาเพื่อเรียกใช้ 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

0

sudo tcpdump -i -w และสิ่งนี้จะเรียกใช้ tcpdump เป็นโหมดสลีป

  • w: บันทึกผลลัพธ์ในไฟล์. pcap &: กระบวนการ tcpdump จะทำงานในโหมด sleep หมายเหตุ: ตรวจสอบให้แน่ใจว่าคุณมีพื้นที่ว่างเพียงพอหากคุณต้องการ เพื่อรันชั่วขณะหนึ่ง มันจะไม่ขัดจังหวะถ้าออกจากระบบจนกว่าคุณจะฆ่ากระบวนการ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.