Tcpdump - εντολή Linux - εντολή Unix

ΟΝΟΜΑ

tcpdump - απόρριψη κυκλοφορίας σε ένα δίκτυο

ΣΥΝΟΨΗ

tcpdump [ -deflnNOpqRStuvxX ] [ -c μέτρηση ]

[ -Αριθμός αρχείου ] [ αρχείο F ]

[ -i interface ] [ -m module ] [ -r αρχείο ]

[ -s snaplen ] [ -T τύπος ] [ -U χρήστη ] [ -w αρχείο ]

[ -Λίγο: μυστικό ] [ έκφραση ]

ΠΕΡΙΓΡΑΦΗ

Το Tcpdump εκτυπώνει τις κεφαλίδες των πακέτων σε μια διεπαφή δικτύου που ταιριάζει με την έκφραση boolean. Μπορεί επίσης να εκτελεστεί με τη σημαία -w , η οποία την προκαλεί να αποθηκεύσει τα πακέτα δεδομένων σε ένα αρχείο για μεταγενέστερη ανάλυση ή / και με τη σημαία -r , η οποία την αναγκάζει να διαβάζει από ένα αποθηκευμένο αρχείο πακέτου αντί να διαβάζει πακέτα από μια διασύνδεση δικτύου. Σε όλες τις περιπτώσεις, μόνο τα πακέτα που ταιριάζουν με την έκφραση θα υποστούν επεξεργασία από το tcpdump .

Το Tcpdump , αν δεν τρέξει με τη σημαία -c , συνεχίζει να καταγράφει τα πακέτα έως ότου διακοπεί από ένα σήμα SIGINT (που παράγεται, για παράδειγμα, πληκτρολογώντας τον χαρακτήρα διακοπής σας, τυπικά τον έλεγχο-C) ή ένα σήμα SIGTERM (1) εντολή). αν τρέξει με τη σημαία -c , θα συλλάβει πακέτα έως ότου διακοπεί από ένα σήμα SIGINT ή SIGTERM ή ο επεξεργασμένος αριθμός πακέτων έχει υποστεί επεξεργασία.

Όταν το tcpdump ολοκληρώσει τη λήψη πακέτων, θα αναφέρει μετρήσεις από:

τα πακέτα `` που λαμβάνονται από το φίλτρο '' (η έννοια του εξαρτάται από το λειτουργικό σύστημα στο οποίο εκτελείτε το tcpdump και ενδεχομένως από τον τρόπο ρύθμισης του λειτουργικού συστήματος - εάν έχει οριστεί φίλτρο στη γραμμή εντολών, πακέτα ανεξάρτητα από το αν αντιστοιχούν στην έκφραση του φίλτρου και σε άλλα λειτουργικά συστήματα υπολογίζει μόνο τα πακέτα που αντιστοιχούν στην έκφραση του φίλτρου και υποβλήθηκαν σε επεξεργασία από το tcpdump ).

τα πακέτα `` dropped by kernel '' (αυτός είναι ο αριθμός των πακέτων που αποχώρησαν, λόγω έλλειψης χώρου προσωρινής αποθήκευσης, από τον μηχανισμό δέσμευσης πακέτων στο λειτουργικό σύστημα στο οποίο εκτελείται το tcpdump , εάν το λειτουργικό σύστημα αναφέρει αυτές τις πληροφορίες σε εφαρμογές. αν όχι, θα αναφέρεται ως 0).

Στις πλατφόρμες που υποστηρίζουν το σήμα SIGINFO, όπως οι περισσότερες συσκευές BSD, θα αναφέρουν αυτές τις μετρήσεις όταν λαμβάνουν ένα σήμα SIGINFO (που παράγεται, για παράδειγμα, πληκτρολογώντας τον χαρακτήρα `` status '', συνήθως control-T) και θα συνεχίσει να καταγράφει πακέτα .

Η ανάγνωση πακέτων από μια διασύνδεση δικτύου ενδέχεται να απαιτεί τη λήψη ειδικών προνομίων:

Κάτω από το SunOS 3.x ή 4.x με NIT ή BPF:

Πρέπει να έχετε πρόσβαση ανάγνωσης στο / dev / nit ή / dev / bpf * .

Υπό Solaris με DLPI:

Πρέπει να έχετε πρόσβαση ανάγνωσης / εγγραφής στην ψευδοσυσκευή δικτύου, π.χ. / dev / le . Ωστόσο, τουλάχιστον σε ορισμένες εκδόσεις του Solaris, αυτό δεν αρκεί για να επιτρέψει το tcpdump να συλλάβει σε αόριστη λειτουργία. σε αυτές τις εκδόσεις του Solaris, πρέπει να είστε root, ή tcpdump πρέπει να εγκατασταθεί setuid στη ρίζα, προκειμένου να συλλάβει σε promiscuous mode. Σημειώστε ότι σε πολλές (ίσως όλες) διασυνδέσεις, εάν δεν καταγράφετε σε αδιέξοδη λειτουργία, δεν θα βλέπετε εξερχόμενα πακέτα, οπότε η σύλληψη που δεν πραγματοποιείται σε κατάσταση χωρίς promiscuous μπορεί να μην είναι πολύ χρήσιμη.

Κάτω από το HP-UX με DLPI:

Πρέπει να είστε root ή tcpdump πρέπει να εγκατασταθεί setuid στη ρίζα.

Κάτω από το IRIX με snoop:

Πρέπει να είστε root ή tcpdump πρέπει να εγκατασταθεί setuid στη ρίζα.

Κάτω από το Linux:

Πρέπει να είστε root ή tcpdump πρέπει να εγκατασταθεί setuid στη ρίζα.

Υπό Ultrix και ψηφιακά UNIX / Tru64 UNIX:

Οποιοσδήποτε χρήστης μπορεί να καταγράψει την κυκλοφορία δικτύου με το tcpdump . Εντούτοις, κανένας χρήστης (ούτε καν ο σούπερ χρήστης) μπορεί να συλλάβει σε διεσπαρμένη λειτουργία σε μια διεπαφή, εκτός αν ο υπερ-χρήστης έχει ενεργοποιήσει τη λειτουργία χωρίς ανάδραση σε αυτή τη διεπαφή χρησιμοποιώντας pfconfig (8), και κανένας χρήστης (ούτε καν ο υπερ-χρήστης ) μπορεί να καταγράψει την κίνηση unicast που λαμβάνει ή αποστέλλεται από το μηχάνημα σε μια διασύνδεση, εκτός εάν ο υπερ-χρήστης έχει ενεργοποιήσει τη λειτουργία αντιγραφής σε όλη αυτή τη διεπαφή χρησιμοποιώντας το pfconfig , έτσι ώστε η χρήσιμη δέσμευση πακέτων σε μια διεπαφή πιθανότατα απαιτεί είτε τη λειτουργία promiscuous mode -για λειτουργία σε όλες τις λειτουργίες ή και οι δύο τρόποι λειτουργίας, ενεργοποιούνται στη διεπαφή αυτή.

Υπό BSD:

Πρέπει να έχετε πρόσβαση ανάγνωσης στο / dev / bpf * .

Η ανάγνωση ενός αποθηκευμένου αρχείου πακέτου δεν απαιτεί ειδικά δικαιώματα.

ΕΠΙΛΟΓΕΣ

-ένα

Προσπαθήστε να μετατρέψετε διευθύνσεις δικτύου και εκπομπής σε ονόματα.

-ντο

Έξοδος μετά τη λήψη πακέτων μέτρησης .

-ΝΤΟ

Πριν γράψετε ένα παλιό πακέτο σε ένα αρχείο αποθήκευσης, ελέγξτε αν το αρχείο είναι μεγαλύτερο από το file_size και, αν ναι, κλείστε το τρέχον αρχείο αποθήκευσης και ανοίξτε ένα νέο αρχείο. Το Savefiles μετά το πρώτο αρχείο αποθήκευσης θα έχει το όνομα που καθορίζεται με τη σημαία -w , με έναν αριθμό μετά από αυτό, αρχίζοντας από το 2 και συνεχίζοντας προς τα επάνω. Οι μονάδες file_size είναι εκατομμύρια bytes (1.000.000 bytes, όχι 1.048.576 byte).

-ρε

Καταργήστε τον κώδικα αντιστοίχισης πακέτων σε μορφή αναγνώσιμη από τον άνθρωπο με την τυπική έξοδο και τη διακοπή.

-δδ

Κωδικός αντιστοίχισης πακέτων απορριμμάτων ως θραύσμα προγράμματος C.

-δδδ

Κωδικός αντιστοιχίας πακέτων απορρίψεων ως δεκαδικοί αριθμοί (προηγούμενος με έναν αριθμό).

-μι

Εκτυπώστε την κεφαλίδα στάθμης συνδέσμου σε κάθε γραμμή απόρριψης.

-ΜΙ

Χρησιμοποιήστε το algo: μυστικό για την αποκρυπτογράφηση πακέτων ESP IPsec. Οι αλγόριθμοι μπορούν να είναι des- cbc , 3des-cbc , blowfish- cbc , rc3-cbc , cast128-cbc ή κανένας . Η προεπιλογή είναι des-cbc . Η δυνατότητα αποκρυπτογράφησης πακέτων είναι παρούσα μόνο αν το tcpdump έχει συνταχθεί με ενεργοποιημένη την κρυπτογράφηση. μυστικό το κείμενο ascii για το μυστικό κλειδί ESP. Δεν μπορούμε να πάρουμε αυθαίρετες δυαδικές τιμές αυτή τη στιγμή. Η επιλογή αναλαμβάνει το RFC2406 ESP, όχι το RFC1827 ESP. Η επιλογή είναι μόνο για σκοπούς εντοπισμού σφαλμάτων και αποθαρρύνεται η χρήση αυτής της επιλογής με αληθινά κλειστό κλειδί. Παρουσιάζοντας το μυστικό κλειδί IPsec στη γραμμή εντολών, το καθιστά ορατό σε άλλους, μέσω ps (1) και άλλων περιπτώσεων.

-φά

Εκτυπώστε τις αλλοδαπές διευθύνσεις διαδικτύου αριθμητικά και όχι συμβολικά (αυτή η επιλογή προορίζεται να τραβήξει σοβαρή εγκεφαλική βλάβη στον εξυπηρετητή yp της Sun - συνήθως κρέμεται για πάντα μετάφραση μη τοπικών αριθμών διαδικτύου).

-ΦΑ

Χρησιμοποιήστε το αρχείο ως είσοδο για την έκφραση του φίλτρου. Μια επιπλέον έκφραση που δίνεται στη γραμμή εντολών αγνοείται.

-Εγώ

Ακούστε τη διεπαφή . Εάν δεν προσδιορίζεται, το tcpdump πραγματοποιεί αναζήτηση στη λίστα διεπαφών συστήματος για τη διεπαφή με τα χαμηλότερα αριθμημένα, διαμορφωμένα επάνω (εκτός από το loopback). Οι δεσμοί σπάνε επιλέγοντας το νωρίτερο αγώνα.

Σε συστήματα Linux με πυρήνα 2.2 ή νεότερη, μπορεί να χρησιμοποιηθεί ένα όρισμα διεπαφής `` any '' για τη λήψη πακέτων από όλες τις διεπαφές. Σημειώστε ότι οι λήψεις στη συσκευή `` any '' δεν θα πραγματοποιηθούν σε αδιέξοδη λειτουργία.

-μεγάλο

Κάντε γραμμή buffer stdout. Χρήσιμο αν θέλετε να δείτε τα δεδομένα ενώ τα καταγράφετε. Π.χ,
`` tcpdump -l | tee dat '' ή `` tcpdump -l> data & tail -f dat ''.

-m

Φορτώστε τους ορισμούς της μονάδας SMI MIB από τη μονάδα αρχείου. Αυτή η επιλογή μπορεί να χρησιμοποιηθεί πολλές φορές για να φορτώσει πολλές μονάδες MIB σε tcpdump .

Μην μετατρέπετε τις διευθύνσεις κεντρικού υπολογιστή σε ονόματα. Αυτό μπορεί να χρησιμοποιηθεί για την αποφυγή αναζητήσεων DNS.

-nn

Μην μετατρέπετε τους αριθμούς πρωτοκόλλων και θυρών κλπ. Σε ονόματα.

