פיקוד לינוקס - פיקוד לינוקס

שֵׁם

tcpdump - לזרוק תנועה ברשת

תַקצִיר

tcpdump [ -adeflnNOpqRStuvxX ] [ -c count ]

[ -C file_size ] [ -F file ]

[ -i ממשק ] [ -M מודול ] [ -r file ]

[ -s snaplen ] [ -T type ] [ -U User ] [ -ww file ]

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

תיאור

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

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

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

חבילות שהתקבלו על ידי מסנן '' (המשמעות של זה תלוי במערכת ההפעלה שבה אתה מפעיל tcpdump , ואולי על הדרך שבה מערכת ההפעלה הוגדרה - אם מסנן צוין בשורת הפקודה, על כמה מערכות הפעלה זה נחשב מנות ללא קשר לשאלה אם הם תואמים לביטוי המסנן, ובמערכות הפעלה אחרות הוא סופר רק מנות שהותאמו לביטוי המסנן ועובדו על ידי tcpdump );

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

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

קריאת מנות מממשק רשת עשויה לדרוש שיש לך הרשאות מיוחדות:

תחת SunOS 3.x או 4.x עם NIT או BPF:

אתה חייב לקרוא גישה ל / dev / nit או / dev / bpf * .

תחת Solaris עם DLPI:

עליך להיות בעל גישה לקריאה / כתיבה למכשיר הדומה לרשת, לדוגמה / dev / le . על לפחות כמה גרסאות של Solaris, עם זאת, זה לא מספיק כדי לאפשר tcpdump ללכוד במצב מופקר; על גרסאות אלה של Solaris, אתה חייב להיות שורש, או tcpdump חייב להיות מותקן סטואיד לשורש, כדי ללכוד במצב מופקר. שים לב, על רבים (אולי כל) ממשקים, אם אתה לא ללכוד במצב מופקר, לא תראה את כל מנות היוצאות, ולכן ללכוד לא נעשה במצב מופקר לא יכול להיות שימושי מאוד.

תחת HP-UX עם DLPI:

אתה חייב להיות שורש או tcpdump חייב להיות מותקן סטואיד לשורש.

תחת IRIX עם סנופ:

אתה חייב להיות שורש או tcpdump חייב להיות מותקן סטואיד לשורש.

תחת לינוקס:

אתה חייב להיות שורש או tcpdump חייב להיות מותקן סטואיד לשורש.

תחת Ultrix ו- UNIX דיגיטלי / Tru64 UNIX:

כל משתמש יכול ללכוד תעבורת רשת באמצעות tcpdump . עם זאת, אין משתמש (אפילו לא משתמש סופר) יכול ללכוד במצב מופקר על ממשק, אלא אם כן המשתמש העל אפשרה במצב מופקר במצב על ממשק זה באמצעות pfconfig (8), ואין משתמש (אפילו לא משתמש סופר ) יכול ללכוד תנועה ליעד בודד שהתקבלו על ידי או שנשלחו על ידי המכשיר על ממשק, אלא אם המשתמש סופר אפשרה להעתיק את כל מצב במצב על ממשק זה באמצעות pfconfig , כך שימושי ללכוד מנות על ממשק כנראה דורש גם במצב מופקר או להעתיק - מצב מצב פעולה, או שני מצבי פעולה, להיות מופעל על ממשק זה.

תחת BSD:

עליך לקרוא גישה ל- / dev / bpf * .

קריאת קובץ מנות שנשמר אינה דורשת הרשאות מיוחדות.

אפשרויות

נסה להמיר כתובות רשת ומשדרות לשמות.

צא לאחר קבלת מנות ספירה .

-C

לפני כתיבת מנה גולמית ל- savefile, בדוק אם הקובץ גדול כעת מקובץ file_size , ואם כן, סגור את הקובץ savefile הנוכחי ופתח קובץ חדש. Savefile לאחר savefile הראשון יהיה שם שצוין עם דגל, עם מספר אחרי זה, מתחיל ב 2 וממשיך כלפי מעלה. היחידות של file_size הן מיליוני בתים (1,000,000 בתים, לא 1,048,576 בתים).

ד

לזרוק את קוד הידור תואם קוד בצורה אנושית קריא כדי פלט סטנדרטי לעצור.

-dd

קוד Dump התאמת קוד כמו קטע C התוכנית.

-ddd

השליך קוד התאמת המנות כמספרים עשרוניים (שקודם לספור).

הדפס את הכותרת ברמת הקישור בכל שורה.

-E

השתמש algo: סוד לפענוח מנות 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). 68 בתים מתאימים ל- 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

הדפס חותמת בתבנית ברירת המחדל שהוחלפה על-ידי תאריך על כל שורה של dump.

-u

הדפס ללא קידוד NFS מטפל.

-v

(מעט יותר) פלט verbose. לדוגמה, הזמן לחיות, זיהוי, אורך כולל ואפשרויות בחבילת IP מודפסים. גם מאפשר בדיקות נוספות שלמות מנות כגון אימות IP ו- ICMP בדיקת הכותרת.

