Skip to content

Instantly share code, notes, and snippets.

@mrlnc
Created April 25, 2022 11:03
Show Gist options
  • Save mrlnc/4e89da60c9cae1ed6f4904e17f94cb4d to your computer and use it in GitHub Desktop.
Save mrlnc/4e89da60c9cae1ed6f4904e17f94cb4d to your computer and use it in GitHub Desktop.
iOS IPCC Carrier Configs

Inspect iOS Carrier Profiles (IPCC)

Carrier Profiles configure your smartphone for mobile networks. I'm not sure if Carrier Profiles are just a legacy or are actually required nowadays, since all configuration should be done through the mobile network itself.

You'll find things in there like:

  • enable VoLTE for specific carriers
  • disable some bands (makes sense if your carrier isn't transmitting there)

Download the list of all IPCCs:

wget http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wa/com.apple.jingle.appserver.client.MZITunesClientCheck/version -I ipcc_index.xml

In your favorite editor, search for your carrier (either by name or MCCMNC). You'll find entries like this:

<key>O2_Germany</key>
<dict>
  <key>14.3</key>
    <dict>
      <key>BuildVersion</key>
      <string>45.1</string>
      <key>BundleURL</key>
      <string>https://updates.cdn-apple.com/2021/carrierbundles/071-13825/6E151D7D-0DFA-423B-B136-71B9F7E8F6FF/O2_Germany_iPhone.ipcc</string>
      <key>Digest</key>
      <data>
      J/dPdud983GctglhA5nmlhHmKp0=
      </data>
    </dict>

Download the bundle:

wget https://updates.cdn-apple.com/2021/carrierbundles/071-13825/6E151D7D-0DFA-423B-B136-71B9F7E8F6FF/O2_Germany_iPhone.ipcc

It's a zip:

$ file O2_Germany_iPhone.ipcc 
O2_Germany_iPhone.ipcc: Zip archive data, at least v1.0 to extract

This unpacks to Payload/:

$ unzip O2_Germany_iPhone.ipcc
Archive:  O2_Germany_iPhone.ipcc
   creating: Payload/
   creating: Payload/O2_Germany.bundle/
  inflating: Payload/O2_Germany.bundle/carrier.plist  
  inflating: Payload/O2_Germany.bundle/Info.plist  
  inflating: Payload/O2_Germany.bundle/overrides_D101_D111.der.pri  
  inflating: Payload/O2_Germany.bundle/overrides_D101_D111.plist  
  inflating: Payload/O2_Germany.bundle/overrides_D10_D11.der.pri  
  inflating: Payload/O2_Germany.bundle/overrides_D10_D11.plist  
  inflating: Payload/O2_Germany.bundle/overrides_D201_D211_D221.der.pri  
  inflating: Payload/O2_Germany.bundle/overrides_D201_D211_D221.plist  
  inflating: Payload/O2_Germany.bundle/overrides_D20_D21_D22.der.pri  
  inflating: Payload/O2_Germany.bundle/overrides_D20_D21_D22.plist  
  inflating: Payload/O2_Germany.bundle/overrides_D321_D331_N841.der.pri  
  inflating: Payload/O2_Germany.bundle/overrides_D321_D331_N841.plist  
  inflating: Payload/O2_Germany.bundle/overrides_D421_D431_N104_D79.der.pri  
  inflating: Payload/O2_Germany.bundle/overrides_D421_D431_N104_D79.plist  
  inflating: Payload/O2_Germany.bundle/overrides_D52g_D53g_D53p_D54p.der.pri  
  inflating: Payload/O2_Germany.bundle/overrides_D52g_D53g_D53p_D54p.plist  
  inflating: Payload/O2_Germany.bundle/overrides_N66_N71.der.pri  
  inflating: Payload/O2_Germany.bundle/overrides_N66_N71.plist  
  inflating: Payload/O2_Germany.bundle/overrides_N69.plist  
  inflating: Payload/O2_Germany.bundle/overrides_N69.pri  
   creating: Payload/O2_Germany.bundle/signatures/
  inflating: Payload/O2_Germany.bundle/signatures/common.plist  
  inflating: Payload/O2_Germany.bundle/signatures/overrides_D101_D111.plist  
  inflating: Payload/O2_Germany.bundle/signatures/overrides_D10_D11.plist  
  inflating: Payload/O2_Germany.bundle/signatures/overrides_D201_D211_D221.plist  
  inflating: Payload/O2_Germany.bundle/signatures/overrides_D20_D21_D22.plist  
  inflating: Payload/O2_Germany.bundle/signatures/overrides_D321_D331_N841.plist  
  inflating: Payload/O2_Germany.bundle/signatures/overrides_D421_D431_N104_D79.plist  
  inflating: Payload/O2_Germany.bundle/signatures/overrides_D52g_D53g_D53p_D54p.plist  
  inflating: Payload/O2_Germany.bundle/signatures/overrides_N66_N71.plist  
  inflating: Payload/O2_Germany.bundle/signatures/overrides_N69.plist  
  inflating: Payload/O2_Germany.bundle/version.plist  

plist files are binary-packed XML files and can be unpacked with plistutil:

apt install libplist-utils
$ cd Payload/O2_Germany.bundle
$ for i in $(ls *plist); do plistutil -i $i -o $i.xml; done

There you go!

@sajafFON
Copy link

### في الواقع، الأمر يستحق التأمل. وهذا أمر يتطلب القوة في التطوير.
Indeed, it is worth contemplating. It is something that requires strength in development .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment