Skip to main content

Tcpdump: דוגמאות, אפשרויות ועוד

Network Troubleshooting using PING, TRACERT, IPCONFIG, NSLOOKUP COMMANDS (יוני 2026)

Network Troubleshooting using PING, TRACERT, IPCONFIG, NSLOOKUP COMMANDS (יוני 2026)
Anonim

Tcpdump היא פקודה המשמשת במערכות הפעלה שונות של Linux (OS) שאוספת חבילות TCP / IP העוברות באמצעות מתאם רשת. בדומה כלי המריח מנות, tcpdump לא יכול רק לנתח את תעבורת הרשת, אלא גם לשמור אותו לקובץ.

שלא כמו פקודות מסוימות המסופקות על ידי מערכת ההפעלה כברירת מחדל, אתה עלול למצוא כי אתה לא יכול להשתמש tcpdump כי זה לא מותקן. כדי להתקין tcpdump, לבצע apt-get להתקין tcpdump או yum להתקין tcpdump - -, בהתאם למערכת ההפעלה שלך.

איך עובד Tcpdump

Tcpdump מדפיס את הכותרות של מנות על ממשק רשת התואמות את בוליאני ביטוי . זה יכול גם להיות לרוץ עם-W דגל, אשר גורם לו לשמור את נתוני מנות לקובץ לניתוח מאוחר יותר, ו / או עם-r דגל, אשר גורם לו לקרוא מתוך קובץ מנות שנשמרו ולא לקרוא מנות מממשק רשת. בכל המקרים, רק מנות שמתאימות ביטוי יעובדו על ידי tcpdump .

