ค่ำคืนหนึ่งที่อิดโรยและค่อนข้างน่าเบื่ออยู่แล้ว ฉันกำลังจะผ่านไป เป็นทางการ แอปพลิเคชัน Habr ฉันงอนิ้วอีกครั้ง หนึ่งอันสำหรับแต่ละฟีเจอร์ที่ไม่ทำงาน ตัวอย่างเช่นคุณไม่สามารถแสดงความคิดเห็นได้ที่นี่คุณถูกปฏิเสธสิทธิ์ในการลงคะแนนเสียงและโดยทั่วไปเหตุใดสูตรจึงไม่ปรากฏบนหน้าจอ
มีการตัดสินใจแล้วว่า เราต้องการบางสิ่งที่สะดวกสบาย น่าพึงพอใจ เป็นของเราเอง แล้วการสมัคร Habr ของคุณเองล่ะ?
ฉันจะให้ภาพหน้าจอบางส่วนเพื่อทำความเข้าใจสถานการณ์
มีลักษณะเช่นนี้ มัน - ของ. แอปพลิเคชั่น habr.com
รายการ "ความไม่สะดวก"
- คุณไม่สามารถให้คะแนนสิ่งพิมพ์ที่มีคะแนนแตกต่างจาก 0
- ไม่สามารถเขียนความคิดเห็นได้เสมอไป
- โพลไม่ทำงาน
- สูตรไม่สามารถมองเห็นได้ในธีมสีเข้ม (ดำบนพื้นดำ)
- บุ๊กมาร์กบางส่วนอาจไม่พร้อมใช้งาน
ใช่ แอปไม่ได้รับการอัพเดตตั้งแต่เดือนสิงหาคมปีที่แล้ว แต่ก็ยังแย่อยู่ โดยทั่วไปแล้วจะต้องมีการแก้ไข
ส่วนที่หนึ่ง กำลังมองหาการเข้าถึง
แบบสอบถาม Google ด่วน "habrahabr API" มันบอกว่ามันค่อนข้างล้าสมัยไปแล้ว
โดยไม่สนใจความจริงที่ว่านี่คือ PHP ให้เลื่อนลงและอ่าน:
รับ ID แอปพลิเคชัน
การใช้ประโยชน์จาก
แบบฟอร์มนี้ บน Habrahabr คุณต้องอธิบายโดยย่อถึงสาระสำคัญของแอปพลิเคชันใหม่และวัตถุประสงค์ที่ต้องใช้ API
ไม่มีคำถาม หากคุณต้องการเข้าถึง คุณก็จำเป็นต้องมี เราเขียนจดหมาย (ตัวย่อ):
จดหมาย
มีความปรารถนาที่จะยื่นขอ Habr ตาม PWA มีหลายสาเหตุนี้.
สิ่งแรกและชัดเจนที่สุด: แอปพลิเคชัน Android ไม่ตรงตามข้อกำหนดส่วนตัวของฉัน
ประการที่สอง: มีการแจ้งเตือนแบบเนทีฟไม่เพียงพอเกี่ยวกับสิ่งต่าง ๆ ที่มักจะมาทางอีเมล (เช่น ความคิดเห็น)
ประการที่สาม: สรุปส่วนตัว (ตามมุมมอง) เกี่ยวกับผู้คน/ศูนย์กลางที่ฉันสนใจ โดยคำนึงถึงความสนใจของฉัน
แน่นอนว่าคำตอบนั้นไม่น่าพอใจนัก แต่อย่างน้อยก็ตรงไปตรงมา:
ขออภัย ขณะนี้ยังไม่สามารถเข้าถึง API ของเราได้ เราวางแผนที่จะให้สิทธิ์เข้าถึงต่อหลังจากที่เราสรุป API เสร็จแล้ว แต่เรายังไม่มีวันที่ที่แน่นอน เนื่องจาก ขณะนี้เรากำลังยุ่งอยู่กับการแก้ไขงานสำคัญอื่นๆ
"ได้ไม่มีปัญหา! เราจะคิดอะไรสักอย่าง!” - ฉันบอกตัวเองและเริ่มมองหา
ส่วนที่สอง การขุดค้นลึก
ตามตรรกะ หากแอปพลิเคชันกำลังทำงานอยู่ ก็จะสามารถเข้าถึง API และเดินสายเข้าไปในแอปพลิเคชัน มาวิเคราะห์กัน
เนื่องจากเรากำลังเผชิญกับการจราจร Wireshark จึงเป็นตัวเลือกของเรา เมื่อเชื่อมต่อโทรศัพท์กับอินเทอร์เน็ตผ่านคอมพิวเตอร์เดสก์ท็อปแล้วเราก็เปิดแอปพลิเคชันและดูคำขอ:
ชัดเจนว่าไม่มีอะไรชัดเจน
ใช่ ทุกอย่างถูกเข้ารหัส แต่ฉันไม่อยากยุ่งกับการเข้ารหัส จากนั้นคุณต้องดูภายในแอปพลิเคชันเอง
ถอดรหัสแล้ว . เอพีเคเรามาเริ่มค้นหากันเลย API ใด ๆ ต้องการอะไร? ขวา, ปลายทางสถานที่ที่คำขอทั้งหมดไป นี่อาจเป็น http ลองค้นหา “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 (ดาลวิค วีเอ็ม) ไม่ค่อยเป็นที่เข้าใจสำหรับมนุษย์ แต่ก็ยังให้ข้อมูลค่อนข้างมาก ค่าคงที่ทั้งสามนี้ ตัดสินจากเนื้อหาและชื่อ รวมถึงพื้นที่เก็บข้อมูล 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
อย่างที่คุณเข้าใจ นี่คือรายการบันทึก แต่บันทึกอะไรล่ะ?
ส่วนที่ XNUMX นี่คือบันทึก!
เราใช้ adb logcat
เพื่อดูบันทึกแอปพลิเคชัน
โดยไม่คาดคิด บันทึกมีรายละเอียดมากกว่าที่คาดไว้
ที่นี่เราไม่เพียงมีสิ่งที่เราต้องการเท่านั้น client_id
แต่ เหรียญ ผู้ใช้/แอปพลิเคชัน และ เข้าสู่ระบบ и รหัสผ่าน ในข้อความธรรมดา!
ทฤษฎีสมคบคิดบางประการการมีอยู่ของการเข้าสู่ระบบและรหัสผ่านในบันทึกไม่เป็นอันตรายต่อสิ่งใด เนื่องจากบันทึกเหล่านี้สามารถอ่านได้ด้วยสิทธิ์รูทหรือการเชื่อมต่อผ่าน adb
. แต่เนื่องจากในหมู่คนที่อ่าน Habr มีนักพัฒนา Android ที่อาจเปิดใช้งานการแก้ไขข้อบกพร่อง สิ่งนี้จึงกลายเป็นปัญหา
ในกรณีนี้ “การเรียกเก็บเงินฟรี” ที่สนามบินอาจส่งผลให้บัญชีถูกขโมย แต่ใครจะต้องการล่ะ?
จากบันทึกเหล่านี้เราสามารถแยกได้:
client_id
иapikey
จำเป็นต้องเข้าถึง API;- URL การอนุญาตผู้ใช้ (แปลก แต่ไม่มีสิ่งใดในที่เก็บเกี่ยวกับวิธีการนี้ อาจไม่ได้ระบุไว้ใช่ไหม)
นั่นเป็นวิธีที่มันเกิดขึ้น จากการวิจัยเล็กๆ นี้ งานกำลังดำเนินอยู่ในโครงการขนาดเล็ก - การใช้งานแอปพลิเคชันมือถือของเราเอง ฉันขอให้ผู้ที่ต้องการช่วยเขียนข้อความและทุกคน - ลงคะแนน (เพราะฉันต้องการเข้าใจว่ามีใครต้องการสิ่งนี้หรือไม่)
ขอบคุณ!
เฉพาะผู้ใช้ที่ลงทะเบียนเท่านั้นที่สามารถเข้าร่วมในการสำรวจได้
คุณใช้แอปพลิเคชันมือถือ Habr หรือไม่?
-
ใช่ ฉันใช้มัน ฉันพอใจกับมัน
-
ใช่ ฉันใช้มัน แอปพลิเคชันทำให้เกิดความไม่สะดวก
-
ไม่ ฉันใช้เวอร์ชันเว็บบนโทรศัพท์ของฉัน
-
ไม่ ฉันใช้ Habr จากคอมพิวเตอร์
ผู้ใช้ 357 คนโหวต ผู้ใช้ 30 รายงดออกเสียง
ที่มา: will.com