IP और पोर्ट नंबर प्रदर्शित करने के लिए tcpdump कैसे बनाएं, लेकिन होस्टनाम और प्रोटोकॉल नहीं


42

मैं कुछ परीक्षणों के लिए tcpdump का उपयोग कर रहा हूं, जिन्हें मैं IP और पोर्ट नंबर देखना चाहता हूं, लेकिन tcpdump का आउटपुट निम्न है

IP pl1snu.koren.kr.http > kitch.pl.sophia.inria.fr.dnp: Flags [P.], seq 54:72, ack 1, win 5792, length 18

यह केवल होस्टनाम और http के लिए प्रोटोकॉल दिखाता है, यह जानना आसान है कि यह 80 है लेकिन डीएनपी के लिए मुझे खोजना होगा

तो क्या यह संभव है कि आईपी और पोर्ट नंबर प्रदर्शित करने के लिए tcpdump कैसे बनाया जाए, लेकिन होस्टनाम और प्रोटोकॉल नहीं तो यदि, कैसे? धन्यवाद

जवाबों:


44

-nअपनी tcpdumpकमांड लाइन में जोड़ें ।

से tcpdump मैनपेज :

-n Don't convert addresses (i.e., host addresses, port numbers, etc.) to names.

यह भी ध्यान दिया जाना चाहिए कि फेडोरा (और शायद अन्य डेरिवेटिव: आरएचईएल, सेंटोस, आदि) पर उन्होंने पोर्ट नंबर को हटाने के लिए एक अलग विकल्प शामिल करने के लिए मूल tcpdump संस्करण को पैच किया है -nn। से मैनपेज :

-n     Don't convert host addresses to names.   This  can  be  used  to
              avoid DNS lookups.

-nn    Don't convert protocol and port numbers etc. to names either.

पोर्ट नंबर अभी भी प्रोटोकॉल नाम का उपयोग करके परिवर्तित किया गया है -n
misteryes

"पोर्ट नंबर अभी भी -n का उपयोग करके प्रोटोकॉल नाम में परिवर्तित किया गया है" उदाहरण के लिए नहीं, tcpdump 4.1.1 जो OS X Mountain Lion के साथ या tcpdump.org के शीर्ष से निर्मित tcpdump के साथ आता है। Tcpdump के किस संस्करण पर आप देख रहे हैं- प्रोटोकॉल नामों में पोर्ट संख्याओं के रूपांतरण को दबाया नहीं जाता है?

5

मैं -nnपैरामीटर का उपयोग करता हूं ।

-nnहोस्टनाम या पोर्ट नाम हल न करें।

इसे इस रूप में चलाएं:

tcpdump -nn 

2

-nकेवल होस्टनाम के लिए काम करता है, लेकिन पोर्ट नंबर के लिए काम नहीं करता है। -nnदोनों के लिए चाल है। यह फेडोरा 20 gnu / linux पर tcpdump संस्करण 4.5.1 चल रहा है। @ATMc का डाउनवोट उत्तर केवल सही है। मैं दुख की बात है कि न तो इसे उखाड़ सकता हूं और न ही कम कर्म के कारण इसके नीचे टिप्पणी लिख सकता हूं।


1

मुझे लगता है कि सबसे अच्छा तरीका है:

sudo tcpdump -ni any

परीक्षण के लिए कदम:

  1. एक कंसोल खोलें और टाइप करें:

    sudo nc -l -p 6666
    
  2. एक और कंसोल खोलें और टाइप करें:

    sudo tcpdump -ni any
    

    यदि आउटपुट बहुत अधिक है तो आप उसे फ़िल्टर कर सकते हैं (| grep -v "patter1n|pattern2" )

  3. तीसरा कंसोल खोलें और टाइप करें:

    telnet localhost 6666
    

अपेक्षित उत्पादन:

10:37:13.770997 IP 127.0.0.1.56920 > 127.0.0.1.443: Flags [S], seq 2822288041, win 43690, options [mss 65495,sackOK,TS val 1028779 ecr 0,nop,wscale 7], length 0

यदि आप उपयोग करते हैं sudo tcpdump -i anyतो आपको कुछ इस तरह दिखाई देगा:

10:38:22.106022 IP localhost.56924 > localhost.https: Flags [S], seq 3147104744, win 43690, options [mss 65495,sackOK,TS val 1045863 ecr 0,nop,wscale 7], length 0

1
यह अन्य उत्तर के समान है - -i anyयदि आप पते / पोर्ट-टू-नाम रूपांतरण को दबाना चाहते हैं, तो यह आवश्यक नहीं है, यह केवल -nयही मायने रखता है।

-2
tcpdump -i eth0 -p -nn | grep "IP" | awk '{print$3 ,$4 ,$5}' | sed 's/://'

1
मुझे यह नहीं मिलता है
पियरे.वीयरेंस

1
प्रश्न का कहना है जबकि "प्रदर्शन आईपी और पोर्ट संख्या नहीं बल्कि होस्ट नाम और प्रोटोकॉल", मुझे शक है कि इसका मतलब है "प्रदर्शन आईपी और पोर्ट संख्या नहीं बल्कि किसी भी अन्य जानकारी के"। (मैं गलत हो सकता है, लेकिन किसी और ने भी इस सवाल की व्याख्या नहीं की है कि आपने क्या किया है।) इसलिए आपका जवाब दो भागों में उबलने लगता है: (1) -nn"http" और "dnp" जैसी सेवाओं को पोर्ट के रूप में प्रदर्शित करने के लिए उपयोग  एक नाम के बजाय संख्या (जिसे तीन पिछले उत्तर में प्रस्तुत किया गया है), और (2) awkपैकेट सामग्री पर डेटा फेंकने के लिए उपयोग  (जो शायद वांछित नहीं है)।
स्कॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.