Tcpdump יהיה, אם לא לרוץ עם דגל, המשך לכידת מנות עד שהוא מופרע על ידי אות SIGINT (שנוצר, לדוגמה, על ידי הקלדת תו ההפרעה שלך, בדרך כלל Ctrl + C) או אות SIGTERM (שנוצר בדרך כלל עםלהרוג(1); אם לרוץ עם דגל, זה יהיה ללכוד מנות עד שהוא נקטע על ידי אות SIGINT או SIGTERM או מספר מסוים של מנות עובדו.

המתגים שהוזכרו לעיל מוסברים בפירוט בהמשך המאמר.

מתי tcpdump מסיים מנות לכידה, הוא ידווח על סעיפים של:

  • מנות "שהתקבלו על ידי מסנן."
    • המשמעות של זה תלוי במערכת ההפעלה שבה אתה מפעיל tcpdump , ואולי על האופן שבו מערכת ההפעלה הוגדרה. אם מסנן צוין בשורת הפקודה, על כמה מערכות הפעלה הוא סופר מנות ללא קשר אם הם היו תואמים את הביטוי מסנן, ועל אחרים הוא מונה רק מנות שהיו בהתאמה הביטוי מסנן עובדו על ידי tcpdump.
  • מנות "שנפלו בקרנל".
    • זה מספר מנות שנשרו, בשל חוסר שטח חיץ, על ידי מנגנון ללכוד מנות במערכת ההפעלה שבו tcpdump פועל, אם מערכת ההפעלה מדווחת על מידע זה לאפליקציות. אם לא, הוא ידווח בתור 0.

בפלטפורמות התומכות באות SIGINFO, כגון רוב ה- BSD (הפצת התוכנה של ברקלי), היא תדווח על ספירות אלה כאשר היא מקבלת אות SIGINFO (שנוצר, לדוגמה, על ידי הקלדת תו "סטטוס", בדרך כלל Ctrl + T) ותמשיך ללכוד מנות.

תאימות Tcpdump

קריאת מנות מממשק רשת עם הפקודה tcpdump עשויה לדרוש שיש לך הרשאות מיוחדות ( קריאה קובץ מנות שנשמר אינו מחייב הרשאות כאלה):

  • SunOS 3.x או 4.x עם NIT או BPF: עליך להיות בעל גישה לקריאה / dev / nit או dev / bpf * .
  • סולאריס עם DLPI: עליך לקבל גישה לקריאה / כתיבה להתקן פסאודו של הרשת, כמו / dev / le . על לפחות כמה גירסאות של Solaris, עם זאת, זה לא מספיק כדי לאפשר tcpdump ללכוד במצב מופקר; על גרסאות אלה של Solaris, עליך להיות שורש, או tcpdump חייב להיות מותקן סטואיד לשורש, כדי ללכוד במצב מופקר. שים לב, על רבים (אולי כל) ממשקים, אם אתה לא ללכוד במצב מופקר, לא תראה את כל מנות היוצאות, ולכן ללכוד לא נעשה במצב מופקר לא יכול להיות שימושי מאוד.
  • HP-UX עם DLPI: אתה חייב להיות שורש או tcpdump חייב להיות מותקן סטואיד לשורש.
  • IRIX עם חטטנות: אתה חייב להיות שורש או tcpdump חייב להיות מותקן סטואיד לשורש.
  • לינוקס: אתה חייב להיות שורש או tcpdump חייב להיות מותקן סטואיד לשורש.
  • ו - UNIX דיגיטלי / Tru64: כל משתמש רשאי ללכוד את תנועת הרשת באמצעות tcpdump . עם זאת, אף משתמש (אפילו לא משתמש-על) יכול ללכוד במצב מופקר בממשק, אלא אם המשתמש העל-אופני הפעיל את הפעולה במצב מופקר באותו ממשק. pfconfig (8), ולא משתמש (אפילו לא משתמש סופר) יכול ללכוד תעבורת שידור ליעד אחד שהתקבלו על ידי המכשיר או על ידי המכשיר על ממשק, אלא אם המשתמש סופר אפשרה להעתיק את כל מצב במצב על ממשק זה pfconfig , לכן שימושי ללכוד מנות על ממשק כנראה דורש כי מצב מופקר או מצב להעתיק כל מצב, או שני מצבי פעולה, להיות מופעל על ממשק זה.
  • BSD: עליך להיות בעל גישה לקריאה / dev / bpf * .

תחביר פיקוד Tcpdump

כמו כל פקודות המחשב, הפקודה tcpdump פועלת כראוי רק אם התחביר נכון:

tcpdump -adflnNOpqRStuvxX לספור

-C גודל הקובץ -F קובץ

-אני ממשק -M מודול -r קובץ

- s snaplen -T הקלד -U משתמש -W קובץ

-E אלגו: סוד ביטוי

אפשרויות פקודה Tcpdump

אלה הן כל האפשרויות שבהן ניתן להשתמש בפקודה tcpdump:

  • - א: ניסיון להמיר כתובות רשת שידור לשמות.
  • : יציאה לאחר קבלת לספור מנות.
  • -C: לפני כתיבת מנה גולמית ל- savefile, בדוק אם הקובץ גדול כעת גודל הקובץ ו, אם כן, לסגור את savefile הנוכחי ולפתוח אחד חדש.Savefile לאחר השם הראשון יהיה שם שצוין עם-W דגל, עם מספר אחרי זה, מתחיל ב 2 וממשיך כלפי מעלה. היחידות של גודל הקובץ הם מיליוני בתים (1,000,000 בתים, לא 1,048,576 בתים).
  • ד: לזרוק את קוד הידור תואם קוד בצורה אנושית קריא כדי פלט סטנדרטי לעצור.
  • -dd: קוד Dump התאמת קוד כמוג תוכנית שבר.
  • -ddd: Dump התאמת קוד המספרים כמו מספרים עשרוניים (שקודם עם ספירה).
  • : הדפס את הכותרת ברמת הקישור בכל שורה של dump.
  • -E: להשתמש אלגו: סוד עבור פענוח מנות IPSec ESP. אלגוריתמים עשויים להיותdes-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc, אואף אחד. ברירת המחדל היאdes-cbc. היכולת לפענח מנות קיים רק אם tcpdump נערך עם הצפנה מופעלת. סוד טקסט ASCII עבור המפתח הסודי ESP. אנחנו לא יכולים לקחת ערך בינארי שרירותי ברגע זה. האפשרות מניחה RFC2406 ESP, לא RFC1827 ESP. האפשרות היא רק למטרות איתור באגים, והשימוש באפשרות זו עם מפתח "סודי" באמת אינו מעודכן. על ידי הצגת מפתח סודי IPsec על שורת הפקודה אתה עושה את זה גלוי לאחרים, דרך ps (1) ועוד.
  • -f: הדפס כתובות "זרות" באינטרנט באופן מספרי ולא באופן סמלי (אפשרות זו נועדה לעקוף נזק מוחי חמור בשרת ה- Yp של Sun - בדרך כלל זה תלוי לתמיד בתרגום מספרי אינטרנט לא-לוקאליים).
  • -F: להשתמש קובץ כמו קלט עבור הביטוי מסנן. ביטוי נוסף שניתן בשורת הפקודה מתעלם.
  • -אני: תקשיב ממשק . אם לא צוין, tcpdump חיפוש ברשימת הממשקים של המערכת עבור הממשק הממוספר, המוגדר למעלה (ללא לולאבק). הקשרים נשברים על ידי בחירת ההתאמה המוקדמת ביותר. על מערכות לינוקס עם 2.2 או מאוחר יותר גרעינים, א ממשק ניתן להשתמש בויכוח של "כל" כדי ללכוד מנות מכל הממשקים. שים לב כי לוכדת על "כל" "המכשיר לא ייעשה במצב מופקר.
  • -L: הפוך את קו stdout שנאגרו. שימושי אם אתה רוצה לראות את הנתונים בעת לכידת אותו. לדוגמה, "tcpdump -l tee dat" או "tcpdump -l> dat & tail-f dat".
  • -M: טען הגדרות מודול SMI MIB מקובץ מודול . ניתן להשתמש באפשרות זו מספר פעמים כדי לטעון מספר מודולי MIB tcpdump .
  • -n: אל תמיר כתובות מארח לשמות. זה יכול לשמש כדי למנוע חיפושי DNS.
  • -nn: אל תעביר מספרי פרוטוקול ומספרי טלפון וכו 'לשמות.
  • -N: אל תדפיס שם תחום ההסמכה של שמות המארח. לדוגמה, אם אתה נותן את הדגל הזה, אם כך tcpdump תדפיס "nic" במקום "nic.ddn.mil".
  • -או: אל תפעיל את כלי האופטימיזציה של קוד תואם. זה שימושי רק אם אתה חושד באג האופטימיזציה.
  • -p: לא לשים את הממשק למצב מופקר. שים לב שהממשק עשוי להיות במצב מופקע מסיבה אחרת; לפיכך, '-p' לא יכול לשמש כקיצור עבור 'אתר מארח {local-hw-addr} או אתר שידור'.
  • -q: פלט מהיר (שקט). הדפס פחות מידע על פרוטוקול, לכן קווי הפלט קצרים יותר.
  • -R: נניח ESP / AH מנות להיות מבוסס על מפרט ישן: RFC1825 ל RFC1829. אם צוין, tcpdump לא תדפיס שדה מניעת שידור חוזר. מאחר שאין שדה גרסאות פרוטוקול במפרט ESP / AH, tcpdump לא יכול להסיק את הגירסה של פרוטוקול ESP / AH.
  • -r: לקרוא מנות מ קובץ (אשר נוצרה עם אפשרות -W). קלט רגיל משמש אם קובץ הוא "-".
  • -S: הדפס מספרים מוחלטים ולא רצופים של רצף TCP.
  • - s: Snarf snaplen בייטים של נתונים מכל מנה ולא ברירת המחדל של 68; עם ה- NOS של SunOS, המינימום הוא למעשה 96. שישים ושמונה בתים מתאימים ל- IP, ICMP, TCP ו- UDP, אך הם עשויים לחתוך מידע פרוטוקול משרת שם ומנות NFS (ראה להלן). מנות מנותקות בגלל תצלום מצומצם מצוין בפלט עם "| פרוטו '', איפה פרוטו הוא השם של רמת הפרוטוקול שבו קוצצו. שים לב שצילום תמונות גדול יותר מגדיל את משך הזמן הדרוש לעיבוד מנות, ובאופן יעיל, מקטין את כמות החציצה במאגר. הדבר עלול לגרום לאיבוד מנות. אתה צריך להגביל snaplen למספר הקטן ביותר אשר יהיה ללכוד את המידע פרוטוקול אתה מעוניין. הגדרה snaplen 0 פירושו שימוש באורך הנדרש כדי לתפוס מנות שלמות.
  • -T: חבילות כוח שנבחרו על ידי " ביטוי "כדי לפרש את שצוין הקלד . סוגים ידועים כיוםcnfp (פרוטוקול Cisco NetFlow),rpc (קריאה לפרוצדורה מרוחקת),rtp (פרוטוקול יישומים בזמן אמת),rtcp (בזמן אמת יישומים פרוטוקול בקרת),snmp (Simple Network Management Protocol),מע"מ (כלי אודיו חזותית), וwb (מועצת לבן מבוזרת).
  • -t: לא הדפס חותמת על כל שורה.
  • -tt: הדפס חותמת לא מעוצבת על כל קו dump.
  • -U: משחרר הרשאות שורש ומשנה את מזהה המשתמש ל משתמש ואת הקבוצה מזהה לקבוצה העיקרית של משתמש .
  • הערה: Red Hat לינוקס באופן אוטומטי טיפות הרשאות המשתמש "pcap" אם שום דבר אחר לא צוין.
  • : הדפס דלתא (במיקרו שניות) בין השורה הנוכחית לבין השורה הקודמת על כל קו dump.
  • -tt: הדפס חותמת בתבנית ברירת המחדל שהוחלפה על ידי כל תאריך.
  • -u: הדפסה ללא קידוד NFS מטפל.
  • -v: (מעט יותר) פלט verbose. לדוגמה, הזמן לחיות, זיהוי, אורך כולל ואפשרויות בחבילת IP מודפסים. גם מאפשר בדיקות נוספות שלמות מנות כגון אימות IP ו- ICMP בדיקת הכותרת.
  • -vv: אפילו יותר verbose פלט. לדוגמה, שדות נוספים מודפסים ממנות תגובה של NFS, וחבילות SMB פועלות במלואן.
  • -vvv: אפילו יותר verbose פלט. לדוגמה, TelnetSBSE האפשרויות מודפסות במלואן. עם -איקס אפשרויות Telnet מודפסים משושה גם כן.
  • -W: לכתוב את מנות גלם קובץ במקום לנתח ולהדפיס אותם. מאוחר יותר הם יכולים להיות מודפסים עם אופציה -r. פלט סטנדרטי משמש אם קובץ הוא "-".
  • -איקס: הדפס כל מנה (פחות כותרת כותרת הקישור) שלה. קטן יותר של כל החבילה או snaplen בתים יודפסו. שים לב שמדובר בחבילה של שכבת הקישורים כולה, ולכן עבור שכבות הקישור (למשל, Ethernet), הריסות בתים יודפסו גם כאשר מנות השכבה העליונה יהיו קצרות יותר מהריפוד הנדרש.
  • -איקס: בעת הדפסת hex, הדפס ascii מדי. כך אם-איקס הוא גם מוגדר, מנות מודפס hex / ascii. זה מאוד נוח לניתוח פרוטוקולים חדשים. אפילו אם-איקס לא מוגדר גם, כמה חלקים של מנות מסוימות עשוי להיות מודפס hex / ascii.
  • ביטוי : בחירת החבילות שייזרקו. אם לא ביטוי ניתנת, כל מנות ברשת יהיה זרק. אחרת, רק מנות עבורו ביטוי הוא 'נכון' יושלך. ה ביטוי מורכב מאחד או יותר פרימיטיבים. פרימיטיבים בדרך כלל מורכב id (שם או מספר) שקדם לו אחד או יותר. ישנם שלושה סוגים שונים של Qualifier:
  • הקלד : Qualifiers לומר איזה סוג של שם מזהה או מספר מתייחס. סוגים אפשריים הםמארח, נטו, ונמללדוגמה, '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' (כלומר, פרוטוקולי נקודה לנקודה כגון החלקה) נכנס ו יוצא ניתן להשתמש בקורסים כדי לציין את הכיוון הרצוי.
  • פרוטו : המוסמכים להגביל את ההתאמה לפרוטוקול מסוים. פרוטו אפשריים הם: אתר, fddi, tr, IP, ip6, arp, rarp, decnet, tcp, וudpלדוגמה, 'אתר src foo', 'arp net 128.3', 'יציאת tcp 21'. אם אין שום פרוטו Qualifier, כל הפרוטוקולים עולה בקנה אחד עם סוג הם הניחו. לדוגמה, 'src foo' פירושו '(IP או arp או rarp)' 'src foo' (למעט האחרון אינו תחביר חוקי), 'בר נטו' פירושו '(IP או arp או rarp)' ו 'יציאה 53' ('tcp או udp) 53'.
    • 'fddi' הוא בעצם כינוי 'אתר'; המנתח מטפל בהם באופן זהה כמשמעותו "רמת קישור הנתונים המשמשת בממשק הרשת שצוין". כותרות FDDI מכילות כתובות Ethernet דמויי מקור וכתובות יעד, ולרוב מכילות סוגי מנות מסוג Ethernet, כך שניתן לסנן בשדות FDDI אלה כמו בשדות ה- Ethernet המקבילים.כותרות FDDI מכילות גם שדות אחרים, אך לא ניתן לנקוב בשמות מפורשים בביטוי מסנן.
    • באופן דומה, 'tr' הוא כינוי עבור 'אתר'; הצהרות הפיסקה הקודמת על כותרות FDDI חלות גם על כותרות Token Ring.

בנוסף לאמור לעיל, יש כמה מילות מפתח "פרימיטיביות" מיוחדות שאינן עומדות בדפוס:שער, שידור, פחות, גדול יותר, ו אריתמטי ביטויים. כל אלה מתוארים להלן.

ביטויים סינון מורכבים יותר בנויים באמצעות המיליםו, או, ולא כדי לשלב פרימיטיבים - לדוגמה, "host foo ולא port FTP ולא port ftp-data". כדי לשמור את ההקלדה, ניתן להשמיט רשימות זכאות זהות (לדוגמה, "ftp port tcp dst או ftp-data או domain" זהה בדיוק ל "ftp port tcp dst או FTP tCP dst port-data port או tcp dst port domain").

אלה הם פרימיטיבים מותר עם הפקודה tcpdump:

  • מארח dst מארח
    • נכון אם שדה היעד IPv4 / v6 של החבילה הוא מארח , אשר עשוי להיות כתובת או שם.
  • src מארח מארח
    • אם שדה המקור IPv4 / v6 של החבילה הוא מארח .
  • מארח מארח
    • נכון אם גם את המקור IPv4 / V6 או היעד של המנה היא מארח . כל הביטויים המארחת לעיל ניתן מראש עם מילות המפתח,IP, arp, rarp, אוip6, כמו ב מארח מארח (אשר שווה ל אתר פרוטו IP ו מארח מארח).
    • אם מארח הוא שם עם כתובות IP מרובות, כל כתובת תיבדק עבור התאמה.
  • אתר dst ehost
    • נכון אם כתובת היעד Ethernet היא ehost . אהוסט יכול להיות שם מ / etc / ethers או מספר (ראה אתרים (3N) עבור פורמט מספרי).
  • אתר src ehost
    • נכון אם כתובת המקור Ethernet היא ehost .
  • אתר מארח ehost
    • נכון אם מקור ה- Ethernet או כתובת היעד הוא ehost .
  • שער מארח
    • נכון אם החבילה בשימוש מארח כשער (כלומר, מקור ה- Ethernet או כתובת היעד מארח אבל לא את מקור ה- IP ולא את היעד IP היה מארח ).
    • מארח חייב להיות שם והוא חייב להימצא הן על ידי מנגנוני הרזולוציה של שמות המארח-אל-IP של המכונה) קובץ שם המארח, DNS, ש"ח וכד '(והן באמצעות מנגנון הרזולוציה של שם המארח ל- Ethernet (/ etc / ethers, וכו ').
    • ביטוי מקביל הוא אתר מארח ehost ועכשיו מארח מארח , אשר ניתן להשתמש עם או שמות או מספרים מארח / ehost .) תחביר זה אינו פועל כרגע בתצורה המותאמת ל- IPv6.
  • נטו נטו
    • נכון אם כתובת היעד IPv4 / v6 של המנה יש מספר רשת של נטו . נטו יכול להיות שם מ / etc / רשתות או מספר רשת (ראה רשתות (4) לפרטים).
  • src נטו נטו
    • נכון אם כתובת IPv4 / V6 המקור של המנה יש מספר רשת של נטו .
  • נטו נטו
    • נכון אם גם את המקור IPv4 / V6 או כתובת היעד של המנה יש מספר רשת של נטו .
  • נטו נטו מסכה מסכת רשת
    • נכון אם כתובת ה- IP תואמת נטו עם הספציפי מסכת רשת . יכול להיות מוסמךsrc אוdst. שים לב כי תחביר זה אינו חוקי עבור IPv6 נטו .
  • נטו נטו / len
    • נכון אם כתובת IPv4 / v6 תואמת נטו עם מסכת רשת len רוחב רחב. יכול להיות מוסמךsrc אוdst.
  • יציאת DST נמל
    • נכון אם החבילה היא IP / tcp, ip / udp, ip6 / tcp, או ip6 / udp ויש לו ערך יציאת היעד של נמל . ה נמל יכול להיות מספר או שם בשימוש / etc / services (ראה tcp (4P) udp (4P)). אם נעשה שימוש בשם, יבדקו הן את מספר היציאה והן את הפרוטוקול. אם נעשה שימוש במספר או שם דו-משמעי, רק מספר היציאה מסומן (למשל,יציאת DST תדפיס הן תנועה TCP / כניסה ו udp / מי התנועה, ודומיין תדפיס גם tcp / תחום ו - UDP / תחום התחבורה).
  • יציאת src נמל
    • נכון אם החבילה יש ערך יציאת המקור של נמל .
  • נמל נמל
    • נכון אם גם המקור או יעד היציאה של המנה נמל . כל הביטויים הנמל לעיל ניתן מראש עם מילות המפתח,tcp אוudp, כמו ב יציאת src tcp נמל , אשר תואם רק מנות TCP אשר יציאת המקור נמל .
  • פחות אורך
    • נכון אם מנות יש אורך פחות או שווה ל אורך . זה שווה ל len <= אורך .
  • גדול יותר אורך
    • נכון אם מנות יש אורך גדול או שווה ל אורך . זה שווה ל len> = אורך .
  • פרוטוקול ip פרוטוקול
    • נכון אם המנה היא מנות IP (ראה IP (4P)) של סוג פרוטוקול פרוטוקול . פרוטוקול יכול להיות מספר או אחד השמות icmp , icmp6 , igmp , igrp , pim , אה , נות , vrrp , udp , או tcp . שים לב שהמזהים tcp , udp , ו icmp הם גם מילות מפתח חייב להימלט באמצעות קו נטוי הפוך (), אשר ב C- פגז. שים לב כי פרימיטיבי זה לא לרדוף את כותרת פרוטוקול שרשרת.
  • ip6 פרוטו פרוטוקול
    • נכון אם המנה היא מנות IPv6 של סוג פרוטוקול פרוטוקול . שים לב כי פרימיטיבי זה לא לרדוף את כותרת פרוטוקול שרשרת.
  • ip6 פרוטוקול
    • נכון אם המנה מנות IPv6, והוא מכיל כותרת פרוטוקול עם סוג פרוטוקול בכותרת פרוטוקול הכותרת שלה. לדוגמה, ipv6 פרוטוצ'ין 6 תואם כל מנות IPv6 עם כותרת פרוטוקול TCP בשרשרת פרוטוקול הכותרת. החבילה עשויה להכיל, לדוגמה, כותרת אימות, כותרת ניתוב או כותרת אופציה הופ-by-hop, בין כותרת IPv6 לבין כותרת TCP. קוד BPF הנפלטים על ידי פרימיטיבי זה מורכב ולא ניתן אופטימיזציה על ידי קוד האופטימיזציה BPF ב tcpdump , אז זה יכול להיות קצת איטי.
  • ip פרוטוקול
    • שווה ערך לip6 פרוטוקול , אבל זה עבור IPv4.
  • שידור האתר
    • נכון אם המנה היא מנות שידור Ethernet. ה אתר מילת המפתח היא אופציונלית.
  • שידור IP
    • נכון אם המנה היא מנות שידור IP. הוא בודק הן את כל אפסים ואת כל אלה מוסכמות שידור, ומסתכלת על מסיכת הרשת המקומית.
  • אתר שידור
    • נכון אם המנה היא מנות שידור לקבוצה Ethernet. ה אתר מילת המפתח היא אופציונלית. זה קצרנות עבור 'אתר 0 & 1! = 0'.
  • IP
    • נכון אם המנה היא מנות IP שידור.
  • ip6 שידור
    • נכון אם החבילה היא חבילת שידור IPv6.
  • אתר פרוטו פרוטוקול
    • נכון אם החבילה היא מסוג אתר פרוטוקול . פרוטוקול יכול להיות מספר או אחד השמות IP , ip6 , arp , rarp , שיחה , aarp , decnet , sca , La T , mopdl , moprc , iso , stp , ipx , או Netbeui . הערה מזהים אלה הם גם מילות מפתח ויש לברוח מהם דרך קו נטוי הפוך ().
    • במקרה של FDDI (למשל, 'פרוטוקול פרוטוקול fddi') ו Token טבעת (למשל,'פרוטוקול ar'), עבור רוב הפרוטוקולים האלה, זיהוי הפרוטוקול מגיע מכותרת 802.2 Logical Link Control (LLC), שבדרך כלל נמצאת בשכבות על גבי כותרת FDDI או Token Ring.
    • בעת סינון עבור רוב מזהי הפרוטוקולים על FDDI או Token Ring, tcpdump בודק רק את שדה מזהה הפרוטוקול של כותרת LLC בתבנית SNAP כביכול עם מזהה יחידה ארגונית (OUI) של 0x000000, עבור Ethernet במארז; זה לא לבדוק אם המנה היא בפורמט SNAP עם OUI של 0x000000.
    • היוצאים מן הכלל הם iso , שבו הוא בודק את ה- DSAP (יעד שירות נקודת גישה) ואת SSAP (מקור שירות נקודת גישה) השדות של כותרת LLC, stp ו Netbeui , שם הוא בודק את ה- DSAP של כותרת LLC, ו שיחה , שבו הוא מחפש מנות SNAP בפורמט עם OUI של 0x080007 ואת Appletalk etype.
    • במקרה של Ethernet, tcpdump בודק את השדה סוג Ethernet עבור רוב הפרוטוקולים; היוצאים מן הכלל הם iso , sap , ו Netbeui , אשר הוא בודק מסגרת 802.3 ולאחר מכן בודק את כותרת LLC כפי שהיא עושה עבור FDDI ו Token טבעת; שיחה , שם הוא בודק הן עבור Appletalk etype במסגרת Ethernet והן עבור מנות בפורמט SNAP כפי שהוא עושה עבור FDDI ו Token טבעת; aarp , שבו הוא בודק את Appletalk ARP etpe או במסגרת Ethernet או מסגרת 802.2 SNAP עם OUI של 0x000000; ו ipx , שם הוא בודק את IPX etype במסגרת Ethernet, את ה- IPX DSAP בכותרת LLC, את 802.3 ללא אנקפסולציה head LLC של IPX, ואת IPX etype במסגרת SNAP.
  • decnet src מארח
    • נכון אם כתובת המקור של DECNET היא מארח , אשר עשוי להיות כתובת של טופס "10.123", או שם מארח DECNET. DECNET שם המארח תמיכה זמין רק על מערכות Ultrix כי מוגדרים להפעיל DECNET.
  • decnet dst מארח
    • נכון אם כתובת היעד DECNET היא מארח .
  • מארח מארח
    • נכון אם מקור DECNET או כתובת היעד היא מארח .
  • IP, ip6, arp, rarp, שיחה, aarp, decnet, iso, stp, ipx, Netbeui
    • קיצורים עבור אתר פרוטו עמ ' איפה עמ ' הוא אחד הפרוטוקולים הנ"ל.
  • La T, moprc, mopdl
    • קיצורים עבור אתר פרוטו עמ ' איפה עמ ' הוא אחד הפרוטוקולים הנ"ל. שים לב ש tcpdump אינו יודע כיצד לנתח פרוטוקולים אלה.
  • vlan vlan_id
    • נכון אם המנה היא מנות IEEE 802.1Q VLAN. אם vlan_id מוגדר רק אם החבילה כוללת את המצוין vlan_id . שים לב כי הראשוןvlan מילת מפתח נתקלה ב - Windows XP ביטוי משנה את קיזוז פענוח עבור שאר ביטוי על ההנחה כי המנה היא מנות VLAN.
  • tcp, udp, icmp
    • קיצורים עבור פרוטוקול ip עמ ' או פרוטוקול ip6 עמ ' איפה עמ ' הוא אחד הפרוטוקולים הנ"ל.
  • פרוטו איסו פרוטוקול
    • נכון אם החבילה היא חבילת OSI של סוג פרוטוקול פרוטוקול . פרוטוקול יכול להיות מספר או אחד השמות clnp , esis , או J .
  • clnp, esis, J
    • קיצורים עבור פרוטו איסו עמ ' איפה עמ ' הוא אחד הפרוטוקולים הנ"ל. שים לב ש tcpdump עושה עבודה חלקית של ניתוח פרוטוקולים אלה.
  • expr
    • נכון אם יחזיק הקשר, היכן רלופ הוא אחד מתוך <, <,> =, <=, =, = = ו expr הוא ביטוי אריתמטי המורכב מקבועים שלמים (המתבטא בתחביר C סטנדרטי), אופרטורים בינאריים רגילים +, -, *, /, &, |, מפעיל אורך ואביזרי נתוני מנות מיוחדים. כדי לגשת לנתונים בתוך המנה, השתמש בתחביר הבא: פרוטו expr: גודל .

