ทำความรู้จักกับระบบตั้งค่าเครือข่ายใน iPhone

ทำความรู้จักกับระบบตั้งค่าเครือข่ายใน iPhone

เมื่อเร็วๆ นี้มีข่าวว่าผู้ใช้งาน iPhone ในเครือข่ายโทรศัพท์ dtac เมื่อนำเครื่องเชื่อมต่อกับ iTunes แล้วทำการ Check for Update จะมีการดาวน์โหลดไฟล์ตั้งค่าของเครือข่าย dtac เข้ามาในเครื่องคอมพิวเตอร์ของเรา แล้วจึงมีการติดตั้งไฟล์ดังกล่าวลงไปใน iPhone (เนื้อข่าว)

ซึ่งถ้าจำกันได้เรื่องนี้ก็เคยเกิดขึ้นกับผู้ใช้งานในเครือข่ายโทรศัพท์ truemove เหมือนกัน (เนื้อข่าว)

บังเอิญว่าประเทศไทยยังมึจำนวนผู้ให้บริการเครือข่ายโทรศัพท์เคลื่อนที่ไม่เยอะเท่าในต่างประเทศ (บางประเทศมีถึง 7 รายเลย) แถมตอนนี้ 2 ใน 3 ของผู้ให้บริการ (ไม่นับผู้ให้บริการที่ไม่จริงจังในการทำตลาดจนลูกค้าไม่รู้ว่ามีผู้ให้บริการรายนั้นนะ) ก็ได้รับการรับรองให้วางจำหน่าย iPhone จาก Apple (อย่างไม่เป็นทางการ) ไปแล้ว ตัวบทความนี้จึงอาจจะไม่ได้รับความสนใจกับผู้ใช้ทั่วไปเท่าไร แต่ก็อาจจะมีประโยชน์สำหรับผู้ใช้ที่จะเดินทางไปยังต่างประเทศในระยะเวลายาวๆ ที่จำเป็นต้องเปลี่ยนไปใช้บริการเครือข่ายโทรศัพท์เคลื่อนที่ในประเทศนั้น หรืออาจจะได้รับความสนใจกับผู้ใช้ที่อยากจะปรับแต่งการแสดงผลให้สวยงามหรือไม่พอใจกับค่าบางอย่างที่เครือข่ายโทรศัพท์กำหนดมาให้ (เช่น เพิ่มสิทธิ์ในการแก้ไขค่าการเชื่อมต่อเพื่อป้องกัน EDGE รั่วตามข่าวนี้) รวมถึงผู้ใช้ระดับองค์กรที่อยากจะเพิ่มค่าบางอย่างสำหรับองค์กรท่าน

มันเป็นเวทย์มนต์หรือไม่ ถึงทำให้มีการเด้ง Check for Update ขึ้นมาสำหรับผู้ใช้บนเครือข่าย truemove และ dtac?

ไม่ใช่เวทย์มนต์อะไรทั้งสิ้น กลไกของ Check for Update ทำหน้าที่สองอย่างคือ

  • ตรวจสอบว่าไอโฟนรุ่นปัจจุบันในเครื่องผู้ใช้กับรุ่นล่าสุดที่อยู่ในระบบของ Apple ตรงกันหรือไม่ ถ้าไม่ตรงกันก็จะขึ้นข้อความแจ้งเตือนให้ทำการ Update
  • อีกส่วนคือตรวจสอบว่าค่าประจำเครือข่ายที่อยู่ถูกบันทึกไว้บนซิมการ์ด (ถ้าไม่ได้อยู่ในระบบของ iPhone จะใช้การตั้งค่าเครือข่ายเป็น Unknown ซึ่งจะแสดงใน About โดยใช้คำว่า Carrier) นั้นอยู่ในระบบของ Apple หรือไม่ หากอยู่ก็จะตรวจเพิ่มอีกว่าค่าประจำระบบเครือข่ายที่ใช้งานอยู่ขณะนั้นกับในระบบของ Apple ตัวของ Apple ใหม่กว่าหรือไม่ หากใหม่กว่าก็จะขึ้นเตือนให้ทำการ Update

