(الأمم المتحدة) تطبيق Habr الرسمي - HabrApp 2.0: الوصول

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

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

(الأمم المتحدة) تطبيق Habr الرسمي - HabrApp 2.0: الوصولبطريقة ما يبدو مثل هذا هذا - ل. تطبيق habr.com

قائمة "الإزعاجات"

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

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

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

استعلام جوجل السريع "هابراهابر API" تقول أنها قديمة بالفعل مخزن على جيثب، لم يتم تحديثه منذ ذلك الحين نوفمبر 21 2016، وهذا، للحظة، عامين ونصف.

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

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

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

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

خطاب

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

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

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

ثالثاً: ملخصات شخصية (منظور) عن الأشخاص/المحاور التي تهمني، مع مراعاة اهتماماتي.

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

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

"حسنا لا مشكلة! سوف نتوصل إلى شيء ما!" - قلت لنفسي وبدأت أبحث.

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

استنادًا إلى المنطق، إذا كان التطبيق قيد التشغيل، فسيكون لديه حق الوصول إلى واجهة برمجة التطبيقات (API)، ويتم توصيله بالتطبيق. دعونا نحلل.

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

(الأمم المتحدة) تطبيق Habr الرسمي - HabrApp 2.0: الوصول
واضح أن لا شيء واضح

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

مفككة . APKلنبدأ بالبحث. ما الذي تحتاجه أي واجهة برمجة تطبيقات؟ يمين، نقطة النهاية، المكان الذي تذهب إليه جميع الطلبات. من المحتمل أن يكون هذا 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"

هذا هو الرمز الخاص بجهاز Android الظاهري (دالفيك 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 لعرض سجلات التطبيق.

(الأمم المتحدة) تطبيق Habr الرسمي - HabrApp 2.0: الوصول

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

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

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

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

  • client_id и apikeyالمطلوبة للوصول API;
  • عنوان URL لتفويض المستخدم (غريب، ولكن لا يوجد شيء في المستودع حول هذه الطريقة، ربما لم يتم توفيره؟)

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

شكرا لك!

يمكن للمستخدمين المسجلين فقط المشاركة في الاستطلاع. تسجيل الدخول، من فضلك.

هل تستخدم تطبيق حبر للهاتف المحمول؟

  • نعم، أستخدمه، وأنا سعيد به

  • نعم، أنا أستخدمه، التطبيق يسبب الإزعاج

  • لا، أنا أستخدم إصدار الويب على هاتفي

  • لا، أنا أستخدم حبر من جهاز الكمبيوتر الخاص بي

صوت 357 مستخدمين. امتنع 30 مستخدما عن التصويت.

المصدر: www.habr.com

إضافة تعليق