פרוטו אחד מאתר, fddi, tr, ppp, פליטת פה, קישור, IP, arp, rarp, tcp, udp, icmp, או ip6, ומציין את שכבת הפרוטוקול לפעולת האינדקס (אתר, fddi, tr, ppp, פליטת פה, וקישור כל מתייחסים לשכבת הקישור). שים לב ש tcp, udp , ושאר סוגי שכבת הפרוטוקולים העליונים חלים רק על IPv4, לא על IPv6 (הדבר ייקבע בעתיד). קיזוז בתים, יחסית לשכבת הפרוטוקול שצוינה, ניתן על ידי expr . גודל הוא אופציונלי ומציין את מספר הבתים בתחום העניין; זה יכול להיות אחד, שניים, או ארבעה, ואת ברירות מחדל אחד. מפעיל אורך, מסומן על ידי מילת המפתחlen, נותן את אורך החבילה.

לדוגמה, 'אתר 0 & 1! = 0'תופס את כל התנועה שידור. הביטוי 'ip 0 & 0xf! = 5'תופס את כל מנות IP עם אפשרויות. הביטוי 'ip 6: 2 & 0x1fff = 0"תופס רק נתונים לא מפולחים ושברי אפס של נתונים מקוטעים. בדיקה זו מוחלת במשתמע עלtcp וudp - מדד. לדוגמה, tcp 0 תמיד פירושו הבית הראשון של TCP כותרת , ואף פעם לא אומר את הבית הראשון של קטע מתערב.

