DNS欺骗——偷梁换柱,解决IOS更新下载中断问题

DNS欺骗——偷梁换柱,解决IOS更新下载中断问题
author: 荒野无灯 2013-04-11
方案概述
895.4MB的文件(10Mbps带宽的网络),iTunes那个垃圾下载功能,下载到一半或更少时便中断了,而且中断了还不能断点续传。这样重复了几次,个把钟头被浪费了。
fuck !
我暗自骂了几句。
当然,骂归骂,既然苹果把这iTunes做得差,咱也没办法。得自己想办法解决这个事情。
DNS欺骗一词瞬间闪现,嗯,就用这招“偷梁换柱”。
其实实现也是很简单的,不过最终的目的很简单,就是为了解决这个下载中断问题。

--------------------------------------------------------------------------------

在本地或局域网 pc 上建立一个简单的http服务器,目录结构和 appldnld.apple.com 设置成一样(当然,只是更新时需要的文件的目录结构)。
在点击更新后,iTunes提示更新信息时,修改iTunes所在pc的hosts文件,将 appldnld.apple.com 的IP解析到本地或局域网IP地址。ping appldnld.apple.com ,确认它指向了我们需要的IP地址,再点“下一步”。然后,iTunes开始老老实实、哗啦啦地下载文件了,速度基本上是100Mbps (也就是10MBps). 下载完后,再删除hosts中 appldnld.apple.com 的解析记录,使之能解析到官方的服务器。

--------------------------------------------------------------------------------

具体实现
1.使用wireshark抓取更新文件的URL并下载此ipsw文件
通过探索发现, iTunes 先会从

1
http://ax.init.itunes.apple.com./bag.xml?ix=4

获取一个xml 文件,然后再连接 appldnld.apple.com 获取iphone更新固件的文件iPhone3,1_6.1.3_10B329_Restore.ipsw
这个固件文件大小有895.4MB

先打开whireshark,
再在iTunes里点开始下载。然后你很快会发现那个ipsw文件的URL了,如下图示:

fuck-ios-update.png

得到更新系统文件下载URL:
http://appldnld.apple.com/iOS6.1/091-2610.20130319.Bedr4/iPhone3,1_6.1.3_10B329_Restore.ipsw

采用多线程下载之,fuck之:
download-ipsw.png

1
2
3
4
md5 hash值:
iPhone3,1_6.1.3_10B329_Restore.ipsw : 845a42c0139cdad6d373bf3414b25786
sha1 hash值:
iPhone3,1_6.1.3_10B329_Restore.ipsw : f8c53328656f2708e1d2bcb793f12ae46dd4eb23

2.搭建本地或局域网HTTP服务器
然后搭建本地http服务器,建立与上面URL对应的目录。
如下图,D:\www 为http服务器根目录:
local-http-server-1.png

访问测试下:
local-http-server-2.png

3.开始更新
iphone-recovery-1.png

出现iOS 6.1.3 更新提示时,先不着急点下一步。
修改客户端hosts文件,把appldnld.apple.com 指向 本地http服务器的IP,如图:
iphone-recovery-2.png

修改hosts后测试IP指向正常再点下一步的:
ping-test.png

好了,开始哗啦啦地下载了(iTunes以为是从苹果下载的,其实是从localhost):
rapid-downloading.png

通过查看http日志,还发现,其实在更新的过程中,iTunes还会下载一个后缀为.ipd 的更新文档(Readme),所以,上一次其实我们应该在http服务器里再加一个.ipd 文件的:
ipd.png

下载完成后,将hosts中的appldnld.apple.com的解析记录注释掉或删除:
change-hosts-back.png

正在恢复中:
recovering.png

恢复完成,提示你不要急于拔掉USB连接线:
recovery-finished-notice.png

好了,iphone 重启完成了:
recovery-done.png

显示已经更新到最新的 iOS 6.1.3 :
info.png

其它参考文档
apple官方关于iphone故障恢复的帮助文档:
http://support.apple.com/kb/HT1414?viewlocale=zh_CN
http://support.apple.com/kb/TS1275?viewlocale=zh_CN&locale=zh_CN
http://support.apple.com/kb/TS1275?viewlocale=zh_CN&locale=zh_CN

全文完
--EOF--

更多
5 Responses Post a comment
  1. 兔子先生。

    @author 确实是要从itunes中恢复,但是按住shift+恢复可以直接选取本地的固件无需从itunes里面下载固件or dns欺骗

  2. author

    @兔子先生。 进dfu了你不照样要iTunes中恢复。。。而且,不存在备份,只能重新刷。。。

  3. 兔子先生。

    一看就是常年玩Android的,iPhone故障恢复直接进DFU,然后shift+恢复iPhone就可以自己选固件了。不过思想可以借鉴。。

  4. Lionheart

    记得可以直接将ipsw丢到itunes下载的最终目录中,这样就不用开本地服务器和改hosts下载等步骤了

Leave a Reply

Note: You may use basic HTML in your comments. Your email address will not be published.

Subscribe to this comment feed via RSS