مهم
من غير المرجح أن تعمل ROOTMYTV على جهاز التلفزيون الخاص بك. اكتشف لماذا.
ROOTMYTV هو استغلال سهل الاستخدام لتجذر/كسر أجهزة تلفزيون LG WebOS الذكية.
إنه يحمل تركيب قناة WebOS Homebrew ، ويسمح لها بالتشغيل بامتيازات مرتفعة. قناة Homebrew عبارة عن تطبيق مفتوح المصدر تم تطويره للمجتمع ، مما يجعل من السهل تطوير وتثبيت برنامج الطرف الثالث. تعرف على المزيد عنها هنا.
إذا كنت تريد التفاصيل الكاملة لكيفية عمل الاستغلال ، فانتقل إلى كتابنا.
تم تصحيح نقاط الضعف التي تستخدمها ROOTMYTV (كلا V1 و V2) بواسطة LG. من غير المرجح أن تعمل ROOTMYTV على البرامج الثابتة التي تم إصدارها منذ منتصف عام 2012.
مهم
إذا حصلت على "Denied method call "download" for category "/""
خطأ ، يتم تصحيح التلفزيون الخاص بك. إذا لم يتم تثبيت تمثيل التلفزيون الخاص بك ولكن قناة Homebrew غير مثبتة ، فمن المحتمل أن يتم تصحيحها. لم تعد تخفيضات البرامج الثابتة ممكنة دون الوصول بالفعل إلى الجذر.
يسرد الجدول التالي إصدار WebOS الأول لنماذج كل عام معروفة بأنها لا تدعم RootMyTV:
طراز التلفزيون سنة | إصدار WebOS | ROOTMYTV مصححة منذ إصدار WebOS |
---|---|---|
2016 | 3.0 | 3.4.2 |
2017 | 3.5 | 3.9.2 |
2018 | 4.0 | 4.4.2 |
2019 | 4.5 | 4.9.7 |
2020 | 5 | 5.4.0 |
2021 | 6 | 6.3.0 |
إذا كان إصدار WebOS الخاص بك يساوي أو أكبر من الإصدار في عمود "تصحيح منذ" لسنة طراز التلفزيون ، فإن التلفزيون الخاص بك ليس عرضة لـ RootMyTV . على الرغم من أن هذه الإصدارات والأحدث هي بالتأكيد مصححة ، إلا أن الإصدارات القديمة قد تعمل أو لا تعمل. لم يعمل RootMyTV أبدًا على إصدارات WebOS قبل 3.4.0 أو أي أجهزة تلفزيون تأتي مع Webos 1 أو 2 أو 7 (22) أو 8 (23).
اعتمادًا على السنة التي تم فيها إصدار تلفزيون ، يستخدم مجموعة معينة من أرقام إصدار WebOS.
من السهل فهم الإصدارات قبل عام 2016 وبعد عام 2019 ، حيث يتم استخدام الرقم الأول فقط لمدة عام واحد (على سبيل المثال ، كل نسخة 6.xy مخصصة لتلفزيون 2021).
ومع ذلك ، قامت LG بشيء غير عادي في عامي 2017 و 2019 من خلال عدم استخدام رقم أولي جديد. بدأت أجهزة التلفزيون من 2017 و 2019 من إصدارات WebOS 3.5 و 4.5 ، على التوالي. على سبيل المثال ، ستحتوي أجهزة التلفزيون التي تم إصدارها في عام 2016 على إصدارات WebOS تساوي أو تزيد عن 3.0.0 وأقل من 3.5.0 ؛ سوف تستخدم أجهزة التلفزيون التي تم إصدارها في عام 2017 3.5.0 حتى (ولكن ليس بما في ذلك) 4.0.0 ؛ وهلم جرا.
لاحظ أنه عند محاولة تحديد متى تم إصدار إصدار WebOS معين ، يجب عليك مقارنته فقط بأرقام الإصدار من نفس طراز السنة. على سبيل المثال ، من الآمن افتراض الإصدار 3.4.1 تم إصداره بعد 3.3.0. لكن الإصدار 3.4.2 كان يمكن أن يكون (وفي الواقع) تم إصداره بعد الإصدار 4.0.0.
مع WebOS 7 في عام 2022 ، بدأت LG باستخدام اسم التسويق "Webos 22" ؛ وينطبق الشيء نفسه على WebOS 8 ("Webos 23").
ملحوظة
يشير هذا الإصدار إلى حقل "إصدار Webos TV" في قائمة "الإعدادات" ، وليس حقل "إصدار البرنامج".
إذا كنت ترغب في حماية التلفزيون الخاص بك من الاستغلال عن بُعد ، فيرجى الاطلاع على القسم ذي الصلة من الكتابة و/أو تطبيق أحدث تحديث للبرامج الثابتة لتلفزيونك.
الخطوة صفر (إخلاء المسئولية): كن على دراية بالمخاطر. إن تأصيل جهاز التلفزيون الخاص بك (للأسف) لا يدعمه LG ، وعلى الرغم من أننا بذلنا قصارى جهدنا لتقليل مخاطر الضرر ، إلا أنه لا يمكننا تقديم أي ضمانات. هذا قد يفرغ الضمان الخاص بك.
يجب أن يكون جهاز التلفزيون الخاص بك الآن مثبتًا على تطبيق قناة Homebrew.
بشكل افتراضي ، يتم تعطيل تحديثات النظام والوصول إلى الجذر عن بُعد عند التثبيت. إذا كنت ترغب في تغيير هذه الإعدادات ، فانتقل إلى قناة Homebrew → الإعدادات. يتم تطبيق الخيارات هناك بعد إعادة التشغيل.
لاستغلال أجهزة التلفزيون المكسورة ، تحقق من المعلومات هنا.
وصول "وضع المطور" غير المحدود
مستخدم/تطبيق من المستوى الأدنى
على الرغم من أننا لا نستطيع تحمل أي مسؤولية عن أفعالك ، إلا أننا لم نواجه أي طوب بسبب الجذر. إذا كنت تستخدم البرامج الموثوقة فقط من مستودع القناة Homebrew الرسمية ، فيجب أن تكون آمنًا.
هذه ليست نصيحة قانونية. على الأقل في الاتحاد الأوروبي ، يعتبر الجذور وغيرها من تعديلات البرمجيات قانونية بشكل عام ويجب ألا يكون أساسًا لتفريغ الضمان الخاص بك.
يجب أن تقوم إعادة تعيين المصنع بإزالة جميع ملفات التكوين المتعلقة بالجذر.
ليس لدينا أداة مريحة لإزالة الجذر دون إعادة تعيين المصنع ، على الرغم من أن الشخص المعروف قد يكون قادرًا على إزالة تخصيصاتنا يدويًا.
على الرغم من أن التحديثات ممكنة من الناحية الفنية ، إذا قامت LG بتصحيح الاستغلال ، فقد ينتهي بك الأمر إلى "مغلق" وغير قادر على إعادة جذر التلفزيون إذا فقدت الوصول بطريقة ما. لا يمكننا أيضًا التنبؤ بكيفية تأثير التحديثات المستقبلية على تقنياتنا المستخدمة لرفع وتشغيل تطبيق القناة الرئيسية.
لا ، هذا لا يكسر أو يحد من الوصول إلى خدمات الاشتراك أو محتوى Drmed الآخر.
ومع ذلك ، فإن البقاء في إصدار البرنامج الثابت القديم جدًا (والذي قد يكون مطلوبًا للحفاظ على الوصول إلى الجذر) قد يحد من وصولك إلى تثبيت تطبيق LG لمحتوى المحتوى ، أو التحديثات ، أو (نادرًا). الحلول لهذا في الأعمال.
إذا كنت لا تقوم بتحديث إصدار برنامج التلفزيون الخاص بك إلى إصدار تم تصحيحه بالفعل (معظم 4.x+ تم إصداره بعد 2021/06) ، فلا داعي للتحديث. لا تجلب السلسلة الجديدة أي ميزات جديدة - الشيء الأكثر عقلانية الذي يمكنك القيام به هو تحديث تطبيق القناة المحلية الخاصة بك.
إذا كنت متجذرة بالفعل في إصدار البرامج الثابتة التي تم تخفيضها/ما قبل 2021-06 وتريد الترقية بشكل أكبر ، فإن إجراء تحديث للبرامج الرسمية سيؤدي إلى إزالة ملفات الجذر الحالية والتطبيقات المنزلية. تشغيل ROOTMYTV V2 ثم سوف يعيد تمكين الوصول إلى الجذر مرة أخرى. ستحتاج إلى إعادة تثبيت التطبيقات التي تمت إزالتها بنفسك.
إذا كنت تعرف ما تفعله وتريد الاستمرار في تطبيقات مثبتة ، فأنت بحاجة إلى إزالة /media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/start-devmode.sh
/palm/services/com.palmdts.devmode.service/start-devmode.sh مباشرة قبل التحديث ( دون إعادة تشغيل inbetween) ، ثم قم بتشغيل ROOTMYTV V2 مباشرة على التمهيد الأول بعد تحديث البرنامج.
إذا تعثرت "MODE Affafe Mode" على جهاز التلفزيون الخاص بك وأظهر إشعارات غاضبة ، فانتقل إلى القناة الرئيسية → ، Switch "MODE" OFF واضغط على "REBOOT".
"وضع Failsafe" هو وضع لا يتم فيه تمكين أي من تخصيصات النظام الخاصة بنا ولا يبدأ سوى خادم الوصول عن بُعد في حالات الطوارئ.
يتم تمكين هذا الوضع تلقائيًا عند تعطل التلفزيون ، أو يتم إزالة الطاقة الخاصة به أو يتم إيقافه أثناء بدء تشغيل النظام المبكر. من أجل تقليل فرص حدوث ذلك ، نوصي بتمكين إعداد "بدء التشغيل السريع+" في إعدادات نظام WebOS العامة. سيؤدي ذلك إلى جعل التلفزيون ينتقل فقط إلى "وضع السكون" (الذي لا يستغرق المزيد من القوة) بدلاً من إجراء إيقاف كامل ، ولن يحتاج إلى إعادة تشغيل خدماتنا على كل تعليق. هذا سيجعل بدء التشغيل التلفزيوني أسرع بكثير.
يقوم البرنامج النصي بدء التشغيل لدينا بتشغيل جميع الملفات القابلة للتنفيذ في /var/lib/webosbrew/init.d
على التمهيد (عبر run-parts
-قد تحتوي أسماء الملفات فقط على أحرف a-zA-Z0-9-_
!)-قم بإنشاء البرامج النصية الخاصة بك هناك.
قم بإنشاء أي تخصيصات هناك ولا تعدل نصوص قناة RootMyTV/Homebrew الحالية ، حيث قد يتم الكتابة فوقها في التحديثات المستقبلية.
إذا كنت مطورًا منزليًا - قم بإنشاء ارتباط نصي في مسار التطبيق الخاص بك هناك ، ولا تنسخ على أي شيء هناك.
إذا كنت تريد ، يمكنك دعم هذا المشروع عبر GitHub الرعاة - انظر زر "الراعي" في الزاوية اليمنى العليا.
لا تقم بتحديث التلفزيون الخاص بك. على الرغم من أن التحديثات ممكنة من الناحية الفنية ، إذا قامت LG بتصحيح الاستغلال ، فقد ينتهي بك الأمر إلى "مغلق" وغير قادر على إعادة جذر التلفزيون إذا فقدت الوصول بطريقة ما. لا يمكننا أيضًا التنبؤ بكيفية تأثير التحديثات المستقبلية على تقنياتنا المستخدمة لرفع وتشغيل تطبيق القناة الرئيسية. سيقوم خيار "تحديثات النظام" في قناة Homebrew بتعطيل شيكات تحديث البرامج الثابتة. تأكد من تعطيل خيار "تحديثات النظام التلقائي" في إعدادات نظام WebOS أيضًا.
مطلوب لإزالة تطبيق "وضع المطور" قبل الجذر. وإلا فإنه سيتداخل مع البرنامج النصي بدء التشغيل المستخدم لتمهيد كسر السجن. خدمة SSH المكشوفة بواسطة قناة Homebrew متوافقة مع WebOS SDK Tooling.
إذا كنت بحاجة إلى الوصول إلى قذيفة الجذر عن بُعد ومعرفة كيفية استخدام SSH ، فيمكنك تمكينه في إعدادات القناة الرئيسية. كلمة المرور الافتراضية هي alpine
، لكننا نوصي بإعداد مصادقة مفتاح SSH العامة عن طريق نسخ مفتاح SSH العام الخاص بك إلى /home/root/.ssh/authorized_keys
على التلفزيون. سيؤدي ذلك إلى تعطيل مصادقة كلمة المرور بعد إعادة التشغيل.
يمكن تثبيت المفاتيح المسجلة المستخدمة في GitHub باستخدام المقتطف التالي:
mkdir -p ~ /.ssh && curl https://github.com/USERNAME.keys > ~ /.ssh/authorized_keys
الخيار البديل هو telnet (يمكن تمكينه في القناة البيئية → الإعدادات → Telnet) على الرغم من أنه مثبط للغاية ، لأن هذا يعطي قذيفة الجذر غير مصادفة لأي شخص على شبكة محلية.
يوصى بتمكين وظائف "بدء التشغيل السريع+". سيجعل ذلك زر إيقاف التشغيل على جهاز تحكم عن بُعد لا يقوم بإغلاق النظام الكامل. إذا قمت بتشغيل التلفزيون وإيقاف تشغيله بسرعة دون بدء التشغيل السريع+، فقد يتم تشغيل "وضع Failsafe" الخاص بنا (وهو موجود لمنع البرامج النصية لبدء التشغيل الطوب على التلفزيون) والتي ستزول بعد تبديل التبديل ذات الصلة في إعدادات القناة الرئيسية.
في حالة وجود أي مشاكل ، انضم إلى خادم Discord OpenLGTV واطلب المساعدة على قناة #rootmytv
، أو اسأل على قناة #openlgtv:netserve.live
Matrix ، أو تقديم مشكلة GitHub.
قبل طلب الدعم ، يرجى الرجوع إلى دليل استكشاف الأخطاء وإصلاحها.
ROOTMYTV هي سلسلة من المآثر. كان اكتشاف وتطوير هذه المآثر بمثابة جهد تعاوني ، مع مساهمات مباشرة وغير مباشرة من عدة باحثين.
في 05 أكتوبر ، 2020 ، أبلغ أندرياس لينده عن ضعف ملف الجذر إلى LG. في 03 فبراير ، 2021 ، نشر أندرياس نتائجه ، مما يدل على استغلال الجذر المحلي ضد محاكي WebOS (جزء من تطوير LG). زعمت LG بجرأة أن هذه القضية لم تؤثر على أجهزتها ، وأنهم كانوا سيؤثرون على محاكيهم.
في 15 فبراير ، 2021 ، أبلغ ديفيد بوكانان عن ثغرة أمنية في تطبيق "ThinQ Login" الخاص بـ LG ، والذي سمح لخطو التطبيق من خلال تسلسل محدد من مدخلات المستخدم ، مما يسمح للمهاجم بالاتصال بآبار واجهات برمجة التطبيقات المميزة. في 23 مارس 2021 ، نشر David استغلال إثبات للمفهوم ، والذي مكن المستخدمين من الحصول على امتيازات الجذر على أجهزة التلفزيون الذكية LG. وقد أصبح ذلك ممكنًا من خلال الجمع بينه وبين الضعف الجذر المحلي الذي أبلغ عنه أندرياس سابقًا (نعم ، نفس الشيء الذي قاله LG لم يؤثر على أجهزتهم!).
في حوالي 28 مارس 2021 ، اكتشف Piotr Dobrowolski ثغرة أمنية مماثلة في تطبيق "تسجيل الدخول الاجتماعي" ، والذي يوجد عبر مجموعة أوسع من إصدارات WebOS. والأهم من ذلك ، يمكن تشغيل هذا الاستغلال بسهولة عبر الشبكة المحلية ، باستخدام SSAP (التفاصيل أدناه) ، مما يجعله أكثر موثوقية وسهلة الاستخدام.
في وقت كتابة هذا التقرير ، ، فإن الكود في هذا الريبو هو العمل المشترك لديفيد بوكانان (تصميم الويب ، واستغلال POC الأولي) و Piotr Dobrowolski (تحسين "تطبيق" الاستغلال "، والكتابة ، و" V2 "البحث والتنفيذ).
نود أن نشكر:
أندرياس ليند لنشر أبحاثه على الويب.
مجتمع WideOS الأوسع ، وخاصة منتديات XDA و Discord OpenLGTV.
جميع المساهمين (الحاضر والمستقبل) في القناة الرئيسية ، وتطوير تطبيقات وبرامج منزلية أخرى.
LG ، لترقيع أعراض الحشرات بدلاً من الأسباب الكامنة ...
في وقت كتابة هذا التقرير ، تم دعم جميع إصدارات WebOS بين 3.4 و 6.0 (أجهزة التلفزيون التي تم إصدارها بين منتصف عام 2017 وأوائل 2021). في حوالي يونيو إلى يوليو 2021 ، بدأت LG في طرح التحديثات التي أضافت بعض عمليات التخفيف البسيطة التي كسرت سلسلة الاستغلال الأصلية لدينا.
عندما تم إصدار ROOTMYTV V2 (2022-01-05) ، تم دعم جميع إصدارات WebOS بين 4.x و 6.2+ (أجهزة التلفزيون التي تم إصدارها بين أوائل عام 2018 وأواخر 2021) بواسطة سلسلة استغلال V2.
قد يتم دعم بعض الإصدارات بين 3.4 و 3.9 بواسطة RootMyTV V2 ، ولكن قد تختلف عدد الأميال.
WebOS ، كما يوحي الاسم ، هو نظام تشغيل تلفزيون ذكي يعتمد في الغالب على تقنيات الويب. يتم تشغيل التطبيقات ، كل من النظام والخارجي إما في متصفح الويب القائم على الكروم ("webappmgr") أو في وقت تشغيل QT QML. تعمل جميع التطبيقات والتطبيقات الخارجية تقريبًا في السجون القائمة على chroot كطبقة أمان إضافية.
"تطبيقات الويب" ، خارج تقنيات الويب القياسية ، يمكنك أيضًا الوصول إلى واجهة برمجة التطبيقات للتواصل مع "Luna Service Bus". هذا حافلة ، على غرار D-BUS ، تستخدم لتبادل الرسائل وتوفير خدمات مختلفة عبر مجالات الأمان المختلفة. يمكن لعملاء BUS فضح بعض أساليب RPC للتطبيقات الأخرى (التي تم تحديدها بواسطة URIS luna://service-name/prefix-maybe/method-name
) التي تقبل رسالة كائن JSON كمعلمات للاتصال ، ثم يمكنها إرجاع رسالة واحدة أو العديد من الرسائل. (اعتمادًا على المكالمة "قابلة للاشتراك" أم لا)
في حين يبدو أن Luna Bus لديها معالجة واسعة النطاق للـ ACL ، بالنظر إلى تاريخ تحويلات IP الخاصة بـ WebOS ، يبدو أن العديد من المهندسين لا يفهمون قدراتها تمامًا. يتم تمييز جزء من الحافلة على أنه "خاص" ، والذي لا يمكن الوصول إليه إلا من خلال تطبيقات نظام معينة ، في حين أن معظم المكالمات الأخرى "عامة" ويمكن الوصول إليها بواسطة جميع التطبيقات.
بشكل غير متوقع ، إحدى الخدمات الداخلية التي تعرض على حافلة هي "Lunadownloadmgr" والتي توفر واجهة برمجة تطبيقات مريحة لتنزيل الملفات ، وتتبع التقدم ، وما إلى ذلك ... تم البحث تم توثيق ثغرة كتابة الملف للملف.
هذا في حد ذاته لم يكن مفيدًا للغاية في أجهزة الإنتاج ، وبالتالي كنا بحاجة إلى إيجاد طريقة لاستدعاء خدمة Luna التعسفية من تطبيق مع com.webos.
/ com.palm.
/ com.lge.
معرف التطبيق.
من أجل الحصول على عنصر تحكم برنامجي أولي في واجهة المستخدم الرسومية التلفزيونية ، يمكن استخدام واجهة تسمى "تطبيقات LG Connect". بروتوكولها ، المسمى "SSAP" (بروتوكول الوصول إلى الخدمة البسيط) ، هو آلية RPC بسيطة تستند إلى WebSocket والتي يمكن استخدامها للتفاعل بشكل غير مباشر مع ناقل خدمة Luna ، وقد تم توثيقها على نطاق واسع في سياقات مختلفة متعلقة بالتمثيل المنزلي. نستخدم ذلك لإطلاق تطبيق نظام ضعيف لا يمكن الوصول إليه بسهولة مع تفاعل المستخدم العادي.
من المفترض أن تستخدم SSAP API من تطبيق محمول خارجي. من أجل البساطة ، أردنا أن نخدم استغلالنا كصفحة ويب. هذا يقودنا إلى ملاحظة أنه ، من المفهوم ، يرفض خادم SSAP بشكل صريح أي اتصالات من (plaintext) HTTP Origins. ومع ذلك ، كان هناك استثناء إضافي لتلك القاعدة ، ويبدو أن المؤلفين أرادوا السماح file://
الأصول ، التي تقدم أنفسهم إلى الخادم على أنها null
. تبين أن هناك أصلًا آخر يمكن استخدامه والذي يتم إعادة تدويره أيضًا على أنه null
، وهذا هو data:
URIS.
من أجل استغلال هذا ، قمنا بإنشاء تطبيق Perxy WebSocket API الحد الأدنى الذي يفتح iframe المخفي مع حمولة JavaScript (التي تعمل الآن في data:
/ أصل null
) وتبادل الرسائل مع إطار المتصفح الرئيسي. تم إصدار هذا كمكتبة منفصلة.
هناك مشكلة بسيطة في إنشاء اتصال مع SSAP WebSocket Server. بينما نؤمن جميعًا بالفوضى التام ، لا نشعر بالراحة الشديدة في تقديم استغلالنا على النص العادي HTTP ، والتي ستكون الطريقة الوحيدة لتجنب سياسات الوقاية من المحتوى المختلط. (بشكل افتراضي ، لا يُسمح لأصول HTTPS بالتواصل مع نقاط نهاية HTTP PlainteTex)
في حين أن بعض إصدارات الكروم الأحدث تسمح بتواصل محتوى مختلط مع localhost
، لم يكن هذا هو الحال عند إصدار Chromium 38 (المستخدم في WebOS 3.x). لحسن الحظ ، يبدو أن متصفح النظام على WebOS 3.x معرض أيضًا لشيء يعتبر مشكلة أمنية في معظم المتصفحات لفترة من الوقت - التنقل إلى data:
URIS. وهكذا ، عند الاقتضاء ، تحاول مآثرنا فتح نفسها data:
URI المصنوعة من BASE64. هذا يجعل متصفحنا لم يعد يفكر في أن يكون الأصل آمنًا ، ويمكننا مرة أخرى الوصول إلى خادم WebSocket Plain-HTTP.
قد يكون القارئ الملاحظ قد لاحظ أن الخدمة التي نستخدمها تهدف إلى استخدامها عن بُعد. على الرغم من أن الاتصال نفسه يحتاج إلى تأكيد باستخدام جهاز تحكم عن بُعد ، فإننا نوصي بشدة بتعطيل وظيفة تطبيقات LG Connect من أجل منع الاستغلال عن بُعد. ومع ذلك ، يبدو أن هذا الخيار موجود فقط على إصدارات WebOS أقدم من WebOS 4.x - في مثل هذه الحالات ، تكون الحلول الوحيدة هي إما الحفاظ على التلفزيون على شبكة منفصلة ، أو تعطيل خدمة SSAP يدويًا باستخدام الأمر التالي بعد الجذر:
luna-send -n 1 ' palm://com.webos.settingsservice/setSystemSettings ' ' {"category":"network","settings":{"allowMobileDeviceAccess":false}} '
وجود بعض التحكم البرنامجي الأولي في التلفزيون عبر SSAP ، يمكننا تنفيذ أي تطبيق موجود على التلفزيون. يمكن أن تحتوي جميع عمليات الإطلاق عبر التطبيق على كائن JSON إضافي يسمى launchParams
. هذا يستخدم على سبيل المثال. افتح متصفح نظام مع موقع معين مفتوح ، أو قم بتشغيل فيديو على YouTube محدد مسبقًا. تبين أن هذه الوظيفة تستخدم أيضًا لتحديد موقع الويب الاجتماعي الذي يجب استخدامه في com.webos.app.facebooklogin
، وهو شقيق أقدم من com.webos.app.iot-thirdparty-login
المستخدم في الاستغلال الأولي ، الموجود على جميع إصدارات الويب حتى (على الأقل) 3.x.
عند بدء تسجيل الدخول الاجتماعي عبر إدارة حساب LG ، يقبل هذا التطبيق وسيطة تسمى server
. تبين أن هذا جزء من عنوان URL الذي يتم التنقل فيه إلى متصفح "تطبيق الويب". وبالتالي ، باستخدام launchParams
التي تم إعدادها بشكل صحيح ، يمكننا فتح صفحة ويب تعسفية (مع المتطلب الوحيد هو أنه يتم تقديمه عبر https
) الذي يعمل كتطبيق نظام يعتبره LunaDownloadMgr
A "نظام".
نظرًا لأننا نعمل بالفعل كتطبيق للنظام ، يمكننا تنزيل الملفات (بشكل آمن عبر HTTPS!) إلى مواقع نظام الملفات غير المقيدة بشكل تعسفي كجذر.
نستخدم ذلك لتنزيل الملفات التالية:
stage3.sh
→ /media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/start-devmode.sh
/usr/palm/services/com.palmdts.devmode.service/start-devmode.sh - هذا هو البرنامج النصي الذي تم تنفيذه عند بدء التشغيل بواسطة /etc/init/devmode.conf
كجذر ، من أجل تشغيل وضع المطور سجن SSH Daemon.hbchannel.ipk
→ /media/internal/downloads/hbchannel.ipk
- نظرًا لأن هدفنا النهائي هو تحديد تطبيق القناة الرئيسية ، يمكننا أيضًا تنزيله خلال المراحل المبكرة من استغلاله وتأكيده تم تنزيله بالفعل.devmode_enabled
→ /var/luna/preferences/devmode_enabled
- هذا هو العلامة التي تم فحصها قبل تشغيل البرنامج النصي start-devmode.sh
، وهو مجرد ملف وهمية. stage3.sh
Script هو أداة الحد الأدنى ، بعد فتح قذيفة Telnet في حالات الطوارئ وإزالة نفسها (في حالة حدوث خطأ ما ويحتاج المستخدم إلى إعادة تشغيل جهاز التلفزيون - يستمر البرنامج النصي في التشغيل ولكن لن يتم تنفيذها بعد ذلك في بدء التشغيل التالي) تطبيق قناة Homebrew عبر مكالمات خدمة DevMode المعيارية ويرفع خدمتها لتشغيل غير مسبقة الجذر أيضًا.
حوالي 2021/06 بدأت LG في طرح نسخة مصححة تضمنت بعض الإصلاحات للحيل التي استخدمناها في هذه السلسلة:
public
/etc/palm/luna-downloadmgr/download.json
start-devmode.sh
بتوقيع ويتم التحقق منه الآن باستخدام openssl
على كل حذاءstart-devmode.sh
.معظم هذه التخفيفات تافهة للغاية ، وبالتالي ما زلنا نعتبر هذه السلسلة غير مثبتة.
start-devmode.sh
كان تقديرنا الأولي لإصلاح هذه المشكلات في سلسلتنا "بضع ساعات" - بقع نظرية على جانبنا في 2021/05/27 تبين أنها صحيحة ، ولكن بسبب بعض الخيارات الاستراتيجية وعدم وجود الوقت الشخصي ، قررنا ذلك تأجيل الاختبار والإصدار لبضعة أشهر. آسف. سائدا