-vv

אפילו יותר פלט verbose. לדוגמה, שדות נוספים מודפסים ממנות תגובה של NFS, וחבילות SMB פועלות במלואן.

-vvv

אפילו יותר פלט verbose. לדוגמה, Telnet SB ... אפשרויות SE מודפסים במלואם. עם X- Telnet אפשרויות מודפסים hex גם כן.

-W

כתוב את מנות הגלם כדי קובץ ולא ניתוח והדפסה אותם. מאוחר יותר הם יכולים להיות מודפסים עם אופציה -r. פלט סטנדרטי משמש אם הקובץ הוא `` - ''.

-איקס

הדפס כל מנה (פחות כותרת כותרת הקישור) שלה. קטן יותר של כל מנות או snaplen בתים יודפסו. שים לב שזו החבילה כולה של שכבת הקישורים, לכן עבור שכבות הקישור שבלד (למשל Ethernet), בתים הריפוד יהיה גם מודפס כאשר מנות השכבה גבוהה קצר יותר הריפוד הנדרש.

-איקס

בעת הדפסת הקסדצימלי, הדפס גם את ascii. כך אם -x מוגדר גם, מנות מודפס hex / ascii. זה מאוד נוח לניתוח פרוטוקולים חדשים. גם אם -x אינו מוגדר גם, חלקים מסוימים של מנות מסוימות עשויים להיות מודפסים ב- hex / ascii.

ביטוי

בוחר אילו מנות יופלו. אם אין ביטוי , כל מנות ברשת יהיה זרק. אחרת, רק מנות אשר הביטוי הוא 'נכון' יושלכו.

הביטוי מורכב מפרימיטיב אחד או יותר . פרימיטיבים בדרך כלל מורכבים מזהה (שם או מספר) קודמת על ידי אחד או יותר qualifiers. ישנם שלושה סוגים שונים של Qualifier:

סוּג

המאשרים לומר איזה סוג של שם מזהה או מספר מתייחס. סוגים אפשריים הם המארח , נטו ואת היציאה . לדוגמה, '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' קישור שכבות (כלומר נקודה לנקודה פרוטוקולים כגון להחליק) את inbound ו יוצאת מוקדמים ניתן להשתמש כדי לציין את הכיוון הרצוי.

פרוטו

קטינים להגביל את ההתאמה לפרוטוקול מסוים. פרוטו אפשרי הם: אתר , fddi , tr , ip , ip6 , arp , rarp , decnet , tcp ו udp . לדוגמה, 'אתר src foo', 'arp net 128.3', 'יציאת tcp 21'. אם אין שום פרוטו Qualifier, כל הפרוטוקולים עולה בקנה אחד עם סוג הם הניחו. לדוגמה, "IP או arp או rarp") "בר נטו" פירושו 'בר IP' או 'ארפ' או 'rarp' ('s barc'). '(tcp או udp) יציאה 53'.

