मुझे उम्मीद है कि इस मुद्दे पर कुछ प्रकाश डाला जाएगा। से मैनपेज :
जब tcpdump पैकेट कैप्चरिंग समाप्त करता है, तो यह निम्न की रिपोर्ट करेगा:
कैप्चर किए गए पैकेट (यह उन पैकेटों की संख्या है जो tcpdump को प्राप्त और संसाधित किए गए हैं);
फ़िल्टर द्वारा प्राप्त पैकेट (इसका अर्थ उस OS पर निर्भर करता है जिस पर आप tcpdump चला रहे हैं, और संभवतया जिस तरह से OS कॉन्फ़िगर किया गया था - यदि कोई फ़िल्टर कमांड लाइन पर निर्दिष्ट किया गया था, तो कुछ OS पर यह परवाह किए बिना पैकेट की गणना करता है कि नहीं उन्हें फ़िल्टर अभिव्यक्ति द्वारा मिलान किया गया था, और भले ही उन्हें फ़िल्टर अभिव्यक्ति द्वारा मिलान किया गया था, भले ही tcpdump ने उन्हें पढ़ा और संसाधित किया हो, भले ही अन्य OSes पर यह केवल उन पैकेटों को गिना जाए जो फ़िल्टर अभिव्यक्ति द्वारा मिलान किए गए थे चाहे tcpdump ने पढ़ा हो। और उन्हें अभी तक संसाधित किया है, और अन्य OSes पर यह केवल उन पैकेटों की गणना करता है जो फ़िल्टर अभिव्यक्ति द्वारा मेल खाते थे और tcpdump द्वारा संसाधित किए गए थे);
कर्नेल द्वारा गिराए गए पैकेट (यह उन पैकेटों की संख्या है जो ओएस में पैकेट कैप्चर मैकेनिज्म द्वारा बफर स्पेस की कमी के कारण, जिस पर tcpdump चल रहा है, यदि OS अनुप्रयोगों की जानकारी देता है; यदि नहीं, तो यह; रिपोर्ट की जाएगी 0)।
और वहाँ 2009 से एक मेलिंग सूची प्रविष्टि है :
"फ़िल्टर द्वारा प्राप्त पैकेट" नंबर ps_recv
एक कॉल से एक नंबर है pcap_stats()
; BPF के साथ , यह bs_recv
संख्या है BIOCGSTATS ioctl
। उस गिनती में वे सभी पैकेट शामिल हैं जो BPF को सौंपे गए थे; वे पैकेट अभी भी एक बफर में हो सकते हैं जो अभी तक libpcap द्वारा नहीं पढ़े गए हैं (और इस तरह tcpdump को नहीं दिए गए हैं), या एक ऐसे बफर में हो सकते हैं जो libpcap द्वारा पढ़ा गया है, लेकिन अभी तक tcpdump को नहीं सौंपा गया है, इसलिए यह पैकेटों की गिनती कर सकता है "कैप्चर" के रूप में रिपोर्ट नहीं किया गया।
हो सकता है कि प्रक्रिया बहुत जल्दी मार दी जाए? पैकेट कैप्चर -c N
होने पर बाहर निकलने के लिए tcpdump को बताने वाला एक ध्वज भी है N
।
चूँकि आप जारी किए गए अंक काफी विशिष्ट प्रतीत होते हैं, आप सीधे या सैकड़ों भाषा बाँधों में से एक के माध्यम से भी उपयोगlibpcap
कर सकते हैं ।
आपके प्रश्न के लिए, चूंकि आपके पास सभी फ़ाइल में कैप्चर किए गए पैकेज हैं capture.cap
, आप केवल उन रनों को देख सकते हैं जहां यह खाली नहीं है और इन की जांच करें, अर्थात, उह, लाइनों की गणना करें?
tcpdump -r capture.cap | wc -l
संभवतः कैप्चर फ़ाइल में प्रविष्टियों की संख्या वापस करने के लिए libpcap का उपयोग करने का एक बेहतर तरीका है ...