هذه سلسلة لشرح كيفية عمل برامج سطح المكتب البعيد او الـRemote Desktop مع مشروع بلغة بايثون مفتوح المصدر
برامج الـRemote Desktop تعمل بمبدأ الClient - Server
حيث ان الClient هو الجهاز الذي تتصل منه.
و الServer هو الجهاز الآخر الذي تحاول الإتصال و التحكم به.
حيث ان الClient هو الجهاز الذي تتصل منه.
و الServer هو الجهاز الآخر الذي تحاول الإتصال و التحكم به.
فكرة البرنامج هو تسجيل أحداث الفأرة و لوحة المفاتيح في جهاز الClient و تمريرها للجهاز ال Server عبر الشبكة ليعالجها بواسطة Handler. بالإضافة إلى آلية لإرسال صور متتابعة ( stream ) لشاشة الجهاز الآخر اثناء العمل. و الأهم آلية الحماية و تأمين الدخول.
مبدأياً لبناء هكذا برنامج نحتاج لتحديد بروتوكول للتعامل, مالذي نريد أن نفعله خلال الإتصال و نحلله إلى اجزاء صغيرة . على سبيل المثال , إنشاء الإتصال نفسه , التحقق , ارسال صور الشاشات, استقبال احداث الماوس , احداث الكيبورد, رسائل , عمليات مثل النسخ و اللصق.
اغلب البرامج المعروفة للتحكم بسطح المكتب تعتمد على طرف ثالث و هو سيرفرات تلك الخدمات بمعنى ان كل شيء يتم عبرها بما فيها بناء الإتصال. بحيث تكون هي الوسيط بين الClient و الServer
لكن ماذا لو اردنا الإتصال مباشرة , اولاً نحتاج لIP عام للانترنت خاص بالجهاز او اذا كنا ضمن شبكة نحتاج لعمل Nat على منفذ معين. سأفترض ان الجهازين على نفس الشبكة للتسهيل.
اولاً نحتاج لفتح Socket برقم منفذ معين و ليكن 5555 (TCP)
نحتاج لاستقبال Requests مركبة من نوع الحدث و الحدث نفسه.
مثلا نقول هذا حدث فأرة ثم نتبعه بموقعها, نفس الشيء للكيبورد , نقول حدث كيبورد و نرسل كود المفتاح.
نحتاج لاستقبال Requests مركبة من نوع الحدث و الحدث نفسه.
مثلا نقول هذا حدث فأرة ثم نتبعه بموقعها, نفس الشيء للكيبورد , نقول حدث كيبورد و نرسل كود المفتاح.
هذه الRequests يتم معالجتها و تحويلها إلى اكشن بواسطة Handler مثل تحريك الفأرة , او الضغط عليها أو طباعة حرف إلخ.
لماذا قد نحتاج أن نقوم بأنفسنا بصنع برامج كهذه مع وفرتها في السوق ؟ قبل اقل من سنة اكتشفت ثغرة BlueKeep في خدمة RDS في الويندوز و كانت تؤدي إلى اختراق الاجهزة و تشغيل برامج بداخلها. و أنت أخبر بما تصنعه يداك.
عندما تبني برامجك بنفسك بإمكانك التحكم الكامل بحمايتها هذا غير أن عدم شهرة البرنامج بحد ذاته مساهمة في حمايتها فلن يجهد اغلب المخترقين انفسهم لفك برنامج مجهول. لكن تأكد أن قمت بجميع احتياطاتك لتأمينه بما في ذلك التشفير.
هذا مشروع مفتوح المصدر بلغة بايثون لـRemote Desktop يدعم انظمة التشغيل ويندوز و لينكس وماك.
و يوجد في الانترنت الكثير من المشاريع المشابهه بلغات اخرى.
github.com
و يوجد في الانترنت الكثير من المشاريع المشابهه بلغات اخرى.
github.com
جاري تحميل الاقتراحات...