Μην εκτυπώσετε τα ονόματα τομέων των ονομάτων κεντρικών υπολογιστών. Π.χ., αν δώσετε αυτή τη σημαία τότε το tcpdump θα εκτυπώσει `` nic '' αντί για `` nic.ddn.mil ''.

Μην εκτελείτε τη βελτιστοποίηση κώδικα που ταιριάζει με τα πακέτα. Αυτό είναι χρήσιμο μόνο εάν υποπτεύεστε ένα σφάλμα στο εργαλείο βελτιστοποίησης.

Μην βάζετε τη διεπαφή σε κατάσταση αόριστης διάρκειας. Σημειώστε ότι η διασύνδεση μπορεί να είναι σε κατάσταση ασυμβίβαστη για κάποιο άλλο λόγο. επομένως, το «-p» δεν μπορεί να χρησιμοποιηθεί ως συντομογραφία για τον «ether host» {local-hw-addr} ή την εκπομπή αιθέρα ».

-q

Γρήγορη (ήσυχη?) Έξοδος. Εκτυπώστε λιγότερες πληροφορίες πρωτοκόλλου, ώστε οι γραμμές εξόδου να είναι μικρότερες.

-R

Υποθέστε ότι τα πακέτα ESP / AH θα βασίζονται σε παλαιές προδιαγραφές (RFC1825 έως RFC1829). Εάν έχει οριστεί, το tcpdump δεν θα εκτυπώσει το πεδίο προστασίας από επανάληψη. Δεδομένου ότι δεν υπάρχει πεδίο έκδοσης πρωτοκόλλου στην προδιαγραφή ESP / AH, το tcpdump δεν μπορεί να συναγάγει την έκδοση του πρωτοκόλλου ESP / AH.

-r

Διαβάστε τα πακέτα από το αρχείο (το οποίο δημιουργήθηκε με την επιλογή -w). Η τυπική είσοδος χρησιμοποιείται όταν το αρχείο είναι `` - ''.

-ΜΙΚΡΟ

Εκτυπώστε τους απόλυτους αριθμούς ακολουθίας TCP παρά τους σχετικούς.

-μικρό

Snarf snaplen bytes των δεδομένων από κάθε πακέτο και όχι από την προεπιλογή των 68 (με NIT της SunOS, το ελάχιστο είναι στην πραγματικότητα 96). Το 68 bytes είναι κατάλληλο για IP, ICMP, TCP και UDP, αλλά μπορεί να περικόψει τις πληροφορίες πρωτοκόλλου από το διακομιστή ονομάτων και τα πακέτα NFS (δείτε παρακάτω). Τα πακέτα που κόπηκαν εξαιτίας περιορισμένου στιγμιότυπου εμφανίζονται στην έξοδο με `` [ proto ] '', όπου proto είναι το όνομα του επιπέδου πρωτοκόλλου στο οποίο συνέβη η περικοπή. Λάβετε υπόψη ότι η λήψη μεγαλύτερων στιγμιότυπων αυξάνει τόσο τον χρόνο που απαιτείται για την επεξεργασία των πακέτων και, ουσιαστικά, μειώνει την ποσότητα της προσωρινής αποθήκευσης πακέτων. Αυτό μπορεί να προκαλέσει την απώλεια των πακέτων. Θα πρέπει να περιορίσετε το snaplen στον μικρότερο αριθμό που θα καταγράψει τις πληροφορίες πρωτοκόλλου που σας ενδιαφέρει. Η ρύθμιση snaplen στο 0 σημαίνει ότι χρησιμοποιείτε το απαιτούμενο μήκος για να πιάσετε ολόκληρα πακέτα.

Τα πακέτα δύναμης που επιλέγονται με " έκφραση " για ερμηνεία του καθορισμένου τύπου . Οι γνωστοί τύποι είναι οι cnfp (πρωτόκολλο Cisco NetFlow), rpc (Remote Procedure Call), rtp (Πρωτόκολλο εφαρμογών πραγματικού χρόνου), rtcp (πρωτόκολλο ελέγχου εφαρμογών σε πραγματικό χρόνο), snmp (Simple Network Management Protocol) ), και wb (διανεμημένο λευκό πίνακα).

-t

Μην εκτυπώνετε μια σφραγίδα χρόνου σε κάθε γραμμή απόρριψης.

-tt

Εκτυπώστε μια μη μορφοποιημένη χρονική σήμανση σε κάθε γραμμή απόρριψης.

-U

Καταργεί τα δικαιώματα ρίζας και αλλάζει το αναγνωριστικό χρήστη σε αναγνωριστικό χρήστη και ομάδας στην κύρια ομάδα χρηστών .

Σημείωση! Το Red Hat Linux απομακρύνει αυτόματα τα δικαιώματα στον χρήστη `` pcap '' εάν δεν έχει καθοριστεί τίποτα άλλο.

-ttt

Εκτυπώστε ένα δέλτα (σε μικροδευτερόλεπτα) μεταξύ της τρέχουσας και της προηγούμενης γραμμής σε κάθε γραμμή απόρριψης.

-tttt

Εκτυπώστε μια χρονική σήμανση στην προεπιλεγμένη μορφή που προχώρησε κατά ημερομηνία σε κάθε γραμμή απόρριψης.

-u

Εκτυπώστε μη κωδικοποιημένες λαβές NFS.

-v

(Ελαφρώς περισσότερο) λεπτομερή έξοδο. Για παράδειγμα, τυπώνονται ο χρόνος ζωής, η ταυτότητα, το συνολικό μήκος και οι επιλογές σε ένα πακέτο IP. Επιτρέπει επίσης πρόσθετους ελέγχους ακεραιότητας πακέτων, όπως επαλήθευση του αθροίσματος ελέγχου IP και κεφαλίδας ICMP.

-vv

Ακόμη πιο λεπτομερή παραγωγή. Για παράδειγμα, εκτυπώνονται πρόσθετα πεδία από τα πακέτα απαντήσεων NFS και τα πακέτα SMB αποκωδικοποιούνται πλήρως.

-vvv

Ακόμη πιο λεπτομερή παραγωγή. Για παράδειγμα, οι επιλογές telnet SB ... SE εκτυπώνονται πλήρως. Με τις επιλογές -X telnet εκτυπώνονται και σε hex.

-w

Γράψτε τα ακατέργαστα πακέτα στο αρχείο αντί να τα αναλύσετε και να τα εκτυπώσετε. Μπορούν αργότερα να εκτυπωθούν με την επιλογή -r. Η τυπική έξοδος χρησιμοποιείται όταν το αρχείο είναι `` - ''.

Εκτυπώστε κάθε πακέτο (μείον την κεφαλίδα του επιπέδου σύνδεσης) σε hex. Το μικρότερο από το σύνολο των πακέτων ή των byte snaplen θα εκτυπωθεί. Σημειώστε ότι αυτό είναι ολόκληρο το πακέτο του link-layer, έτσι ώστε για τα στρώματα συνδέσεων που πληκτρολογούν (π.χ. Ethernet), τα byte padding θα εκτυπωθούν επίσης όταν το πακέτο υψηλότερου επιπέδου είναι μικρότερο από το απαιτούμενο padding.

Όταν εκτυπώνετε hex, εκτυπώστε ascii επίσης. Έτσι, εάν -x έχει επίσης οριστεί, το πακέτο εκτυπώνεται σε hex / ascii. Αυτό είναι πολύ βολικό για την ανάλυση νέων πρωτοκόλλων. Ακόμα και αν δεν έχει οριστεί και -x , ορισμένα τμήματα ορισμένων πακέτων μπορεί να εκτυπωθούν σε hex / ascii.

έκφραση

επιλέγει ποια πακέτα θα απορριφθούν. Εάν δεν δίνεται καμία έκφραση , όλα τα πακέτα στο δίχτυ θα απορρίπτονται. Διαφορετικά, μόνο τα πακέτα για τα οποία η έκφραση είναι "true" θα απορρίπτονται.

Η έκφραση αποτελείται από ένα ή περισσότερα πρωτόγονα. Τα πρωτότυπα αποτελούνται συνήθως από μια ταυτότητα (όνομα ή αριθμό) που προηγείται από έναν ή περισσότερους προκριματικούς. Υπάρχουν τρία διαφορετικά είδη προκριματικών:

τύπος

οι προκριθέντες λένε τι είδους αναφέρεται το όνομα ή ο αριθμός ταυτότητας. Οι πιθανοί τύποι είναι host , net και port . Πχ. "Host foo", "net 128.3", "port 20". Αν δεν υπάρχει κανένας προσδιοριστής τύπου, θεωρείται ότι είναι ο οικοδεσπότης .

Διεύθυνση

οι προκριματικοί προσδιορίζουν μια συγκεκριμένη κατεύθυνση μεταφοράς προς και / ή από id . Πιθανές κατευθύνσεις είναι οι src , dst , src ή dst και src και dst . Πχ. "Src foo", `dst net 128.3 ',` src ή dst port ftp-data'. Εάν δεν υπάρχει κανένας προσδιοριστής dir, θεωρείται το src ή το dst . Για τα επίπεδα "null" συνδέσεων (π.χ. πρωτόκολλα από σημείο σε σημείο όπως ολίσθηση), οι προεπιλεγμένοι και εξερχόμενοι προκριματικοί μπορούν να χρησιμοποιηθούν για να καθορίσουν την επιθυμητή κατεύθυνση.

proto

οι προκριματικοί περιορίζουν τον αγώνα σε ένα συγκεκριμένο πρωτόκολλο. Πιθανά protos είναι: ether , fddi , tr , ip , ip6 , arp , rarp , decnet , tcp και udp . Π.χ .: "ether src foo", "arp net 128.3", "port tcp 21". Εάν δεν υπάρχει πρωταρχικός προσδιοριστής, θεωρούνται όλα τα πρωτόκολλα που συμφωνούν με τον τύπο. Π.χ. "src foo" σημαίνει `(ip ή arp ή rarp) src foo '(εκτός από το τελευταίο που δεν είναι νόμιμη σύνταξη),` net bar' σημαίνει `(ip ή arp ή rarp) net bar ' `(tcp ή udp) θύρα 53 '.

["fddi" είναι στην πραγματικότητα ένα ψευδώνυμο για τον "αιθέρα". ο αναλυτής τους αντιμετωπίζει με τον ίδιο τρόπο όπως το επίπεδο συνδέσμου δεδομένων που χρησιμοποιείται στην καθορισμένη διεπαφή δικτύου. Οι επικεφαλίδες FDDI περιέχουν διευθύνσεις πηγής και προορισμού τύπου Ethernet και συχνά περιέχουν τύπους πακέτων τύπου Ethernet, ώστε να μπορείτε να φιλτράρετε αυτά τα πεδία FDDI όπως και με τα ανάλογα πεδία Ethernet. Οι κεφαλίδες FDDI περιέχουν επίσης και άλλα πεδία, αλλά δεν μπορείτε να τα ονομάσετε ρητά σε μια έκφραση φίλτρου.

Ομοίως, το `tr 'είναι ένα ψευδώνυμο για το' ether '. οι δηλώσεις προηγούμενης παραγράφου σχετικά με τις κεφαλίδες FDDI ισχύουν και για τις κεφαλίδες Token Ring.]

Εκτός από τα παραπάνω, υπάρχουν και κάποιες ειδικές "πρωτόγονες" λέξεις-κλειδιά που δεν ακολουθούν το μοτίβο: πύλη , εκπομπή , λιγότερες , μεγαλύτερες και αριθμητικές εκφράσεις. Όλα αυτά περιγράφονται παρακάτω.

Πιο πολύπλοκες εκφράσεις φίλτρων δημιουργούνται χρησιμοποιώντας τις λέξεις και , ή και όχι να συνδυάσετε πρωτόγονα. Π.χ., `host foo και όχι port ftp και όχι port ftp-data '. Για να εξοικονομήσετε πληκτρολόγηση, οι πανομοιότυπες λίστες προσδιοριστών μπορούν να παραλειφθούν. Π.χ., το `tcp dst port ftp ή ftp-data ή domain 'είναι ακριβώς το ίδιο με το` tcp dst port ftp ή tcp dst port ftp-data ή tcp dst port domain'.

