solution2_yw

חלק ג' - DLP.
פה זה חלק של לאתר באגים בקוד,קצת מעצבן אבל לא נורא. בגדול ישנם שני סוגי הודעות SMTP
שהם מהצורה subject:blabla body:blabla. ויש את שאר ההודעות, אז אנחנו מקבלים פונ' שבודקת אם זה במבנה של SMTP ,פונ' שבודקת מבנה רגיל,ופונ' שבודקת האם ההודעה מתאימה לאחת מהן (פשוט קוראת לשניהם). עכשיו ישנן רשימת מילים שאסור שהן יופיעו בהודעות ויש פונ' שבודקת את זה(היא נקראת מכל אחת מהפונ' שבודקת לגבי SMTP ולגבי שאר ההודעות).
אז באגים:
בפונ' שקוראת לכל אחת מהפונק' שבודקת מבנה של הודעה יש switch. חסרים בו
break;.אז או שפשוט נוסיף ברייקים , או שפשוט נעשה RETURN לערך שחזר מהקריאה .
באותה הפונק' יש if שמחזיר תשובה במקרה שאורך ההודעה הוא אפס. התשובה הפוכה! צריך להפוך את זה.
בפונק' שבודקת מבנה של smtp. יש שם משתנה שמקבל strstr("subject",data)
ומשתנה שמקבל strstr("body",data). אם אחד מהמשתנים האלו החזיר NULL אז ההודעה היא לא ממבנה SMTP. לכן נקרא מתוך הפונק' הזו לפונק' שבודקת על מבנה שאר ההודעות.
אם strstr("subject",data) יחזיר לנו פוינטר שהוא לא תחילת ההודעה (כלומר סבג'קט לא במקום ה0) שוב נקרא לפונק' שבודקת על מבנה שאר ההודעות.
*יש לשים לב יש שם אריטמטיקה מציקה של פויינטרים אבל היא בסדר גמור, אין מה להסתבך עם זה.

חלק ד' –HASH.
מקבלים מימוש של האש וצריך לדעת להשתמש בו. המטרה בשאלה היא בכל שלב נתון תתבצע קריאה לפונק' שצריך לכתוב שתחזיר מערך עם עשרת (או פחות) messageSource. שמופיעים מעל 10% מסך כל המסרים. אז יש לנו שתי פונק' שצריך לממש, את זאתי ועוד אחת שמכניסה להאש.
זאת שמכניסה להאש תעבוד בסגנון:
אני מקבל מסר, בודק אם הKEY נמצא בהאש (הכל בעזרת פונק' שאני מקבל שכתובות) אם הוא נמצא , אני אוציא את הVALUE, אעלה אותו באחד ואבצע הכנסה להאש.
אם הוא לא נמצא אני פשוט אכניס אותו עם ערך התחלתי 1.
זה מבטיח לנו שלכל KEY ישמר לנו באש מספר הפעמים שהוא מופיע.
הפונ' השניה (שבודקת אילו מופיעים מעל 10%). תעבוד עם איטרטור (גם אותו מקבלים וצריך לדעת להשתמש בו) אני אעבור על ההאש עבור כל ערך שיש בו אני אבדוק אם הוא גדול מ10% מסך כל המקבלים שקיבלתי (איך אני אדע כמה קיבלתי?? אני אעשה משתנה גלובלי שיעלה בכל הכנסה להאש בפונ' שמכניסה) ואם כן אכניס אותו למערך (לא זוכר אם מכניסים אותו או רק את מספר הפעמים שהוא הופיע). אני נורא הסתבכתי פה , האיטרטור עשה לי בעיות וכו'. חשוב לעבוד עם DOUBLE כי זה אחוזים! וכו' וכו'.
ויש גם את START– צריך לקרוא לפונ' שתחזיר האש חדש. ויש את STOP שצריך לקרוא משם לפונ' שתשחרר את ההאש.


חלק 2'
בחלק זה עובדים עם 3 ! מכונות וירטואליות. 2 של יוניקס שבהם באמת עושים דברים ו1 של ווינדוס בה יש את הדף הוראות והתשובות שצריך לכתוב. בגדול מבקשים ממך לעשות דברים ולהחזיר את התשובות של הפקודות שעשית. אני ארשום מה שאני זוכר שצריך לעשות.

ש' 1 להחזיר כתובת IP של מ"ו 1 -IFCONFIG
ש' 2 להחזיר כתובת IP של מ"ו 2 - IFCONFIG
לעשות PING ממ"ו אחת לעצמה (עם הIP שקיבלנו מקודם) – PING IPVM1
לעשות PING ממ"ו אחת לשתיים (עם הIP שקיבלנו מקודם) –PING IPVM2
לפתוח שרת FTP במ"ו 2 .
להתחבר אליו ממ"ו 1 - אם אני לא טועה ftp ipvm2
להוריד קובץ ממכונה 2 למכונה 1 - שאתם במצב FTP פשוט לרשום get filename.
עכשיו רוצים שתוודאו שהקובץ התקבל . צאו ממצב FTP במכונה אחת (ע"י bye) ותרשמו
md5sum filename . (גם אומרים לכם מה לעשות) ואז מבקשים להחזיר את הספרות שזה נתן.
מעכשיו לא עובדים יותר על מכונה 2 (אם אני זוכר).
מבקשים ממכם לכתוב איזה פקודה שתפתח את הקובץ שהורדתם לתוך ספריה.
ולאחר מכן תצטרכו לקרוא קובץ README זה יעשה ע"י
vi README ,כמובן שתצטרכו להיכנס לספריה שאליה פתחתם את הקובץ. (כדי לצאת מVI תעשו :q) בגדול כדאי לקרוא כאן על פקודות
קוראים שם כל מיני דברים ואז אומרים לכם לקמפל איזה משהו (רשום מה הפקודה בקובץ README( ) ואז להפעיל אותו (שימו לב שצריך להפעיל! אני שכחתי מזה בהתחלה) אתם למעשה מפעילים מין שרת FTP על המכונה שלכם. אז יבקשו שתתחברו לעצמכם ע"י ftp localhost ותרשמו מה הפלט.לאחר מכן צריך לסגור את השרת FTP (כמובן ששוב תעשו BYEכדי לצאת מהחיבור). עקרונית הפקודה KILL אמורה להרוג את השרת, אבל צריך לדעת איזה מקום התהליך הוא ברשימת התהליכונים הפועלים , לכן אתם תקישו את הפקודה JOBS שתגיד לכם ואז אם זה התהליך הראשון תקישו kill% 1.
אז יבקשו ממכם שוב להתחבר לשרת FTP ע"י ftp localhost . אבל היי! הרגע הרגנו אותו, נכון לכן יופיע לכם עכשיו connection refused.
הדבר ה אחרון שצריך לעשות זה לשנות את הwelcome message של השרת.
פה יש קטע מלוכלך הם אומרים שהפקודה היא Welcome to blabla. והם אומרים לכם לחפש את מהחרוזת בעזרת GREP ולשנות אותה. העניין הוא שהמחרוזות מופיע בשני קבצים נפרדים! לכן אתם תעשו grep "Welcome to" ( לא לשכוח W גדולה) או שצריך לחפש רק Welcome. ותמצאו שהמחרוזת מופיע בקובץ messages_en.h , תערכו אותו בעזרת VI ופשוט לשורה"Welcome to" שצריך לשנות תוסיפו my. תשמרו ותצאו מVI. זהו ואז יגידו לכם להקיש איזה פקודה שתבדוק שזה באמת השתנה וכאן זה נגמר.
Topic archived. No new replies allowed.