ตัวอย่างจากเหตุการณ์จริง

  • ก่อนวันที่ 14 พฤศจิกายน 2551 ในระบบของ Apple ยังไม่มีค่าของเครือข่าย truemove ทำให้ในขณะนั้นยังใช้ค่า Unknown แต่หลังจากวันที่ 14 พฤศจิกายน 2551 มีค่านี้เพิ่มเข้ามาในระบบของ Apple เมื่อทำการ Check for Update ตัว iTunes จึงขึ้นข้อความเตือนให้ทำการ Update และเมื่อทำการอัพเดต ตัว iTunes จะทำการดาวน์โหลดไฟล์ตั้งค่าเครือข่ายของ truemove ติดตั้งลงบน iPhone เมื่อเปิดดู About จะพบข้อความ TRUE 4.5 (อันนี้จำตัวเลขไม่ได้)
  • ทำนองเดียวกันกับ dtac ก่อนวันที่ 11 กุมภาพันธ์ 2553 ยังไม่มีค่าของเครือข่าย dtac ในระบบของ Apple ทำให้ในขณะนั้นยังใช้ค่า Unknown แต่หลังจากวันที่ 11 กุมภาพันธ์ก็เกิดเหตุการณ์เดียวกับกรณีของ truemove เมื่อติดตั้งเสร็จเปิดดู About จะพบข้อความ DTAC 5.1

Apple ใช้วิธีนี้ในการแพร่กระจายไฟล์ตั้งค่าเครือข่ายผู้ให้บริการที่เป็นพันธมิตรกับ Apple ซึ่งการใช้ไฟล์ตั้งค่าเครือข่ายนี้สะดวกกับผู้ใช้ เพราะไม่ต้องทำการกรอกค่าเกี่ยวกับ apn ของ cellular data/mms/internet tethering เอง และทำให้ผู้ให้บริการสามารถกำหนดค่าที่เหมาะสมสำหรับเรียกเก็บค่าบริการด้วย (ฮา)

จากจุดนี้ก็น่าจะเห็นข้อดีของมันแล้วว่ามันสะดวกกว่าการมาตั้งค่าเอง เพราะถ้าจำเป็นต้องเปลี่ยนซิมการ์ดของผู้ให้บริการต่างราย เราไม่จำเป็นต้องมาแก้ไขค่านี้เองเพราะตัว iPhone จะสลับค่าพวกนี้ให้เราโดยอัตโนมัติสำหรับผู้ให้บริการที่เป็นพันธมิตรกับ Apple

อะไรคือไฟล์ตั้งค่าเครือข่าย?

เข้าประเด็นกันเสียทีหลังจากหัวข้อแรกพาชมภาพรวมไปแล้ว ไฟล์ที่ iTunes โหลดมานี้มีนามสกุล .ipcc ซึ่งคิดว่าน่าจะย่อมาจาก iPhone Carrier Configuration (ต่อไปก็นำไปใช้กับ iPad ได้) จริงๆ มันเป็นเพียงแค่ไฟล์ ZIP ธรรมดานี่เอง ภายในมีโครงสร้างคือ มี Directory ชื่อ Payload ซึ่งภายในจะมี Directory ย่อยชื่อ {ชื่อเครือข่าย}.bundle ซึ่งภายในประกอบด้วยไฟล์แกนหลัก 2 ไฟล์คือ Info.plist และ carrier.plist ตัวที่น่าสนใจคือ carrier.plist

ไฟล์ plist เป็น xml รูปแบบหนึ่ง ที่มีโครงสร้างข้อมูลในลักษณะ key/value คือมีการกำหนด key ขึ้นเป็นชื่อใดๆ ตามด้วย value ของ key นั้นโดยการระบุชนิดของข้อมูลเป็น array, dictionary, boolean, data, date, number, หรือ string ซึ่งสามารถใช้ Text Editor ทั่วไปแก้ไขได้ แต่ถ้าไฟล์ plist ถูกจัดเก็บในรูปแบบบีบอัดเป็น binary ก็จำเป็นต้องแปลงกลับเป็น text ปกติจึงจะสามารถแก้ไขได้ บทความนี้จะไม่ลงรายละเอียดว่าแต่ละ key ใน carrier.plist เป็นอะไรบ้าง แต่หวังว่าผู้ที่สนใจจะลองค้นคว้าเพิ่มเติมเพื่อทำการปรับแก้ไขให้เหมาะสมกับการใช้งานของท่าน

สำหรับเครื่องมือที่ใช้จัดการกับ plist ก็มีอยู่หลายตัว ถ้าเป็นรูปแบบของ Text Editor จะใช้อะไรแก้ก็ได้ แต่ถ้าเป็น Binary มา ตัวที่ฟรีและ Apple ให้มากับระบบคือโปรแกรม Property List Editor ซึ่งมาพร้อมกับชุดติดตั้ง XCode

ว่าแล้วเราก็ลองโหลด ipcc ของซักค่ายมาลองเปิดดูกัน สิ่งที่ Apple โม้เอาไว้ตาม HT1970

The carrier settings can include updates to the default APN (how iPhone accesses the carrier’s cellular data network), special dialing codes at Settings > Phone > [Carrier] Services, default settings for Stocks, Maps, Weather, and other items.

ตามที่ผมเคยเห็น ยังไม่เคยเห็นเรื่องเกี่ยวกับ Maps และ Weather นะ แต่ตัว Stocks นี่ดูได้จาก AT&T หรือ O2_UK ก็มีตัวอย่างการสร้างให้เห็นในส่วนของ StockSymboli

แก้อะไรได้บ้าง?

จากจุดนี้ก็ถือว่าน่าจะแก้อะไรได้เกือบทุกอย่างแล้ว แต่อย่างไรก็ตามคงต้องแยกค่า apn ไปพูดถึงในหัวข้อถัดไป สิ่งอื่นๆ นอกจากนั้นที่เราพอจะปรับแก้ไขได้ เช่น

  • การอนุญาตให้ปรับแก้ไขค่าของ EDGE โดยตั้ง key ชื่อ AllowEDGEEditing ให้ค่าเป็น boolean
  • การเพิ่มจำนวนการเชื่อมต่อกับอุปกรณ์ผ่านทาง Bluetooth โดยตั้ง key ชื่อ MaxBluetoothModemConnections ให้ค่าเป็น number
  • การเพิ่ม Services ให้กับ [Carrier] Services โดยเพิ่ม key ย่อยตามรูปแบบของสิ่งที่ปรากฏใน Services
    ตัวอย่าง Ortel D Services

    ตัวอย่าง Ortel D Services

  • การเพิ่มรหัสเครือข่ายที่สนับสนุนการใช้งานของ Carrier Configuration นี้โดยการเพิ่ม key ย่อยให้กับ SupportedSIMs
  • การซ่อนการเข้าถึง Voicemail โดยการเพิ่ม key ชื่อ ShouldHideAllVoicemailUI ให้ค่าเป็น boolean
    แถบคำสั่ง Phone ที่ไม่แสดง Voicemail

    แถบคำสั่ง Phone ที่ไม่แสดง Voicemail

  • การเปลี่ยนโลโก้ของเครือข่ายผู้ให้บริการเป็นโลโก้ในแบบของเรา (ไม่ขออธิบายถึงสเปคของไฟล์ภาพที่ใช้) โดยอาจจะแก้ชื่อไฟล์ภาพที่ใช้อ้างอิงในส่วนของ StatusBarImages ซึ่งหลักๆ จะมีไฟล์รูปสองไฟล์คือ ไฟล์สำหรับหน้าจอพื้นดำ (โปร่งใส) กับไฟล์สำหรับหน้าจอพื้นทึบ นอกจากนี้ยังสามารถเพิ่มโลโก้สำหรับผู้ให้บริการหลายๆ แบบในกรณีที่มีการแสดงชื่อเครือข่ายที่ต่างไปกับซิมที่ใช้ (เช่นอาจจะมีทั้งโลโก้ของ dtac และ happy อยู่ใน Carrier Configuration ไฟล์เดียวหากมีการตั้งข้อความที่จะแสดงบนเครือข่ายแยกกันไว้ ซึ่งผู้ให้บริการไม่ได้ทำเอาไว้)