Επιτρεπόμενα πρωτόγονα είναι:

dst host host

Είναι αληθές εάν το πεδίο προορισμού IPv4 / v6 του πακέτου είναι κεντρικός υπολογιστής , ο οποίος μπορεί να είναι είτε διεύθυνση είτε όνομα.

src host host

Είναι αληθές εάν το πεδίο πηγής IPv4 / v6 του πακέτου είναι κεντρικό .

host host

Είναι αληθές εάν είτε η πηγή ή ο προορισμός του πακέτου IPv4 / v6 είναι κεντρικός υπολογιστής . Οποιαδήποτε από τις παραπάνω εκφράσεις του κεντρικού υπολογιστή μπορεί να προστεθεί με τις λέξεις-κλειδιά, ip , arp , rarp ή ip6 όπως στο:

ip host υποδοχής

που ισοδυναμεί με:

ether proto \ ip και host host

Εάν ο κεντρικός υπολογιστής είναι ένα όνομα με πολλές διευθύνσεις IP, κάθε διεύθυνση θα ελεγχθεί για αντιστοιχία.

αιθέρα

Αληθινή εάν η διεύθυνση προορισμού του ethernet είναι ehost . Το Ehost μπορεί να είναι είτε ένα όνομα από το / etc / ethers ή ένας αριθμός (δείτε τους αιθέρες (3N) για αριθμητική μορφή).

ether src ehost

Αληθινή εάν η διεύθυνση πηγής Ethernet είναι ehost .

αιθέρας υποδοχής αιθέρα

Αληθές εάν η πηγή ή η διεύθυνση προορισμού ethernet είναι ehost .

gateway host

Είναι αληθές αν το πακέτο χρησιμοποιείται ως υποδοχή ως host . Δηλαδή, η πηγή ή η διεύθυνση προορισμού του ethernet ήταν κεντρικός υπολογιστής, αλλά ούτε η πηγή IP ούτε ο προορισμός IP φιλοξενούσαν . Ο κεντρικός υπολογιστής πρέπει να είναι ένα όνομα και πρέπει να βρεθεί τόσο από τους μηχανισμούς επίλυσης διευθύνσεων κεντρικού υπολογιστή-κεντρικού υπολογιστή (διεύθυνση hostname, DNS, NIS κ.λπ.) όσο και από την ανάλυση διεύθυνσης host-name-to-Ethernet (/ etc / ethers, κ.λπ.). (Μια ισοδύναμη έκφραση είναι

αιθέρα ξενιστή ehost και όχι ξενιστή ξενιστή

που μπορεί να χρησιμοποιηθεί με ονόματα ή αριθμούς για το host / ehost .) Αυτή η σύνταξη δεν λειτουργεί σε διαμόρφωση με δυνατότητα IPv6 αυτή τη στιγμή.

dst καθαρό καθαρό

Είναι αληθές εάν η διεύθυνση προορισμού IPv4 / v6 του πακέτου έχει έναν αριθμό δικτύου δικτύου . Το δίκτυο μπορεί να είναι είτε ένα όνομα από το / etc / δίκτυα είτε ένας αριθμός δικτύου ( για λεπτομέρειες δείτε τα δίκτυα (4) ).

src καθαρό καθαρό

Είναι αληθές εάν η διεύθυνση προέλευσης IPv4 / v6 του πακέτου έχει έναν αριθμό δικτύου δικτύου .

καθαρό καθαρό

Είναι αληθές εάν είτε η πηγή IPv4 / v6 είτε η διεύθυνση προορισμού του πακέτου έχει έναν αριθμό δικτύου δικτύου .

Καθαρή μάσκα δικτύου μάσκα

Είναι αλήθεια αν η διεύθυνση IP ταιριάζει καθαρά με τη συγκεκριμένη μάσκα δικτύου . Μπορεί να έχει πιστοποίηση με src ή dst . Σημειώστε ότι αυτή η σύνταξη δεν ισχύει για το δίκτυο IPv6.

καθαρό καθαρό / απλό

Είναι αληθινό αν η διεύθυνση IPv4 / v6 ταιριάζει καθαρά με ένα ευρύ μπιτ δικτύου μάσκας. Μπορεί να έχει πιστοποίηση με src ή dst .

θύρα port dst

Αληθές αν το πακέτο είναι ip / tcp, ip / udp, ip6 / tcp ή ip6 / udp και έχει μια τιμή θύρας προορισμού της θύρας . Η θύρα μπορεί να είναι ένας αριθμός ή ένα όνομα που χρησιμοποιείται στο / etc / services (δείτε tcp (4P) και udp (4P)). Εάν χρησιμοποιείται κάποιο όνομα, ελέγχεται τόσο ο αριθμός θύρας όσο και το πρωτόκολλο. Αν χρησιμοποιείται αριθμός ή διφορούμενο όνομα, ελέγχεται μόνο ο αριθμός θύρας (π.χ. η θύρα dst 513 θα εκτυπώσει τόσο την κυκλοφορία tcp / login όσο και την κυκλοφορία udp / who και ο τομέας θύρας θα εκτυπώσουν την κυκλοφορία tcp / domain και udp / domain).

src θύρα θύρας

Είναι αληθές εάν το πακέτο έχει τιμή θύρας πηγής θύρας .

θύρα θύρας

Είναι αληθές εάν η θύρα προέλευσης ή προορισμού του πακέτου είναι θύρα . Οποιαδήποτε από τις παραπάνω εκφράσεις θυρών μπορεί να προστεθεί με τις λέξεις-κλειδιά, tcp ή udp , όπως στο:

tcp θύρα θύρας src

το οποίο αντιστοιχεί μόνο σε πακέτα tcp των οποίων η θύρα προέλευσης είναι θύρα .

λιγότερο μήκος

Είναι αληθές αν το πακέτο έχει μήκος μικρότερο ή ίσο με το μήκος . Αυτό ισοδυναμεί με:

μήκος <= μήκος .

μεγαλύτερο μήκος

Είναι αληθές αν το πακέτο έχει μήκος μεγαλύτερο ή ίσο με το μήκος . Αυτό ισοδυναμεί με:

len> = μήκος .

πρωτόκολλο πρωτοκόλλου ip

Είναι αληθές εάν το πακέτο είναι πακέτο IP (βλ. Ip (4P)) πρωτοκόλλου τύπου πρωτοκόλλου . Το πρωτόκολλο μπορεί να είναι ένας αριθμός ή ένα από τα ονόματα icmp , icmp6 , igmp , igrp , pim , ah , esp , vrrp , udp ή tcp . Σημειώστε ότι οι αναγνωριστικοί κώδικες tcp , udp και icmp είναι επίσης λέξεις-κλειδιά και πρέπει να διαφεύγετε μέσω backslash (\), το οποίο είναι \\ στο κέλυφος C. Σημειώστε ότι αυτό το πρωτόγονο δεν κυνηγάει την αλυσίδα κεφαλίδας πρωτοκόλλου.

πρωτόκολλο πρωτοκόλλου ip6

Είναι αληθές εάν το πακέτο είναι πακέτο πρωτοκόλλου τύπου πρωτοκόλλου IPv6. Σημειώστε ότι αυτό το πρωτόγονο δεν κυνηγάει την αλυσίδα κεφαλίδας πρωτοκόλλου.

πρωτόκολλο ip6 πρωτοκόλλου

Είναι αληθές εάν το πακέτο είναι πακέτο IPv6 και περιέχει κεφαλίδα πρωτοκόλλου με πρωτόκολλο τύπου στην αλυσίδα κεφαλίδων πρωτοκόλλου. Για παράδειγμα,

πρωτόκολλο ip6 6

αντιστοιχεί σε οποιοδήποτε πακέτο IPv6 με κεφαλίδα πρωτοκόλλου TCP στην αλυσίδα κεφαλίδων πρωτοκόλλου. Το πακέτο μπορεί να περιέχει, για παράδειγμα, κεφαλίδα ελέγχου ταυτότητας, κεφαλίδα δρομολόγησης ή κεφαλίδα επιλογής hop-by-hop, μεταξύ κεφαλίδας IPv6 και κεφαλίδας TCP. Ο κώδικας BPF που εκπέμπεται από αυτό το πρωτόγονο είναι πολύπλοκο και δεν μπορεί να βελτιστοποιηθεί με τον κώδικα βελτιστοποίησης BPF στο tcpdump , οπότε αυτό μπορεί να είναι κάπως αργό.

πρωτόκολλο πρωτοκόλλου ip

Ισοδύναμο με πρωτόκολλο ip6 , αλλά αυτό ισχύει για το IPv4.

εκπομπή αιθέρα

Είναι αληθές εάν το πακέτο είναι ένα πακέτο εκπομπής Ethernet. Η λέξη-κλειδί αιθέρα είναι προαιρετική.

ip μετάδοση

Είναι αλήθεια εάν το πακέτο είναι ένα πακέτο εκπομπής IP. Ελέγχει και τις δύο συμβάσεις εκπομπής όλων των μηδενικών και όλων των ειδών και αναζητά την τοπική μάσκα υποδικτύου.

αιθάλης πολλαπλής εκπομπής

Είναι αληθές εάν το πακέτο είναι ένα πακέτο multicast ethernet. Η λέξη-κλειδί αιθέρα είναι προαιρετική. Αυτό είναι συντομογραφία για το « αιθέρας [0] & 1! = 0 ».

ip multicast

Είναι αληθές εάν το πακέτο είναι πακέτο IP multicast.

ip6 multicast

Είναι αλήθεια εάν το πακέτο είναι ένα πακέτο πολυεκπομπής IPv6.

πρωτο πρωτοκόλλου αιθέρα

Είναι αληθές αν το πακέτο είναι πρωτοκόλλου αιθέρα. Το πρωτόκολλο μπορεί να είναι ένας αριθμός ή ένα από τα ονόματα ip , ip6 , arp , rarp , atalk , aarp , decnet , sca , lat , mopdl , moprc , iso , stp , ipx ή netbeui . Σημειώστε ότι αυτά τα αναγνωριστικά είναι επίσης λέξεις-κλειδιά και πρέπει να διαφεύγετε με αντίστροφη κάθετο (\).

Στην περίπτωση των FDDI (π.χ., ` fddi protocol arp ') και του Token Ring ( π.χ.` tr protocol arp '), για τα περισσότερα από αυτά τα πρωτόκολλα, η αναγνώριση πρωτοκόλλου προέρχεται από την κεφαλίδα 802.2 Logical Link Control (LLC) συνήθως τοποθετείται πάνω από την επικεφαλίδα FDDI ή Token Ring.

Κατά το φιλτράρισμα για τα περισσότερα αναγνωριστικά πρωτοκόλλου στο FDDI ή στο Token Ring, το tcpdump ελέγχει μόνο το πεδίο του αναγνωριστικού πρωτοκόλλου μιας κεφαλίδας LLC σε λεγόμενη μορφή SNAP με οργανικό αναγνωριστικό μονάδας (OUI) 0x000000, για encapsulated Ethernet. δεν ελέγχει αν το πακέτο είναι σε μορφή SNAP με OUI 0x000000.

Οι εξαιρέσεις είναι iso , για τις οποίες ελέγχει τα πεδία DSAP (Access Point Service Access Point) και SSAP (Source Service Access Point) των κεφαλίδων LLC, stp και netbeui , όπου ελέγχει το DSAP της κεφαλίδας LLC και το atalk , όπου ελέγχει ένα πακέτο μορφής SNAP με OUI 0x080007 και το πρότυπο Appletalk.

Στην περίπτωση του Ethernet, το tcpdump ελέγχει το πεδίο τύπου Ethernet για τα περισσότερα από αυτά τα πρωτόκολλα. οι εξαιρέσεις είναι iso , sap και netbeui για τις οποίες ελέγχει ένα πλαίσιο 802.3 και στη συνέχεια ελέγχει την κεφαλίδα LLC όπως και για το FDDI και το Token Ring atalk όπου ελέγχει τόσο το πρότυπο Appletalk σε πλαίσιο Ethernet όσο και Πακέτο μορφής SNAP όπως και για το FDDI και το Token Ring aarp , όπου ελέγχει το πρότυπο ART Appletalk είτε σε πλαίσιο Ethernet είτε σε πλαίσιο 802.2 SNAP με OUI 0x000000 και ipx όπου ελέγχει για τον τύπο IPX ένα πλαίσιο Ethernet, το IPX DSAP στην κεφαλίδα της LLC, το 802.3 χωρίς εγκιβωτισμό κεφαλίδας LLC του IPX και τον τύπο IPX σε ένα πλαίσιο SNAP.]

