עמוד ראשי מירק סקריפטינג מדריכים [מדריך] שימוש בתוכנה Wireshark בכתבת קוד + דוגמה

[מדריך] שימוש בתוכנה Wireshark בכתבת קוד + דוגמה

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

הצטרף: 30 יוני 2010, 18:18
הודעות: 75
פורסם: 12 יולי 2010, 11:58
אז מה היא Wireshark?
Wireshark היא תוכנה המאפשרת לראות את כל יציאות וכניסות הפאקטים למחשב.
כלומר, כל תוכנה אשר מקבלת נתונים בהמצאות האינטרנט ושולחת נתונים אנחנו ניראה אותם. ואת מחשב היעד אליו הם נשלחים ועד מידע מפורט ומלא עליהם.

למה אנכנו צריכים את זה בכתיבת של קודים?
אנחנו נשתמש בתוכנה הזות לרוב כאשר נרצה לחכות פעולות של תוכנות מסויימות בעזרת המירק על מנת לקבל נתונים מסויימים. הדוגמה הכי קלה להבנה היא רבים מין בוטי החדשות שנמצאים ברשות ב IRC השונות , מה שהבוטים האילו עושים בבסיסו של דבר הם מחכים את הפעולות שעושים הדפדפנים (iexplorer , mozil, opera) על מאת לקבל את קוד ה HTML של האתר עליו הם מתחברים וכך לשלוף משם את המידע אותו הם רוצים.

מה נילמד במדריך?
במדריך זה אני ילמד אותכם כמה דברים מאוד בסיסים בתוכנה ושילוב שלה בכתיבת קוד במירק.

Wireshark:
אתר ראשי - http://www.wireshark.org
עמוד בוויקיפדיה - http://en.wikipedia.org/wiki/Wireshark
הורדה - http://www.wireshark.org/download.html

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

שלב - א'
מצאת תירוץ לשימוש בתוכנה:
ליפני שנה בערך רציני לבנות קוד שמוצא את הכתובת אינטרנט המלאה של איפי מסויים,
לדוגמה:
ip - 89.138.84.107
address - 89-138-84-107.bb.netvision.net.il
חיפשתי ברשת מדריך איך עושים את זה ולא מצאתי אך לא הרמתי ידיים , כמו שרובכם יודעים (אני מקווה) כאשר מריצים את הפקודה ping -a ip בחלון הCMD המחשב מחזיר את הכתובת המלאה של האיפי שעליו עשינו פינג, המטרה שלי עכשיו היא לראות מה המחשב שלי שולח בכל פעם שאני עושה את הפקודה ping -a על מנת שאני יעשה את זה בעצמי במירק.
אז פתחתי את התוכנה Wireshark ויצאתי לדרך.

הערות:
-פרוטוקול, פרוטוקול הוא צורת שליחת נתונים או כבלת נתונים מסויימת , למשל שליחת הנתונים לאתרי אינטרנט מיתבצעת על ידי פרוטוקול HTTP פרוטוקול העלאת קבצים לשרתים ניקרא פרוטוקול FTP , כלומר אנחנו רוצים למצוא מה המחשב שלי שלוח כל פעם שהוא עושה את הפקודה , אני לא יראה בדיוק איך מצאתי את הפרוטוקול כי זה לפעמים מצאת פרוטוקולים יכולה לחכת שעות ימים או אפילו דקות תלוי עד כמה אתה טוב או אם סתם היה לך מזל, בכל אופן אני ינסה להראות רק את הרעיון הכללי. חשוב להזכיר שאפשר לחפש מידע על כל פרוטוקול בגוגל אך לא תמיד מוצאים ולשם כך ניכתב המדריך הזה.
-ממלץ מאוד מאוד מאוד מאוד לצאת מכל התוכנות המשתמשות באינטרנט בשביל לא להתבלבל אין פאקט של תוכנה אחרת למה שאנחנו צריכים באמת.