นี่ก็เป็นเพียงตัวอย่างเล็กๆ ที่พอจะแก้ไขได้ (ถ้าอยากจะทำอะไรมากกว่านี้คงต้องลองเปิดดู ipcc ของค่ายมือถืออื่นๆ เช่นของจีนที่แก้ให้ดูด sms ออกมาจากซิมเลย หรือตั้งให้สนทนาหลายสายได้มากที่สุดกี่สาย หรือตั้งให้ใช้เครื่อง internet tethering ได้พร้อมกันกี่เครื่อง) แต่ก็มีอีกส่วนที่ยังมีปัญหาในการแก้ไขคือ apns ซึ่งเป็นจุดที่มีผลกับการใช้บริการเครือข่ายมากที่สุด

เราจะทำอย่างไรกับ apns ได้บ้าง?

ถ้าเป็นเมื่อก่อนสมัยก่อนจะเป็น Firmware รุ่น 3.1 เราสามารถแก้ไขค่า apns ได้อย่างอิสระ (ไม่ขออธิบายว่าแก้อย่างไร ค่า type-mask คืออะไร) แต่พอมาเป็น Firmware รุ่น 3.1 ทาง Apple ได้เพิ่ม key อุปสรรคขึ้นมา 1 อันคือ signature ซึ่งจนปัจจุบันนี้ก็ยังไม่มีใครสามารถหาค่าของ key นี้ที่ถูกต้องได้ (ยกเว้น Apple) สำหรับค่า apns ของ cellular data และ mms นั้นไม่ได้มีความเข้มงวดในการตรวจสอบค่า signature ในระบบ iPhone เท่าใด ดังนั้นจึงไม่ค่อยเป็นปัญหาในการแก้ไข (แก้ไปอย่างไรก็ได้ ระบบจะไม่ปฏิเสธค่านั้น) แต่ส่วนของ internet tethering ซึ่งบางผู้ให้บริการไม่ได้อนุญาตให้ใช้งาน ตัวระบบจะตรวจสอบว่าค่า signature ที่ระบุไว้นี้ถูกต้องหรือไม่ หากไม่ถูกต้องก็จะไม่สามารถใช้งาน internet tethering ได้ รวมถึงไม่สามารถแก้ไขค่าดังกล่าวได้เองด้วย นี่จึงเป็นเหตุแห่งการโวยวายครั้งใหญ่ของผู้ใช้บริการในบางเครือข่ายที่ไม่สามารถทำ internet tethering บน iPhone ได้แต่กับโทรศัพท์มือถือรุ่นอื่นกลับทำได้ และเป็นปัญหากับผู้ใช้บริการเครือข่ายที่ไม่ได้เป็นพันธมิตรกับ Apple เพราะไม่สามารถกรอกค่า apn สำหรับส่วนนี้เองได้

ใน Firmware 3.1.3 ซึ่งมีผู้ค้นพบว่าขณะนี้ทาง Apple ยอมให้ผู้ใช้บริการในผู้ให้บริการที่ไม่ได้เป็นพันธมิตรกับทาง Apple สามารถกรอกค่า apn เพื่อการทำ internet tethering ได้เองแล้ว แต่เมื่อนำ ipcc ที่ทำเองไปใช้ก็ยังพบปัญหาเดิมคือไม่สามารถเปิดใช้งาน internet tethering ได้เพราะติดการตรวจสอบค่า signature เช่นเดิม

