[转]SHSH, APTicket以及iOS降級

来源:http://disp.cc/b/522-4v3W

最近有一場Jailbreak的conference,叫做WWJC

裡面請到很多駭客來講解越獄相關知識

包括p0sixninja, iH8sn0w, pod2g等等

其中iH8sn0w的演講主要在講SHSH以及iOS降級

影片在http://www.youtube.com/watch?feature=player_embedded&v=ltBwbSc_j28

iH8Sn0w Keynote - JailbreakCon 2012 (WWJC) - YouTube

Tweet This Video:  Follow: @JailbreakCon Social Network: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  Facebook:...

投影片在http://tinyurl.com/8wmej24

內容大致整理如下,我自己加上了一點背景知識讓文章比較好讀:

1. 什麼是SHSH?

   簡單的說從iPhone 3GS以來任何iDevice要安裝iOS都需要經過Apple的認可,而Apple

   一般來說只會認可最新版的iOS。SHSH可以看做是Apple的簽名,iTunes必須要收到

   Apple發的合格SHSH才會進行韌體回復。

   SHSH只跟兩樣東西有關,一個是iOS版本,一個是iDevice的獨一無二晶片碼ECID,

   所以你的iDevice要安裝某個版本的iOS,你需要有Apple發給你的機器專屬的該iOS

   版本SHSH,不能用別人的,也不能用其他iOS版本的,跟你機器裡裝啥無關。

 

2. SHSH哪裡來?怎麼用來降級?

   SHSH理論上是從Apple發的,Apple只會發最新版本的iOS的SHSH,但是因為SHSH只跟

   iOS版本以及機器ECID有關,所以舉例來說,可以在5.0為最新時跟Apple要5.0 SHSH

   等到5.1出了以後,你把之前存好的5.0 SHSH餵給iTunes,iTunes以為是Apple簽的,

   於是就開始刷5.0,也就是所謂的降級/平刷/非升級到最新版。

   沒有備份SHSH的狀況下,你只能從Apple去取得SHSH,當然只有最新版iOS的,也就是

   iTunes只能幫你安裝最新版的iOS,謂之強迫升級。

 

3. SHSH為什麼失效了?

   在iOS 5.0開始,Apple Server除了發SHSH還多發了一個叫APTicket的東西。

   這是什麼東西呢?SHSH是把ECID跟iOS版本送去給Apple簽名得到的產物,ApTicket

   也是請Apple簽名...但是簽的是一個Nonce,它是一個隨機產生的72-Byte 16進位碼

   就是一個隨機的東西啦!

   看出問題了嗎?因為SHSH只跟ECID以及iOS版本有關,只要你的ECID跟iOS版本不變,

   iTunes根本分不出來你是備份好的還是Apple新發的

   可是APTicket就不一樣了,每次都是隨機產生的,所以你拿之前舊的餵給iTunes

   馬上就會被抓到,也就是單純靠SHSH來降級已經做不到了。

   所以嚴格來說,不是SHSH不見了或者沒用了,它還是要用來簽一部分的韌體

   (LLB跟iBoot),只是光靠SHSH完成不了重刷,還需要APTicket。

 

4. 那為什麼好像iOS5在有些條件下還是可以降級?

   問的好,希望答案不會讓你睡著XD

   A4 Device(iPad1, iPhone4)以及iPhone3GS都可以直接使用SHSH降級,因為有個硬體

   上的漏洞存在,所以很容易(?)可以繞過APTicket的檢查(當然還是要有SHSH)

   A5開始就比較麻煩了,因為沒有硬體上的漏洞,所以需要一些新的手法。

   首先要知道iPhone的韌體ipsw在安裝時,如果已經有合法的SHSH等等,都會被iTunes

   一起包進ipsw然後一起刷進手機。所以APTicket也不例外。在安裝時機器裡已經有

   一個APTicket,記錄一個iOS版本和對應的隨機碼Nonce,在刷韌體的過程第一個

   程序是iBEC,他也有記錄一個iOS版本,只要可以把iOS5.x的iBEC刷進去執行,

   接下來就可以刷該版本的iOS。那Apple是怎麼決定要不要讓你刷某版本的iBEC呢?

   理論上要用APTicket來驗證,可是在某一個狀況不能這樣做。

   猜到了嗎?就是OTAUpdate。因為在OTAUpdate開始後,你是不可能上網的(哪有手機

   一邊升級自己一邊上網的...),所以Apple的檢查很簡單,就看機器裡面的APTicket

   版本,然後接受你刷同版本或更高級的iBEC。在正常的OTAUpdate下,這個APTicket

   是Apple在update開始前送進手機的。

   好了,那要降級的話,概念就很簡單,我要想辦法刷進一個比較低版本的APTicket。

   取得這個不是很難,因為從iOS5開始小雨傘在幫你存SHSH時也順手幫你存了一個該版本

   的APTicket,當然因為Nonce的關係他沒辦法直接像SHSH一樣使用,但是它是有用的!

   現在問題是要怎麼把它刷進去。

   假設要從5.1.1降級到5.0.1,步驟大致上是這樣:

   你的機器安裝了5.1.1,裡面的APTicket也是5.1.1,根據前面的規則,可以安裝並

   執行>=5.1.1的iBEC,所以我們開始執行了5.1.1的iBEC。

   接下來iTunes會開始安裝5.1.1,但是我們把韌體一部分改掉了,把5.0.1的APTicket

   偷偷塞進去,然後接下來的LLB跟iBoot兩個程序只需要用SHSH簽,所以也可以用備份

   SHSH簽好一起混進去。所以就是整個韌體檔多了5.0.1的APTicket,被換掉了LLB跟

   iBoot,其他不變。刷機的過程來到5.0.1的iBoot,此時就會達到可以安裝5.0.1 iBEC

   的狀態,把這個5.0.1的iBEC裝進去後,又根據前面的一個規則,只要開始跑5.0.1的

   iBEC你就可以刷整個5.0.1,降級完成!

 