מספר קיזוזים וערכי שדות עשויים לבוא לידי ביטוי כשמות ולא כערכים מספריים. השדות הבאים של כותרת פרוטוקול הכותרת זמינים: icmptype (שדה סוג ICMP),קוד (שדה קוד 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-tstamp, icmp-ireq, icmp-ireqreply, icmp-maskreq, icmp-maskreply.

ערכי שדות הדגל הבאים של TCP זמינים:tcp-fin, tcp-syn, tcp-rst, tcp- דחיפה, tcp- דחיפה, tcp-ack, tcp- דחיפות.

פרימיטיבים ניתן לשלב באמצעות כל אחד מהבאים:

  • קבוצה סוגריים של פרימיטיבים ומפעילים (סוגריים מיוחדים ל Shell ויש לברוח)
  • שלילה ('!'או'לא')
  • שרשור ('&&'או'ו')
  • חלופה ('||'או'או')

לשלילה יש קדימות גבוהה. לחילופין ולשרשור יש קדימות שווה וקשורים משמאל לימין. שים לב מפורשתו אסימונים, לא צירוף, נדרשים לשרשור.

אם מזהה מוצג ללא מילת מפתח, מניחים את מילת המפתח האחרונה. לדוגמה, לא מארח לעומת אס הוא קצר עבור לא מארח לעומת מארח לארח. עם זאת, זה לא צריך להיות מבולבל עם לא (מארח לעומת או אס).

ניתן להעביר את הארגומנטים של הביטוי אל tcpdump כמו גם טיעון יחיד או כמו טיעונים מרובים, מה שנוח יותר. בדרך כלל, אם הביטוי מכיל מטא-תווים של Shell, קל יותר להעביר אותו כארגומנט בודד. ארגומנטים מרובים מרוסקים עם רווחים לפני ניתוחם.

דוגמאות Tcpdump

tcpdump מארח יום ראשון

הפקודה tcpdump הנ"ל משמשת להדפסת כל החבילות המגיעות או היוצאות שקיעה.

tcpdump helios מארח ו (חם או אס )

דוגמה זו tcpdump מדפיסה את התנועה בין הליוס וגם חם או אס.

tcpdump ip המארח ולא helios

באפשרותך להשתמש בפקודה tcpdump זו כדי להדפיס את כל מנות ה- IP בין אס וכל מארח למעט הליוס.

tcpdump net ecb-ether

בדוגמה לעיל, tcpdump מדפיס את כל התנועה בין המארח המקומי המארח בברקלי.

tcpdump 'gateway snup ו- FTP port או נתוני FTP)'

זה הבא הפקודה tcpdump הפקודה משמש להדפיס את כל תעבורת ה- FTP דרך שער האינטרנט סנופ . שים לב כי הביטוי מצוטט כדי למנוע את הפגז מפרש שגוי בסוגריים.

tcpdump IP ולא נטו localnet

בדוגמה לעיל tcpdump, הפקודה מדפיסה את התנועה לא שמקורו ולא מיועד עבור המארחים המקומיים.

tcpdump 'tcp tcpflags & (tcp-syn | tcp-fin)! = 0 ולא src ו- dst net localnet '

בדוגמה לעיל של tcpdump, הפקודה משמשת להדפסת מנות ההתחלה והסיום (מנות ה- SYN ו- FIN) של כל TCP שיחה הכוללת מארח לא nonocal.

tcpdump 'gateway snup ו- ip 2: 2> 576'

הפקודה הנ"ל תדפיס מנות IP ארוכות יותר מ -576 בתים שנשלחו דרך השער סנופ.

tcpdump 'אתר 0 & 1 = 0 ו- ip 16> = 224'

הפקודה tcpdump שמופיעה לעיל מדפיסה מנות IP או מנות שידור לקבוצה שהיו לא שנשלח באמצעות שידור Ethernet או שידור לקבוצה.

tcpdump 'icmp icmptype = = icmp-echo ו- icmp icmptype = icmp-echoreply'

בדוגמה אחרונה זו של tcpdump, הפקודה מדפיסה את כל מנות ה- ICMP שאינן בקשות או תשובות הד (כלומר, לא חבילות ping).

פורמט פלט Tcpdump

התפוקה של tcpdump תלוי בפרוטוקול. להלן תיאור קצר ודוגמאות של רוב הפורמטים.

כותרת כותרות קישור. אם ניתנת האפשרות 'e', ​​כותרת רמת הקישור מודפסת. ברשתות Ethernet, כתובות המקור והיעד, הפרוטוקול ואורך המנות מודפסים.

ברשתות FDDI, האפשרות'e 'גורמת tcpdump כדי להדפיס את השדה 'בקרת מסגרת', את כתובות המקור והיעד ואורך המנות. (השדה 'שליטה על המסגרת' קובע את הפרשנות של שאר המנות, מנות רגילות (כגון אלה המכילות נתונים של IP) הן מנות 'סינכרוני', עם ערך עדיפות בין 0 ל -7: לדוגמה,async4'. מנות אלה מניחות שמכיל מנות 802.2 לוגי קישור בקרת (LLC); כותרת LLC מודפס אם הוא לא ערכת נתונים של ISO או מנות שנקרא SNAP.

ברשתות Token Token, האפשרות 'e' גורמת tcpdump כדי להדפיס את השדות 'בקרת גישה' ו- 'control control', את כתובות המקור והיעד ואורך המנות. כמו ברשתות FDDI, מנות משוערות להכיל מנות LLC. לא משנה אם האפשרות 'e' צוינה או לא, מידע ניתוב המקור מודפס עבור מנות מנותבות.

(N.B: התיאור הבא מניח היכרות עם אלגוריתם דחיסת SLIP המתואר ב- RFC-1144).

בקישורי SLIP, מודפס מחוון כיוון ("I" "נכנס", "O" "יוצא"), סוג מנות ומידע דחיסה. סוג המנות מודפס תחילה. שלושת הסוגים הם IP , utcp , ו ctcp . לא נדפס מידע נוסף על הקישור IP מנות. עבור מנות TCP, מזהה החיבור מודפס בעקבות הסוג. אם המנה נדחסת, הכותרת המודפסת שלה מודפסת. המקרים המיוחדים מודפסים כ* S + n ו* SA + n , איפה n הוא הסכום שבו מספר הרצף השתנה (או מספר הרצף ו- ack) השתנה. אם זה לא מקרה מיוחד, מודפסים אפס או יותר שינויים. שינוי מסומן על ידי U (מצביע דחוף), W (חלון), A (ack), S (מספר רצף), ואני (מזהה מנות), ואחריו דלתא (+ n או n) או ערך חדש (= n). לבסוף, כמות הנתונים בחבילה ואורך הכותרת הדחוס מודפסים.

לדוגמה, השורה הבאה מציגה חבילת TCP דחוסה יוצאת, עם מזהה חיבור מרומז; ack השתנה ב 6, את מספר הרצף על ידי 49, ואת מזהה מנות ב 6; יש 3 בתים של נתונים ו- 6 בתים של כותרת דחוסה:

O Ctcp * A + 6 S + 49 I + 6 3 (6)

Arp / מנות rarp. Arp / rarp output מציג את סוג הבקשה והארגומנטים שלה. הפורמט נועד להיות מובן מאליו. הנה מדגם קצר נלקח מתחילת "rlogin" מן המארח rtsg לארח csam :

arp who-has csam אומר rtsgתשובה ארס csam הוא ב- CSAM

השורה הראשונה אומרת כי rtsg שלח מנות ארפ מבקש כתובת Ethernet של האינטרנט csam המארח. Csam משיב עם כתובת Ethernet שלו (בדוגמה זו, כתובות Ethernet הם כובעים וכתובות אינטרנט במקרה הנמוך).

זה היה נראה פחות מיותר אם היינו עושים tcpdump -n :

arp who - יש 128.3.254.6 לספר 128.3.254.68תשובה ארפ 128.3.254.6 is-at 02: 07: 01: 00: 01: c4

אם היינו עושים tcpdump -e , העובדה שהחבילה הראשונה משודרת והשנייה היא נקודה לנקודה:

RTSG שידור 0806 64: Arp who-has csam לספר rtsgCSAM RTSG 0806 64: תשובה ars csam הוא ב- CSAM

עבור החבילה הראשונה זה אומר את כתובת המקור Ethernet הוא RTSG, היעד הוא כתובת שידור Ethernet, השדה הקלד הכלול hex 0806 (סוג ETHER_ARP), והאורך הכולל היה 64 בתים.

מנות TCP (N.B.: התיאור הבא מניח היכרות עם פרוטוקול TCP המתואר RFC-793. אם אתה לא מכיר את הפרוטוקול, לא תיאור זה ולא tcpdump יהיה לך הרבה שימוש) . הפורמט הכללי של קו פרוטוקול tcp הוא:

src> dst: דגלים נתונים- seqno חלון חלון דחוף אפשרויות

Src ו dst הן כתובות ה- IP והיציאות של המקור והיעד. דגלים הם שילוב של S (SYN), F (FIN), P (PUSH) או R (RST) או 'יחיד'. (ללא דגלים). נתונים- seqno מתאר את החלק של מרחב הרצף המכוסה בנתונים בחבילה זו (ראה דוגמה להלן). אק הוא מספר הרצף של הנתונים הבאים צפוי לכיוון השני על הקשר הזה. חלון הוא מספר בתים של שטח חיץ לקבל את הכיוון השני על חיבור זה. דחף מציין שיש נתונים "דחופים" בחבילה. אפשרויות הן אפשרויות tcp המצויות בסוגריים זוויתיים (למשל, ).

Src, dst, ו דגלים תמיד נוכחים. השדות האחרים תלויים בתוכן כותרת פרוטוקול ה- tcp של המנה והם מיוצרים רק אם הדבר מתאים.

הנה חלק הפתיחה של rlogin מהמארח rtsg לארח csam .

rsg.1023> csam.login: S 768512: 768512 (0) win 4096 csam.login> rtsg.1023: S 947648: 947648 (0) ack 768513 win 4096 rsg.1023> csam.login:. 1 win 4096rsg.1023> csam.login: P 1: 2 (1) ack 1 win 4096csam.login> rtsg.1023:. ack 2 win 4096rsg.1023> csam.login: P 2:21 (19) ack 1 win 4096csam.login> rtsg.1023: P 1: 2 (1) ack 21 win 4077csam.login> rtsg.1023: P 2: 3 (1) ack 21 win 4077 1csam.login> rtsg.1023: P 3: 4 (1) ack 21 win 4077 1

השורה הראשונה אומרת כי יציאת tcp 1023 ב- rtsg שלחה מנה ליציאה התחברות ב- csam. הS מציין כי SYN הדגל נקבע. מספר רצף המנות היה 768512 והוא כלל נתונים. (הסימון הוא 'הראשון: האחרון (nbytes)', כלומר מספרי רצף ראשון עד אך לא כולל אחרון אשר nbytes בייטים של נתוני משתמש "). לא היה שום ack backed-backed, חלון הקבלה הזמין היה 4096 בתים, והיתה אפשרות של מקס-מקס המבקשת mss של 1024 בתים.

Csam משיב עם מנות דומה למעט זה כולל ack piggybacked עבור SYT של rtsg. Rtsg ואז acss csam של SYN. ה '.' פירושו שלא נקבעו דגלים. המנה לא הכילה נתונים ולכן אין מספר רצף נתונים. שים לב כי מספר רצף ack הוא מספר שלם קטן (1). הפעם הראשונה tcpdump רואה tcp 'שיחה', הוא מדפיס את מספר הרצף מהחבילה. בחבילות הבאות של השיחה, מודפס ההבדל בין מספר הרצף הנוכחי של המנות לבין מספר הרצף הראשוני. משמעות הדבר היא כי מספרי רצף לאחר הראשון יכול להתפרש עמדות בייט יחסית זרם הנתונים של השיחה (עם הנתונים הראשון בתים כל כיוון להיות '1'). '-S' יהיה לעקוף את התכונה, ולגרום את מספרי רצף המקורי להיות פלט.

בשורה השישית, rtsg שולח csam 19 בתים של נתונים (בתים 2 עד 20 ב rtsg -> צד csam של השיחה). הדגל PUSH מוגדר בחבילה. על השורה השביעית, csam אומר שזה קיבל נתונים שנשלחו על ידי rtsg עד אבל לא כולל בתים 21. רוב המידע הזה הוא כנראה יושב במאגר שקע מאז חלון הקבלה של csam קיבל 19 בתים קטנים יותר. Csam גם שולח בית אחד של נתונים כדי rtsg זה מנות. בשורות השמינית והתשעית, csam שולח שני בתים של נתונים דחופים דחופים ל- rtsg.

אם התמונה היתה קטנה מספיק tcpdump לא ללכוד את כותרת TCP מלאה, זה מפרש כמו הרבה של הכותרת כפי שהוא יכול ואז דוחות "| tcp 'כדי לציין את השאר לא ניתן לפרש. אם הכותרת מכילה אפשרות מזויפת (אחת עם אורך קטן מדי או מעבר לסוף הכותרת), tcpdump מדווח כעל " רע opt '' ואינו מפרש אפשרויות נוספות (כיוון שאי אפשר לדעת היכן הן מתחילות). אם אורך הכותרת מציין אפשרויות קיימות, אבל אורך ה- IP של ה- IP אינו ארוך מספיק כדי שהאפשרויות אכן יהיו שם, tcpdump מדווח כעל " אורך רע ''.

לכידת מנות עם שילובי דגלים מסוימים. יש שמונה סיביות בקטע סיביות הבקרה של כותרת TCP:

CWR ECE | URG | ACK | PSH | RST | SYN | FIN

נניח שאנו רוצים לצפות בחבילות המשמשות ליצירת חיבור TCP. נזכיר כי TCP משתמש בפרוטוקול לחיצת יד תלת-כיוונית כאשר הוא מאתחל חיבור חדש; את רצף החיבור לגבי סיביות השליטה TCP הוא:

  1. המתקשר שולח SYN.
  2. הנמען מגיב עם SYN, ACK.
  3. המתקשר שולח ACK.

עכשיו אנחנו מעוניינים ללכוד מנות שיש להם רק את סיביות bit להגדיר (שלב 1). שים לב שאנחנו לא רוצים מנות משלב 2 (SYN-ACK), פשוט SYN הראשונית. מה שאנחנו צריכים הוא ביטוי מסנן נכון tcpdump .

זכור את המבנה של כותרת TCP ללא אפשרויות:

0 15 31-----------------------------------------------------------------| יציאת המקור יציאת יעד-----------------------------------------------------------------| מספר הרצף-----------------------------------------------------------------| מספר זיהוי-----------------------------------------------------------------| HL rsvd | C | E | U | A | P | R | S | F | גודל החלון-----------------------------------------------------------------| בדיקת TCP מצביע דחוף-----------------------------------------------------------------

כותרת TCP בדרך כלל מחזיקה 20 octets של נתונים, אלא אם כן האפשרויות קיימות. השורה הראשונה של הגרף מכילה octets 0-3, השורה השנייה מציגה octets 4-7, וכו '

החל לספור עם 0, סיביות השליטה TCP הרלוונטיים כלולים 13 octet:

0 7| 15| 23| 31----------------|---------------|---------------|----------------| HL rsvd | C | E | U | A | P | R | S | F | גודל החלון----------------|---------------|---------------|----------------| | 13 octet | |

בואו נסתכל מקרוב על octet לא. 13:

| | |---------------| | | | | | | | | | | | | P | R | S | F | |---------------| |7 5 3 0|

אלה הם סיביות השליטה TCP שבו אנו מעוניינים. יש לנו את המספרים bct זה octet מ 0 עד 7, מימין לשמאל, כך את ה- PSH קצת הוא קצת מספר 3, בעוד URG קצת הוא מספר 5.

נזכיר כי אנחנו רוצים ללכוד מנות רק עם SYN להגדיר. בואו נראה מה קורה 13 octet אם DCPagram TCP מגיע עם סיביות סיביות להגדיר בכותרת שלה:

| | | | | | | | | | | | P | R | S | F | |---------------| |0 0 0 0 0 0 1 0| |---------------| |7 6 5 4 3 2 1 0|

בהסתכלות על קטע סיביות הבקרה אנו רואים שרק סיבית 1 (SYN) נקבעת.

בהנחה שמספר ה- octet 13 הוא מספר שלם של 8 סיביות בסדר הבית של הרשת, הערך הבינארי של אוקטט זה הוא:

00000010

הייצוג העשרוני שלה הוא:

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

אנחנו כמעט סיימנו, כי עכשיו אנחנו יודעים שאם רק SYN מוגדר, הערך של 13 octet בכותרת TCP, כאשר לפרש כמו מספר שלם 8 חתום בסדר בתים ברשת, חייב להיות בדיוק 2.

מערכת יחסים זו יכולה לבוא לידי ביטוי

tcp 13 == 2

אנו יכולים להשתמש בביטוי זה כמסנן עבור tcpdump כדי לראות מנות שיש להם רק SYN להגדיר:

tcpdump -i xl0 tcp 13 == 2

הביטוי אומר "תן את 13th octet של TCP Datagram יש את הערך העשרוני 2," וזה בדיוק מה שאנחנו רוצים.

עכשיו, נניח שאנחנו צריכים ללכוד מנות SYN, אבל לא אכפת לנו אם ACK או כל TCP אחרים לשלוט קצת מוגדר באותו זמן. תראו מה קורה 13 oktet כאשר DATagram TCP עם SYN-ACK קבוצה מגיע:

| | | | | | | | | | | | P | R | S | F | |---------------| |0 0 0 1 0 0 1 0| |---------------| |7 6 5 4 3 2 1 0|

סיביות 1 ו 4 נקבעים כעת באוקט 13. הערך הבינארי של אוקטט 13 הוא:

00010010

אשר מתרגמת לעשרונית:

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

אנחנו לא יכולים פשוט להשתמש 'tcp 13 == 18' ב tcpdump הביטוי מסנן, כי זה היה לבחור רק מנות אלה יש להגדיר SYN-ACK, אבל לא אלה עם רק SYN מוגדר. זכור כי לא אכפת לנו אם ACK או כל סוג אחר של שליטה מוגדר כל עוד SYN מוגדר.

על מנת להשיג את המטרה שלנו, אנחנו צריכים לוגית את הערך הבינארי של אוקטט 13 עם ערך אחר כדי לשמר את סיביות קצת. אנו יודעים שאנו רוצים ש- SYN יוגדר בכל מקרה, לכן נהיה הגיוניים והערך ב- octet ה -13 עם הערך הבינארי של SYN:

00010010 SYN-ACK 00000010 SYN ו 00000010 (אנחנו רוצים SYN) ו 00000010 (אנחנו רוצים SYN) -------- -------- = 00000010 = 00000010

אנו רואים כי מבצע זה מספק את אותה תוצאה ללא קשר אם ACK או אחר TCP שליטה קצת מוגדר. הייצוג העשרוני של הערך AND, כמו גם את התוצאה של פעולה זו הוא 2 (בינארי 00000010), ולכן אנו יודעים כי עבור מנות עם SYN להגדיר את היחס הבא חייב להחזיק נכון:

((ערך אוקט 13) ו- (2)) == (2)

זה מצביע עלינו tcpdump הביטוי מסנן - -

tcpdump -i xl0 'tcp 13 & = =='

שים לב כי עליך להשתמש ציטוטים בודדים או קו נטוי הפוך בביטוי כדי להסתיר את התו המיוחס (AND) ("&") מהקליפה.

מנות UDP. פורמט UDP מודגם על ידי מנות זו rwho:

משחקים>

זה אומר כי הנמל מי על המארח actinide שלח דאטגרם udp לנמל מי על המארח שידור , כתובת השידור באינטרנט. החבילה הכילה 84 בתים של נתוני משתמש.

חלק משירותי UDP מזוהים (ממספר היציאה או מקור היציאה) וממידע הפרוטוקול ברמה גבוהה יותר - בפרט, בקשות שירות שמות מתחם (RFC-1034/1035) ו- Sun RPC (RFC-1050) ל- NFS.

UDP בקשות שרת שם (N.B.: התיאור הבא מבוסס על היכרות עם פרוטוקול שירות התחום המתואר ב- RFC-1035. אם אינך מכיר את הפרוטוקול, התיאור הבא אינו הגיוני).

בקשות לשרת שמות מעוצבות כך:

src> dst: id op? דגלים qtype qclass שם (len) h2opolo.1538> helios.domain: 3+ A? ucbvax.berkeley.edu. (37)

מארח h2opolo שאל את שרת התחנות הליוס עבור רשומה כתובת (qtype = A) המשויך לשם ucbvax.berkeley.edu. מזהה השאילתה היה '3'. ה - + מציין את רקורסיה הרצוי הדגל נקבע. אורך השאילתה היה 37 בתים, לא כולל כותרות פרוטוקול UDP ו- IP. פעולת השאילתה הייתה הפעולה הרגילה, שאילתא , ולכן השדה op הושמט. אם אופ היה כל דבר אחר, זה היה מודפס בין '3' ו '+'. באופן דומה, qclass היה אחד נורמלי, C_IN , והשמיט. כל שקלאס אחר היה מודפס מיד אחרי ה'א'.

כמה חריגות נבדקות ועשויות לגרום לשדות נוספים סגורים בסוגריים מרובעים: אם שאילתה מכילה תשובה, רשומות סמכות או סעיף רשומות נוספות, ancount , nscount , או arcount מודפסים כ ' n a ',' n ולא ' n au 'היכן n הוא הספירה המתאימה. אם נקבעו סיביות תגובה (AA, RA או rcode) או כל אחד מהחלקים 'חייב להיות אפס' נקבעים בבתים שתיים ושלוש, 'b2 & 3 = איקס ', היכן איקס הוא ערך 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)

בדוגמה הראשונה, הליוס מגיב לשאילתה 3 מתוך h2opolo עם שלושה רשומות תשובות, שלושה רשומות שרת שם, ושבעה רשומות נוספות. רשומת התשובות הראשונה היא סוג A (כתובת), והנתונים שלה הם כתובת אינטרנט 128.32.137.3. הגודל הכולל של התגובה היה 273 בתים, למעט כותרות UDP ו- IP. הקוד (Query) וקוד התגובה (NoError) הושמטו, וכך גם הכיתה (C_IN) של הרשומה A.

בדוגמה השנייה, הליוס מגיב לשאילתה 2 עם קוד תגובה של דומיין לא קיים (NXDomain) ללא תשובות, שרת שם אחד וללא הרשאות סמכות. '*' מציין כי תשובה סמכותית bit היה מוגדר. מאחר שלא היו תשובות, לא נדפסו סוג, סוג או נתונים.

דמויות דגל אחרות שעשויות להופיע הן '