decnet src host

Αληθινή εάν η διεύθυνση προέλευσης DECNET είναι κεντρικός υπολογιστής , που μπορεί να είναι διεύθυνση της φόρμας `` 10.123 '' ή ένα όνομα κεντρικού υπολογιστή DECNET. [Η υποστήριξη του ονόματος υποδοχής DECNET είναι διαθέσιμη μόνο σε συστήματα Ultrix που έχουν ρυθμιστεί ώστε να εκτελούν το DECNET.]

decnet dst host

Αληθινή, εάν η διεύθυνση προορισμού DECNET είναι κεντρική .

decnet host host

Είναι αληθές εάν η πηγή DECNET ή η διεύθυνση προορισμού είναι κεντρικός υπολογιστής .

ip , ip6 , arp , rarp , atalk , aarp , decnet , iso , stp , ipx , netbeui

Συντομογραφίες για:

αιθέρας πρωτοπόρος

όπου το ρ είναι ένα από τα παραπάνω πρωτόκολλα.

lat , moprc , mopdl

Συντομογραφίες για:

αιθέρας πρωτοπόρος

όπου το ρ είναι ένα από τα παραπάνω πρωτόκολλα. Σημειώστε ότι το tcpdump δεν γνωρίζει επί του παρόντος πώς να αναλύσει αυτά τα πρωτόκολλα.

vlan [vlan_id]

Είναι αλήθεια εάν το πακέτο είναι πακέτο VLAN IEEE 802.1Q. Αν έχει οριστεί το [vlan_id] , μόνο το αληθές είναι ότι το πακέτο έχει το καθορισμένο vlan_id . Σημειώστε ότι η πρώτη λέξη-κλειδί vlan που εμφανίζεται στην έκφραση αλλάζει τις αποκλίσεις αποκωδικοποίησης για το υπόλοιπο της έκφρασης, υποθέτοντας ότι το πακέτο είναι πακέτο VLAN.

tcp , udp , icmp

Συντομογραφίες για:

ip proto p ή ip6 proto p

όπου το ρ είναι ένα από τα παραπάνω πρωτόκολλα.

πρωτο πρωτόκολλο iso

Είναι αληθές εάν το πακέτο είναι πακέτο OSI πρωτοκόλλου τύπου πρωτοκόλλου . Το πρωτόκολλο μπορεί να είναι ένας αριθμός ή ένα από τα ονόματα clnp , esis ή isis .

clnp , esis , isis

Συντομογραφίες για:

iso proto p

όπου το ρ είναι ένα από τα παραπάνω πρωτόκολλα. Σημειώστε ότι το tcpdump κάνει μια ατελής εργασία ανάλυσης αυτών των πρωτοκόλλων.

expr relop expr

Αληθές αν η σχέση ισχύει, όπου το relop είναι ένα από τα>, <,> =, <=, = ,! =, Και το expr είναι μια αριθμητική έκφραση που αποτελείται από ακέραιες σταθερές (εκφρασμένες σε συνήθεια C), οι κανονικοί δυαδικοί χειριστές [ , -, *, /, &, |], χειριστής μήκους και πρόσθετα εξαρτήματα πακέτων δεδομένων. Για να έχετε πρόσβαση στα δεδομένα μέσα στο πακέτο, χρησιμοποιήστε την ακόλουθη σύνταξη:

proto [ έκφραση : μέγεθος ]

Το πρωτόκολλο είναι ένα από τα ether, fddi, tr, ppp, slip, link, ip, arp, rarp, tcp, udp, icmp ή ip6 και δείχνει το επίπεδο πρωτοκόλλου για τη λειτουργία ευρετηρίου. ( eter, fddi, tr, ppp, ολίσθηση και σύνδεσμος όλοι αναφέρονται στο στρώμα σύνδεσης.) Σημειώστε ότι οι τύποι πρωτοκόλλου tcp, udp και άλλοι τύποι πρωτοκόλλου ανώτερου επιπέδου ισχύουν μόνο για IPv4, όχι IPv6 (αυτό θα καθοριστεί στο μέλλον). Η μετατόπιση των ψηφιολέξεων, σε σχέση με το υποδεικνυόμενο στρώμα πρωτοκόλλου, δίνεται από το expr . Το μέγεθος είναι προαιρετικό και υποδεικνύει τον αριθμό των bytes στο πεδίο ενδιαφέροντος. μπορεί να είναι είτε ένα, δύο, ή τέσσερα, και προεπιλογή σε ένα. Ο τελεστής μήκους, που υποδεικνύεται από τη λέξη κλειδί len , δίνει το μήκος του πακέτου.

Για παράδειγμα, το " αιθέρας [0] & 1! = 0 " καταγράφει όλες τις κυκλοφορίες πολλαπλής διανομής. Η έκφραση ` ip [0] & 0xf! = 5 'καταγράφει όλα τα πακέτα IP με επιλογές. Η έκφραση ` ip [6: 2] & 0x1fff = 0 'αιχμαλωτίζει μόνο τα μη κατακερματισμένα datagrams και το μηδέν frag των κατακερματισμένων datagrams. Αυτός ο έλεγχος εφαρμόζεται σιωπηρά στις λειτουργίες δεικτών tcp και udp . Για παράδειγμα, το tcp [0] σημαίνει πάντα το πρώτο byte της κεφαλίδας TCP και ποτέ δεν σημαίνει το πρώτο byte ενός παρεμβαλλόμενου θραύσματος.

Ορισμένες μετατοπίσεις και τιμές πεδίου μπορεί να εκφράζονται ως ονόματα και όχι ως αριθμητικές τιμές. Οι παρακάτω αντισταθμίσεις πεδίων κεφαλίδας πρωτοκόλλου είναι διαθέσιμες: icmptype (πεδίο τύπου ICMP), icmpcode (πεδίο κώδικα ICMP) και tcpflags (πεδίο σημαίας TCP).

Οι ακόλουθες τιμές πεδίου ICMP είναι διαθέσιμες: icmp-echoreply , icmp-unreach , icmp -sourcequench , icmp -redirect , icmp-echo , icmp -routeradvert , icmp -routersolicit , icmp-timxceed , icmp-paramprob , icmp-tstamp , icmp -tstampreply , icmp -ireq , icmp -ireqreply , icmp-maskreq , icmp-maskreply .

Οι ακόλουθες τιμές πεδίων σημαδιών TCP είναι διαθέσιμες: tcp-fin , tcp-syn , tcp-rst , tcp-push , tcp-push , tcp-ack , tcp-urg .

Τα πρωτόγονα μπορούν να συνδυαστούν χρησιμοποιώντας:

Μια παρένθετη ομάδα πρωτοτύπων και χειριστών (οι παρενθέσεις είναι ξεχωριστές για τη Shell και πρέπει να ξεφύγουν).