שלב שני:
מצאתי פרוטוקול שליחת הנתונים בעזרת wireshark:
אז יצאתי מכל התוכנות והרצתי את הwireshark לאחר מכן התחלתי לקבל פאקטים , כמובן שלא ראיתי כלום עד שלא עשיתי את פקודות הפינג כי יצאתי מכל התוכנות המשתמשות באינטרנט.
לאחר ששלחתי את הפקודה 89.138.84.104 ping -a התוכנה הציגה לי את השורות הבאות,
תמונה
מיקרא לתמונה:
-הלשונית Sourec , נימצאת מעל המרובעים בצהוב והאדום מצד שמאל- מציינת את האיפי מימנו נישלח הפאקט.
-הלשונית Destination , נימצאת מעל המרובעים בצהוב והאדום מצד ימין - מציינת את האיפי אליו נישלח הפאקט.
-87.68.213.213 - האיפי של המחשב שלי
-80.179.52.100 - האיפי אליו המחשב שלי שלח את הפאקט
-החלון הלבן למלטה שבטוחו יש ריבוע ירוק , מראה את הפאקט בדיוק בעמצעות HEX (בסיס 16) ובהמצאת chr כלומר התווים הרגילים , מה שנימצא על המיקלחת וטיפה יותר מיזה.

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

ניכנסתי לפאקט שאותו שלחתי לאיפי 80.179.52.100 וכך הוא ניראה,
תמונה
מיקרה לתמונה:
ריבוע צהוב - כל הפאקט המלא שהמחשב שלי שלח להשרת , סימו לב שכל מה שליפני ה 4D לא מסומן , כל מה שכתוב ליפני הוא חלק מפרוטוקול אב שניקרא UDP שזו דרך לשלוח נתונים , לא נתמקד בזה. אז מה אנחנו רואים פה בכלל? המחשב שלי שולח לאיזה שהוא איפי מסויים (80.179.52.100) את התווים הבאים
4d ed 01 00 00 01 00 00 00 00 00 00
לאחריהם הוא מוסיף את כתובת האיפי שעליה עשיתי PING אבל הפוכה
כתובת האיפי המקורית - 89.138.84.104
החדשה - 104.84.138.89
ובן כל בית (מספר באיפי) מופיעה נקודה , אח זו לא נקודה. התוכנה לא מראה תווים שאין להם צורה ברורה (כן יש תווים כאילו כמו כל התווים שהמספר שלהם קטן מי 15 או גדול מי250) היא פשות מראה נקודה, אחרי הרבה ניסיונות הבנתי שבין כל מספר ומספר הוא כותב את מספר הספרות של המספר. כלומר
(3)104(2)84(3)138(2)89

ובסוף בסוף בסוף מסוף את השורה הזו לאיפי החדש
.in-addr.arpa
גם פה הנקודות הן לא נקודות הלה מספר התווים שמופעה במילה כלומר
(7)in-addr(4)arpa

ואז את התווים
00 00 0c 00 01

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

עכשיו לקוד,
קודם כול אני כותב את האלייס הבא:
alias ipcodn return $chr($len($1)) $+ $1

האלייס הזה יחזיר את התוו שמספרו הוא מספר ספרותיו של המספר שהוכנס לאלייס, פלוס המספר עצמו. כלומר אם יוכנס 85 הוא יחזיר
$chr(2) $+ 85

לאחר מיכן אני מתחיל את כתיבת הפאקט
alias DNS2 {
  bset &send 1 156 24 1 0 0 1 0 0 0 0 0 0

פותח אלייס חדש ובתוכו יוצר משתנה בינרי עם התווים שמצאנו בעזרת התוכנה Wireshark שנישלחים כל פעם בהתחלה.
var %ip $1
  bset -t &send 13 $+($ipcodn($gettok(%ip,4,46)),$ipcodn($gettok(%ip,3,46)),$ipcodn($gettok(%ip,2,46)),$ipcodn($gettok(%ip,1,46)),$ipcodn(in-addr),$ipcodn(arpa))

מכניס לאותו המשתנה את האיפי בסדר הפוך שליפני כל מספר יש את מספר הספרות שלו בעזרת האלייס ipcodn.
bset &send $calc($bvar(&send,0) +1) 0 0 12 0 1

ולבסוף מוסיפים את הסיומת שמצאנו שצריך לשלוח בסוף כל פאקט בפרוטוקול הזה.
sockudp -k $+(openilonly-,$1) 80.179.52.100 53 &send

לבסוף פותחים את הסוקט בפרוטוקול UDP עם האיפי אליו הPING שלח את אותו הפאקט
ועכשיו נותר רק ליקרוא את המידע :)

