برنامه (غیر)رسمی Habr - HabrApp 2.0: دسترسی

یک غروب بی حال و در حال حاضر کاملا خسته کننده، من در حال ورق زدن رسمی برنامه هابر، یک بار دیگر انگشتانم را خم کردم، برای هر ویژگی غیر کارکرده، یکی. اینجا مثلا نمیتونی نظر بدی اینجا از حق رای محروم میشی و کلا چرا فرمول ها روی صفحه نمایش داده نمیشن؟

برنامه (غیر)رسمی Habr - HabrApp 2.0: دسترسی
تصمیم گرفته شد: ما به چیزی راحت، دلپذیر، چیزی از خودمان نیاز داشتیم. در مورد درخواست خودتان برای هابر چطور؟
اجازه دهید چند اسکرین شات به شما بدهم تا وضعیت را درک کنید.

برنامه (غیر)رسمی Habr - HabrApp 2.0: دسترسییه جورایی اینجوری به نظر میاد این - از. اپلیکیشن habr.com

لیست "مشکلات"

  • شما نمی توانید به نشریه ای که رتبه آن با 0 متفاوت است امتیاز دهید
  • نوشتن نظر همیشه امکان پذیر نیست
  • نظرسنجی ها کار نمیکنه
  • فرمول‌ها در تم تیره قابل مشاهده نیستند (سیاه روی سیاه)
  • همه نشانک ها در دسترس نیستند

بله، برنامه از آگوست سال گذشته به روز نشده است، اما هنوز هم بد است. به طور کلی باید اصلاح شود.

بخش اول. به دنبال دسترسی

جستجوی سریع گوگل "habrahabr API" می گوید که در حال حاضر کاملا منسوخ شده است مخزن در Github، از آن زمان به روز نشده است نوامبر 21 2016و این یک لحظه دو سال و نیم.

با نادیده گرفتن این واقعیت که این PHP است، به پایین بروید و بخوانید:

دریافت شناسه برنامه

با استفاده از این فرم در Habrahabr، باید به طور خلاصه ماهیت برنامه جدید و هدفی که برای آن به یک API نیاز دارد، توضیح دهید.

هیچ سوالی وجود ندارد، اگر شما نیاز به دسترسی دارید، پس به آن نیاز دارید. ما نامه ای می نویسیم (به اختصار):

نوشتن

تمایل به ایجاد یک برنامه برای Habr بر اساس PWA وجود دارد. دلایل متعددی برای این امر وجود دارد. 

اولین و واضح ترین: برنامه اندروید نیازهای شخصی من را برآورده نمی کند.

دوم: اعلان‌های بومی کافی در مورد انواع چیزهایی که معمولاً از طریق ایمیل ارسال می‌شوند (برای مثال نظرات) وجود ندارد.

سوم: هضم شخصی (به عنوان یک دیدگاه) در مورد افراد/مرکزهایی که به من علاقه دارند، با در نظر گرفتن علایقم.

پاسخ، البته، چندان خوشایند نبود، اما حداقل صادقانه:

متأسفانه، دسترسی به API ما در حال حاضر در دسترس نیست. ما قصد داریم پس از اتمام نهایی API، ارائه دسترسی را از سر بگیریم، اما هنوز تاریخ دقیقی نداریم، زیرا ما در حال حاضر مشغول حل سایر وظایف اولویت دار هستیم.

"خیلی خب مشکلی نیست! یه چیزی به ذهنمون میرسه!" - به خودم گفتم و شروع کردم به نگاه کردن.

بخش دوم. حفاری های عمیق

بر اساس منطق، اگر برنامه در حال اجرا باشد، به API دسترسی دارد و به برنامه متصل می شود. بیایید تحلیل کنیم.

از آنجایی که ما با ترافیک سروکار داریم، Wireshark انتخاب ماست. بدون دردسر، با اتصال تلفن از طریق رایانه رومیزی به اینترنت، برنامه را باز می کنیم و به درخواست ها نگاه می کنیم:

برنامه (غیر)رسمی Habr - HabrApp 2.0: دسترسی
روشن است که هیچ چیز مشخص نیست

بله، همه چیز رمزگذاری شده است، اما من نمی‌خواهم رمزنگاری را درگیر کنم. سپس باید داخل خود برنامه را بررسی کنید.

دکامپایل شد 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 برای مشاهده گزارش های برنامه

برنامه (غیر)رسمی Habr - HabrApp 2.0: دسترسی

به طور غیرمنتظره، سیاهههای مربوط به جزئیات بیشتر از حد انتظار بودند.

در اینجا ما نه تنها آنچه را که نیاز داریم داریم client_idاما نشانه کاربر/برنامه، و ورود به سیستم и رمز عبور در متن ساده!

برخی از تئوری های توطئهصرف وجود یک لاگین و رمز عبور در گزارش‌ها به هیچ چیز آسیبی نمی‌زند، زیرا این گزارش‌ها فقط با حقوق ریشه یا اتصال از طریق قابل خواندن هستند. adb. اما با توجه به این واقعیت که در بین افرادی که Habr را مطالعه می کنند، توسعه دهندگان اندروید وجود دارند که ممکن است اشکال زدایی را فعال کرده باشند، این یک مشکل می شود.

در این مورد، "شارژ رایگان" در فرودگاه ممکن است منجر به سرقت حساب شود، اما چه کسی به آن نیاز دارد؟
از این لاگ ها می توانیم استخراج کنیم:

  • client_id и apikeyمورد نیاز برای دسترسی API;
  • URL مجوز کاربر (عجیب است، اما چیزی در مخزن در مورد این روش وجود ندارد، شاید ارائه نشده باشد؟)

اینطور شد. بر اساس این تحقیقات کوچک، کار روی یک پروژه کوچک در حال انجام است - اجرای خودمان از یک برنامه تلفن همراه. از کسانی که می‌خواهند کمک کنند می‌خواهم پیام بنویسند، و از بقیه - رای بدهند (زیرا می‌خواهم بفهمم آیا کسی به این نیاز دارد یا خیر).

با تشکر از شما!

فقط کاربران ثبت نام شده می توانند در نظرسنجی شرکت کنند. ورود، لطفا.

آیا از اپلیکیشن موبایل هابر استفاده می کنید؟

  • بله استفاده میکنم ازش راضیم

  • بله، من از آن استفاده می کنم، برنامه باعث ناراحتی می شود

  • نه، من از نسخه وب روی گوشیم استفاده می کنم

  • نه، من از Habr از کامپیوترم استفاده می کنم

357 کاربر رای دادند. 30 کاربر رای ممتنع دادند.

منبع: www.habr.com

اضافه کردن نظر