มีผู้ค้นพบว่าจริงๆ แล้ว กระบวนการตรวจสอบค่า signature นี้สามารถหลอกระบบได้ โดยตามความเข้าใจของผู้เขียนเข้าใจว่า ตัวระบบของ iPhone จะตรวจสอบ Carrier Configuration โดยดูว่าค่าประจำเครือข่ายบนซิมในขณะนั้น ต้องทำการตรวจสอบค่าของ signature หรือไม่ (ซึ่งจริงๆ มันไม่ควรทำหากไม่ได้ใช้งาน Unknown Carrier แต่มันก็ยังทำ เราก็เลยใช้ช่องโหว่นี้เสียเลย) หากต้องทำการตรวจสอบแล้วพบว่าค่าของ signature ไม่ถูกต้องก็จะไม่ยอมให้ใช้งาน internet tethering นอกเหนือจากกรณีนั้นจะอนุญาตให้ใช้งาน จึงมีการนำช่องโหว่นี้มาใช้ ทำให้ไฟล์ ipcc ที่ไม่ได้ถูกสร้างจาก Apple (ไม่มีการตั้งค่า signature ที่ถูกต้อง) สามารถตั้งค่า internet tethering เพื่อใช้งานได้! (รู้สึกว่าหลังจากที่มีการ Jailbreak เพื่อไปแก้ระบบให้ไม่ต้องตรวจสอบ signature จะทำให้การใช้วิธีการที่กล่าวถึงนี้ไม่ค่อยเป็นที่แพร่หลาย แต่ก็เป็นประโยชน์สำหรับผู้ใช้ที่ไม่ต้องการ Jailbreak เครื่อง)

ขั้นตอนง่ายๆ คือให้ทำการคัดลอกส่วนของ MandatoryVerify จาก Unknown (ต้องมี Firmware ของ iPhone รุ่น 3.1.3 ที่ทำการถอดรหัสเรียบร้อยแล้วโดยอาจจะใช้ Firmware สำหรับ Custom Restore ที่ได้จาก PwnageTool ก็ได้) เหตุที่ต้องคัดลอกทั้งหมดเพราะ Apple ได้วางยาไว้อีกจุดหนึ่งคือ เราไม่สามารถแก้ไขค่าภายใน MandatoryVerify ได้ เนื่องจากในส่วนนี้มีการตรวจสอบ signature เช่นกัน เหตุที่ให้ใช้ของ Firmware 3.1.3 เนื่องจากน่าจะเป็น Firmware ที่มีรายชื่อของค่าซิมในแต่ละเครือข่ายที่น้อยที่สุดเท่าที่จะเป็นไปได้แล้ว (จากการตรวจสอบ Firmware ก่อนหน้า 3.1.3 ไม่มีข้อมูลส่วนนี้ให้ใช้งาน)

ข้อจำกัดสำหรับวิธีนี้คือ หากเราใช้บริการในเครือข่ายที่ถูกระบุอยู่ในส่วนของ MandatoryVerify แล้วเราจะไม่สามารถข้ามกระบวนการตรวจสอบ signature ได้ (กรณีนี้คือไฟล์ดังกล่าวจะมี truemove แล้วแต่ยังไม่มี dtac/AIS ดังนั้นเราจะเปลี่ยนค่า internet tethering ของ truemove ไม่ได้เพราะจะตรวจสอบ signature แล้วไม่ผ่าน แต่เราจะสามารถสร้าง ipcc ที่มี internet tethering ของ dtac/AIS ใช้เองได้ เพราะจะบังคับไม่ให้มันตรวจสอบ signature ได้)

แก้แล้วจะใช้แล้วนะ ทำอย่างไรต่อ?

ที่ผ่านมาทั้งหมดเป็นขั้นตอนการแก้ไข แต่จะนำกลับไปใช้งานใน iPhone ได้อย่างไร ขั้นนี้เราต้องทำการ zip ไฟล์กลับเป็น .ipcc เช่นเดิม โดยข้อควรระวังคือ เราต้องจัดรูปแบบโครงสร้าง Directory ให้เหมือนเดิมดังที่ได้อธิบายไปในตอนต้น และให้ลบไฟล์ซ่อนที่ไม่เกี่ยวข้องออกทั้งหมด

สำหรับผู้ที่ต้องการอ่านอ้างอิงในส่วนนี้ผมแนะนำให้อ่านบทความนี้ (เป็นภาษาอังกฤษ) ซึ่งจำเป็นต้องใช้ Terminal เข้ามาเกี่ยวข้องด้วย

ติดตั้งอย่างไร?

สำหรับวิธีติดตั้งแบบไม่จำเป็นต้อง Jailbreak เครื่องได้ถูกเรียบเรียงไว้อย่างดีแล้วในข่าวเตือนระวัง EDGE รั่วหลังอัพเดท dtac carrier (อัพเดทวิธีแก้)