Απαλλαγή (` ! 'Ή` όχι ').

Συνδυασμός (` && 'ή` και ').

Εναλλαγή (` || 'ή` ή ').

Η άρνηση έχει ύψιστη προτεραιότητα. Η εναλλαγή και η αλληλουχία έχουν την ίδια προτεραιότητα και συνδέονται από αριστερά προς τα δεξιά. Σημειώστε ότι τώρα απαιτούνται ρητά και μάρκες, όχι αντιπαραθέσεις, για τη συγκόλληση.

Εάν παρέχεται ένα αναγνωριστικό χωρίς λέξη-κλειδί, θεωρείται η πιο πρόσφατη λέξη-κλειδί. Για παράδειγμα,

όχι ο ξενιστής και ο άσσος

είναι σύντομη για

όχι φιλοξενούμενος vs και άσος υποδοχής

η οποία δεν πρέπει να συγχέεται με

όχι (vs ξενιστής ή άσος)

Τα επιχειρήματα έκφρασης μπορούν να μεταβιβαστούν στο tcpdump είτε ως ένα μόνο όρισμα είτε ως πολλαπλά επιχειρήματα, όποιο είναι πιο βολικό. Γενικά, αν η έκφραση περιέχει μετα-χαρακτήρες Shell, είναι πιο εύκολο να την περάσετε ως ένα μόνο, αναφερόμενο επιχείρημα. Τα πολλαπλά επιχειρήματα συνενώνονται με διαστήματα πριν αναλυθούν.

ΠΑΡΑΔΕΙΓΜΑΤΑ

Για να εκτυπώσετε όλα τα πακέτα που φθάνουν ή ξεκινούν από την δύση του ηλίου :

tcpdump ημέρα υποδοχής

Για να εκτυπώσετε την κυκλοφορία μεταξύ ηλίου και είτε ζεστό είτε άσσο :

το helios υποδοχής tcpdump και \ (ζεστό ή άσε \)

Για να εκτυπώσετε όλα τα πακέτα IP μεταξύ του άσου και οποιουδήποτε ξενιστή εκτός από helios :

tcpdump ip άσος υποδοχής και όχι helios

Για να εκτυπώσετε όλη την κίνηση μεταξύ τοπικών υπολογιστών και κεντρικών υπολογιστών στο Berkeley:

tcpdump net ucb-αιθέρα

Για να εκτυπώσετε όλη την κίνηση ftp μέσω του snap gateway του διαδικτύου : (Σημειώστε ότι η έκφραση αναφέρεται για να εμποδίσετε το κέλυφος από την (εσφαλμένη) ερμηνεία των παρενθέσεων):

tppdump 'και (θύρα ftp ή ftp-data)'

Για να εκτυπώσετε την κυκλοφορία που δεν προέρχεται ούτε προορίζεται για τοπικούς κεντρικούς υπολογιστές (αν έχετε πύλη σε ένα άλλο δίκτυο, αυτά τα πράγματα δεν θα πρέπει ποτέ να το φτάνουν στο τοπικό δίκτυό σας).

tcpdump ip και όχι καθαρό τοπικό δίκτυο

Για να εκτυπώσετε τα πακέτα έναρξης και λήξης (τα πακέτα SYN και FIN) κάθε συνομιλίας TCP που περιλαμβάνει μη τοπικό κεντρικό υπολογιστή.

tcpdump 'tcp [tcpflags] & (tcp-syn | tcp-fin)! = 0 και όχι src και dst net localnet '

Για να εκτυπώσετε πακέτα IP μήκους μεγαλύτερου από 576 bytes που αποστέλλονται μέσω του snup της πύλης:

tcpdump 'snup gateway και ip [2: 2]> 576'

Για να εκτυπώσετε πακέτα εκπομπής IP ή πολυεκπομπής που δεν έχουν αποσταλεί μέσω εκπομπής ή πολλαπλής εκπομπής μέσω Ethernet:

tcpdump 'αιθέρας [0] & 1 = 0 και ip [16]> = 224'

Για να εκτυπώσετε όλα τα πακέτα ICMP που δεν είναι αιτήσεις echo / απαντήσεις (δηλαδή, όχι πακέτα ping):

tcpdump 'icmp [icmptype]! = icmp-echo και icmp [icmptype]! = icmp-echoreply'

ΜΟΡΦΗ ΕΞΟΔΟΥ

Η έξοδος του tcpdump εξαρτάται από το πρωτόκολλο. Τα παρακάτω δίνουν μια σύντομη περιγραφή και παραδείγματα των περισσότερων μορφών.

Κεφαλίδες επιπέδου συνδέσμου

Αν δοθεί η επιλογή '-e', εκτυπώνεται η κεφαλίδα του επιπέδου σύνδεσης. Στα ethernets, εκτυπώνονται οι διευθύνσεις προέλευσης και προορισμού, το πρωτόκολλο και το μήκος πακέτου.

Στα δίκτυα FDDI, η επιλογή '-e' προκαλεί το tcpdump να εκτυπώσει το πεδίο `frame control ', τις διευθύνσεις προέλευσης και προορισμού και το μήκος του πακέτου. Το πακέτο «έλεγχος πλαισίου» διέπει την ερμηνεία του υπόλοιπου πακέτου.Τα κανονικά πακέτα (όπως αυτά που περιέχουν τα IP πακέτα) είναι πακέτα 'async', με τιμή προτεραιότητας μεταξύ 0 και 7, για παράδειγμα ' async4 '. τα πακέτα θεωρείται ότι περιέχουν ένα πακέτο 802.2 Λογικό Ελέγχου Σύνδεσης (LLC) · η κεφαλίδα LLC εκτυπώνεται αν δεν είναι ένα πακέτο δεδομένων ISO ή ένα λεγόμενο πακέτο SNAP.

Στα δίκτυα Token Ring, η επιλογή '-e' προκαλεί το tcpdump να εκτυπώνει τα πεδία 'control access' και 'frame control', τις διευθύνσεις προέλευσης και προορισμού και το μήκος του πακέτου. Όπως και στα δίκτυα FDDI, τα πακέτα θεωρείται ότι περιέχουν ένα πακέτο LLC. Ανεξάρτητα από το αν η επιλογή '-e' έχει καθοριστεί ή όχι, οι πληροφορίες δρομολόγησης πηγής εκτυπώνονται για πακέτα με δρομολόγια προέλευσης.

(Σημείωση: Η παρακάτω περιγραφή προϋποθέτει εξοικείωση με τον αλγόριθμο συμπίεσης SLIP που περιγράφεται στο RFC-1144.)

Στις συνδέσεις SLIP, εκτυπώνονται μια ένδειξη κατεύθυνσης (`` I '' για εισερχόμενες, `` O '' για εξερχόμενες), τύπου πακέτου και πληροφορίες συμπίεσης. Ο τύπος πακέτου εκτυπώνεται πρώτα. Οι τρεις τύποι είναι ip , utcp και ctcp . Δεν έχουν εκτυπωθεί άλλες πληροφορίες συνδέσμου για πακέτα ip . Για τα πακέτα TCP, το αναγνωριστικό σύνδεσης εκτυπώνεται ακολουθώντας τον τύπο. Εάν το πακέτο είναι συμπιεσμένο, εκτυπώνεται η κωδικοποιημένη κεφαλίδα του. Οι ειδικές περιπτώσεις εκτυπώνονται ως * S + n και * SA + n , όπου n είναι το ποσό με το οποίο έχει αλλάξει ο αριθμός ακολουθίας (ή ο αριθμός σειράς και το ack). Εάν δεν πρόκειται για ειδική περίπτωση, εκτυπώνονται μηδέν ή περισσότερες αλλαγές. Μια αλλαγή υποδεικνύεται με U (επείγον δείκτη), W (παράθυρο), A (ack), S (αριθμός ακολουθίας) και I (πακέτο ID), ακολουθούμενο από ένα δέλτα (+ n ή -n) (= η). Τέλος, εκτυπώνεται η ποσότητα δεδομένων στο πακέτο και το συμπιεσμένο μήκος κεφαλίδας.

Για παράδειγμα, η ακόλουθη γραμμή εμφανίζει ένα πακέτο TCP που έχει συμπιεσθεί εξερχόμενα, με έναν προσδιοριστή σιωπηρής σύνδεσης. το ack έχει αλλάξει κατά 6, ο αριθμός ακολουθίας κατά 49, και το πακέτο ID κατά 6? υπάρχουν 3 bytes δεδομένων και 6 bytes συμπιεσμένης κεφαλίδας:

O ctcp * Α + 6S + 49I + 6 3 (6)

Πακέτα ARP / RARP

Η έξοδος Arp / rarp εμφανίζει τον τύπο αίτησης και τα επιχειρήματά του. Η μορφή αυτή πρέπει να είναι αυτονόητη. Εδώ είναι ένα σύντομο δείγμα που ελήφθη από την αρχή ενός `rlogin 'από το host rtsg στο host csam :

arp who-έχει csam λέει rtsg arp απάντηση csam είναι-στο CSAM

Η πρώτη γραμμή λέει ότι το rtsg έστειλε ένα πακέτο arp ζητώντας τη διεύθυνση ethernet του internet host csam. Η Csam απαντά με τη διεύθυνση ethernet (σε αυτό το παράδειγμα, οι διευθύνσεις ethernet βρίσκονται σε κεφαλαία και διευθύνσεις στο διαδίκτυο με μικρά γράμματα).

Αυτό θα φαινόταν λιγότερο περιττό αν είχαμε κάνει tcpdump -n :

arp ο οποίος έχει 128.3.254.6 λέει 128.3.254.68 arp απάντηση 128.3.254.6 είναι σε 02: 07: 01: 00: 01: c4

Εάν είχαμε κάνει tcpdump -e , το γεγονός ότι το πρώτο πακέτο μεταδίδεται και το δεύτερο είναι σημείο-προς-σημείο θα είναι ορατό:

RTSG Broadcast 0806 64: arp ο οποίος έχει csam λέει rtsg CSAM RTSG 0806 64: arp απάντηση csam είναι-στο CSAM

Για το πρώτο πακέτο αυτό λέει ότι η διεύθυνση πηγής Ethernet είναι RTSG, ο προορισμός είναι η διεύθυνση εκπομπής Ethernet, το πεδίο τύπου περιείχε hex 0806 (τύπου ETHER_ARP) και το συνολικό μήκος ήταν 64 bytes.

TCP πακέτα

(Σημείωση: Η παρακάτω περιγραφή προϋποθέτει εξοικείωση με το πρωτόκολλο TCP που περιγράφεται στο RFC-793. Εάν δεν γνωρίζετε το πρωτόκολλο, ούτε αυτή η περιγραφή ούτε το tcpdump θα είναι πολύ χρήσιμα για εσάς.)

Η γενική μορφή μιας γραμμής πρωτοκόλλου tcp είναι:

src> dst: σημαίες δεδομένων-seqno ack επείγουσες επιλογές παραθύρου

Τα Src και dst είναι οι διευθύνσεις IP και οι θύρες προέλευσης και προορισμού. Οι σημαίες είναι ένας συνδυασμός S (SYN), F (FIN), P (PUSH) ή R (RST) ή ενός μόνο. (χωρίς σημαίες). Το data-seqno περιγράφει το τμήμα του χώρου αλληλουχίας που καλύπτεται από τα δεδομένα σε αυτό το πακέτο (δείτε το παράδειγμα παρακάτω). Ack είναι ο αριθμός ακολουθίας των επόμενων δεδομένων αναμένεται η άλλη κατεύθυνση σε αυτή τη σύνδεση. Παράθυρο είναι ο αριθμός των bytes του χώρου προσωρινής αποθήκευσης λήψης που είναι διαθέσιμη προς την άλλη κατεύθυνση σε αυτήν τη σύνδεση. Το Urg υποδεικνύει ότι υπάρχουν 'επείγοντα' δεδομένα στο πακέτο. Οι επιλογές είναι επιλογές tcp που περικλείονται σε γωνιακούς βραχίονες (π.χ. ).

Src, dst και σημαίες είναι πάντα παρόντες. Τα άλλα πεδία εξαρτώνται από τα περιεχόμενα της κεφαλίδας του πρωτοκόλλου tcp του πακέτου και εξάγονται μόνο εάν είναι απαραίτητο.

Εδώ είναι το τμήμα ανοίγματος ενός rlogin από το host rtsg στο host csam .

rtsg.1023> csam.login: S 768512: 768512 (0) κερδίσει 4096 csam.login> rtsg.1023: S 947648: 947648 (0) ack 768513 νίκη 4096 rtsg.1023> csam. Σύνδεση: . ack 1 νίκη 4096 rtsg.1023> csam.login: P 1: 2 (1) ack 1 νίκη 4096 csam.login> rtsg.1023:. ack 2 win 4096 rtsg.1023> csam.login: P 2:21 (19) ack 1 νίκη 4096 csam.login> rtsg.1023: P 1: 2 (1) ack 21 νίκη 4077 csam.login> rtsg.1023: P 2: 3 (1) ack 21 νίκη 4077 urg 1 csam.login> rtsg.1023: P 3: 4 (1) ack 21 νίκη 4077 urg 1

Η πρώτη γραμμή λέει ότι η θύρα tcp 1023 στο rtsg έστειλε ένα πακέτο στη θύρα σύνδεσης στο csam. Το S δηλώνει ότι έχει ρυθμιστεί η σημαία SYN . Ο αριθμός ακολουθίας πακέτων ήταν 768512 και δεν περιείχε δεδομένα. (Ο συμβολισμός είναι «πρώτος: τελευταίος (nbytes)» που σημαίνει « πρώτα τους αριθμούς ακολουθίας αλλά όχι τον τελευταίο ο οποίος είναι nbytes byte των δεδομένων χρήστη».) Δεν υπήρχε ακύρωση με γουρουνάκι, το διαθέσιμο παράθυρο λήψης ήταν 4096 byte και υπήρχε μια επιλογή μεγέθους μέγιστου τμήματος που ζητούσε ένα mss των 1024 byte.

Το Csam απαντά με ένα παρόμοιο πακέτο, εκτός από το ότι περιέχει ένα γουρουνάκι για το SYN του rtsg. Το Rtsg τότε ενεργοποιεί το SYN του csam. Το '.' σημαίνει ότι δεν έχουν οριστεί σημαίες. Το πακέτο δεν περιείχε δεδομένα, επομένως δεν υπάρχει αριθμός ακολουθίας δεδομένων. Σημειώστε ότι ο αριθμός ακολουθίας ack είναι ένας μικρός ακέραιος αριθμός (1). Την πρώτη φορά που το tcpdump βλέπει μια tcp `conversation ', εκτυπώνει τον αριθμό ακολουθίας από το πακέτο. Στα επόμενα πακέτα της συνομιλίας, εκτυπώνεται η διαφορά μεταξύ του αριθμού ακολουθίας του τρέχοντος πακέτου και αυτού του αρχικού αριθμού ακολουθίας. Αυτό σημαίνει ότι οι αριθμοί ακολουθιών μετά την πρώτη μπορούν να ερμηνευτούν ως σχετικές θέσεις byte στη ροή δεδομένων της συνομιλίας (με το πρώτο byte δεδομένων κάθε κατεύθυνση να είναι «1»). Το `-S 'θα αντικαταστήσει αυτό το χαρακτηριστικό, προκαλώντας την έξοδο των αρχικών αριθμών ακολουθίας.

Στην 6η γραμμή, το rtsg στέλνει csam 19 bytes δεδομένων (bytes 2 έως 20 στην πλευρά rtsg -> csam της συνομιλίας). Η σημαία PUSH έχει οριστεί στο πακέτο. Στην 7η γραμμή, το csam αναφέρει ότι έλαβε τα δεδομένα που έστειλε το rtsg μέχρι και χωρίς να συμπεριλάβει το byte 21. Τα περισσότερα από αυτά τα δεδομένα φαίνεται ότι βρίσκονται στο buffer του socket αφού το παράθυρο λήψης του csam έχει πάρει 19 bytes μικρότερο. Το Csam αποστέλλει επίσης ένα byte δεδομένων στο rtsg σε αυτό το πακέτο. Στις 8η και 9η γραμμές, το csam στέλνει δύο bytes επειγόντων, ωθούμενων δεδομένων στο rtsg.

Εάν το στιγμιότυπο ήταν αρκετά μικρό ώστε το tcpdump να μην συλλάβει την πλήρη κεφαλίδα TCP, ερμηνεύει όσο το δυνατόν περισσότερη κεφαλίδα και στη συνέχεια αναφέρει `` [[| tcp ] '' για να υποδείξει ότι το υπόλοιπο δεν μπορεί να ερμηνευτεί. Αν η κεφαλίδα περιέχει μια ψευδή επιλογή (μία με ένα μήκος που είναι είτε πολύ μικρό είτε πέρα ​​από το τέλος της κεφαλίδας), το tcpdump το αναφέρει ως `` [ bad opt ] '' και δεν ερμηνεύει άλλες επιλογές (δεδομένου ότι είναι αδύνατο να το πεις από όπου ξεκινούν). Εάν το μήκος κεφαλίδας υποδεικνύει ότι υπάρχουν επιλογές, αλλά το μήκος της δέσμης IP δεν είναι αρκετό για να υπάρχουν οι επιλογές, το tcpdump το αναφέρει ως `` [ bad hdr length ] ''.

Καταγραφή πακέτων TCP με συγκεκριμένους συνδυασμούς σημαιών (SYN-ACK, URG-ACK κ.λπ.)

Υπάρχουν 8 bits στην ενότητα bits ελέγχου της κεφαλίδας TCP:

CWR | ΟΕΕ | URG | ACK | PSH | RST | SYN | ΠΤΕΡΥΓΙΟ

Ας υποθέσουμε ότι θέλουμε να παρακολουθήσουμε πακέτα που χρησιμοποιούνται για τη δημιουργία μιας σύνδεσης TCP. Θυμηθείτε ότι το πρωτόκολλο TCP χρησιμοποιεί ένα πρωτόκολλο χειραψίας 3 κατευθύνσεων όταν προετοιμάζει μια νέα σύνδεση. η ακολουθία σύνδεσης σε σχέση με τα bits ελέγχου TCP είναι

1) Ο καλών αποστέλλει SYN

2) Ο παραλήπτης αποκρίνεται με SYN, ACK

3) Ο καλών αποστέλλει ACK

Τώρα μας ενδιαφέρει η λήψη πακέτων που έχουν μόνο το σύνολο SYN bit (Βήμα 1). Σημειώστε ότι δεν θέλουμε πακέτα από το βήμα 2 (SYN-ACK), απλά ένα απλό αρχικό SYN. Αυτό που χρειαζόμαστε είναι μια σωστή έκφραση φίλτρου για το tcpdump .

Ανακαλέστε τη δομή μιας κεφαλίδας TCP χωρίς επιλογές:

0 15 31 ----------------------------------------------- ------------------ | θύρα προέλευσης | θύρα προορισμού | -------------------------------------------------- --------------- | αριθμός σειράς | -------------------------------------------------- --------------- | αριθμός αναγνώρισης | -------------------------------------------------- --------------- | HL | rsvd | C | E | U | A | P | R | S | F | μέγεθος παραθύρου | -------------------------------------------------- --------------- | Έλεγχος αθροίσματος TCP | επείγον δείκτης | -------------------------------------------------- ---------------

Μια κεφαλίδα TCP συνήθως περιέχει 20 οκτάδες δεδομένων, εκτός αν υπάρχουν επιλογές. Η πρώτη γραμμή του γραφήματος περιέχει οκτάδες 0 - 3, η δεύτερη γραμμή εμφανίζει οκτάδες 4 - 7 κλπ.

Αρχίζοντας να μετρήσετε με 0, τα σχετικά bit ελέγχου TCP περιέχονται σε οκτάδα 13:

0 7 | 15 |. | 23 | 31 ---------------- | --------------- | --------------- | ---------------- | HL | rsvd | C | E | U | A | P | R | S | F | μέγεθος παραθύρου | ---------------- | --------------- | --------------- | - --------------- | | 13η οκτάδα | | |

Ας δούμε πιο προσεκτικά την οκτάτη όχι. 13:

| | | --------------- | | C | E | U | A | P | R | S | F | | --------------- | | 7 5 3 0 |

Αυτά είναι τα bits ελέγχου TCP που μας ενδιαφέρουν. Έχουμε αριθμημένα τα δυαδικά ψηφία σε αυτή την οκτάδα από 0 έως 7, από τα δεξιά προς τα αριστερά, έτσι ώστε το bit PSH είναι bit 3, ενώ το bit URG είναι αριθμός 5.

Θυμηθείτε ότι θέλουμε να συλλάβουμε πακέτα με μόνο SYN set. Ας δούμε τι συμβαίνει στην octet 13 αν φτάσει ένα πακέτο TCP με το bit SYN που έχει οριστεί στην κεφαλίδα του:

| C | E | U | A | P | R | S | F | | --------------- | | 0 0 0 0 0 0 1 0 |. | | --------------- | | 7 6 5 4 3 2 1 0 |. |

Εξετάζοντας την ενότητα bits ελέγχου βλέπουμε ότι έχει ρυθμιστεί μόνο ο αριθμός 1 bit (SYN).

Υποθέτοντας ότι ο οκταδικός αριθμός 13 είναι ένας μη υπογεγραμμένος ακέραιος 8-bit στην εντολή byte δικτύου, η δυαδική τιμή αυτής της οκτάδας είναι

00000010

και η αναπαράστασή του είναι δεκαδική

7 6 5 4 3 2 1 0 0 * 2 + 0 * 2 + 0 * 2 + 0 * 2 + 0 * 2 + 0 * 2 + 1 * 2 + 0 * 2 = 2

Είμαστε σχεδόν τελειωμένοι, επειδή τώρα γνωρίζουμε ότι εάν έχει οριστεί μόνο SYN, η τιμή του 13ου οκτάτου στην κεφαλίδα TCP, όταν ερμηνεύεται ως ένας μη-υπογεγραμμένος ακέραιος 8-bit σε σειρά byte δικτύου, πρέπει να είναι ακριβώς 2.

Αυτή η σχέση μπορεί να εκφραστεί ως

tcp [13] == 2

Μπορούμε να χρησιμοποιήσουμε αυτήν την έκφραση ως το φίλτρο για το tcpdump για να παρακολουθήσουμε πακέτα που έχουν μόνο SYN set:

tcpdump -i xl0 tcp [13] == 2

Η έκφραση λέει "αφήστε το 13ο byte του TCP datagram να έχει την δεκαδική τιμή 2", ακριβώς αυτό που θέλουμε.

Τώρα, ας υποθέσουμε ότι πρέπει να συλλάβουμε πακέτα SYN, αλλά δεν μας νοιάζει αν το ACK ή οποιοδήποτε άλλο bit ελέγχου TCP έχει οριστεί ταυτόχρονα. Ας δούμε τι συμβαίνει στην οκτάδα 13 όταν φτάνει ένα πακέτο TCP με το σύνολο SYN-ACK:

| C | E | U | A | P | R | S | F | | --------------- | | 0 0 0 1 0 0 1 0 | | --------------- | | 7 6 5 4 3 2 1 0 |. |

Τώρα τα bits 1 και 4 έχουν οριστεί στο 13ο byte. Η δυαδική τιμή της οκτάδας 13 είναι


00010010

η οποία μεταφράζεται σε δεκαδικό

7 6 5 4 3 2 1 0 0 * 2 + 0 * 2 + 0 * 2 + 1 * 2 + 0 * 2 + 0 * 2 + 1 * 2 + 0 * 2 = 18

Τώρα δεν μπορούμε απλώς να χρησιμοποιήσουμε το tcp [13] == 18 'στην έκφραση φίλτρου tcpdump , επειδή αυτό θα επιλέξει μόνο εκείνα τα πακέτα που έχουν SYN-ACK που έχουν οριστεί, αλλά όχι αυτά που έχουν μόνο SYN set. Θυμηθείτε ότι δεν μας νοιάζει αν έχει οριστεί ACK ή οποιοδήποτε άλλο bit ελέγχου, εφόσον έχει οριστεί SYN.

Προκειμένου να επιτύχουμε τον στόχο μας, πρέπει λογικά και η δυαδική τιμή του octet 13 με κάποια άλλη τιμή να διατηρήσουμε το bit SYN. Γνωρίζουμε ότι θέλουμε SYN να οριστεί σε κάθε περίπτωση, έτσι θα λογικά ΚΑΙ η τιμή στο 13ο byte με τη δυαδική τιμή ενός SYN:

00010010 SYN-ACK 00000010 ΣΥΝ και 00000010 (θέλουμε SYN) ΚΑΙ 00000010 (θέλουμε SYN) -------- -------- = 00000010 = 00000010

Βλέπουμε ότι αυτή η λειτουργία AND δίνει το ίδιο αποτέλεσμα ανεξάρτητα από το εάν έχει ρυθμιστεί το ACK ή άλλο bit ελέγχου TCP. Η δεκαδική αναπαράσταση της τιμής AND καθώς και το αποτέλεσμα αυτής της λειτουργίας είναι 2 (δυαδικό 00000010), οπότε γνωρίζουμε ότι για τα πακέτα με SYN set η ακόλουθη σχέση πρέπει να ισχύει:

((τιμή της οκτάδας 13) ΚΑΙ (2)) == (2)

Αυτό μας δείχνει στην έκφραση φίλτρου tcpdump

tcpdump -i xl0 'tcp [13] & 2 == 2'

Σημειώστε ότι πρέπει να χρησιμοποιήσετε μοναδικά εισαγωγικά ή μια ανάστροφη κάθετο στην έκφραση για να αποκρύψετε τον ειδικό χαρακτήρα AND ('&') από το κέλυφος.

UDP πακέτα

Η μορφή UDP απεικονίζεται από αυτό το πακέτο rwho:

actinide.who> broadcast.who: udp 84

Αυτό λέει ότι η θύρα που στον ακτινίδιο του ξενιστή έστειλε ένα datagram udp στη θύρα που σε εκπομπή υποδοχής, τη διεύθυνση εκπομπής του Διαδικτύου. Το πακέτο περιείχε 84 bytes δεδομένων χρήστη.

Ορισμένες υπηρεσίες UDP αναγνωρίζονται (από τον αριθμό θύρας προέλευσης ή προορισμού) και εκτυπώνονται οι πληροφορίες πρωτοκόλλου υψηλότερου επιπέδου. Συγκεκριμένα, οι αιτήσεις υπηρεσίας ονομάτων τομέα (RFC-1034/1035) και οι κλήσεις Sun RPC (RFC-1050) σε NFS.

Αίτηση διακομιστή ονομάτων UDP

(Σημείωση: Η παρακάτω περιγραφή προϋποθέτει εξοικείωση με το πρωτόκολλο υπηρεσίας τομέα που περιγράφεται στο RFC-1035. Εάν δεν γνωρίζετε το πρωτόκολλο, η παρακάτω περιγραφή θα φαίνεται να είναι γραμμένη στα ελληνικά.)

Οι αιτήσεις διακομιστή ονομάτων είναι μορφοποιημένες ως

src> dst: id op; σημαίες qtype qclass όνομα (len) h2opolo.1538> helios.domain: 3+ A? ucbvax.berkeley.edu. (37)

Ο κεντρικός υπολογιστής h2opolo ρώτησε τον διακομιστή τομέα στο helios για μια εγγραφή διεύθυνσης (qtype = A) που σχετίζεται με το όνομα ucbvax.berkeley.edu. Το αναγνωριστικό ερώτησης ήταν «3». Η ένδειξη `+ 'υποδεικνύει ότι η επιθυμητή σημαία επανάληψης έχει οριστεί. Το μήκος του ερωτήματος ήταν 37 bytes, χωρίς να περιλαμβάνονται οι κεφαλίδες πρωτοκόλλων UDP και IP. Η λειτουργία ερωτήματος ήταν η κανονική, ερώτημα , οπότε παραλείφθηκε το πεδίο op. Εάν το op ήταν οτιδήποτε άλλο, θα ήταν τυπωμένο ανάμεσα στο «3» και το «+». Ομοίως, η qclass ήταν η κανονική, C_IN και παραλείφθηκε. Κάθε άλλη qclass θα είχε τυπωθεί αμέσως μετά το `A '.

Μερικές ανωμαλίες ελέγχονται και μπορεί να οδηγήσουν σε επιπλέον πεδία που περικλείονται σε αγκύλες: Εάν ένα ερώτημα περιέχει μια απάντηση, οι εγγραφές εξουσιοδότησης ή η πρόσθετη εγγραφή, το νούμερο , το nscount ή το arcount εκτυπώνονται ως `[ n a] ',` n n ] 'ή' [ n au] 'όπου το n είναι ο κατάλληλος αριθμός. Εάν κάποιο από τα δυφία απόκρισης έχει οριστεί (AA, RA ή rcode) ή οποιοδήποτε από τα δυαδικά ψηφία `must be zero 'τίθεται σε bytes δύο και τρία, εκτυπώνεται` [b2 & 3 = x ]', όπου x είναι η hex τιμή επικεφαλίδες δύο και τρία.

Απαντήσεις διακομιστή ονομάτων UDP

Οι απαντήσεις του διακομιστή ονομάτων είναι μορφοποιημένες ως

src> dst: id op rcode σημαίες a / n / au δεδομένα τάξης τύπου (len) helios.domain> h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273) helios.domain> h2opolo.1537: 2 NXDomain * 0/1/0 (97)

Στο πρώτο παράδειγμα, ο ηλιος αποκρίνεται στο ερώτημα id 3 από h2opolo με 3 εγγραφές απαντήσεων, 3 εγγραφές διακομιστή ονομάτων και 7 επιπλέον εγγραφές. Η πρώτη εγγραφή απαντήσεων είναι τύπου Α (διεύθυνση) και τα δεδομένα της είναι η διεύθυνση διαδικτύου 128.32.137.3. Το συνολικό μέγεθος της απάντησης ήταν 273 bytes, εξαιρουμένων των κεφαλίδων UDP και IP. Ο κώδικας op (Query) και απάντηση (NoError) παραλείφθηκαν, όπως και η κλάση (C_IN) του αρχείου Α.

Στο δεύτερο παράδειγμα, ο ήλιος απαντά στο ερώτημα 2 με έναν κωδικό απόκρισης ανύπαρκτου τομέα (NXDomain) χωρίς απαντήσεις, έναν διακομιστή ονομάτων και κανένα αρχείο αρχής. Το σύμβολο `* 'υποδεικνύει ότι έχει οριστεί το έγκυρο bit απάντησης . Δεδομένου ότι δεν υπήρχαν απαντήσεις, δεν τυπώθηκε τύπος, κλάση ή δεδομένα.