הקוד המלא :
alias DNS2 {
  bset &send 1 156 24 1 0 0 1 0 0 0 0 0 0
  var %ip $1
  bset -t &send 13 $+($ipcodn($gettok(%ip,4,46)),$ipcodn($gettok(%ip,3,46)),$ipcodn($gettok(%ip,2,46)),$ipcodn($gettok(%ip,1,46)),$ipcodn(in-addr),$ipcodn(arpa))
  bset &send $calc($bvar(&send,0) +1) 0 0 12 0 1
  sockudp -k openi 80.179.52.100 53 &send
}
on *:udpread:openi:{
  sockread &dns   
  var %x 0
  while (%x < 256) {
    if (%x <= 47) || (%x >= 123)  breplace &dns %x 45
    if (%x >= 58) && (%x <= 64)   breplace &dns %x 45
    if (%x >= 91) && (%x <= 96)   breplace &dns %x 45
    inc %x
  }
  var %x 1 | var %ds $bvar(&dns,1,$bvar(&dns,0)).text
  while ($gettoks(%ds,%x,--)) {
    var %f $v1
    if ($len($v1) > 5) && (*-* iswm %f) && (*in*addr*arpa* !iswm %f) echo -a $replace($gettok(%f,1,32),-,.)
    inc %x
  }
}
alias gettoks return $replacecs($gettok($replacecs($1-,$3,),$2,1),,$3)
alias ipcodn return $chr($len($1)) $+ $1

שימוש :
/dns2 IP


בהצלחה :)

המדריך נכתב על ידי Vendetta :)
נערך לאחרונה על ידי vendetta בתאריך 13 יולי 2010, 09:52, נערך 4 פעמים בסך הכל.
In the name of God, impure souls of the living dead shall be banished into eternal damnation
Amen
תמונה
אפשר למצוא אותי בערוץ החברים שלי בקווקנט tomer2k#

הצטרף: 01 יולי 2010, 14:38
הודעות: 77
פורסם: 13 יולי 2010, 05:42
העתקתי את הקוד וגם את האליאס ולא יודע למה לא עובד לי וזה רושם שיש בעיה ב bset

הצטרף: 30 יוני 2010, 18:18
הודעות: 75
פורסם: 13 יולי 2010, 07:28
Ocean כתב:
העתקתי את הקוד וגם את האליאס ולא יודע למה לא עובד לי וזה רושם שיש בעיה ב bset


כן סליחה , הייתי בלחץ שהקוד לא עבד לא באתחלה אחרי שכתבתי את כל המדריך , אז כניראה שחכתי להוסיף את האלייס , לאחר שהוספתי אותו הוא עבד. ערכתי את הקוד המלא אתה מוזמן לבדוק שוב
In the name of God, impure souls of the living dead shall be banished into eternal damnation
Amen
תמונה
אפשר למצוא אותי בערוץ החברים שלי בקווקנט tomer2k#

הצטרף: 01 יולי 2010, 07:18
הודעות: 95
פורסם: 13 יולי 2010, 15:14
גם זה חדש לי, כל הכבוד ;]
תמונה

הצטרף: 13 יולי 2010, 18:38
הודעות: 20
פורסם: 13 יולי 2010, 18:47
תודה.. יעזור קצת
תמונה

הצטרף: 07 נובמבר 2011, 11:26
הודעות: 12
פורסם: 07 נובמבר 2011, 13:18
מדריך למתקדמים.
יפה מאוד! :P
אשמח אם בנוסף תוכלו להעלות מחדש את התמונות כי הן כבר לא זמינות אז בעצם לא רואים מהן כלום :|

הצטרף: 30 יוני 2010, 18:18
הודעות: 75
פורסם: 18 דצמבר 2011, 14:11
אני מאמין שעוד השבוע אני אעביר את המדריכים שלי לפורום אחר אחרי שהם יעברו שיבצור וחידוד ולאחר מיכן אשמח לשלוח לך לינק בפרטי.
In the name of God, impure souls of the living dead shall be banished into eternal damnation
Amen
תמונה
אפשר למצוא אותי בערוץ החברים שלי בקווקנט tomer2k#


חזור אל מדריכים