สรุป

เขียนมาซะยาวเยิ่นเย้อขนาดนี้ มีประเด็นที่ไม่อยากให้สับสนประเด็นหนึ่ง คือ เราสามารถสร้าง ipcc หรือไปแก้ไข ipcc ของ Apple ได้ แต่ปัญหาที่เกิดขึ้นส่วนหนึ่งเกิดจากการที่ผู้ให้บริการไม่อยากให้ผู้ใช้เข้าไปแก้ไขค่าพวกนี้เอง จริงมีกระบวนการป้องกันการแก้ไขค่า ทั้งจากบนหน้าจอ iPhone เอง (ฝั่งผู้ให้บริการเป็นคนกำหนด) และฝั่ง Apple เอง (ฝั่ง signature ลงในบางส่วนของไฟล์ ipcc เพื่อตรวจสอบค่า หากไม่ตรงก็จะใช้งานไม่ได้ ซึ่งก็เพิ่งจะมีบังคับตรวจสอบเฉพาะแค่ค่าของ internet tethering เท่านั้น)

การแก้ไขตราสัญลักษณ์ของผู้ให้บริการ (บางคนอยากเห็นตราสัญลักษณ์ของผู้ให้บริการมากกว่าข้อความพื้นๆ ของ Apple) สามารถทำได้โดยไม่มีปัญหาใดเพราะเป็นการแก้ไขไฟล์รูปภายนอกซึ่งไม่มีการตรวจสอบ signature และก็ค่อนข้างทำได้ง่ายแม้จะทำบน Windows เพราะโปรแกรมจัดการไฟล์ zip หลายๆ ตัวมีความสามารถในการปรับปรุงไฟล์เดิมที่อยู่ใน zip ได้โดยไม่ต้องทำการขยายออกมาใหม่ ช่วยให้โครงสร้างของไฟล์ ipcc เดิมไม่เสียหาย ทำให้ยังสามารถนำมาใช้งานได้เช่นเดิม (ขั้นตอน/โครงสร้างไฟล์ อ้างอิงบทความภาษาอังกฤษข้างต้น)

หวังว่าบทความนี้จะช่วยให้ผู้ที่ต้องสร้างไฟล์ ipcc ใช้เองด้วยเหตุผลใดๆ ก็ตามสามารถสร้างได้อย่างที่ต้องการ



You May Also Like:

เครื่องเกม Nintendo Switch ขายดีทำให้ชิปหน่วยความจำขาดตลาด ส่งผลกระทบถึง iPhone ด้วย

จากที่นินเทนโดออกเครื่องเกม Nintendo Switch มาเมื่อเดือน มี.ค. และขายดีเทน้ำเทท่าทำให้ชิ้นส่วนหน่วยความจำ (NAND Flash Memory) มีความต้องการมากขึ้น ส่งผลต่อผู้ผลิตโทรศัพท์มือถือยี่ห้อต่าง ๆ มีชิ้นส่วนดังกล่าวไม่เพียงต่อต่อความต้องการ ส่งผลให้ผลิตเครื่องได้ไม่ตามเป้าที่วางไว้ ..

โซนี่เปิดตัวเซนเซอร์กล้องมือถือรุ่นใหม่ ถ่ายวิดีโอซุปเปอร์สโลว์โมชั่น 1000fps ได้ด้วย

ผู้ผลิตเซนเซอร์สำหรับกล้องถ่ายรูปรายใหญ่อย่งโซนี่ได้เปิดเผยข้อมูลเซนเซอร์กล้องสำหรับโทรศัพท์มือถือรุ่นใหม่ที่สามารถถ่ายวิดีโอซุปเปอร์สโลว์โมชั่น 1000fps ที่ความละเอียด 1080p ได้ด้วย ..

Super Mario Run เปิดให้ดาวน์โหลดแล้ว

ดาวน์โหลดกันได้เลยสำหรับเกมที่รอกันทั่วโลก Super Mario Run ตอนนี้เปิดให้ดาวน์โหลดแล้ว ..

Share

Tweet

Email