باي موبايل ديفيس3
العمل مع أدوات المطور (iOS >= 17.0)
الإجراءات شائعة الاستخدام
مكتبات OpenSSL
تبعية libusb
ملخص
تثبيت
الاستخدام
البتات والبايتات (Python API)
المساهمة
معلومات مفيدة
إشعار حقوق النشر
pymobiledevice3
هو تطبيق python3 خالص للعمل مع أجهزة iDevices (iPhone، إلخ...). وهذا يعني أن هذه الأداة هي بنية عامة ونظام أساسي ويتم دعمها واختبارها على:
ويندوز
لينكس
ماك
تشمل الميزات الرئيسية ما يلي:
اكتشاف الجهاز خلال صباح الخير
إعادة توجيه منفذ TCP
عرض خطوط سجل النظام (بما في ذلك التصحيح)
إدارة الملف الشخصي
إدارة التطبيقات
إدارة نظام الملفات (AFC)
إدارة تقارير الأعطال
استنشاق الشبكة (PCAP)
تحديث البرامج الثابتة
تركيب الصور
الاستماع إلى الإشعارات وتشغيلها ( notify_post()
api)
الاستعلام وتحديد خيارات SpringBoard
أتمتة ميزات WebInspector
ميزات DeveloperDiskImage:
التقاط لقطات الشاشة
محاكاة المواقع
إدارة العمليات
استنشاق رسائل KDebug (قدرات التتبع ++)
مراقبة العملية ( top
مثل)
ميزات إمكانية الوصول
استنشاق oslog الذي يتضمن كلاً من سجل النظام والإشارات
النسخ الاحتياطي
يمكنك التثبيت من PyPi:
python3 -m pip install -U pymobiledevice3
أو قم بتثبيت أحدث إصدار مباشرة من المصادر:
استنساخ بوابة [email protected]:doronz88/pymobiledevice3.gitcd pymobiledevice3 python3 -m pip install -U -e .
يمكنك أيضًا تثبيت الإكمال التلقائي لجميع الأوامر الفرعية المتاحة عن طريق إضافة ما يلي إلى ~/.zshrc
:
# python-click<8.0eval "$(_PYMOBILEDEVICE3_COMPLETE=source_zsh pymobiledevice3)"# python-click>=8.0eval "$(_PYMOBILEDEVICE3_COMPLETE=zsh_source pymobiledevice3)"
في الوقت الحالي، يكون opensl مطلوبًا بشكل صريح في حالة استخدامه على إصدار iOS الأقدم (<13).
على نظام التشغيل MacOS:
تثبيت الشراب opensl
على لينكس:
سودو ملائمة تثبيت opensl
يتطلب التفاعل مع الجهاز في أوضاع الاسترداد أو DFU تثبيت libusb
(ضروري للتعامل مع أوامر restore
الفرعية).
تختلف خطوات التثبيت حسب النظام الأساسي الخاص بك:
على نظام التشغيل MacOS:
# باستخدام homebrewbrew، قم بتثبيت libusb# باستخدام منفذ MacPortssudo، قم بتثبيت libusb
على لينكس:
# Debian/Ubuntusudo apt-get install libusb-1.0-0-dev# Fedorasudo dnf install libusb-devel# Arch Linuxsudo pacman -S libusb
على النوافذ:
متابعة موقع libusb لتنزيل أحدث ثنائيات الإصدار:
https://libusb.info/
يتم تقسيم أوامر CLI الفرعية تقريبًا حسب طبقة البروتوكول المستخدمة للتفاعل في الجهاز. على سبيل المثال، سيتم الوصول إلى كافة الميزات المشتقة من DeveloperDiskImage من خلال الأمر الفرعي developer
. وهذا يعني أيضًا أن كل ميزة غير موجودة لن تتطلب ذلك.
هذا هو استخدام CLI الرئيسي:
Usage: pymobiledevice3 [OPTIONS] COMMAND [ARGS]... Interact with a connected iDevice (iPhone, iPad, ...) For more information please look at: https://github.com/doronz88/pymobiledevice3 Options: -h, --help Show this message and exit. Commands: activation Perform iCloud activation/deactivation or query the current state afc Manage device multimedia files amfi Enable/Disable developer-mode or query its state apps Manage installed applications backup2 Backup/Restore options bonjour Browse devices over bonjour companion List paired "companion" devices crash Manage crash reports developer Perform developer operations (Requires enable of Developer-Mode) diagnostics Reboot/Shutdown device or access other diagnostics services lockdown Pair/Unpair device or access other lockdown services mounter Mount/Umount DeveloperDiskImage or query related info notification Post/Observe notifications pcap Sniff device traffic power-assertion Create a power assertion processes View process list using diagnosticsd API profile Managed installed profiles or install SSL certificates provision Manage installed provision profiles remote Create RemoteXPC tunnels restore Restore an IPSW or access device in recovery mode springboard Access device UI syslog Watch syslog messages usbmux List devices or forward a TCP port webinspector Access webinspector services version Query pymobiledevice3 version
ملاحظة: حاليًا، هذا مدعوم رسميًا فقط على أنظمة التشغيل macOS وWindows (حتى iOS 17.3.1)، ولكنه مدعوم بالكامل على جميع الأنظمة الأساسية بدءًا من iOS 17.4 باستخدام نفق التأمين الجديد. بالنسبة لتفاعل Windows مع iOS 17.0-17.3.1، ستحتاج إلى تثبيت برامج التشغيل الإضافية (لا نوفرها)
بدءًا من iOS 17.0، قدمت Apple إطار عمل CoreDevice الجديد للعمل مع أجهزة iOS. يعتمد هذا الإطار على بروتوكول RemoteXPC. للتواصل مع خدمات المطورين، ستتم مطالبتك أولاً بإنشاء نفق موثوق به في أحد النموذجين:
قم بتشغيل خادم نفقي يسمى tunneld
لاكتشاف الأجهزة تلقائيًا وإنشاء الاتصالات
قم بتنفيذ ما يلي:
# إذا كان الجهاز يدعم الاقتران عن بعد، مثل مثيلات corellium أو AppleTV،# ستحتاج إلى إقرانها أولاً# لا تتطلب أجهزة iOS العادية هذه الخطوة python3 -m pymobiledevice3 Remote Pair# على نظام التشغيل windows، استخدم shellsudo python3 - m pymobiledevice3 نفق عن بعد
قم بإنشاء نفق يدويًا باستخدام start-tunnel
قم بتنفيذ ما يلي:
# إذا كان الجهاز يدعم الاقتران عن بعد، مثل مثيلات corellium أو AppleTV،# ستحتاج إلى إقرانها أولاً# لا تتطلب أجهزة iOS العادية هذه الخطوة python3 -m pymobiledevice3 Remote Pair# ملاحظة: في نظام التشغيل Windows، استخدم shell المميز بالنسبة للأوامر التالية # بدءًا من iOS 17.4، يمكنك استخدام نفق القفل الأسرع بكثيرsudo python3 -m pymobiledevice3 lock start-tunnel# إذا كنت بحاجة إلى هذا الاتصال اكتب ليكون متاحًا أيضًا عبر wifi، يمكنك تمكين itpython3 -m pymobiledevice3 lock wifi-connections on# على إصدار iOS الأقدم استخدم ما يلي بدلاً من ذلك# يمكنك تمرير `-t wifi` لفرض نفق WiFisudo python3 -m pymobiledevice3 Remote start- نفق
ستتم طباعتك بالمخرجات التالية لتزويدك بتفاصيل الاتصال المطلوبة:
Interface: utun6 RSD Address: fd7b:e5b:6f53::1 RSD Port: 64337 Use the follow connection option: --rsd fd7b:e5b:6f53::1 64337
يجب تشغيل الأمر Ths بامتيازات عالية لأنه يقوم بإنشاء جهاز TUN/TAP جديد وهو عملية ذات امتيازات عالية.
الآن، (تقريبًا) تقبل جميع أجهزة pymobiledevice3 خيار --rsd
/ --tunnel
إضافي للاتصال بالخدمة عبر النفق. يتم دائمًا تجربة خيار --tunnel
على وجه التحديد ضمنيًا عند حدوث خطأ InvalidServiceError
لتبسيط العمل مع خدمات المطورين. يمكنك الآن محاولة تنفيذ أي منها على النحو التالي:
# الوصول إلى خدمات DVT# قد يقبل خيار --tunnel إما سلسلة فارغة أو UDID لجهاز معين # قد يتم إضافة UDID إلى : PORT في حالة نفق الخدمة في منفذ غير افتراضي python3 -m pymobiledevice3 Developer dvt ls / --tunnel ''# أو ببساطة بدون خيار `--tunnel`، بافتراض أن النفق يعمل python3 -m pymobiledevice3 Developer dvt ls /# أو يمكننا استخدام تفاصيل النفق اليدويةpython3 -m pymobiledevice3 Developer dvt ls / --rsd fd7b:e5b:6f53::1 64337# ويمكننا أيضًا الوصول إلى خدمات التأمين "العادية" الأخرىpython3 -m pymobiledevice3 سجل النظام المباشر --tunnel ''
هناك الكثير مما يمكنك فعله على الجهاز باستخدام pymobiledevice3
. هذه مجرد TL;DR لبعض العمليات الشائعة:
# قائمة الأجهزة المتصلةpymobiledevice3 usbmux list# تصفح أجهزة RemoteXPC باستخدام bonjourpymobiledevice3 bonjour rsd# عرض جميع خطوط سجل النظام (بما في ذلك رسائل تصحيح الأخطاء)pymobiledevice3 syslog Live# قم بتصفية الرسائل التي تحتوي على كلمة "SpringBoard" فقط pymobiledevice3 syslog Live -m SpringBoard# أعد تشغيل تشخيص Devicepymobiledevice3 Restart# سحب كافة تقارير الأعطال من Devicepymobiledevice3 Crash pull /path/to/crashes# إدارة دليل الوسائطpymobiledevice3 afc shell# سرد جميع التطبيقات المثبتة وتفاصيلهاpymobiledevice3 apps list# قائمة الاستعلام فقط عن مجموعة محددة من تطبيقات نظام التشغيلpymobiledevice3 apps query BUNDLE_ID1 BUNDLE_ID2# إنشاء نفق TCP من المضيف الخاص بك إلى الجهازpymobiledevice3 usbmux الأمام HOST_PORT DEVICE_PORT# إنشاء نسخة احتياطية كاملة من Devicepymobiledevice3 Backup2 Backup - الدليل الكامل # استعادة نسخة احتياطية معينةpymobiledevice3 Backup2 استعادة الدليل # إجراء تحديث البرنامج بواسطة ملف IPSW / URL: pymobiledevice3 استعادة التحديث -i /path/to/ipsw | url# ملاحظة: ستتطلب الأوامر الفرعية webinspector التالية تشغيل ميزة Web Inspector# احصل على JavaScript Shell تفاعلي على أي tabpymobiledevice3 مفتوح webinspector js-shell# قائمة علامات التبويب المفتوحة حاليًا هي علامات تبويب متصفح الجهازpymobiledevice3 webinspector المفتوحة# ملاحظة: الأوامر الفرعية webinspector التالية سيتطلب أيضًا تشغيل ميزة التشغيل الآلي عن بُعد. # احصل على JavaScript تفاعلي على التشغيل الآلي عن بُعد الجديد tabpymobiledevice3 webinspector js-shell --automation# إطلاق جلسة أتمتة لعرض عنوان URL محددpymobiledevice3 webinspector إطلاق URL# احصل على shellpymobiledevice3 webinspector shell يشبه السيلينيوم# ملاحظة: سيتطلب الأمر الفرعي التالي تشغيل DeveloperMode. إذا لم يكن جهازك يحتوي على رمز تعريف شخصي، فيمكنك تشغيله تلقائيًا باستخدام الأمر التاليpymobiledevice3 amfi Enable-developer-mode# Mount the DDI (DeveloperDiskImage)pymobiledevice3 mounter auto-mount# ملاحظة: تفترض الأوامر الفرعية التالية أن كلا DeveloperMode هو تم تشغيله وتم تركيب DDI# محاكاة موقع "طويل" (iOS < 17.0) pymobiledevice3 Developer مجموعة محاكاة الموقع - lat long# محاكاة موقع `lat long` (iOS >= 17.0) pymobiledevice3 Developer dvt simulate-location set - lat long# تشغيل ملف .GPX filepymobiledevice3 dvt محاكاة الموقع تشغيل المسار.gpx# إضافة ضجيج توقيت عشوائي بين -500 و 500 مللي ثانية في الوقت بين نقطتين في مطور GPX filepymobiledevice3 dvt simulate-location play Route.gpx 500# مسح الموقع المحاكى:pymobiledevice3 Developer dvt simulate-location Clear# التقاط لقطة شاشة من الجهاز:pymobiledevice3 Developer dvt Screenshot /path/to/screen.png# عرض قائمة العمليات التفصيلية (بما في ذلك ppid ، uid ، guid ، وضع الحماية ، إلخ ...) عملية pymobiledevice3 لمطور dvt sysmon فردية # Sniffing oslogpymobiledevice3 Developer dvt oslog# اقتل عمليةpymobiledevice3 Developer dvt kill PID# قائمة الملفات في دليل معين (غير متجذرة)pymobiledevice3 Developer dvt ls PATH# قم بتشغيل تطبيق من خلال اسم الحزمة الخاص بهpymobiledevice3 Developer dvt إطلاق com.apple.mobilesafari# شم جميع أحداث KDebug للحصول على مخرجات تشبه `strace`: pymobiledevice3 Developer dvt core-profile-session parse-live# قم بتنقيح جميع أحداث KDebug في ملف لتحليلها لاحقًا باستخدام أدوات مثل [`pykdebugparser`](https://github.com/matan1008/pykdebugparser)، و`fs_usage` وما إلى ذلك. ..pymobiledevice3 Developer dvt core-profile-session save FILENAME# احصل على معلومات الجهاز الموسعة (اسم kernel، مجموعة الشرائح، الخ...) pymobiledevice3 مطور معلومات جهاز dvt # مراقبة استهلاك الطاقة لـ PID محددpymobiledevice3 مطور dvt power PID1 PID2 ...
لفهم وحدات البت والبايت الخاصة بالاتصال مع lockdownd
، أو إذا كنت على استعداد لتعلم واجهة برمجة تطبيقات python، يُنصح بإلقاء نظرة على هذه المقالة:
فهم طبقات بروتوكول iDevice
انظر المساهمة.
يرجى الاطلاع على متفرقات
تستخدم المكتبة WindowsSelectorEventLoopPolicy لعدم المزامنة على نظام Windows الأساسي. يرجى الاطلاع على مناقشة متفرقة
هذا العمل مرخص بموجب GPL 3.0، ويُنسب إلى العديد من المساهمين الرئيسيين:
هيكتور مارتن "ماركان" [email protected]
ماتيو رينارد
دورونز [email protected]
matan1008 [email protected]
غي سالتون
netanelc305 [email protected]