Skip to content

Instantly share code, notes, and snippets.

@citrusui
Last active February 27, 2022 19:33
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save citrusui/e643dc0cf008a239129de51e44760eab to your computer and use it in GitHub Desktop.
Save citrusui/e643dc0cf008a239129de51e44760eab to your computer and use it in GitHub Desktop.
An incomplete write-up of my failed attempt to conjure a meaning behind Apple's IPSW URLs.

More info on Apple IPSW downloads

IPSWs are files used by iTunes to update or restore the firmware on a mobile Apple device. Originally used for classic iPods, the IPSW made its way onto the iPhone, iPod touch, iPad, Apple TV, iPad mini, and Apple Watch. Although IPSWs may seem like magic, they are cleverly disguised .zip archives. You can read more about the file format of IPSWs here.

Over a year ago, @q3hardcore on Twitter discovered a technical leak from one of Apple's update servers. For reasons unknown, their Amazon S3 bucket was accidentally published publicly. In other words, going to https://appldnld.s3.amazonaws.com presented you with a wall of XML, full of links to files stored on Apple's update server. I did not think to archive the page before it want back to being protected.

Example: http://appldnld.apple.com/iOS7.1/031-4388.20140310.ZA355/iPad2,1_7.1_11D167_Restore.ipsw

Where appldnld.apple.com is the domain,

iOS7.1 is the release version,

NOTE: Apple used iPhone4 for iOS releases between 4.0 to 5.0.1. This applied to all devices, even iPads. I don't know why iOS4 or something similar was used instead.

031 is the "update ID" (unofficial name),

4388 is the "build ID" (which seems to be unique and related to the update ID? it may be generated when Apple starts building a firmware in-house),

20140310 is the upload date (YYYY:MM:DD / March 10, 2014).

ZA355 is some sort of hash (which seems to always be unique?),

and iPad2,1_7.1_11D167_Restore.ipsw is the filename of the firmware (iOS 7.1 build 11D167 for the iPad 2 Wi-Fi).


Starting with iOS 8.1.3, Apple uses a slightly different scheme for naming files. Here is an example shown below:

http://appldnld.apple.com/ios8.1.3/031-15466-20150119-8A77FDB0-A005-11E4-9FF7-3A565BAA4ECA/iPhone4,1_8.1.3_12B466_Restore.ipsw

Where appldnld.apple.com is the domain (still),

ios8.1.3 is the release version,

031 is the "update ID" (unofficial name),

15466 is the "build ID" (which seems to be unique and related to the update ID? it may be generated when Apple starts building a firmware in-house),

20150119 is the upload date (YYYY:MM:DD / January 19, 2015).

8A77FDB0-A005-11E4-9FF7-3A565BAA4ECA is some sort of longer hash (it appears to be split into 5 parts: 8 values, four values, four values, four values, and 12 values),

and iPhone4,1_8.1.3_12B466_Restore.ipsw is the filename of the firmware (iOS 8.1.3 build 12B466 for the iPhone 4s).


Update ID tidbits below. OTA updates are NOT included, and many iOS versions for iPhone and iPad have not been added yet. This needs a lot of cleanup. Please don't use this Gist as an official guide or tutorial. This is just an assortment of ideas.

061:

  • Documentation for iOS 1.0 through 1.0.2, and 1.1.2 through 1.1.5
  • Firmwares for iOS 1.0 - 1.1.5
  • Apple TV 2G, marketed 4.0 through 4.2, 4.4
  • All documentation for Apple TV 2G, 3G, and 3G Rev A
  • iPad 3.x firmware + docs
  • iPod touch 2.x docs + iPod touch 2G firmwares
  • iPod touch 3.x docs + iPod touch 3G firmwares
  • iPod touch 4.0-4.2.1 docs
  • iPod touch 4.0-4.3 firmwares
  • iPod touch 5.0 firmware
  • iPad 1G 4.2.1 firmware and docs

022:

  • Documentation for iOS 1.1 and iOS 1.1.1

041:

  • Apple TV 2, marketed 4.2.1 through 4.3, and 4.4.1 through 4.4.4
  • All Apple TV firmwares marketed 5.0 through 5.2
  • All Apple TV firmwares marketed as 6.0 (build 11a469a)
  • iPod touch firmwares 4.3.1-4.3.5
  • iPod touch Docs for 4.3-4.3.5
  • iPod touch docs for 5.x
  • iPod touch 5.0.1-5.1.1 firmware
  • iPod touch docs 6.0-6.0.1
  • iPod touch 5G firmware 6.0-6.1, iPod touch 4G 6.0-6.0.1
  • All iPad 4.3-4.3.5 firmwares
  • All iPad 4.3-4.3.5 docs
  • All iPad 5.x docs
  • All iPad firmwares 5.0-5.1.1
  • All iPad docs 6.0
  • iPad docs for 6.0-6.0.1 for iPad 2, 3, and iPad3,4
  • All iPad firmwares 6.0-6.1

031:

  • All iPod touch 10.x firmware, excluding 10.3.3 + docs (excluding 10.3.3)
  • iPod touch 9.x firmware docs and firmwares 9.0.1 through 9.3.5
  • iPod touch 8.x firmware + docs
  • iPod touch 7.0.3-7.1.2 firmware and docs
  • All Apple TV firmwares, 6.0.2-6.2.1
  • All Apple TV firmwares, 6.0 (11a470e and 11a502)
  • All Apple TV firmwares, 7.0-7.2.2
  • Apple TV 4G 9.x firmware + docs and all 10.x firmware excluding 10.2.2 + docs
  • Apple Watch 2.x firmwares
  • iPod touch 4G firmware 6.1.6
  • iPod touch 4G 6.1.5 and 6.1.6 docs
  • All iPhone firmwares 10.0.1 - 10.2.1 and 10.3.2, and docs for 10.0.1 - 10.2.1
  • All iPad and iPad mini firmwares 10.0.1 - 10.2.1 and 10.3.2, and docs for 10.0.1 - 10.2.1

058:

  • iPod touch iOS 9.0 firmware (excluding docs)

091:

  • iPod touch firmware and docs for iOS 7.0 and 7.0.2
  • iPod touch firmware and docs 5G 6.1.2,6.1.3
  • All Apple TV firmwares 5.2.1 through 5.3
  • All Apple TV firmwares marketed as 6.0.1
  • iPod touch docs 6.1-6.1.3
  • All iPod touch firmware 6.1.2-6.1.3, and 6.1 firmware for iPod touch 4G
  • iPod touch 4G firmware 6.1.5
  • All iPad 6.1-6.1.3 docs
  • All iPad firmwares 6.1.2-6.1.3
  • Apple TV 4G firmware 10.2.2
  • iPod touch firmware 10.3.3 + docs
  • iPhone firmwares 10.3 - 10.3.3, excluding 10.3.2
  • iPhone docs for 10.3 - 10.3.3
  • iPad and iPad mini firmwares 10.3 - 10.3.3, excluding 10.3.2
  • All iPad and iPad mini docs for 10.3 - 10.3.3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment