مرحبا يا هبر!
لقد شاهدت مؤخرًا الإصدار الذي تم تنزيله من دفق البرمجة "كيفية إنشاء تطبيق ويب Flask الخاص بك". وقرر تعزيز معرفته في بعض المشاريع. لوقت طويل لم أكن أعرف ماذا أكتب ، وجاءت الفكرة إلي: "لماذا لا أقوم بعمل مستتر صغير على قارورة؟".
ظهرت الخيارات الأولى لتنفيذ وقدرات الباب الخلفي على الفور في رأسي. لكنني قررت أن أقدم على الفور قائمة بالميزات الخلفية:
- أن تكون قادرة على فتح المواقع
- هل لديك وصول سطر الأوامر
- تكون قادرة على فتح البرامج والصور ومقاطع الفيديو
لذلك ، من السهل للغاية تنفيذ العنصر الأول باستخدام وحدة webbrowser. النقطة الثانية التي قررت تنفيذها باستخدام وحدة os. والثالثة هي أيضًا من خلال وحدة os ، لكنني سأستخدم "الروابط" (المزيد حول ذلك لاحقًا).
الخادم الإملائيلذلك * لفة الأسطوانة * كل رمز الخادم:
from flask import Flask, request import webbrowser import os import re app = Flask(__name__) @app.route('/mycomp', methods=['POST']) def hell(): json_string = request.json if json_string['command'] == 'test': return 'The server is running and waiting for commands...' if json_string['command'] == 'openweb': webbrowser.open(url='https://www.'+json_string['data'], new=0) return 'Site opening ' + json_string['data'] + '...' if json_string['command'] == 'shell': os.system(json_string['data']) return 'Command execution ' + json_string['data'] + '...' if json_string['command'] == 'link': links = open('links.txt', 'r') for i in range(int(json_string['data'])): link = links.readline() os.system(link.split('>')[0]) return 'Launch ' + link.split('>')[1] if __name__ == '__main__': app.run(host='0.0.0.0')
لقد ألقيت بالفعل كل الشفرة ، لقد حان الوقت لشرح الجوهر.
تعمل كافة التعليمات البرمجية على الكمبيوتر المحلي على المنفذ 5000. للتفاعل مع الخادم ، يجب أن نرسل طلب JSON POST.
هيكل طلب JSON:
{'command': 'comecommand', 'data': 'somedata'}
حسنًا ، من المنطقي أن تكون "command" هي الأمر الذي نريد تنفيذه. و "البيانات" هي حجج الأمر.
يمكنك كتابة وإرسال طلبات JSON للتفاعل مع الخادم مع الأقلام (تساعدك الطلبات). أو يمكنك كتابة عميل وحدة التحكم.
كتابة العملاءكود:
import requests logo = ['\n\n', '****** ********', '******* *********', '** ** ** **', '** ** ** ** Written on Python', '******* ** **', '******** ** **', '** ** ** ** Author: ROBOTD4', '** ** ** **', '** ** ** **', '******** *********', '******* ********', '\n\n'] p = '' iport = '192.168.1.2:5000' host = 'http://' + iport + '/mycomp' def test(): dict = {'command': 'test', 'data': 0} r = requests.post(host, json=dict) if r.status_code == 200: print (r.content.decode('utf-8')) def start(): for i in logo: print(i) start() test() while True: command = input('>') if command == '': continue a = command.split() if command == 'test': dict = {'command': 'test', 'data': 0} r = requests.post(host, json=dict) if r.status_code == 200: print (r.content.decode('utf-8')) if a[0] == 'shell': for i in range(1, len(a)): p = p + a[i] + ' ' dict = {'command': 'shell', 'data': p} r = requests.post(host, json=dict) if r.status_code == 200: print (r.content.decode('utf-8')) p = '' if a[0] == 'link': if len(a) > 1: dict = {'command': 'link', 'data': int(a[1])} r = requests.post(host, json=dict) if r.status_code == 200: print (r.content.decode('utf-8')) else: print(' !') if a[0] == 'openweb': if len(a) > 1: dict = {'command': 'openweb', 'data': a[1]} r = requests.post(host, json=dict) if r.status_code == 200: print (r.content.decode('utf-8')) else: print(' !') if a[0] == 'set': if a[1] == 'host': ip = a[2] + ':5000' if command == 'quit': break
التفسيرات:
الخطوة الأولى هي استيراد وحدة الطلبات (للتفاعل مع الخادم). مزيد من الوصف لوظائف الاختبار والاختبار. ثم الدورة التي يحدث فيها السحر. هل قرأت الكود لذا فإن معنى السحر الذي يحدث في الدورة واضح لك. أدخل الأمر - يتم تشغيله. Shell - أوامر لسطر الأوامر (
المنطق يمر عبر السقف ).
اختبار - تحقق مما إذا كان الخادم يعمل (مستتر)
رابط - باستخدام اختصار
Openweb - افتتاح الموقع
إنهاء - الخروج من العميل
ضبط - ضبط ip لجهاز الكمبيوتر الخاص بك على الشبكة المحلية
والآن المزيد عن الرابط.
بجانب الخادم يوجد ملف link.txt. أنه يحتوي على روابط (المسار الكامل) إلى الملفات (مقاطع الفيديو والصور والبرامج).
الهيكل على النحو التالي:
_>
_>
يؤدي
لدينا خادم مستتر للتحكم في جهاز كمبيوتر على شبكة محلية (داخل شبكة wi-fi). من الناحية الفنية ، يمكننا تشغيل العميل من أي جهاز يحتوي على مترجم بيثون.
PS أضفت الأمر set بحيث إذا تم تخصيص عنوان IP مختلف لجهاز كمبيوتر على الشبكة المحلية ، فيمكن تغييره مباشرة في العميل.