تطبيق (un) الرسمي Habr - HabrApp 2.0: الوصول

في أمسية ضيقة ومملة إلى حد ما ، وأنا ، وأنا أتصفح التطبيق الرسمي للحبر ، عازمت أصابعي مرة أخرى ، واحدة لكل ميزة خاملة. هنا ، على سبيل المثال ، من المستحيل التعليق ، فهم محرومون من حق التصويت ، وبشكل عام ، لماذا لا تظهر الصيغ على الشاشة؟



لقد تقرر: أنت بحاجة إلى شيء مريح ، ممتع ، خاص بك. ماذا عن تطبيقك للحبر؟
دعنا نقدم بعض لقطات الشاشة لفهم الموقف.

بطريقة ما يبدو هذا - من. تطبيق habr.com

قائمة "المضايقات"
  • لا يمكنك تقييم المنشور الذي يكون تقييمه غير الصفر
  • ليس من الممكن دائمًا كتابة تعليق
  • المسوحات لا تعمل
  • الصيغ غير مرئية في الموضوع المظلم (الأسود على الأسود)
  • ليس كل الإشارات المرجعية المتاحة

نعم ، لم يتم تحديث التطبيق منذ آب (أغسطس) الماضي ، لكنه لا يزال سيئًا. بشكل عام ، تحتاج إلى إصلاحه.

الجزء الأول بحثا عن الوصول.


تم إصدار طلب سريع إلى Google "habrahabr API" بالفعل من قبل مستودع جيثب المتقادم ، والذي لم يتم تحديثه منذ 21 نوفمبر 2016 ، وهذا لمدة دقيقة ونصف العام .

تجاهل حقيقة أن هذا هو PHP ، انتقل لأسفل وقراءة:


الحصول على معرف التطبيق



باستخدام هذا النموذج على Habrahabr ، تحتاج إلى وصف موجز للتطبيق الجديد والغرض الذي يحتاج إلى API.


ليس السؤال إذا كنت بحاجة إلى الوصول ، فأنت بحاجة لذلك. نكتب خطابًا (باختصار):


خطاب

هناك رغبة في تقديم طلب للحصول على Habr بناءً على PWA. هناك عدة أسباب لذلك.


الأول والأكثر قابلية للفهم: تطبيق Android لا يلبي متطلباتي الشخصية.


ثانياً: لا يوجد عدد كافٍ من الإشعارات المحلية حول جميع أنواع الأشياء التي تأتي عادة إلى مكتب البريد (التعليقات ، على سبيل المثال).


ثالثًا: الهضم الشخصي (كاحتمال) للأشخاص / المراكز التي تهمني ، نظرًا لاهتماماتي.


الجواب ، بالطبع ، لم يكن لطيفًا جدًا ، ولكن على الأقل صادق:


لسوء الحظ ، الوصول إلى API لدينا غير متاح حاليًا. نحن نخطط لاستئناف توفير إمكانية الوصول بعد الانتهاء من الانتهاء من API ، لكن ليس لدينا أي تواريخ محددة بعد ، لأن في الوقت الحالي ، نحن مشغولون بحل المهام الأخرى ذات الأولوية.


"حسنًا ، لا يهم! سنأتي بشيء! " قلت لنفسي ، وبدأت في البحث.


الجزء الثاني الحفر العميق.


بناءً على المنطق ، إذا كان التطبيق يعمل ، فيمكنه الوصول إلى واجهة برمجة التطبيقات ، ويتم توصيله بالتطبيق. دعنا نحلل.


بما أننا نتعامل مع حركة المرور ، فإن Wireshark هو خيارنا. لا تخلو من العذاب عن طريق توصيل الهاتف بالإنترنت من خلال جهاز كمبيوتر ثابت ، افتح التطبيق وانظر إلى الطلبات:


واضح أن لا شيء واضح

نعم ، كل شيء مشفر ، لكنني لا أريد العبث بالتشفير. ثم تحتاج إلى النظر داخل التطبيق نفسه.