Άλλοι χαρακτήρες σημαίας που μπορεί να εμφανίζονται είναι `- '(διαθέσιμη αναδρομή, RA, δεν έχει οριστεί) και` |' (περικομμένο μήνυμα, TC, σύνολο). Εάν η ενότητα `ερώτημα 'δεν περιέχει ακριβώς μία καταχώρηση, εκτυπώνεται το μήνυμα [nq]'.

Σημειώστε ότι οι αιτήσεις και οι απαντήσεις του διακομιστή ονομάτων τείνουν να είναι μεγάλες και το προεπιλεγμένο snaplen των 68 bytes ενδέχεται να μη συλλάβει αρκετό πακέτο για εκτύπωση. Χρησιμοποιήστε τη σημαία -s για να αυξήσετε το snaplen αν χρειάζεται να διερευνήσετε σοβαρά την κίνηση διακομιστή ονομάτων. Το ' 128 ' έχει δουλέψει καλά για μένα.

Αποκωδικοποίηση SMB / CIFS

Το tcpdump περιλαμβάνει πλέον αρκετά εκτεταμένη αποκωδικοποίηση SMB / CIFS / NBT για τα δεδομένα UDP / 137, UDP / 138 και TCP / 139. Μερικές πρωτότυπες αποκωδικοποιήσεις των δεδομένων IPX και NetBEUI SMB γίνεται επίσης.

