מועמדים רבים שואלים: "האם כדאי לי ללמוד React, Rust, או אולי AI?" התשובה היא לא.
מיוני גאמ"א אינם בודקים יכולת לבנות אתר יפה. הם בודקים הבנה של שכבות המחשב הנמוכות: איך תוכנית מדברת עם הזיכרון, איך מערכת ההפעלה מנהלת תהליכים, ואיך מידע בינארי זורם ברשת.
| תחום | התפקיד שלו במיון | איפה הוא פוגש אתכם? |
|---|---|---|
| שפת C | מלמדת איך המחשב עובד באמת: כתובות זיכרון, פוינטרים, וייצוג בינארי. | בשאלון, במבחני הידע, ובשאלות העומק בראיונות. |
| לינוקס | סביבת העבודה הטבעית של כל חוקר ומפתח במודיעין. | באתגר הבלאקבוקס בסדנה, בכתיבת סקריפטים ובניתוח תהליכים. |
| רשתות | השפה שבה מערכות מתקשרות בעולם האמיתי. | במודול הפרוטוקול הסינתטי, בניתוח תעבורה, ובאתגרי הסדנה. |
לימוד שפת C לקראת גאמ"א אינו מתמקד רק בלולאות ובתחביר, אלא במודל הזיכרון:
במעבדי x86/x64 המידע נשמר בפורמט Little-Endian (הבייט הנמוך בכתובת הנמוכה), בעוד שברשת המידע מועבר בפורמט Big-Endian (Network Byte Order). הבנה זו קריטית לפענוח פקטות.
#include <stdio.h>
#include <stdint.h>
typedef struct __attribute__((packed)) {
uint16_t magic; // 2 bytes: מזהה חבילה
uint8_t flags; // 1 byte: דגלי בקרה
uint16_t length; // 2 bytes: אורך המידע
} PacketHeader;
void inspect_packet(const uint8_t *raw_bytes) {
PacketHeader *hdr = (PacketHeader *)raw_bytes;
printf("Magic: 0x%04X
", hdr->magic);
printf("Is Encrypted: %s
", (hdr->flags & 0x01) ? "YES" : "NO");
printf("Payload Length: %u bytes
", hdr->length);
}
עליכם להרגיש בבית בתוך ה-Terminal ללא תלות בממשק גרפי:
strings – מציאת מחרוזות ASCII/Unicode קריאות בתוך קובץ בינארי.strace – הדפסת כל קריאות המערכת (פתיחת קבצים, חיבורי רשת) שהתוכנית מבצעת בזמן ריצה.gdb – דיבאגר שורת פקודה להצבת Breakpoints, קריאת רגיסטרים וניתוח זיכרון בזמן אמת.objdump -d – פירוק בינארי לקוד אסמבלי קריא (Disassembly).הבנת מודל TCP/IP מעבר להגדרות תיאורטיות:
התקינו את Wireshark והתחילו להקליט תעבורה אמיתית ברשת הביתית שלכם. למדו להשתמש ב-Display Filters מתקדמים (כגון: tcp.flags.syn == 1 && tcp.flags.ack == 0). בנוסף, תרגלו יצירת פקטות ידנית בפייתון באמצעות ספריית Scapy.
הדרך הטובה ביותר לגבש את הידע לקראת המיונים היא לבנות 2-3 פרויקטים קטנים אך מעמיקים:
כתיבת שרת Socket ב-C המקבל חיבורי TCP, קורא פקטות בינאריות, ומטפל במספר לקוחות במקביל באמצעות fork() או poll().
תוכנית הקוראת קובץ PCAP (הקלטת רשת) ומחלצת שדות Header בהתאם למפרט פרוטוקול מוגדר.
תוכנית ב-C שמקבלת קובץ בינארי של פקודות (OpCodes) ומדמה מעבד עם 4 אוגרים ומחסנית.
| שלב | משך מומלץ | מיקוד מרכזי | תוצר סופי |
|---|---|---|---|
| חודש 1-2 | 8 שבועות | יסודות שפת C, פוינטרים ומבני זיכרון | מימוש מבני נתונים (Linked List, Hash Map) ב-C |
| חודש 3 | 4 שבועות | לינוקס, שורת הפקודה וכלי ניתוח בינאריים | סקריפטים לאוטומציה וניתוח תהליכים ב-gdb |
| חודש 4 | 4 שבועות | רשתות TCP/IP, Sockets ו-Wireshark | שרת ולקוח TCP ב-C וניתוח תעבורה |
| חודש 5-6 | 8 שבועות | תרגול אתגרי Blackbox, שפות מומצאות ו-CTF | תיק עבודות ב-GitHub ומוכנות למיון |
לא חובה לשלוט באסמבלי שלם של x86_64, אך היכרות בסיסית עם מושגי אוגרים (Registers), מחסנית (Stack), פקודות Jump ו-Call תעניק לכם יתרון עצום בכנס המבחנים ובסדנה המעשית.
כן! פייתון היא שפת העזר המצוינת לכתיבת סקריפטים מהירים, ניתוח קבצים בינאריים, ועיבוד נתונים במהלך אתגרים.
השקעה של כ-5 עד 7 שעות שבועיות בעבודה מעשית (קידוד ופתרון בעיות, לא רק קריאה פסיבית) מספיקה בהחלט כדי לבנות בסיס חזק בתוך מספר חודשים.
השליטה ב-C, בלינוקס וברשתות מהווה את עמוד השדרה המקצועי לכל שלבי המיון בגאמ"א. בצעו את הצעדים שלב אחר שלב ותרגלו בעקביות.
קראו את המדריכים המשלימים כדי להכיר את כל שלבי המיון והמבחנים המעשיים:
מדריך כל שלבי המיון ותנאי הקבלה ← מדריך המבחנים המעשיים והבלאקבוקס ←