[`fddi` הוא בעצם כינוי 'אתר'; המנתח מטפל בהם באופן זהה כמשמעותו "רמת קישור הנתונים המשמשת בממשק הרשת שצוין". כותרות FDDI מכילות כתובות Ethernet דמויי מקור וכתובות יעד, ולרוב מכילות סוגי מנות מסוג Ethernet, כך שניתן לסנן בשדות FDDI אלה בדיוק כמו בשדות ה- Ethernet המקבילים. כותרות FDDI מכילות גם שדות אחרים, אך לא ניתן לנקוב בשמות מפורשים בביטוי מסנן.

באופן דומה, 'tr' הוא כינוי עבור אתר '; הצהרות הפיסקה הקודמת על כותרות FDDI חלות גם על כותרות Token Ring.]

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

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

פרימיטיבים מותרים הם:

מארח מארח dst

נכון אם שדה היעד IPv4 / v6 של המארחת הוא המארח , אשר עשוי להיות כתובת או שם.

מארח מארח

אם שדה המקור IPv4 / v6 של החבילה הוא המארח .

מארח המארח

נכון אם גם את המקור IPv4 / V6 או היעד של מנות הוא המארח . כל הביטויים המארחת לעיל ניתן מראש עם מילות מפתח, IP , arp , rarp , או ip6 כמו ב:

מארח מארח

אשר שווה ל:

אתר פרוטו \ IP מארח המארח

אם המארח הוא שם עם מספר כתובות IP, כל כתובת תיבדק עבור התאמה.

אתר dh ehost

נכון אם כתובת היעד Ethernet היא ehost . אהוסט עשוי להיות שם מ / etc / ethers או מספר (ראה אתרים (3N) עבור פורמט מספרי).

אתר

נכון אם כתובת המקור Ethernet היא ehost .

אתר מארח ehost

נכון אם גם המקור Ethernet או כתובת היעד הוא ehost .

המארח שער

נכון אם החבילה המשמשת המארח כשער. כלומר, המקור Ethernet או כתובת היעד היה המארח אבל לא את מקור ה- IP ולא את היעד IP היה המארח . המארח חייב להיות שם, והוא חייב להימצא הן על ידי מנגנוני רזולוציית כתובת ה- IP של המארח ל- IP (קובץ שם המארח, DNS, ש"ח וכו ') ועל ידי רזולוציית ה- host-to-Ethernet של המכונה מנגנון (/ etc / ethers, וכו '). (ביטוי מקביל הוא

אתר מארח ehost ולא מארח המארח

אשר ניתן להשתמש בהם עם שמות או מספרים עבור המארח / ehost .) תחביר זה לא עובד בשלב זה התצורה מאופשר IPv6 כרגע.

נטו נטו

נכון אם כתובת היעד IPv4 / v6 של המנה יש מספר רשת של נטו . נטו עשוי להיות שם מ / etc / רשתות או מספר רשת (ראה רשתות (4) לפרטים).

נטו נטו - -

נכון אם כתובת המקור IPv4 / V6 של החבילה יש מספר רשת של נטו .

נטו

נכון אם גם את המקור IPv4 / V6 או כתובת היעד של המנה יש מספר רשת של נטו .

מסכת רשת נטו

נכון אם כתובת ה- IP תואמת את הרשת עם מסכת הרשת הספציפית. ייתכן שיהיה מוסמך עם src או dst . שים לב כי תחביר זה אינו חוקי עבור רשת IPv6.

נטו נטו /

נכון אם כתובת IPv4 / v6 תואמת את הרשת עם סיביות net lask bets רחב. ייתכן שיהיה מוסמך עם src או dst .

יציאת dst

נכון אם החבילה היא IP / tcp, ip / udp, ip6 / tcp או ip6 / udp ויש לו ערך יציאת היעד של היציאה . היציאה יכולה להיות מספר או שם המשמש / etc / services (ראה tcp (4P) ו- udp (4P)). אם נעשה שימוש בשם, יבדקו הן את מספר היציאה והן את הפרוטוקול. אם מספר או שם מעורפל משמש, רק את מספר היציאה מסומנת (למשל, יציאת DST 513 ידפיס הן tcp / כניסה התנועה ו / או תנועה /, ואת תחום יציאת יהיה להדפיס גם tcp / תחום ו / או תחום התחבורה).

יציאת יציאת src

נכון אם החבילה יש ערך יציאת המקור של היציאה .

פורט יציאה

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

יציאת יציאת src tcp

אשר תואם רק מנות tcp אשר יציאת המקור הוא היציאה .

אורך פחות

נכון אם מנות יש אורך פחות או שווה אורך . זה שווה ל:

len <= אורך .

אורכו

נכון אם מנות יש אורך גדול או שווה אורך . זה שווה ל:

len> אורך = .

פרוטוקול פרוטוקול ip

נכון אם המנה היא מנות IP (ראה IP (4P)) של פרוטוקול סוג פרוטוקול . פרוטוקול יכול להיות מספר או אחד של שמות icmp , icmp6 , igmp , igrp , pim , אה , esp , vrrp , udp , או tcp . שים לב כי המזהים tcp , udp , ו- icmp הם גם מילות מפתח וחייבים להימלט דרך קו נטוי הפוך (\), שהוא \\ ב- C-shell. שים לב כי פרימיטיבי זה לא לרדוף את כותרת פרוטוקול שרשרת.

פרוטוקול פרוטוקול ip6

נכון אם המנה היא מנות IPv6 של פרוטוקול סוג פרוטוקול . שים לב כי פרימיטיבי זה לא לרדוף את כותרת פרוטוקול שרשרת.

פרוטוקול פרוטוקול -

נכון אם המנה מנות IPv6, והוא מכיל כותרת פרוטוקול עם פרוטוקול סוג בכותרת פרוטוקול הכותרת שלה. לדוגמה,

ip6 פרוטוצ'ין 6

תואם כל מנות IPv6 עם כותרת פרוטוקול TCP בשרשרת פרוטוקול הכותרת. החבילה עשויה להכיל, לדוגמה, כותרת אימות, כותרת ניתוב או כותרת אופציה הופ-by-hop, בין כותרת IPv6 לבין כותרת TCP. קוד BPF הנפלטים על ידי פרימיטיבי זה מורכב ולא ניתן אופטימיזציה על ידי קוד האופטימיזציה BPF ב tcpdump , אז זה יכול להיות איטי במקצת.

פרוטוקול פרוטוקול

שווה פרוטוקול ip6 פרוטוקול , אבל זה עבור IPv4.

שידור האתר

נכון אם המנה היא מנות שידור Ethernet. מילת המפתח אתר היא אופציונלית.

שידור IP

נכון אם המנה היא מנות שידור IP. הוא בודק הן את כל אפסים ואת כל אלה מוסכמות שידור, ומסתכלת על מסיכת הרשת המקומית.

אתר שידור

נכון אם המנה היא מנות Ethernet multicast. מילת המפתח אתר היא אופציונלית. זה קצרנות עבור ' אתר [0] & 1! = 0 '.

IP

נכון אם המנה היא מנות IP שידור.

ip6 שידור

נכון אם החבילה היא חבילת שידור IPv6.

פרוטוקול אתר פרוטו

נכון אם החבילה היא של פרוטוקול סוג האתר. פרוטוקול יכול להיות מספר אחד או את השמות IP , ip6 , arp , rarp , atalk , aarp , decnet , sca , lat , mopdl , moprc , ISO , stp , ipx או netbeui . הערה מזהים אלה הם גם מילות מפתח ויש לברוח מהם דרך קו נטוי הפוך (\).

[במקרה של FDDI (לדוגמה, ' ard פרוטוקול fddi ') ו Token טבעת (למשל, ' tr arp פרוטוקול '), עבור רוב הפרוטוקולים האלה, זיהוי פרוטוקול מגיע הכותרת 802.2 לוגית קישור בקרה (LLC), אשר הוא בדרך כלל שכבות על גבי כותרת FDDI או Token Ring.

בעת סינון עבור רוב מזהי הפרוטוקולים על FDDI או Token Ring, tcpdump בודק רק את שדה מזהה הפרוטוקול של כותרת LLC בתבנית SNAP כביכול עם מזהה יחידה ארגונית (OUI) של 0x000000, עבור Ethernet במארז; זה לא לבדוק אם המנה היא בפורמט SNAP עם OUI של 0x000000.

היוצאים מן הכלל הם iso , שעבורם הוא בודק את ה- DSAP (נקודת גישה לשירות יעד) ואת נקודת ה- SSAP (מקור שירות נקודת גישה) של כותרת LLC, stp ו- netbeui , שם הוא בודק את ה- DSAP של כותרת LLC ו- atalk , שם בודק חבילת SNAP בפורמט עם OUI של 0x080007 ואת Appletalk etype.

במקרה של Ethernet, tcpdump בודק את השדה מסוג Ethernet עבור מרבית הפרוטוקולים; היוצאים מן הכלל הם iso , sap ו- netbeui , שעבורם הוא בודק מסגרת 802.3 ולאחר מכן בודק את כותרת LLC כפי שהיא עושה עבור FDDI ו Token Ring, atalk , שם הוא בודק הן את סוג Appletalk במסגרת Ethernet והן עבור SNAP, כפי שהוא עושה עבור FDDI ו Token טבעת, aarp , שם הוא בודק את Appletalk ARP etpe או במסגרת Ethernet או מסגרת 802.2 SNAP עם OUI של 0x000000, ו ipx , שם הוא בודק את IPX etype in מסגרת Ethernet, ה- IPX של ה- IPX בכותרת LLC, 802.3 ללא encapsulation head LLC של IPX, ואת IPX etype במסגרת SNAP.]

מארח

נכון אם כתובת המקור של DECNET היא המארח , אשר עשויה להיות כתובת של הטופס `10.123 '', או שם מארח DECNET. [DECNET שם המארח תמיכה זמין רק על מערכות Ultrix כי מוגדרים להפעיל DECNET.]

dst מארח

נכון אם כתובת היעד של DECNET מתארחת.

מארח מארח

נכון אם גם מקור DECNET או כתובת היעד הוא המארח .

IP , ip6 , arp , rarp , atalk , aarp , decnet , ISO , stp , ipx , netbeui

קיצורים עבור:

אתר פרוטו p

כאשר p הוא אחד הפרוטוקולים הנ"ל.

lat , moprc , mopdl

קיצורים עבור:

אתר פרוטו p

כאשר p הוא אחד הפרוטוקולים הנ"ל. שים לב ש- tcpdump אינו יודע כעת כיצד לנתח פרוטוקולים אלה.

vlan [vlan_id]

נכון אם המנה היא מנות IEEE 802.1Q VLAN. אם [vlan_id] צוין, נכון רק בחבילה יש את vlan_id שצוין. שים לב כי מילת המפתח הראשונה vlan נתקל הביטוי משנה את פענוח קיזוז עבור שאר הביטוי על ההנחה כי המנה היא מנות VLAN.

tcp , udp , icmp

קיצורים עבור:

ip פרוטו או ip6 פרוטו p

כאשר p הוא אחד הפרוטוקולים הנ"ל.

פרוטוקול פרוטוקול iso

נכון אם החבילה היא חבילת OSI של פרוטוקול סוג פרוטוקול . פרוטוקול יכול להיות מספר או אחד של שמות clnp , esis , או isis .

clnp , esis , isis

קיצורים עבור:

iso פרוטו p

כאשר p הוא אחד הפרוטוקולים הנ"ל. שים לב 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), icmpcode (שדה קוד ICMP) ו- tcpflags (שדה דגלים של TCP).

ערכי השדה הבאים מסוג ICMP זמינים: icmp-echoreply , icmp-unreach , icmp-sourcequench , icmp-redirect , icmp -echo , icmp -echo , icmp -routeradvert , icmp-routersolicit , icmp-timxceed , icmp-paramprob , icmp-tstamp , icmp -testampreply , icmp -ireq , icmp -ireqreply , icmp-maskreq , icmp-maskreply .

ערכי השדה הבאים של TCP זמינים: tcp-fin , tcp-syn , tcp-rst , tcp-pushsh , tcp-pushh , tcp-ack , tcp-pushf .

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

קבוצה סוגריים של פרימיטיבים ומפעילים (סוגריים מיוחדים ל Shell ויש לברוח).

שלילה (' ! ' או ' לא ').

שרשור (' && ' או ' ו ').

חלופה (' | ' או ' או ').

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

אם מזהה מוצג ללא מילת מפתח, מניחים את מילת המפתח האחרונה. לדוגמה,

לא מארח לעומת אס

הוא קצר עבור

לא מארח לעומת מארח לארח

אשר לא צריך להיות מבולבל עם

לא (מארח לעומת או אס)

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

דוגמאות

כדי להדפיס את כל החבילות המגיעות או היוצאות מהשקיעה :

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

כדי להדפיס את התנועה בין הליוס או חם או אס :

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

כדי להדפיס את כל מנות ה- IP בין אס לכל מארח למעט helios :

tcpdump ip המארח ולא helios

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

tcpdump net ecb-ether

כדי להדפיס את כל תעבורת ה- FTP באמצעות שער האינטרנט snup : (שים לב כי הביטוי מצוטט כדי למנוע את הקליפה מ (mis-) לפרש את הסוגריים):

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

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

ip IP ולא נטו

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

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

כדי להדפיס מנות IP ארוכות יותר מ -576 בתים שנשלחו באמצעות snup gateway:

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

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

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

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

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

פורמט פלט

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

כותרת כותרות קישור

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

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

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

(NB: התיאור הבא מניח היכרות עם אלגוריתם דחיסת 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 arp תשובה csam הוא ב- CSAM

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

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

arp who-has 128.3.254.6 128.3.254.68 128.8.254.6 128.3.254.6 is-at 02: 07: 01: 00: 01: c4

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

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

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

חבילות TCP

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

הפורמט הכללי של קו פרוטוקול tcp הוא:

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

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

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

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

rsg.1023> csam.login: 768512: 768512 (0) לנצח 4096 csam.login> rtsg.1023: S 947648: 947648 (0) ack 768513 win 4096 rtsg.1023> csam. התחברות: . a 1 win 4096 rtsg.1023> csam.login: P 1: 2 (1) ack 1 win 4096 csam.login> rtsg.1023:. ack 2 win 4096 rtsg.1023> csam.login: P 2:21 (19) ack 1 win 4096 csam.login> rtsg.1023: P 1: 2 (1) ack 21 win 4077 csam.login> rtsg.1023: P 2: 3 (1) ack 21 win 4077 1 csam.login> rtsg.1023: P 3: 4 (1) ack 21 win 4077 1

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

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

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

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

לכידת מנות TCP עם שילובי דגלים מסוימים (SYN-ACK, URG-ACK וכו ')

יש 8 סיביות בקטע סיביות הבקרה של כותרת TCP:

CWR ECE | URG | ACK | PSH | RST | SYN | סְנַפִּיר

נניח שאנו רוצים לצפות בחבילות המשמשות ליצירת חיבור 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, השורה השנייה מציגה אוקטטים 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 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 0 | | --------------- | 7 6 5 4 3 2 1 0 |

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

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

00000010

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

7 + 1 * 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 octet כאשר DATagram TCP עם SYN-ACK קבוצה מגיע:

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

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


00010010

אשר מתרגם עשרוני

7 + 1 * 2 + 0 * 2 + 0 * 2 + 1 * 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:

00011010 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 מארח שלח datagram udp לנמל מי על השידור המארח, את כתובת השידור באינטרנט. החבילה הכילה 84 בתים של נתוני משתמש.

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

UDP שם בקשות שרת

(הערה: התיאור הבא מניח היכרות עם פרוטוקול Service Domain המתואר ב- 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 , והשמיט. כל שקלאס אחר היה מודפס מיד אחרי ה- A.

מספר חריגות נבדקות ויכולות לגרום לשדות נוספים סגורים בסוגריים מרובעים: אם שאילתה מכילה תשובה, רשומות הרשומות או מקטע רשומות נוספות, נקודות , nscount או arcount יודפסו כ - '[ n a]', [n ] 'או' [ a au] 'כאשר n הוא הספירה המתאימה. אם כל פיסות התגובה נקבעו (AA, RA או rcode) או כל אחד מהביטים 'חייב להיות אפס' נקבעים בבתים שתיים ושלוש, '[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)

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

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

דמויות דגל אחרות שעשויות להופיע הן '-' (recursion available, RA, not set) ו- `| ' (הודעה חתוכה, TC, קבוצה). אם הקטע 'שאלה' אינו מכיל ערך אחד, '[ n q]' מודפס.

שים לב בקשות שרת שם ותגובות נוטים להיות גדולים snaplen ברירת המחדל של 68 בתים לא יכול ללכוד מספיק של מנות להדפיס. השתמש ב - s כדי להגדיל את Snaplen אם אתה צריך לחקור ברצינות את שם השרת התנועה. ` 128 'עבד טוב בשבילי.

SMB / CIFS פענוח

tcpdump עכשיו כולל נרחב למדי SMB / CIFS / NBT פענוח עבור נתונים על UDP / 137, UDP / 138 ו TCP / 139. כמה פענוח פרימיטיבי של נתונים IPX ו- NetBEUI SMB נעשה גם.

כברירת מחדל פענוח מינימלי למדי נעשה, עם פענוח מפורט הרבה יותר לעשות אם -V משמש. להיות הזהיר כי עם -חבילה בודדת SMB עלול לקחת את הדף או יותר, אז רק להשתמש, אם אתה באמת רוצה את כל הפרטים gory.

אם אתה פענוח הפעלות SMB המכיל מחרוזות Unicode אז אולי כדאי להגדיר את משתנה הסביבה USE_UNICODE ל 1. תיקון תיקון אוטומטי כדי לזהות Unicode srings יהיה מוזמן.

לקבלת מידע על פורמטים של חבילות SMB ומה כל שדות te מתכוון לראות www.cifs.org או פאב / samba / specs / בספרייה באתר האהוב עליך samba.org המראה. מדבקות ה- SMB נכתבו על ידי אנדרו טרידל (tridge@samba.org).

בקשות NFS ותשובות

הבקשות והתשובות של Sun NFS (מערכת קבצים ברשת) הן:

src.xid> dst.nfs: len ops src.nfs> dst.xid: תשובות לסטטיסטיקה len op תוצאות sushi.6709> wrl.nfs: 112 readlink fh 21,24 / 10.73165 wrl.nfs> sushi.6709: תשובה בסדר 40 "/> בשורה הראשונה, סושי מארח שולח עסקה עם מזהה 6709 כדי wrl (שים לב כי המספר הבא המארח src הוא מזהה העסקה, לא את יציאת המקור). הבקשה היתה 112 בתים, למעט כותרות ה- UDP ו- IP. הניתוח היה קריאה (קריאה קישור סמלי) על ידית הקובץ ( fh ) 21,24 / 10.731657119. (אם יש לך מזל, כמו במקרה זה, את הקובץ יכול להיות מתפרש כמו מספר גדול, מספר מכשיר קטן, ואחריו מספר inode ומספר הדור.) תגובות רל 'אישור' עם תוכן הקישור.

בשורה השלישית, סושי שואל wrl כדי לחפש את השם ` xcolors 'בספריית הקובץ 9,74 / 4096.6878. שים לב שהנתונים המודפסים תלויים בסוג הפעולה. הפורמט נועד להיות הסבר עצמי אם לקרוא יחד עם מפרט פרוטוקול NFS.

אם הדגל -v (verbose) מסופק, יודפס מידע נוסף. לדוגמה:

sushi.1372a> wrl.nfs: 148 לקרוא fh 21,11 / 12.195 8192 בתים @ 24576 wrl.nfs> sushi.1372a: השב בסדר 1472 לקרוא REG 100664 id 417/0 sz 29388

(-v גם מדפיס את כותרת ה- TTL, מזהה, אורך ושדות פיצול, אשר הושמטו מהדוגמה הזו). בשורה הראשונה, סושי שואל wrl לקרוא 8192 בתים מקובץ 21,11 / 12,195, בקיזוז בתים 24576. תגובות רל `אישור '; החבילה המוצגת על השורה השנייה היא החלק הראשון של התשובה, ולכן הוא רק 1472 בתים ארוכים (בתים אחרים יעברו שברי הבאים, אבל אלה שברי אין כותרת NFS או אפילו כותרות UDP ולכן לא ניתן להדפיס, בהתאם הביטוי המסנן בשימוש). מאחר שדווקא הדגל, חלק מתכונות הקובץ (המוחזרות בנוסף לנתוני הקובץ) מודפסות: סוג הקובץ ("REG", עבור קובץ רגיל), מצב הקובץ (באוקטל), את uid ו gid, ואת גודל הקובץ.

אם הדגל -v ניתן יותר מפעם אחת, מודפסים פרטים נוספים.

שים לב שבקשות NFS הן גדולות מאוד וחלק גדול מהפרטים לא יודפס, אלא אם כן תגדל Snaplen . נסה להשתמש ב- ` 192 'כדי לצפות בתנועה מסוג NFS.

מנות תשובות של NFS אינן מזהות במפורש את פעולת RPC. במקום זאת, tcpdump עוקב אחר בקשות 'אחרונות', ומתאים אותן לתשובות באמצעות מזהה העסקה. אם תשובה אינה מקיימת את הבקשה המתאימה, ייתכן שהיא אינה ניתנת לשינוי.

בקשות AFS ותשובות

Transarc AFS (אנדרו File System) בקשות ותגובות מודפסים כמו:

src.sport> dst.dport: rx מנות סוג src.sport> dst.dport: rx מנות סוג שירות קוראים קוראים שם src.sport> dst.dport: rx מנות סוג שירות תגובה שם השיחה טוען אלביס. 7001> pike.afsfs: rx נתונים fs קוראים לשנות את השם הישן fid 536876964/1/1/1 ". Nidrc.new" חדש fid 536876964/1/1 ". Newsrc" pike.afsfs> elvis.7001: rx נתונים fs תשובה שם שינוי

בשורה הראשונה, מארח אלביס שולח חבילת RX כדי pike. זה היה מנות נתונים RX לשירות fs (שרת), והוא תחילת שיחת RPC. שיחת ה- RPC הייתה שינוי שם, עם תיקיית הקובץ הישנה של 536876964/1/1/1 ושם קובץ ישן של `newsrc.new`, וכן תיקיה חדשה של קובץ ספריית 536876964/1/1/1 ושם קובץ חדש של`. newsrc '. המארח המארחת מגיבה עם תשובה RPC לשיחת שינוי שם (אשר היה מוצלח, כי זה היה מנות נתונים ולא מנות הפלה).

באופן כללי, כל ה- RPCs של AFS מפוענחים לפחות בשם שיחת RPC. לרוב ה - RPCs של AFS יש לפחות חלק מהטיעונים המקודדים (בדרך כלל רק הטיעונים 'המעניינים', להגדרה מסוימת של מעניינים).

הפורמט נועד להיות תיאור עצמי, אבל זה כנראה לא יהיה שימושי עבור אנשים שאינם מכירים את פעולתם של AFS ו RX.

אם הדגל -v (verbose) מוצג פעמיים, מודפסים מנות אישור ומידע נוסף אודות כותרת, כגון מזהה השיחה של RX, מספר השיחה, מספר הרצף, המספר הסידורי ודגמי המנות של RX.

אם הדגל -v ניתן פעמיים, מודפס מידע נוסף, כגון מזהה השיחה של RX, המספר הסידורי ודגמי המנות של RX. המידע משא ומתן MTU מודפס גם מנות RX AX.

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

קודי שגיאה מודפסים עבור מנות הפלה, למעט מנות משואת Ubik (מכיוון שחבילות להפסקת משמשות להצביע על הצבעה חיובית עבור פרוטוקול Ubik).

שים לב שבקשות AFS הן גדולות מאוד, ורבים מהטיעונים לא יודפסו אלא אם כן תגדל Snaplen . נסה להשתמש ב- ` s-256 'כדי לצפות בתצורת AFS.

מנות תשובה של AFS אינן מזהות במפורש את פעולת RPC. במקום זאת, tcpdump עוקב אחר בקשות 'אחרונות', ומתאים אותן לתגובות באמצעות מספר השיחה ומזהה השירות. אם תשובה אינה מקיימת את הבקשה המתאימה, ייתכן שהיא אינה ניתנת לשינוי.

KIP Appletalk (DDP ב- UDP)

Appletalk DDP מנות במארז נתונים UDP הם de-encapsulated ו זרקו כמו מנות DDP (כלומר, כל המידע כותרת UDP מושלך). הקובץ / etc / atalk.names משמש לתרגום מספרי appletalk net ו- node לשמות. לשורות בקובץ זה יש את הטופס

מספר שם 1.254 אתר 16.1 icsd-net 1.254.110 ace

שתי השורות הראשונות מספקות שמות של רשתות אפלטלק. השורה השלישית נותנת את שמו של מארח מסוים (המארח הוא הבחין בין נטו על ידי octet 3 במספר - מספר נטו יש שני octets ו מספר המארח חייב להיות שלושה octets.) מספר ושם צריך להיות מופרדים על ידי רווח לבן (החסר או כרטיסיות). הקובץ /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 אינו קיים או אינו מכיל ערך עבור מספר מארח / יישומי appletalk, כתובות מודפסות בצורה מספרת). בדוגמה הראשונה, NBP (DDP port 2) ב- net 144.1 צומת 209 הוא שולח לכל מה שהוא מקשיב על יציאת 220 של הצומת icsd נטו 112. השורה השנייה היא זהה למעט השם המלא של הצומת המקור ידוע (`office '). השורה השלישית היא לשלוח מ פורט 235 על הצומת jssmag נטו 149 לשדר על יציאת NBP icsd-net (שים לב כי כתובת השידור (255) מסומן על ידי שם רשת ללא מספר המארח - מסיבה זו זה רעיון טוב כדי לשמור על שמות הצומת ושמות נטו מובחנים ב /etc / atalk.names).

NBP (שם פרוטוקול מחייב) ו ATP (Appletalk העסקה פרוטוקול) מנות יש תוכן שלהם לפרש. פרוטוקולים אחרים פשוט לזרוק את שם הפרוטוקול (או מספר אם לא רשום שם עבור פרוטוקול) וגודל מנות.

חבילות NBP מעוצבות כמו הדוגמאות הבאות:

icsd-net.112.220> nsp-lkup 190: "=: LaserWriter @ *" jssmag.209.2> icsd-net.112.220: nbp-answer 190: "RM1140: LaserWriter @ *" 250 techpit.2> icsd -net.112.220: nbp-answer 190: "techpit: LaserWriter @ *" 186

השורה הראשונה היא בקשה בדיקת שם עבור לייזר שנשלחה על ידי המארח נטו icsd 112 ו לשדר ב- jssmag נטו. מזהה nbp עבור החיפוש הוא 190. השורה השנייה מראה תשובה לבקשה זו (שימו לב כי יש לו את אותו מזהה) מן המארח jssmag.209 אומר כי יש לו משאב לייזר בשם "RM1140" רשום על הנמל 250. השלישי הקו הוא עוד תגובה לאותה בקשה לומר המארח techpit יש לייזר "techpit" רשום על יציאה 186.

עיצוב חבילת ה- ATP מודגם על ידי הדוגמה הבאה:

jssmag.209.165> atios.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- 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 הליוס .13232> 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' בבקשה.

הליוס מגיב עם 8 מנות 512 בתים. הספרה ': digit' בעקבות מזהה העסקה מעבירה את מספר רצף המנות בעסקה והמספר בפרנס הוא כמות הנתונים בחבילה, למעט כותרת ה- atp. ה - "*" בחבילה 7 מעיד על כך שקטע ה- EOM הוגדר.

Jssmag.209 ואז בקשות חבילות 3 & 5 להיות משודר. Helios resends אותם ואז jssmag.209 משחרר את העסקה. לבסוף, jssmag.209 יוזם את הבקשה הבאה. '*' על הבקשה מציין ש- XO ('בדיוק פעם') לא הוגדר.

פיצול IP

מדדי אינטרנט מקוטעים מודפסים כ-

( מזהה מזהה : גודל @ offset +) ( מזהה שבר : גודל @ offset )

(הטופס הראשון מציין שיש עוד שברירים, והשני מציין שזה הקטע האחרון).

Id הוא מזהה הקטע. גודל הוא גודל הקטע (בבתים), למעט כותרת ה- IP. אופסט הוא קיזוז של קטע זה (בבתים) בדטגרמה המקורית.

מידע השבר הוא פלט עבור כל קטע. השבר הראשון מכיל את כותרת פרוטוקול ברמה גבוהה יותר את מידע השבר מודפס לאחר מידע פרוטוקול. שברים לאחר הראשון לא מכילים כותרת פרוטוקול ברמה גבוהה יותר את מידע השבר מודפס לאחר המקור ואת כתובת היעד. לדוגמה, הנה חלק מ- FTP מ- arizona.edu ל- lbl-rtsg.arpa דרך חיבור CSNET שאינו נראה כבעל נתונים של 576 בתים:

arizona.ftp-data> rtsg.1170:. 1024: 1332 (308) ack 1 win 4096 (שבר 595a: 328 @ 0 +) arizona> rtsg: (שבר 595a: 204 @ 328) rtsg.1170> arizona.ftp- נתונים:. ack 1536 win 2560

יש כמה דברים שיש לשים לב אליהם: ראשית, כתובות בשורה השנייה אינן כוללות מספרי יציאה. הסיבה לכך היא כי המידע פרוטוקול TCP הוא כל החלק הראשון ואין לנו מושג מה הנמל או מספרים ברצף כאשר אנו להדפיס את השברים המאוחרים. שנית, המידע ברצף tcp בשורה הראשונה מודפס כאילו היו 308 בתים של נתוני המשתמש כאשר, למעשה, יש 512 בתים (308 בשבר הראשון 204 ב השני). אם אתה מחפש חורים ברצף החלל או מנסה להתאים acks עם מנות, זה יכול לרמות אותך.

מנות עם ה- IP לא דגל קטע מסומן עם נגרר (DF) .

חותמות זמן

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

hh: mm: ss.frac

והוא מדויק כמו שעון הקרנל. חותמת הזמן משקף את הפעם הראשונה הקרנל ראה את החבילה. לא נעשה ניסיון להסביר את הפער בזמן בין כאשר ממשק Ethernet הסיר את החבילה מהחוט וכאשר הקרנל שירות "מנות חדשה" פסיקה.

ראה גם

(1C), nit (4P), bpf (4), pcap (3)

חשוב: השתמש בפקודת הגבר ( % man ) כדי לראות כיצד נעשה שימוש בפקודה במחשב הספציפי שלך.