Από προεπιλογή γίνεται μια αρκετά ελάχιστη αποκωδικοποίηση, με πολύ πιο λεπτομερή αποκωδικοποίηση όταν χρησιμοποιείται -v. Να είστε προειδοποιημένοι ότι με το πακέτο -va SMB μπορεί να πάρει μια σελίδα ή περισσότερες, οπότε χρησιμοποιήστε μόνο το -v αν θέλετε πραγματικά όλα τα βρώμικα στοιχεία.

Εάν αποκωδικοποιείτε τις περιόδους λειτουργίας SMB που περιέχουν συμβολοσειρές unicode, τότε ίσως επιθυμείτε να ορίσετε τη μεταβλητή περιβάλλοντος USE_UNICODE σε 1. Θα ήταν ευπρόσδεκτη μια ενημερωμένη έκδοση κώδικα για την αυτόματη ανίχνευση συμβόλων unicode.

Για πληροφορίες σχετικά με τις μορφές πακέτων SMB και για όλα τα πεδία, ανατρέξτε στη διεύθυνση www.cifs.org ή στον κατάλογο pub / samba / specs / στον αγαπημένο σας ιστότοπο samba.org. Τα μπαλώματα SMB γράφτηκαν από τον Andrew Tridgell (tridge@samba.org).

Αιτήματα και απαντήσεις NFS

Τα αιτήματα και οι απαντήσεις του Sun NFS (Network File System) εκτυπώνονται ως εξής:

src.xid> dst.nfs: len op args src.nfs> dst.xid: απάντηση stat len ​​op αποτελέσματα sushi.6709> wrl.nfs: 112 readlink fh 21,24 / 10.73165 wrl.nfs> sushi.6709: απάντηση ok 40 readlink "../var" sushi.201b> wrl.nfs: 144 αναζήτηση fh 9,74 / 4096,6878 "xcolors" wrl.nfs> sushi.201b: απάντηση ok 128 αναζήτηση fh 9,74 / 4134,3150

Στην πρώτη γραμμή, το sushi στέλνει μια συναλλαγή με το id 6709 στο wrl (σημειώστε ότι ο αριθμός που ακολουθεί τον host src είναι ένα id της συναλλαγής, όχι η θύρα προέλευσης). Το αίτημα ήταν 112 byte, εξαιρουμένων των κεφαλίδων UDP και IP. Η λειτουργία ήταν readlink (διαβάστε συμβολική σύνδεση) στη λαβή αρχείου ( fh ) 21,24 / 10,731657119. (Εάν κάποιος είναι τυχερός, όπως σε αυτήν την περίπτωση, ο χειρισμός του αρχείου μπορεί να ερμηνευτεί ως ένα μεγάλο ζεύγος δευτερευόντων αριθμών συσκευών, ακολουθούμενο από τον αριθμό inode και τον αριθμό παραγωγής.) Η Wrl απαντά `ok 'με τα περιεχόμενα του συνδέσμου.

Στην τρίτη γραμμή, το σούσι ζητά από το wrl να αναζητήσει το όνομα ` xcolors 'στο αρχείο καταλόγου 9,74 / 4096,6878. Σημειώστε ότι τα εκτυπωμένα δεδομένα εξαρτώνται από τον τύπο λειτουργίας. Η μορφή προορίζεται να είναι αυτονόητη εάν διαβάζεται σε συνδυασμό με ένα πρωτόκολλο πρωτοκόλλου NFS.

Εάν δίνεται η σημαία -v (verbose), εκτυπώνονται πρόσθετες πληροφορίες. Για παράδειγμα:

sushi.1372a> wrl.nfs: 148 διαβάστε fh 21,11 / 12.195 8192 bytes @ 24576 wrl.nfs> sushi.1372a: απάντηση ok 1472 διαβάστε REG 100664 id 417/0 sz 29388

(-v εκτυπώνει επίσης τα πεδία IP κεφαλίδας TTL, ID, μήκους και κατακερματισμού, τα οποία έχουν παραλειφθεί από αυτό το παράδειγμα). Στην πρώτη γραμμή, το sushi ζητά από το wrl να διαβάσει 8192 byte από το αρχείο 21,11 / 12,195, σε byte offset 24576. Οι απαντήσεις Wrl `ok '. το πακέτο που εμφανίζεται στη δεύτερη γραμμή είναι το πρώτο κομμάτι της απάντησης και επομένως έχει μήκος μόνο 1472 bytes (τα υπόλοιπα byte θα ακολουθήσουν σε επόμενα θραύσματα, αλλά αυτά τα θραύσματα δεν έχουν επικεφαλίδες NFS ή ακόμα και UDP και έτσι δεν μπορούν να εκτυπωθούν, ανάλογα με την χρησιμοποιούμενη έκφραση φίλτρου). Επειδή δίνεται η σημαία -v, εκτυπώνονται ορισμένα από τα χαρακτηριστικά αρχείου (τα οποία επιστρέφονται εκτός από τα δεδομένα αρχείου): ο τύπος αρχείου (`` REG '' για κανονικό αρχείο), ο τρόπος αρχείου (σε οκταδικό) το uid και gid και το μέγεθος του αρχείου.

Εάν η σημαία -v δίνεται περισσότερες από μία φορές, εκτυπώνονται ακόμη περισσότερες λεπτομέρειες.

Σημειώστε ότι τα αιτήματα NFS είναι πολύ μεγάλα και πολλά από τα στοιχεία δεν θα εκτυπωθούν εκτός αν αυξάνεται το snaplen . Δοκιμάστε να χρησιμοποιήσετε το ` -s 192 'για να παρακολουθήσετε την κίνηση NFS.

Τα πακέτα απαντήσεων NFS δεν προσδιορίζουν ρητά τη λειτουργία RPC. Αντίθετα, το tcpdump παρακολουθεί τα `` πρόσφατα '' αιτήματα και τα αντιστοιχεί στις απαντήσεις χρησιμοποιώντας το αναγνωριστικό συναλλαγής. Εάν η απάντηση δεν ακολουθεί στενά το αντίστοιχο αίτημα, μπορεί να μην είναι παράλληλη.

Αιτήματα και απαντήσεις AFS

Τα αιτήματα και οι απαντήσεις του Transarc AFS (Andrew File System) εκτυπώνονται ως εξής:

src.sport> dst.dport: rx πακέτο τύπου src.sport> dst.dport: rx υπηρεσία πακέτου κλήσης call-name args src.sport> dst.dport: rx απάντηση υπηρεσίας τύπου πακέτου call-name args elvis. 7001> pike.afsfs: rx δεδομένα fs κλήση μετονομασία παλιά fid 536876964/1/1 ".newsrc.new" νέα fid 536876964/1/1 ".newsrc" pike.afsfs> elvis.7001: rx δεδομένα fs απάντηση μετονομασία

Στην πρώτη γραμμή, ο ξενιστής elvis στέλνει ένα πακέτο RX στο ράπισμα. Αυτό ήταν ένα πακέτο δεδομένων RX στην υπηρεσία fs (fileserver) και είναι η αρχή μιας κλήσης RPC. Η κλήση RPC ήταν μια μετονομασία, με το παλιό id αρχείου καταλόγου 536876964/1/1 και ένα παλιό όνομα αρχείου `.newsrc.new 'και ένα νέο αρχείο αρχείου καταλόγου 536876964/1/1 και ένα νέο όνομα αρχείου`. newsrc '. Ο ακίδων υποδοχής απαντά με μια απάντηση RPC στην κλήση μετονομασίας (η οποία ήταν επιτυχής, επειδή ήταν πακέτο δεδομένων και όχι πακέτο διακοπής).

Γενικά, όλα τα RPC RPM του AFS αποκωδικοποιούνται τουλάχιστον με το όνομα κλήσης RPC. Τα περισσότερα RPC RPC έχουν τουλάχιστον ορισμένα από τα επιχειρήματα που αποκωδικοποιούνται (γενικά μόνο τα «ενδιαφέροντα» επιχειρήματα, για ορισμένους ορισμούς ενδιαφέροντα).

Η μορφή προορίζεται να περιγραφεί από τον εαυτό της, αλλά πιθανόν να μην είναι χρήσιμη σε άτομα που δεν είναι εξοικειωμένα με τη λειτουργία του AFS και του RX.

Εάν η σημαία -v (λεπτομερή) δίνεται δύο φορές, εκτυπώνονται πακέτα επιβεβαίωσης και πρόσθετες πληροφορίες κεφαλίδας, όπως το αναγνωριστικό κλήσης RX, ο αριθμός κλήσης, ο αριθμός σειράς, ο σειριακός αριθμός και οι σημαίες πακέτων RX.

Αν η σημαία -v δοθεί δύο φορές, εκτυπώνονται πρόσθετες πληροφορίες, όπως το αναγνωριστικό κλήσης RX, ο σειριακός αριθμός και οι σημαίες πακέτων RX. Οι πληροφορίες διαπραγμάτευσης MTU εκτυπώνονται επίσης από πακέτα RX ack.

Εάν η σημαία -v δίνεται τρεις φορές, εκτυπώνεται ο δείκτης ασφαλείας και η ταυτότητα υπηρεσίας.

Οι κωδικοί σφαλμάτων εκτυπώνονται για πακέτα διακοπής, με εξαίρεση τα πακέτα φάσματος Ubik (επειδή τα πακέτα διακοπής χρησιμοποιούνται για να δηλώσουν μια ψήφο ναι για το πρωτόκολλο Ubik).