5. 那iOS6惹出了什麼麻煩?

   現在只要APTicket不合格整個重刷的過程就會直接error跳出,加上Apple開始檢查

   你在韌體裡動什麼手腳。以前可以把APTicket混進去刷但是現在就會被抓到了...

 

6. 那現在狀況是?

   A4系列以及3GS已經講過,因為bootrom洞很大所以有SHSH就夠了

   iPad 2有4.3 SHSH一樣可以降級到任何有SHSH+APTicket的版本,因為4.3根本沒有

   APTicket,故可以用之前iBEC >= APTicket那招來裝舊版iBEC=>舊版iOS

   iPad3跟iPhone4S目前可以平刷iOS 5.x,理由就是之前的iBEC版本需>=機器裡的

   APTicket版本+只要iBEC開始跑就可以刷跟iBEC同版本的iOS,只是現在因為沒辦法

   再把舊版APTicket偷渡進去,故現在只有平刷的選擇。

 

7. 那iPhone 5?

   iPhone5在硬體裡面就會檢查簽名,可是完全不檢查SHSH只檢查APTicket。

   (其他機器現在是SHSH和APTicket並行)

   不過反正iPhone5也沒有什麼可以降級的啊XD

 

BTW,iH8sn0w今年才17歲,雖然沒有geohot or comex猛,但是在大部分是大叔的駭客圈

也已經相當不簡單了...

转载于:https://www.cnblogs.com/Proteas/p/3473370.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
### 回答1: Plist换为SHSH2需要以下步骤: 1. 首先,确保你的设备已经越狱并安装了SHSH2的工具。常用的工具有TinyUmbrella和iFaith等。 2. 在使用这些工具之前,你需要将plist文件换为可识别的格式。你可以使用文本编辑器打开plist文件,并将其另存为文本文件,确保文件扩展名为.plist。 3. 然后,使用SHSH2工具中的相应选项导入已换的plist文件。具体的操作方法可以参考工具的用户指南或相关论坛中的教程。 4. 一旦导入成功,SHSH2工具会将plist文件中的SHSH2数据提取出来,并存储为.shsh2文件。你可以选择保存这个文件到你的电脑中的一个安全位置。 5. 将.shsh2文件备份到云存储或其他安全的位置,以防止数据丢失或设备损坏。 值得注意的是,SHSH2文件用于在设备升级或还原时验证恢复固件的合法性。确保正确保存和备份SHSH2文件,以确保你能够在需要时使用它来恢复你的设备。另外,根据你的设备和操作系统版本的不同,可能存在一些特定于设备和工具的细微差异,所以在实际操作中应该仔细阅读并按照相关的指南进行操作。 ### 回答2: plistshsh2是一种将.plist文件换为.shsh2文件的操作。 首先,需要了解.plist文件和.shsh2文件的概念。plist文件是一种用于存储和传输数据的文件格式,常见于苹果的iOS设备中,而.shsh2文件是iOS设备的签名文件,用于验证固件的合法性。 要将.plist文件换为.shsh2文件,可以按照以下步骤进行操作: 1. 确保你已经拥有.plist文件。如果没有,请先创建或获取一个.plist文件。 2. 下载一个适用的工具。目前,shsh2文件的生成工具并不是很常见,需要通过搜索引擎或社区论坛查找可靠的工具。 3. 打开该换工具,并选择.plist文件作为输入文件。 4. 在工具中选择合适的选项和设置。这些选项可能因工具而异,所以请按照工具的说明进行操作。 5. 确认换设置后,点击开始换或类似按钮开始换过程。 6. 等待换完成。过程的时间长度取决于.plist文件的大小和工具的性能。 7. 成功换后,将生成.shsh2文件。可以将.shsh2文件保存到指定的目录。 需要注意的是,plistshsh2的过程需要使用到相应的工具,而工具的可靠性和功能性有时候难以保证。因此,在进行此类文件格式换时,请确保使用来自可信源的工具,并仔细阅读相关的操作说明和警告,以免造成不可逆的损坏或数据丢失。 希望以上解答对你有帮助,如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值