Skip to content

Instantly share code, notes, and snippets.

@1byte2bytes
Last active October 12, 2019 22:01
Show Gist options
  • Save 1byte2bytes/82132fb51126002268631f0416625c43 to your computer and use it in GitHub Desktop.
Save 1byte2bytes/82132fb51126002268631f0416625c43 to your computer and use it in GitHub Desktop.
IPSW and OTA scarping tools
import urllib.request
import time
ota_source_urls = [
'https://www.theiphonewiki.com/wiki/Firmware/iPod_touch/1.x', 'https://www.theiphonewiki.com/wiki/Firmware/iPod_touch/2.x',
'https://www.theiphonewiki.com/wiki/Firmware/iPod_touch/3.x', 'https://www.theiphonewiki.com/wiki/Firmware/iPod_touch/4.x',
'https://www.theiphonewiki.com/wiki/Firmware/iPod_touch/5.x', 'https://www.theiphonewiki.com/wiki/Firmware/iPod_touch/6.x',
'https://www.theiphonewiki.com/wiki/Firmware/iPod_touch/7.x', 'https://www.theiphonewiki.com/wiki/Firmware/iPod_touch/8.x',
'https://www.theiphonewiki.com/wiki/Firmware/iPod_touch/9.x', 'https://www.theiphonewiki.com/wiki/Firmware/iPod_touch/10.x',
'https://www.theiphonewiki.com/wiki/Firmware/iPod_touch/11.x', 'https://www.theiphonewiki.com/wiki/Firmware/iPod_touch/12.x',
'https://www.theiphonewiki.com/wiki/Firmware/iPod_touch/13.x'
]
for ota_url in ota_source_urls:
print(ota_url)
req = urllib.request.Request(url=ota_url, data=b'None',
headers={'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:57.0) Gecko/20100101 Firefox/57.0'})
handler = urllib.request.urlopen(req)
content = handler.read().decode().split('\n')
for line in content:
if line.startswith("<td><a rel=\"nofollow\" class=\"external text\" href=\"http://appldnld.apple.com") and line.endswith(".ipsw</a>"):
with open("apple-ipsw.txt", "a") as myfile:
myfile.write(line.split("\"")[5]+"\n")
if line.startswith("<td><a rel=\"nofollow\" class=\"external text\" href=\"http://updates-http.cdn-apple.com") and line.endswith(".ipsw</a>"):
with open("apple-ipsw.txt", "a") as myfile:
myfile.write(line.split("\"")[5]+"\n")
if line.startswith("<td><a rel=\"nofollow\" class=\"external text\" href=\"https://updates.cdn-apple.com") and line.endswith(".ipsw</a>"):
with open("apple-ipsw.txt", "a") as myfile:
myfile.write(line.split("\"")[5]+"\n")
time.sleep(1)
import urllib.request
import time
ota_source_urls = [
'https://ipsw.me/otas/AppleTV2,1', 'https://ipsw.me/otas/AppleTV3,1', 'https://ipsw.me/otas/AppleTV3,2',
'https://ipsw.me/otas/AppleTV5,3', 'https://ipsw.me/otas/AppleTV6,2',
'https://ipsw.me/otas/AudioAccessory1,1',
'https://ipsw.me/otas/iPad1,1',
'https://ipsw.me/otas/iPad2,1', 'https://ipsw.me/otas/iPad2,2', 'https://ipsw.me/otas/iPad2,3', 'https://ipsw.me/otas/iPad2,4',
'https://ipsw.me/otas/iPad2,5', 'https://ipsw.me/otas/iPad2,6', 'https://ipsw.me/otas/iPad2,7', 'https://ipsw.me/otas/iPad3,1',
'https://ipsw.me/otas/iPad3,2', 'https://ipsw.me/otas/iPad3,3', 'https://ipsw.me/otas/iPad3,4', 'https://ipsw.me/otas/iPad3,5',
'https://ipsw.me/otas/iPad3,6', 'https://ipsw.me/otas/iPad4,1', 'https://ipsw.me/otas/iPad4,2', 'https://ipsw.me/otas/iPad4,3',
'https://ipsw.me/otas/iPad4,4', 'https://ipsw.me/otas/iPad4,5', 'https://ipsw.me/otas/iPad4,6', 'https://ipsw.me/otas/iPad4,7',
'https://ipsw.me/otas/iPad4,8', 'https://ipsw.me/otas/iPad4,9', 'https://ipsw.me/otas/iPad5,1', 'https://ipsw.me/otas/iPad5,2',
'https://ipsw.me/otas/iPad5,3', 'https://ipsw.me/otas/iPad5,4', 'https://ipsw.me/otas/iPad6,3', 'https://ipsw.me/otas/iPad6,4',
'https://ipsw.me/otas/iPad6,7', 'https://ipsw.me/otas/iPad6,8', 'https://ipsw.me/otas/iPad6,11', 'https://ipsw.me/otas/iPad6,12',
'https://ipsw.me/otas/iPad7,1', 'https://ipsw.me/otas/iPad7,2', 'https://ipsw.me/otas/iPad7,3', 'https://ipsw.me/otas/iPad7,4',
'https://ipsw.me/otas/iPod3,1', 'https://ipsw.me/otas/iPod4,1', 'https://ipsw.me/otas/iPod5,1', 'https://ipsw.me/otas/iPod7,1',
'https://ipsw.me/otas/iPhone2,1', 'https://ipsw.me/otas/iPhone3,1', 'https://ipsw.me/otas/iPhone3,2', 'https://ipsw.me/otas/iPhone3,3',
'https://ipsw.me/otas/iPhone4,1', 'https://ipsw.me/otas/iPhone5,1', 'https://ipsw.me/otas/iPhone5,2', 'https://ipsw.me/otas/iPhone5,3',
'https://ipsw.me/otas/iPhone5,4', 'https://ipsw.me/otas/iPhone6,1', 'https://ipsw.me/otas/iPhone6,2', 'https://ipsw.me/otas/iPhone7,1',
'https://ipsw.me/otas/iPhone7,2', 'https://ipsw.me/otas/iPhone8,1', 'https://ipsw.me/otas/iPhone8,2', 'https://ipsw.me/otas/iPhone8,4',
'https://ipsw.me/otas/iPhone9,1', 'https://ipsw.me/otas/iPhone9,2', 'https://ipsw.me/otas/iPhone9,3', 'https://ipsw.me/otas/iPhone9,4',
'https://ipsw.me/otas/iPhone10,1', 'https://ipsw.me/otas/iPhone10,2', 'https://ipsw.me/otas/iPhone10,3', 'https://ipsw.me/otas/iPhone10,4',
'https://ipsw.me/otas/iPhone10,5', 'https://ipsw.me/otas/iPhone10,6'
]
for ota_url in ota_source_urls:
print(ota_url)
req = urllib.request.Request(url=ota_url, data=b'None',
headers={'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:57.0) Gecko/20100101 Firefox/57.0'})
handler = urllib.request.urlopen(req)
content = handler.read().decode().split('\n')
for line in content:
if line.startswith("<a href=\"http://appldnld.apple.com/") and line.endswith(".zip</a>"):
with open("apple-ota.txt", "a") as myfile:
myfile.write(line.split("\"")[1]+"\n")
time.sleep(1)
import urllib.request
import time
ota_source_urls = [
'https://www.theiphonewiki.com/wiki/Firmware/iPad_mini/6.x', 'https://www.theiphonewiki.com/wiki/Firmware/iPad_mini/7.x',
'https://www.theiphonewiki.com/wiki/Firmware/iPad_mini/8.x', 'https://www.theiphonewiki.com/wiki/Firmware/iPad_mini/9.x',
'https://www.theiphonewiki.com/wiki/Firmware/iPad_mini/10.x', 'https://www.theiphonewiki.com/wiki/Firmware/iPad_mini/11.x',
]
for ota_url in ota_source_urls:
print(ota_url)
req = urllib.request.Request(url=ota_url, data=b'None',
headers={'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:57.0) Gecko/20100101 Firefox/57.0'})
handler = urllib.request.urlopen(req)
content = handler.read().decode().split('\n')
for line in content:
if line.startswith("<td> <a rel=\"nofollow\" class=\"external text\" href=\"http://appldnld.apple.com/") and line.endswith(".ipsw</a>"):
with open("apple-ipsw.txt", "a") as myfile:
myfile.write(line.split("\"")[5]+"\n")
time.sleep(1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment