การดีบัก iPhone จาก Mac
คู่มือนี้พาจากโทรศัพท์ที่ติดตั้ง Chute ไปจนถึงหน้าต่างบน Mac ที่แสดงคำขอที่ถอดรหัสแล้วของโทรศัพท์นั้น พร้อมเนื้อหาคำขอและการตอบกลับ พร้อมกรองและส่งออก มันร้อยเรียงสิ่งที่มีหน้าอ้างอิงของตัวเอง — CA รายการโฮสต์ การบันทึก ช่องทางควบคุม Dashboard — ตามลำดับที่คุณทำจริง และบอกในแต่ละขั้นว่าคุณควรเห็นอะไรก่อนไปต่อ
คุณต้องมี:
- Chute iOS บนโทรศัพท์ พร้อมใบอนุญาต การถอดรหัส HTTPS และการจับเนื้อหาต้องมีใบอนุญาตบน iPhone หากไม่มีใบอนุญาต ทุกอย่างด้านล่างยังเชื่อมต่อได้ แต่แถว HTTPS ยังคงทึบและแท็บข้อมูลจะเลือกไม่ได้ ดูใบอนุญาตและการเปิดใช้งาน
- Chute Dashboard บน Mac — ฟรี ไม่ต้องมีใบอนุญาต
- สาย USB (แนะนำ: ไม่ต้องเปิดอะไรบนเครือข่าย และใช้ได้บนเซลลูลาร์) หรือโทรศัพท์และ Mac อยู่บน Wi-Fi เดียวกัน
ถ้าคุณไม่อยากติดตั้งอะไรบน Mac คอนโซลเว็บแสดงการเชื่อมต่อ เนื้อหา และการเขียนใหม่แบบเดียวกันในเบราว์เซอร์ และต้องการเพียง
external-http-controllerบนโทรศัพท์ ขั้นตอนที่ 1–3 ด้านล่างใช้ได้เหมือนเดิม ตั้งแต่ขั้นตอนที่ 4 ให้ทำตามการเปิดคอนโซลเว็บแทน
1. ติดตั้งและเชื่อถือ CA
บนโทรศัพท์ ในตัวแก้ไขการกำหนดค่า: MITM → กำหนดค่า CA → สร้างใบรับรอง CA ใหม่ จากนั้น ติดตั้งใบรับรอง CA ลงในระบบ แล้วเชื่อถือมันใน การตั้งค่า → ทั่วไป → เกี่ยวกับ → การตั้งค่าความน่าเชื่อถือของใบรับรอง ขั้นตอนเต็ม รวมถึงขั้นที่ทุกคนพลาด อยู่ในหน้าการถอดรหัส HTTPS
คุณควรเห็น: หน้าใบรับรองแสดง ใบรับรอง CA ที่เชื่อถือ ถ้าแสดง ไม่เชื่อถือ สวิตช์ความเชื่อถือในการตั้งค่าความน่าเชื่อถือของใบรับรองยังปิดอยู่ — ไม่มีอะไรหลังจากนี้จะทำงานจนกว่าจะเปิด
2. ระบุว่าจะถอดรหัสโฮสต์ใด
Chute ถอดรหัสเฉพาะโฮสต์ที่คุณระบุ ในส่วน MitM ของตัวแก้ไข (ส่วนที่มี กำหนดค่า CA) เพิ่มโฮสต์ที่คุณต้องการดู เริ่มแคบ ๆ — โฮสต์ API ของแอปที่คุณกำลังดีบัก — แทนที่จะใช้ *: ทุกโฮสต์ที่ถอดรหัสใช้ CPU บนโทรศัพท์ และบางแอปปักหมุดใบรับรองและพังเมื่อถูกถอดรหัส ควรยกเว้น *.apple.com ตั้งแต่แรก
[MITM]
enable = true
hostname = api.example.com, *.example.net, -*.apple.com
ไวยากรณ์ — พอร์ต การยกเว้นด้วย - การจำกัดด้วย /path — อยู่ในหน้าการถอดรหัส HTTPS ภายหลังคุณยังเพิ่มและลบโฮสต์จากแผง กฎ MitM ของ Dashboard ขณะดูผลได้ แล้วคัดลอกที่ใช้ได้ลงในการกำหนดค่า
3. เปิดการถอดรหัสและการบันทึก
บนแผงควบคุมของโทรศัพท์ สวิตช์สองตัว:
- MitM — เปิดการถอดรหัส สำหรับโฮสต์จากขั้นตอนที่ 2
- การดักจับทราฟฟิก — บันทึกเนื้อหาคำขอและการตอบกลับ (การตั้งค่า
replica) ถ้าไม่เปิด Dashboard จะแสดงทุกการเชื่อมต่อพร้อมกฎและนโยบาย แต่ไม่มีข้อมูล
ทั้งสองยังสลับได้ภายหลังจากแถบเครื่องมือของ Dashboard ดังนั้นลืมตอนนี้ก็ไม่เป็นไร ทั้งสองไม่คงอยู่หลังเริ่มใหม่เว้นแต่จะอยู่ในการกำหนดค่า (replica = true ใน [General], enable = true ใน [MITM]) และบน iPhone ทั้งสองเป็นคุณสมบัติที่ต้องมีใบอนุญาต ซึ่งเอนจินจะปฏิเสธเมื่อไม่มีใบอนุญาต ไม่ว่าการกำหนดค่าจะเขียนไว้อย่างไร
4. อนุญาตให้ Dashboard เชื่อมต่อ
ในตัวแก้ไขการกำหนดค่า: ตัวควบคุมภายนอก
- เปิด การเข้าถึงตัวควบคุมภายนอก — เชิงอรรถของสวิตช์นี้เขียนว่า อนุญาตให้ Chute Dashboard/Chute CLI เชื่อมต่อ
- ใส่ พอร์ต (พอร์ตว่างใดก็ได้ ใช้
6170ถ้าไม่มีความชอบเป็นพิเศษ) และ รหัสผ่าน ของคุณเอง - อนุญาตการเข้าถึงจาก Wi-Fi: ปล่อยไว้ปิดสำหรับ USB เปิดเฉพาะเมื่อคุณจะเชื่อมต่อผ่าน Wi-Fi — มันเปิดตัวรับฟังให้ทุกคนบนเครือข่ายนั้นที่มีรหัสผ่าน
- บันทึก แล้วเริ่ม (หรือเริ่มใหม่) ทันเนล
คุณควรเห็น: แผงควบคุมแสดง พอร์ตการเข้าถึงภายนอก: 6170 (พอร์ตของคุณ) ถ้าไม่มีบรรทัดนี้ ทันเนลไม่ได้รันการกำหนดค่าที่บันทึกไว้ — เริ่มใหม่
5. เชื่อมต่อ Dashboard
เสียบโทรศัพท์เข้ากับ Mac และถ้าโทรศัพท์ถาม ให้แตะ เชื่อถือ คอมพิวเตอร์นี้ เปิด Chute Dashboard ในหน้าต่าง Dashboard ใหม่ เลือก เชื่อมต่อผ่าน USB เลือกโทรศัพท์ใต้ อุปกรณ์: ใส่ พอร์ต จากขั้นตอนที่ 4 และ รหัสผ่าน แล้วเชื่อมต่อ
ผ่าน Wi-Fi แทน: เชื่อมต่อกับเครื่องระยะไกล โดย โฮสต์ = ที่อยู่ของโทรศัพท์ (การตั้งค่า → Wi-Fi → ⓘ, ที่อยู่ IP) และพอร์ตกับรหัสผ่านเดียวกัน
คุณควรเห็น: หน้าต่าง Dashboard อีกหน้าต่างหนึ่งเปิดขึ้นมา และรายการ ทำงาน ของมันเติมขึ้นขณะที่โทรศัพท์สร้างการเชื่อมต่อ ถ้าว่างเปล่า ใช้โทรศัพท์สักสองสามวินาที มีสองอย่างที่ผิดพลาดได้ที่นี่: รหัสผ่านไม่ตรงกัน และโทรศัพท์ที่เข้าถึงไม่ได้ (ที่อยู่ผิด การเข้าถึง Wi-Fi ปิด ทันเนลไม่ทำงาน) — หน้าต่างก็ยังเปิดขึ้น ผ่าน Wi-Fi จะจบที่ การเชื่อมต่อถูกปิด ส่วนผ่าน USB จะค้างอยู่ที่ กำลังเชื่อมต่อ… และลองใหม่ไปเรื่อย ๆ จนกว่าโทรศัพท์จะตอบ หน้า Dashboard มีรายละเอียด
6. ตรวจสอบสวิตช์บนแถบเครื่องมือ
ด้านบนของรายการทำงาน สวิตช์สองตัวจากขั้นตอนที่ 3 ตามที่ Dashboard เห็น:
- การดักจับทราฟฟิก ควรแสดงเป็น ปิดการดักจับทราฟฟิก — การบันทึกเปิดอยู่ ถ้าแสดงเป็น เปิดการดักจับทราฟฟิก ให้คลิก
- เปิด MitM (N กฎ) ควรแสดงเป็น ปิด MitM (N กฎ) — การถอดรหัสเปิดอยู่ และ
Nคือจำนวนโฮสต์จากขั้นตอนที่ 2 ถ้าปุ่มไม่มีจำนวน(N กฎ)ต่อท้าย รายการโฮสต์ไปไม่ถึงโทรศัพท์: ตรวจสอบขั้นตอนที่ 2 และเริ่มทันเนลใหม่
7. ทำซ้ำและหาคำขอ
ทำสิ่งที่คุณต้องการดูทราฟฟิกในแอป จากนั้นจำกัดรายการด้วยแถบตัวกรองที่อยู่เหนือรายการ: พิมพ์โฮสต์ใน กรองโฮสต์/URL… — ช่อง ตัวกรอง บนแถบเครื่องมือก็คือการค้นหาเดียวกัน — หรือติ๊ก เฉพาะ MitM เพื่อเก็บเฉพาะแถวที่ถอดรหัสแล้ว
คุณควรเห็น: แถวของโฮสต์ของคุณมี M ในคอลัมน์ แฟล็ก คอลัมน์ เมธอด แสดงประเภทการเชื่อมต่อ — HTTPS — ไม่ใช่เมธอด HTTP ของคำขอ: บรรทัดคำขอและบรรทัดสถานะคือแถวแรกของ ส่วนหัวคำขอ และ ส่วนหัวการตอบกลับ เลือกแถวหนึ่ง: แท็บ ส่วนหัวคำขอ มีส่วนหัว พารามิเตอร์คิวรี และคุกกี้ ข้อมูลการตอบกลับ แสดงเนื้อหา เป็น ข้อความ จนกว่าคุณจะเลือก JSON เพื่อดูเป็นต้นไม้ หรือ รูปภาพ เพื่อดูเป็นภาพ
ถ้าแถวของโฮสต์คุณไม่มี M การเชื่อมต่อไม่ได้ถูกถอดรหัส เรียงตามความน่าจะเป็น: โฮสต์ไม่อยู่ในรายการ (หรือรูปแบบไม่ตรง — api.example.com ไม่ครอบคลุม www.example.com) MitM ปิด CA ติดตั้งแล้วแต่ไม่ได้เชื่อถือ (แอปเองจะแสดงข้อผิดพลาดใบรับรอง) แอปปักหมุดใบรับรอง (ยกเว้นโฮสต์และยอมรับว่าดูข้างในไม่ได้) แอปใช้ HTTP/3 บน QUIC ซึ่งถอดรหัสไม่ได้ — ตั้ง block-quic เพื่อบังคับกลับไป TCP
ถ้าแถวมี M แต่เลือก ข้อมูลคำขอ และ ข้อมูลการตอบกลับ ไม่ได้ แปลว่าไม่มีอะไรถูกจับไว้: การบันทึกปิดอยู่ตอนที่การเชื่อมต่อนั้นทำงาน (เปิดแล้วทำซ้ำ) หรือโฮสต์ถูกกรองออกโดย [Replica] บนโทรศัพท์ เนื้อหาที่ใหญ่กว่า 2 MiB คือเนื้อหาที่โทรศัพท์ปฏิเสธที่จะส่ง แท็บของมันจะแสดงว่า ไม่สามารถโหลดเนื้อหานี้ได้
8. เก็บสิ่งที่พบ
เลือกแถวแล้วคลิกขวาที่แถวใดแถวหนึ่ง: ส่งออกที่เลือกเป็น HAR… เขียนทุกแถวที่เลือกพร้อมเนื้อหาลงไฟล์ที่เปิดได้ในเครื่องมือนักพัฒนาของเบราว์เซอร์ Charles หรือ Proxyman คัดลอกคำสั่ง curl คัดลอกคำขอของแถวที่คลิก เพื่อทำซ้ำจากเทอร์มินัลของ Mac ส่งออกที่เลือกเป็น CSV… สำหรับสเปรดชีต ส่งออกเป็น bin ในแท็บข้อมูลบันทึกเนื้อหาหนึ่งรายการตามที่จับได้
9. เปลี่ยนอะไรสักอย่าง (ไม่บังคับ)
แผงของมุมมอง MitM แก้ไขเอนจินที่กำลังทำงาน การทดลองเร็ว ๆ สองอย่าง:
- Header Rewrite → เพิ่มกฎสำหรับโฮสต์ของคุณ: คำขอ, เพิ่ม,
X-Debug=1ทำซ้ำ แถวใหม่จะมีHและRและ กฎที่ทำงาน ในแผงรายละเอียดอ้างกฎของคุณ - การตอบกลับจำลอง → ตอบจุดปลายทางด้วยเนื้อหาของคุณเอง ประเภทของ เนื้อหาการตอบกลับ เป็นเมนูป๊อปอัป —
file,text,base64หรือtiny-gif— และช่องข้าง ๆ รับสิ่งที่ประเภทนั้นต้องการ: เส้นทางสำหรับfile(ใช้ เรียกดู… เลือกได้) ตัวเนื้อหาเองสำหรับtextเนื้อหาในรูป base64 สำหรับbase64และไม่ต้องใส่อะไรสำหรับtiny-gifเส้นทางแบบfileถูกอ่านโดยโทรศัพท์ ซึ่งไม่มี/Users/…ดังนั้นสำหรับโทรศัพท์ให้เลือกtextหรือbase64แล้วใส่เนื้อหาลงในกฎเลย ตรงในแผงนี้ — ดูหมายเหตุใต้เครื่องมือ MitM แถวที่ถูกจำลองมีK
กฎที่เพิ่มที่นี่จะหายไปเมื่อทันเนลเริ่มใหม่ เมื่อกฎใดใช้ได้ ให้เขียนลงในการกำหนดค่า — หน้าอ้างอิง: URL Rewrite, Header Rewrite, Body Rewrite, การตอบกลับจำลอง
เมื่อเสร็จแล้ว
- ปิด การดักจับทราฟฟิก หรือตั้ง
replica = false: เนื้อหาจะสะสมบนโทรศัพท์ตราบเท่าที่การบันทึกเปิดอยู่ - ปิด อนุญาตการเข้าถึงจาก Wi-Fi อีกครั้งถ้าคุณเปิดไว้
- ปล่อย CA ติดตั้งไว้ถ้าจะทำอีก ไม่เช่นนั้นให้ลบใน การตั้งค่า → ทั่วไป → VPN และการจัดการอุปกรณ์
หน้านี้เป็นฉบับแปลจากเวอร์ชันภาษาอังกฤษ หากเนื้อหาไม่ตรงกัน ให้ยึดเวอร์ชันภาษาอังกฤษเป็นหลัก