PracticU

תרגילים על Secure Code ב-#C

בלי כתוביותעם כתוביות
PracticU › קורס תכנות מתקדם - #Advanced .NET C › תרגילים על Secure Code ב-#C
מילון מושגים:
.NET - פלטפורמת פיתוח של מיקרוסופט להרצת יישומים בשפות כמו C#, הכוללת ספריות וסביבת ריצה משותפות.
סיסמה - מחרוזת תווים סודית שמשמשת לאימות זהות המשתמש בעת כניסה למערכת. ככל שהיא ארוכה ומורכבת יותר, כך קשה יותר לנחש אותה.
האש - פונקציה שממירה מידע לערך קצר באורך קבוע. שינוי קטן בקלט משנה את התוצאה, והיא חד-כיוונית.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
C# - שפת תכנות מונחית עצמים של מיקרוסופט, המשמשת בעיקר לפיתוח יישומים על פלטפורמת .NET.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
משתנה - שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.

תרגילים על Secure Code ב-#C
התרגילים כאן עוסקים בהגנה על קוד ונתונים ב-.NET: שמירת סיסמאות באמצעות hash, הצפנת קבצים, והגנה על קובץ ההרצה מפני פירוק.
התרגילים
1. סיסמה ו-hash: תוכנית Console מקבלת סיסמה, מבצעת עליה hash ושומרת בקובץ טקסט. לאחר מכן מבקשים סיסמה נוספת, מבצעים hash ומשווים בין שני ה-hashים ולא בין הסיסמאות המקוריות. אחר כך מנסים לפרוץ את ה-hash באחד מאתרי פריצת ה-Hash Password שנראו בקורס, ובודקים אם הסיסמה חזקה מספיק.
2. הצפנת קובץ: משתמשים במחלקה Crypto מהשיעורים כדי להצפין קובץ טקסט שלם כמחרוזת אחת ולשמור אותה על הקובץ המקורי. אחר כך מפענחים אותו עם אותו shared secret, שוב על גבי הקובץ המקורי, ובודקים שהכול עובד.
3. ildasm: כותבים תוכנית Console פשוטה, מפתחים את קובץ ה-exe בכלי ildasm.exe וצופים בקוד ה-MSIL. לאחר מכן מוסיפים בתוכנית יכולת למנוע את הפתיחה בכלי הזה, מקמפלים שוב ובודקים שהוא כבר לא עובד על הקובץ.
4. Reflector ו-Dotfuscator: פותחים בעזרת Reflector קובץ exe של פרויקט גדול יחסית ורואים את קוד ה-C# המקורי. לאחר מכן מערבלים אותו ב-Dotfuscator, פותחים שוב ב-Reflector ומסתכלים על שמות המחלקות, הפונקציות והמשתנים.
שאלת אתגר
אם הקוד משתמש ב-Reflection, צריך לתת לו שמות של טיפוסים, למשל המחרוזת Person, אבל Dotfuscator משנה את השם הזה. השאלה היא איך עדיין אפשר להשתמש בשניהם יחד. יש רמז שזה אפשרי, ומי שמגלה איך מוזמן לנסות.
בסיום התרגילים תוכלו לבדוק בעצמכם כמה קשה לפרוץ סיסמה ולפרק קוד שלא הוגן.
השיעור הבא בקורס: פרוייקט גמר - תוכנה לניהול עסק

פרקי ההרצאה: תרגילים על Secure Code ב-#C

  1. 00:00

    גיבוב סיסמאות והשוואתן

  2. 00:39

    בדיקת חוזק של סיסמה

  3. 01:15

    הצפנה ופענוח של קובץ

  4. 01:52

    עיון ב-MSIL והקשחת קוד

תמלול ההרצאה: תרגילים על Secure Code ב-#C

הטקסט המלא של הדקות הראשונות בהרצאה «תרגילים על Secure Code ב-#C» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    הרגילים בנושא Secure.NET כתבו פרויקט ConsoleApplication שמקבל מהמשתמש סיסמה ואז מבצע עבורה hash ושומר אותה ב-text file קובץ טקסט לאחר מכן בקשו עוד פעם סיסמה מהמשתמש בצעו עוד פעם hashing עבורה והשוו את שתי הסיסמאות שהמשתמש הכניס הציגו הודעה האם הסיסמה זהה לסיסמה הקודמת או לא כאשר מה שאתם צריכים להשוות זה לא את הסיסמאות המקוריות אלא את ה-Hashing עצמן.

  2. 00:35

    לאחר מכן נסו לפרוץ את ה-Hashing שלו ולעלות על הסיסמה המקורית על ידי אחד מאתרי הפריצה של ה-Hash Password שראינו. לאחר מכן בדקו אם הסיסמה הזאת, לפי זה שהצלחתם או לא, היא חזקה מספיק או שהיא חלשה והצלחתם לפרוץ אותה.

  3. 00:53

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

  4. 01:11

    לאחר מכן השתמשו במחלקה הזאת בשביל לפענח קובץ, קירעו את הקובץ המוצפן, בצעו פענוח לפי אותו shared secret, ושימרו את הקובץ המפוענח על גבי אותו הקובץ, כאשר כל פעם אתם דורסים את הקובץ המקורי.

  5. 01:27

    תבקשו שאכן אתם מצליחים לבצע הצפנה לאיזשהו קובץ טקסט ופענוח לגבי אותו קובץ טקסט והכל עובד כמו שצריך. כתבו איזושהי תוכנית Console Application שמציגה הודעת כלשהי על המסך הקונסול.

  6. 01:41

    לאחר מכן פיתחו את קובץ האקזה הזה בעזרת הכלי ildasm.exe וצפו בקוד ה-MSIL שיצרתם. לאחר מכן חזרו לתוכנית שלכם ובצעו ספריישן על היכולת הזאת של הכלי ILD ASM.

לקורס המלא: קורס תכנות מתקדם ב‑#C ודוט-נט

ההרצאה הקודמת: Secure Code

הרצאות קשורות מקורסים אחרים

  • תרגילים 1-3
  • The Request Code
  • Code and Fix Model
  • UltraVnc - Source Code compile

קורסים נוספים במסלול

  • קורס WinForms - תוכנות רגילות בווינדוס
  • פרויקט מעשי ב-#C - בונים מחשבון פשוט
  • פרויקט מעשי ב-#C - ספר טלפונים
  • פרויקט מעשי ב-#C - תוכנת צייר
  • קורס ADO.NET - חיבור אתר למסד נתונים
  • קורס WCF - תקשורת למתקדמים בדוט-נט