Σημειώστε ότι τα αιτήματα AFS είναι πολύ μεγάλα και πολλά από τα επιχειρήματα δεν θα εκτυπωθούν εκτός αν αυξηθεί το snaplen . Δοκιμάστε να χρησιμοποιήσετε το ` -s 256 'για να παρακολουθήσετε την κυκλοφορία AFS.

Τα πακέτα απάντησης AFS δεν προσδιορίζουν ρητά τη λειτουργία RPC. Αντίθετα, το tcpdump παρακολουθεί τα `` πρόσφατα '' αιτήματα και τα αντιστοιχεί στις απαντήσεις χρησιμοποιώντας τον αριθμό κλήσης και το αναγνωριστικό υπηρεσίας. Εάν η απάντηση δεν ακολουθεί στενά το αντίστοιχο αίτημα, μπορεί να μην είναι παράλληλη.

KIP Appletalk (DDP σε UDP)

Τα πακέτα DDP της Appletalk που είναι ενθυλακωμένα σε datagrams UDP αποσυντίθενται και αποβάλλονται ως πακέτα DDP (δηλαδή, όλες οι πληροφορίες κεφαλίδας UDP απορρίπτονται). Το αρχείο /etc/atalk.names χρησιμοποιείται για τη μετάφραση αριθμών appletalk και αριθμών κόμβων σε ονόματα. Οι γραμμές σε αυτό το αρχείο έχουν τη μορφή

αριθμός ονόματος 1.254 αιθέρας 16.1 icsd-net 1.254.110 άσσος

Οι δύο πρώτες γραμμές δίνουν τα ονόματα των δικτύων appletalk. Η τρίτη γραμμή δίνει το όνομα ενός συγκεκριμένου κεντρικού υπολογιστή (ένας κεντρικός υπολογιστής διακρίνεται από ένα δίχτυ από το 3ο byte στον αριθμό - ένας καθαρός αριθμός πρέπει να έχει δύο οκτάδες και ένας αριθμός υποδοχής πρέπει να έχει τρεις οκτάδες.) Ο αριθμός και το όνομα πρέπει να διαχωριστούν με κενά (κενά ή καρτέλες). Το αρχείο /etc/atalk.names μπορεί να περιέχει κενές γραμμές ή γραμμές σχολίων (γραμμές που αρχίζουν με ένα #).

Οι διευθύνσεις Appletalk εκτυπώνονται με τη μορφή:

net.host.port 144.1.209.2> icsd-net.112.220 office.2> icsd-net.112.220 jssmag.149.235> icsd-net.2

(Εάν το /etc/atalk.names δεν υπάρχει ή δεν περιέχει μια καταχώρηση για κάποιο κεντρικό αριθμό κεντρικού υπολογιστή / δικτύου, οι διευθύνσεις εκτυπώνονται σε αριθμητική μορφή.) Στο πρώτο παράδειγμα, η NBP (θύρα DDP 2) στο δίκτυο 144.1 ο κόμβος 209 στέλνει σε ό, τι ακούει στη θύρα 220 του net icsd κόμβου 112. Η δεύτερη γραμμή είναι η ίδια εκτός από το πλήρες όνομα του κόμβου προέλευσης είναι γνωστό (`office '). Η τρίτη γραμμή είναι μια αποστολή από τη θύρα 235 στον καθαρό jssmag κόμβο 149 για μετάδοση στη θύρα NBS icsd-net (σημειώστε ότι η διεύθυνση εκπομπής (255) υποδεικνύεται από ένα καθαρό όνομα χωρίς αριθμό κεντρικού υπολογιστή - γι 'αυτό είναι καλή ιδέα για να διατηρήσετε τα ονόματα κόμβων και τα καθαρά ονόματα διακριτά στο /etc/atalk.names).

Το πρωτόκολλο NBP (πρωτόκολλο δεσμεύσεως ονόματος) και τα πακέτα ATP (πρωτόκολλο συναλλαγής Appletalk) έχουν ερμηνεύσει τα περιεχόμενά τους. Άλλα πρωτόκολλα απλά καταργούν το όνομα του πρωτοκόλλου (ή τον αριθμό εάν δεν έχει καταχωρηθεί όνομα για το πρωτόκολλο) και το μέγεθος του πακέτου.

Τα πακέτα NBP διαμορφώνονται όπως τα ακόλουθα παραδείγματα:

icsd-net.112.220> jssmag.2: nbp-lkup 190: "=: LaserWriter @ *" jssmag.209.2> icsd-net.112.220: nbp-απάντηση 190: "RM1140: LaserWriter @ *" 250 techpit.2> -net.112.220: απάντηση nbp 190: "techpit: LaserWriter @ *" 186

Η πρώτη γραμμή είναι ένα αίτημα αναζήτησης ονόματος για laserwriters που αποστέλλονται από το net icsd host 112 και μεταδίδονται στο net jssmag. Το id nbp για την αναζήτηση είναι 190. Η δεύτερη γραμμή δείχνει μια απάντηση για αυτό το αίτημα (σημειώστε ότι έχει το ίδιο αναγνωριστικό) από τον κεντρικό υπολογιστή jssmag.209 λέγοντας ότι έχει έναν πόρο λέιζερ που ονομάζεται "RM1140" καταχωρημένος στη θύρα 250. Η τρίτη line είναι μια άλλη απάντηση στο ίδιο αίτημα, λέγοντας ότι ο τεχνικός υποδοχής έχει λέιζερ "techpit" καταχωρημένο στο λιμάνι 186.

Η μορφοποίηση πακέτων ATP αποδεικνύεται από το ακόλουθο παράδειγμα:

jssmag.209.165> helios.132: atp-req 12266 <0-7> 0xae030001 helios.132> jssmag.209.165: atp-resp 12266: 0 (512) 0xae040000 helios.132> jssmag.209.165: atp-resp 12266: 1 (512) 0xae040000 helios.132> jssmag.209.165: atp-resp 12266: 2 (512) 0xae040000 helios.132> jssmag.209.165: atp-resp 12266: 3 (512) 0xae040000 helios.132> jssmag.209.165: atp- resp. 12266: 4 (512) 0xae040000 helios.132> jssmag.209.165: atp-resp 12266: 5 (512) 0xae040000 helios.132> jssmag.209.165: atp-resp 12266: 6 (512) 0xae040000 helios.132> jssmag. 209.165: atp-resp * 12266: 7 (512) 0xae040000 jssmag.209.165> helios.132: atp-req 12266 <3,5> 0xae030001 helios.132> jssmag.209.165: atp-resp 12266: 3 (512) 0xae040000 helios .132> jssmag.209.165: atp-resp 12266: 5 (512) 0xae040000 jssmag.209.165> helios.132: atp-rel 12266 <0-7> 0xae030001 jssmag.209.133> helios.132: atp-req * 12267 <0 -7> 0xae030002

Το Jssmag.209 εκκινεί την ταυτότητα συναλλαγής 12266 με το helios του κεντρικού υπολογιστή ζητώντας έως και 8 πακέτα (`<0-7> '). Ο δεκαεξαδικός αριθμός στο τέλος της γραμμής είναι η τιμή του πεδίου 'userdata' στο αίτημα.

Ο Helios απαντά με πακέτα 8 512-byte. Το ': ψηφίο' μετά το id της συναλλαγής δίνει τον αριθμό ακολουθίας πακέτων στη συναλλαγή και ο αριθμός σε παρενθέσεις είναι η ποσότητα των δεδομένων στο πακέτο, εξαιρουμένης της κεφαλίδας atp. Το `* 'στο πακέτο 7 υποδεικνύει ότι έχει ρυθμιστεί το bit EOM.

Το Jssmag.209 τότε ζητάει να αναμεταδίδονται τα πακέτα 3 & 5. Ο Helios τους στέλνει στη συνέχεια το jssmag.209 απελευθερώνει τη συναλλαγή. Τέλος, το jssmag.209 εκκινεί το επόμενο αίτημα. Το '*' στο αίτημα υποδηλώνει ότι το XO (`ακριβώς μία φορά ') δεν έχει οριστεί.

Κατακερματισμός IP

Τα κατατετμημένα δελτία δεδομένων Internet εκτυπώνονται ως

( αναγνωριστικό fragment : μέγεθος @ offset +) ( αναγνωριστικό fragment : μέγεθος @ offset )

(Η πρώτη μορφή υποδεικνύει ότι υπάρχουν περισσότερα θραύσματα, ενώ το δεύτερο δείχνει ότι πρόκειται για το τελευταίο κομμάτι.)

Id είναι το αναγνωριστικό θραύσματος. Το μέγεθος είναι το μέγεθος του θραύσματος (σε bytes), εξαιρουμένης της κεφαλίδας IP. Η αντιστάθμιση είναι αυτό το κομμάτι αντισταθμίζεται (σε ​​bytes) στο αρχικό πακέτο δεδομένων.

Οι πληροφορίες θραυσμάτων εξάγονται για κάθε θραύσμα. Το πρώτο απόσπασμα περιέχει την κεφαλίδα πρωτοκόλλου υψηλότερου επιπέδου και η πληροφορία frag εκτυπώνεται μετά τις πληροφορίες πρωτοκόλλου. Τα θραύσματα μετά την πρώτη δεν περιέχουν κεφαλίδα πρωτοκόλλου υψηλότερου επιπέδου και εκτυπώνονται οι πληροφορίες frag μετά τις διευθύνσεις προέλευσης και προορισμού. Για παράδειγμα, εδώ είναι μέρος ενός ftp από arizona.edu στο lbl-rtsg.arpa μέσω μιας σύνδεσης CSNET που δεν φαίνεται να χειρίζεται 576 byte datagrams:

arizona.ftp-δεδομένα> rtsg.1170:. 1024: 1332 (308) ack 1 νίκη 4096 (frag 595a: 328 @ 0 +) arizona> rtsg: (frag 595a: 204 @ 328) rtsg.1170> arizona.ftp-data:. ack 1536 κερδίζει 2560

Υπάρχουν δύο πράγματα που πρέπει να σημειώσετε εδώ: Πρώτον, οι διευθύνσεις στην 2η γραμμή δεν περιλαμβάνουν αριθμούς θυρών. Αυτό οφείλεται στο γεγονός ότι οι πληροφορίες πρωτοκόλλου TCP είναι όλες στο πρώτο κομμάτι και δεν έχουμε ιδέα τι είναι οι αριθμοί θυρών ή ακολουθιών κατά την εκτύπωση των τελευταίων θραυσμάτων. Δεύτερον, οι πληροφορίες της ακολουθίας tcp στην πρώτη γραμμή εκτυπώνονται σαν να υπήρχαν 308 bytes δεδομένων χρήστη όταν στην πραγματικότητα υπάρχουν 512 byte (308 στο πρώτο frag και 204 στο δεύτερο). Αν ψάχνετε για τρύπες στο χώρο της ακολουθίας ή προσπαθείτε να ταιριάξετε τα πακέτα με τα πακέτα, αυτό μπορεί να σας ξεγελάσει.

Ένα πακέτο με την IP δεν αποσπάται σημαία σημειώνεται με ένα τελικό (DF) .

Χρονοδιακόπτες

Από προεπιλογή, όλες οι γραμμές εξόδου ακολουθούν μια χρονική σήμανση. Η χρονική σήμανση είναι η τρέχουσα ώρα ρολογιού στη φόρμα

hh: mm: ss.frac

και είναι τόσο ακριβής όσο το ρολόι του πυρήνα. Η χρονική σήμανση αντικατοπτρίζει την ώρα που ο πυρήνας είδε για πρώτη φορά το πακέτο. Δεν γίνεται προσπάθεια να ληφθεί υπόψη η χρονική υστέρηση μεταξύ του χρονικού διαστήματος κατά το οποίο η διασύνδεση ethernet αφαιρούσε το πακέτο από το καλώδιο και όταν ο πυρήνας συντηρούσε τη διακοπή του «νέου πακέτου».

ΔΕΙΤΕ ΕΠΙΣΗΣ

κυκλοφορία (1C), νιτ (4Ρ), bpf (4), pcap (3)

Σημαντικό: Χρησιμοποιήστε την εντολή man ( % man ) για να δείτε πώς χρησιμοποιείται μια εντολή στον υπολογιστή σας.