بعد فك ترميز .apk ، نبدأ في البحث. ماذا يحتاج أي API؟ هذا صحيح ، نقطة النهاية ، المكان الذي تذهب إليه جميع الطلبات. من المحتمل أن يكون هذا http (s) ، حاول العثور على "https: //":

في ملف AuthLinkManager.smali نجد


 .field OAUTH:Ljava/lang/String; = "https://habrahabr.ru/auth/o/%s/" .field OAUTH_PARAMS:Ljava/lang/String; = "?client_id=%s&response_type=token&redirect_uri=%s" .field OAUTH_REDIRECT_URL:Ljava/lang/String; = "http://cleverpumpkin.ru" 

هذا هو رمز الجهاز الظاهري لنظام أندرويد ( Dalvik VM ) ، وهو غير واضح جدًا للبشر ، لكنه لا يزال غني بالمعلومات. يتم استخدام هذه الثوابت الثلاثة ، بناءً على محتوياتها واسمها ، بالإضافة إلى مستودع GitHub ، لطلب رمز وصول باستخدام طريقة GET .


نحن ننظر أبعد من ذلك. ملف NetworkModule.smali التالي الذي تجده في بحثك:


 const-string v0, "https://habr.com/api/v1/" 

وهنا هو المكان المناسب للذهاب مع الطلبات!


من أجل التشغيل العادي للعميل المكتوب ذاتيا ، لا يتبقى سوى شيء واحد فقط لمعرفة - client_id ، وهو على الأرجح معرف فريد للتطبيق.


ومع ذلك ، فإن عمليات البحث في هذا النص في المصادر لم تؤد إلى العثور على المعلومات ذات الصلة ...


ولكن فجأة ، في ملف واحد ، اشتعلت عيني على خطوط مثيرة للاهتمام:


 const-string p8, "log-tag" invoke-static {p8, p2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I 

هذا ، كما يمكنك فهم ، هو إدخال سجل. لكن سجل ماذا؟


الجزء الثالث. هنا هي سجلات!


نحن نستخدم adb logcat لعرض سجلات التطبيق.



بشكل غير متوقع ، ولكن السجلات كانت أكثر تفصيلا مما كان متوقعا.


هنا ليس فقط client_id الذي client_id ، ولكن أيضًا رمز المستخدم / التطبيق ، وكذلك تسجيل الدخول وكلمة المرور client_id !


بعض نظريات المؤامرة
لا يضر وجود سجلات تسجيل الدخول وكلمة المرور في حد ذاته بأي شيء ، حيث لا يمكن قراءة هذه السجلات إلا باستخدام حقوق الجذر أو اتصال adb . ولكن نظرًا لوجود حقيقة بين الأشخاص الذين يقرؤون Habr ، هناك مطورون على نظام android يمكنهم تمكين تصحيح الأخطاء ، فقد أصبحت هذه مشكلة.

في هذه الحالة ، يمكن أن تؤدي "الرسوم المجانية" في المطار إلى سرقة الحساب ، على الرغم من من يحتاج إليها؟

من هذه السجلات يمكنك إجراء:

  • client_id و apikey اللازمة للوصول إلى api ؛
  • عنوان URL لترخيص المستخدم (غريب ، ولكن لا يوجد شيء في المستودع عن هذه الطريقة ، فربما لم يتم توفيره؟)

وهذا ما حدث. بناءً على هذه الدراسة الصغيرة ، يجري العمل بالفعل على مشروع صغير - تنفيذه الخاص لتطبيقات الهاتف المحمول. إذا كنت ترغب في المساعدة ، يرجى الكتابة في الرسائل وأي شخص آخر - للتصويت (لأنني أريد أن أفهم ما إذا كان أي شخص يحتاج إلى ذلك).

شكرا لاهتمامكم!

Source: https://habr.com/ru/post/ar447148/


All Articles