apple-data 1.0.629 → 1.0.648

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. checksums.yaml +4 -4
  2. data/lib/apple_data/data_file.rb +66 -18
  3. data/lib/apple_data/factory_data_reset.rb +32 -0
  4. data/lib/apple_data/io_reg.rb +60 -0
  5. data/lib/apple_data/ipsw.rb +17 -15
  6. data/lib/apple_data/keybag.rb +14 -18
  7. data/lib/apple_data/lockdown.rb +12 -12
  8. data/lib/apple_data/version.rb +1 -1
  9. data/lib/apple_data.rb +5 -7
  10. data/share/apns.yaml +24 -20
  11. data/share/backup.yaml +8 -8
  12. data/share/baseband/qualcomm/mav13.yaml +1 -0
  13. data/share/baseband/qualcomm/mav20.yaml +1 -0
  14. data/share/baseband/qualcomm/mav21.yaml +1 -0
  15. data/share/baseband.yaml +60 -60
  16. data/share/bluetooth.yaml +16 -14
  17. data/share/boot_args.yaml +12 -12
  18. data/share/bridgeos.yaml +18 -18
  19. data/share/bundles.yaml +46 -46
  20. data/share/coprocessor.yaml +99 -99
  21. data/share/credits.yaml +1 -0
  22. data/share/defaults.yaml +1 -0
  23. data/share/device_tree.yaml +1 -0
  24. data/share/devices/ADP3,1.yaml +1 -0
  25. data/share/devices/ADP3,2.yaml +1 -0
  26. data/share/devices/AppleTV5,3.yaml +1 -0
  27. data/share/devices/AudioAccessory5,1.yaml +1 -0
  28. data/share/devices/MacBookAir10,1.yaml +1 -0
  29. data/share/devices/MacBookPro17,1.yaml +1 -0
  30. data/share/devices/MacBookPro18,1.yaml +1 -0
  31. data/share/devices/MacBookPro18,2.yaml +1 -0
  32. data/share/devices/MacBookPro18,3.yaml +1 -0
  33. data/share/devices/MacBookPro18,4.yaml +1 -0
  34. data/share/devices/Macmini9,1.yaml +1 -0
  35. data/share/devices/VirtualMac2,1.yaml +1 -0
  36. data/share/devices/Watch3,1.yaml +1 -0
  37. data/share/devices/Watch3,2.yaml +1 -0
  38. data/share/devices/Watch3,3.yaml +1 -0
  39. data/share/devices/Watch3,4.yaml +1 -0
  40. data/share/devices/Watch4,1.yaml +1 -0
  41. data/share/devices/Watch4,2.yaml +1 -0
  42. data/share/devices/Watch4,3.yaml +1 -0
  43. data/share/devices/Watch4,4.yaml +1 -0
  44. data/share/devices/Watch5,1.yaml +1 -0
  45. data/share/devices/Watch5,10.yaml +1 -0
  46. data/share/devices/Watch5,11.yaml +1 -0
  47. data/share/devices/Watch5,12.yaml +1 -0
  48. data/share/devices/Watch5,2.yaml +1 -0
  49. data/share/devices/Watch5,3.yaml +1 -0
  50. data/share/devices/Watch5,4.yaml +1 -0
  51. data/share/devices/Watch5,9.yaml +1 -0
  52. data/share/devices/Watch6,1.yaml +1 -0
  53. data/share/devices/Watch6,2.yaml +1 -0
  54. data/share/devices/Watch6,3.yaml +1 -0
  55. data/share/devices/Watch6,4.yaml +1 -0
  56. data/share/devices/Watch6,6.yaml +1 -0
  57. data/share/devices/Watch6,7.yaml +1 -0
  58. data/share/devices/Watch6,8.yaml +1 -0
  59. data/share/devices/Watch6,9.yaml +1 -0
  60. data/share/devices/iBridge2,1.yaml +1 -0
  61. data/share/devices/iBridge2,10.yaml +1 -0
  62. data/share/devices/iBridge2,11.yaml +1 -0
  63. data/share/devices/iBridge2,12.yaml +1 -0
  64. data/share/devices/iBridge2,13.yaml +1 -0
  65. data/share/devices/iBridge2,14.yaml +1 -0
  66. data/share/devices/iBridge2,15.yaml +1 -0
  67. data/share/devices/iBridge2,16.yaml +1 -0
  68. data/share/devices/iBridge2,19.yaml +1 -0
  69. data/share/devices/iBridge2,20.yaml +1 -0
  70. data/share/devices/iBridge2,21.yaml +1 -0
  71. data/share/devices/iBridge2,22.yaml +1 -0
  72. data/share/devices/iBridge2,3.yaml +1 -0
  73. data/share/devices/iBridge2,4.yaml +1 -0
  74. data/share/devices/iBridge2,5.yaml +1 -0
  75. data/share/devices/iBridge2,6.yaml +1 -0
  76. data/share/devices/iBridge2,7.yaml +1 -0
  77. data/share/devices/iBridge2,8.yaml +1 -0
  78. data/share/devices/iMac21,1.yaml +1 -0
  79. data/share/devices/iMac21,2.yaml +1 -0
  80. data/share/devices/iPad11,1.yaml +1 -0
  81. data/share/devices/iPad11,2.yaml +1 -0
  82. data/share/devices/iPad11,3.yaml +1 -0
  83. data/share/devices/iPad11,4.yaml +1 -0
  84. data/share/devices/iPad11,6.yaml +1 -0
  85. data/share/devices/iPad11,7.yaml +1 -0
  86. data/share/devices/iPad12,1.yaml +1 -0
  87. data/share/devices/iPad12,2.yaml +1 -0
  88. data/share/devices/iPad13,1.yaml +1 -0
  89. data/share/devices/iPad13,10.yaml +1 -0
  90. data/share/devices/iPad13,11.yaml +1 -0
  91. data/share/devices/iPad13,16.yaml +1 -0
  92. data/share/devices/iPad13,17.yaml +1 -0
  93. data/share/devices/iPad13,2.yaml +1 -0
  94. data/share/devices/iPad13,4.yaml +1 -0
  95. data/share/devices/iPad13,5.yaml +1 -0
  96. data/share/devices/iPad13,6.yaml +1 -0
  97. data/share/devices/iPad13,7.yaml +1 -0
  98. data/share/devices/iPad13,8.yaml +1 -0
  99. data/share/devices/iPad13,9.yaml +1 -0
  100. data/share/devices/iPad14,1.yaml +1 -0
  101. data/share/devices/iPad14,2.yaml +1 -0
  102. data/share/devices/iPad4,1.yaml +1 -0
  103. data/share/devices/iPad4,2.yaml +1 -0
  104. data/share/devices/iPad4,3.yaml +1 -0
  105. data/share/devices/iPad4,4.yaml +1 -0
  106. data/share/devices/iPad4,5.yaml +1 -0
  107. data/share/devices/iPad4,6.yaml +1 -0
  108. data/share/devices/iPad4,7.yaml +1 -0
  109. data/share/devices/iPad4,8.yaml +1 -0
  110. data/share/devices/iPad4,9.yaml +1 -0
  111. data/share/devices/iPad5,1.yaml +1 -0
  112. data/share/devices/iPad5,2.yaml +1 -0
  113. data/share/devices/iPad5,3.yaml +1 -0
  114. data/share/devices/iPad5,4.yaml +1 -0
  115. data/share/devices/iPad6,11.yaml +1 -0
  116. data/share/devices/iPad6,12.yaml +1 -0
  117. data/share/devices/iPad6,3.yaml +1 -0
  118. data/share/devices/iPad6,4.yaml +1 -0
  119. data/share/devices/iPad6,7.yaml +1 -0
  120. data/share/devices/iPad6,8.yaml +1 -0
  121. data/share/devices/iPad7,1.yaml +1 -0
  122. data/share/devices/iPad7,11.yaml +1 -0
  123. data/share/devices/iPad7,12.yaml +1 -0
  124. data/share/devices/iPad7,2.yaml +1 -0
  125. data/share/devices/iPad7,3.yaml +1 -0
  126. data/share/devices/iPad7,4.yaml +1 -0
  127. data/share/devices/iPad7,5.yaml +1 -0
  128. data/share/devices/iPad7,6.yaml +1 -0
  129. data/share/devices/iPad8,1.yaml +1 -0
  130. data/share/devices/iPad8,10.yaml +1 -0
  131. data/share/devices/iPad8,11.yaml +1 -0
  132. data/share/devices/iPad8,12.yaml +1 -0
  133. data/share/devices/iPad8,2.yaml +1 -0
  134. data/share/devices/iPad8,3.yaml +1 -0
  135. data/share/devices/iPad8,4.yaml +1 -0
  136. data/share/devices/iPad8,5.yaml +1 -0
  137. data/share/devices/iPad8,6.yaml +1 -0
  138. data/share/devices/iPad8,7.yaml +1 -0
  139. data/share/devices/iPad8,8.yaml +1 -0
  140. data/share/devices/iPad8,9.yaml +1 -0
  141. data/share/devices/iPhone10,1.yaml +1 -0
  142. data/share/devices/iPhone10,2.yaml +1 -0
  143. data/share/devices/iPhone10,3.yaml +1 -0
  144. data/share/devices/iPhone10,4.yaml +1 -0
  145. data/share/devices/iPhone10,5.yaml +1 -0
  146. data/share/devices/iPhone10,6.yaml +1 -0
  147. data/share/devices/iPhone11,2.yaml +1 -0
  148. data/share/devices/iPhone11,4.yaml +1 -0
  149. data/share/devices/iPhone11,6.yaml +1 -0
  150. data/share/devices/iPhone11,8.yaml +1 -0
  151. data/share/devices/iPhone12,1.yaml +1 -0
  152. data/share/devices/iPhone12,3.yaml +1 -0
  153. data/share/devices/iPhone12,5.yaml +1 -0
  154. data/share/devices/iPhone12,8.yaml +1 -0
  155. data/share/devices/iPhone13,1.yaml +1 -0
  156. data/share/devices/iPhone13,2.yaml +1 -0
  157. data/share/devices/iPhone13,3.yaml +1 -0
  158. data/share/devices/iPhone13,4.yaml +1 -0
  159. data/share/devices/iPhone14,2.yaml +1 -0
  160. data/share/devices/iPhone14,3.yaml +1 -0
  161. data/share/devices/iPhone14,4.yaml +1 -0
  162. data/share/devices/iPhone14,5.yaml +1 -0
  163. data/share/devices/iPhone14,6.yaml +1 -0
  164. data/share/devices/iPhone6,1.yaml +1 -0
  165. data/share/devices/iPhone6,2.yaml +1 -0
  166. data/share/devices/iPhone7,1.yaml +1 -0
  167. data/share/devices/iPhone7,2.yaml +1 -0
  168. data/share/devices/iPhone8,1.yaml +1 -0
  169. data/share/devices/iPhone8,2.yaml +1 -0
  170. data/share/devices/iPhone8,4.yaml +1 -0
  171. data/share/devices/iPhone9,1.yaml +1 -0
  172. data/share/devices/iPhone9,2.yaml +1 -0
  173. data/share/devices/iPhone9,3.yaml +1 -0
  174. data/share/devices/iPhone9,4.yaml +1 -0
  175. data/share/devices/iPod7,1.yaml +1 -0
  176. data/share/devices/iPod9,1.yaml +1 -0
  177. data/share/devices/iProd99,1.yaml +1 -0
  178. data/share/dnssd.yaml +3 -3
  179. data/share/entitlements.yaml +1439 -1439
  180. data/share/environment_variables.yaml +24 -24
  181. data/share/esim.yaml +1 -0
  182. data/share/fdr.yaml +50 -48
  183. data/share/firmware.yaml +115 -115
  184. data/share/homekit.yaml +1 -1
  185. data/share/icloud.yaml +5 -1
  186. data/share/img4.yaml +293 -121
  187. data/share/ioreg.yaml +624 -624
  188. data/share/ipsw.yaml +135872 -123623
  189. data/share/kext.yaml +1910 -1906
  190. data/share/keybags/7000.yaml +1 -0
  191. data/share/keybags/7001.yaml +1 -0
  192. data/share/keybags/7002.yaml +1 -0
  193. data/share/keybags/8000.yaml +1 -0
  194. data/share/keybags/8001.yaml +1 -0
  195. data/share/keybags/8004.yaml +1 -0
  196. data/share/keybags/8006.yaml +1 -0
  197. data/share/keybags/8010.yaml +1 -0
  198. data/share/keybags/8011.yaml +1 -0
  199. data/share/keybags/8012.yaml +1 -0
  200. data/share/keybags/8015.yaml +1 -0
  201. data/share/keybags/8020.yaml +1 -0
  202. data/share/keybags/8027.yaml +1 -0
  203. data/share/keybags/8030.yaml +1 -0
  204. data/share/keybags/8101.yaml +1 -0
  205. data/share/keybags/8103.yaml +1 -0
  206. data/share/keybags/8110.yaml +1 -0
  207. data/share/keybags/8112.yaml +1 -0
  208. data/share/keybags/8120.yaml +1 -0
  209. data/share/keybags/8301.yaml +1 -0
  210. data/share/keybags/8720.yaml +1 -0
  211. data/share/keybags/8900.yaml +1 -0
  212. data/share/keybags/8920.yaml +1 -0
  213. data/share/keybags/8922.yaml +1 -0
  214. data/share/keybags/8930.yaml +1 -146
  215. data/share/keybags/8940.yaml +1 -0
  216. data/share/keybags/8942.yaml +1 -0
  217. data/share/keybags/8945.yaml +1 -0
  218. data/share/keybags/8947.yaml +1 -0
  219. data/share/keybags/8950.yaml +1 -0
  220. data/share/keybags/8955.yaml +1 -0
  221. data/share/keybags/8960.yaml +1 -0
  222. data/share/keys.yaml +4 -1
  223. data/share/launchd/services_bridgeOS_6.1.yaml +1 -0
  224. data/share/lightning.yaml +2 -0
  225. data/share/local_policy.yaml +1 -0
  226. data/share/lockdownd.yaml +125 -120
  227. data/share/mobile_assets.yaml +1 -0
  228. data/share/mobile_gestalt.yaml +708 -708
  229. data/share/nvram.yaml +81 -81
  230. data/share/ota.yaml +4 -1
  231. data/share/pallas.yaml +1 -0
  232. data/share/pki.yaml +38 -2
  233. data/share/platforms.yaml +12 -10
  234. data/share/registers.yaml +2242 -2237
  235. data/share/resources.yaml +1 -0
  236. data/share/sandbox.yaml +1 -0
  237. data/share/sep.yaml +46 -44
  238. data/share/services.yaml +119 -119
  239. data/share/smc.yaml +1 -0
  240. data/share/storage.yaml +1 -1
  241. data/share/syscfg.yaml +18 -18
  242. data/share/terms.yaml +310 -310
  243. data/share/tipw_sync.yaml +171669 -6140
  244. data/share/usbpd.yaml +1 -0
  245. data/share/uuid.yaml +1 -0
  246. data/share/vmapple.yaml +1 -0
  247. metadata +5 -10
  248. data/lib/apple_data/boot_args.rb +0 -5
  249. data/lib/apple_data/fdr.rb +0 -30
  250. data/lib/apple_data/ioreg.rb +0 -59
  251. data/lib/apple_data/macho.rb +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ccec50a6440b05805fb2139a50c19abcfa15433b0f33c93a0564b934446fb9c
4
- data.tar.gz: 062551007e74d609abe1c4858040a25f63656345256ddf2eefce434fee62fafa
3
+ metadata.gz: 19a3c341473409d4f8e885c8427472fcb6e72a77f292809452bbf57d85af8474
4
+ data.tar.gz: 841dc17dc91072db9a0125c443a17863d792d797bb1a12051032dea41f0f50d4
5
5
  SHA512:
6
- metadata.gz: e52bb4d0d08328bb56a946cffa4f597f765610e20b7adad4f8f1db8721f843c7a528c724da39abadba7634cb6f97af2d0ae2543aadf42db403e2b410f48b4f2f
7
- data.tar.gz: ff8cd17c5f061a4c5078a3db242b5871873e89c88f6c02428c5940e3616e94c09ecf765a98a4bd47cd16b8752eab4f0e7a50b1832cb828edf9d0b55b63b27e5f
6
+ metadata.gz: b183b04256fb399f0d562610208f2580aebb1213289e9e6fc179a690571e8e3755bd4d41100ba56429fea8eaca9746485e628dddd8dbd9d739b73367b9fc674f
7
+ data.tar.gz: 90795551ee0e7af5a609b3dc39dcbf59c015030445d95e92ec8543f2ce68b76612ca9425fed563275bb9a3304829b673370c109328a560bcd800953f92de80a7
@@ -1,20 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'active_support/all'
4
+ require 'jsonpath'
5
+
3
6
  module AppleData
4
7
  # Base class for all data files
5
8
  class DataFile
6
- extend T::Sig
7
9
  attr_reader :data
8
10
 
9
- sig { params(parts: String).void }
10
11
  def initialize(*parts)
11
12
  @parts = parts
12
13
  @collections = {}
13
- T.unsafe(self).load_file(*parts)
14
+ load_file(*parts)
14
15
  ensure_metadata
15
16
  end
16
17
 
17
- sig { params(path: String).returns(DataFile) }
18
18
  def self.from_path(path)
19
19
  instance = DataFile.allocate
20
20
  instance.instance_eval do
@@ -26,50 +26,98 @@ module AppleData
26
26
  instance
27
27
  end
28
28
 
29
- sig { params(parts: String).returns(T::Hash[T.untyped, T.untyped]) }
30
29
  def load_file(*parts)
31
30
  parts[-1] = "#{parts[-1]}.yaml" unless T.must(parts[-1]).end_with? '.yaml'
32
31
  @filename = File.join(AppleData.data_location, T.unsafe(File).join(*parts))
33
32
  @data = {}
34
33
  @data = YAML.load_file @filename if File.exist? @filename
35
- @data
34
+ @data.with_indifferent_access
36
35
  end
37
36
 
38
37
  def save!
39
38
  save_data data
40
39
  end
41
40
 
42
- def save
43
- save!
44
- end
45
-
46
41
  def collection(name)
47
42
  @collections[name.to_s] ||= DataFileCollection.new(self, name)
48
43
  end
49
44
 
45
+ def collections
46
+ collection_list = @data['metadata']['collections'] ||= []
47
+ collection_list.map { |name| collection(name) }
48
+ end
49
+
50
50
  def sort!
51
- @collections.each_value(&:sort)
51
+ collections.each(&:sort!)
52
+ return unless sort_paths
53
+
54
+ sort_paths.each do |path|
55
+ JsonPath.for(@data).gsub!(path) do |item|
56
+ case item
57
+ when Array
58
+ item.sort
59
+ when Hash
60
+ item.sort_by { |key, _value| key }.to_h
61
+ else
62
+ item
63
+ end
64
+ end
65
+ end
52
66
  end
53
67
 
54
68
  def auto_sort?
55
- if @data['metadata']['auto_sort'].nil?
56
- true
57
- else
58
- @data['metadata']['auto_sort']
59
- end
69
+ value = metadata['auto_sort']
70
+ value = true if value.nil?
71
+ value
72
+ end
73
+
74
+ def metadata
75
+ @data['metadata'] ||= {}
76
+ end
77
+
78
+ def sort_paths
79
+ metadata['sort_paths']
60
80
  end
61
81
 
62
82
  private
63
83
 
64
84
  def save_data(data)
85
+ @collections.each do |name, collection|
86
+ @data[name] = collection.data
87
+ end
88
+
65
89
  File.write(@filename, data.to_yaml)
66
90
  end
67
91
 
68
92
  def ensure_metadata
69
93
  @data['metadata'] ||= {}
70
94
  @data['metadata'].reverse_merge!({ 'description' => nil, 'credits' => [] })
71
- (@data['metadata']['collections'] || []).each do |name|
72
- collection(name)
95
+ collections = @data['metadata']['collections'] ||= []
96
+ collections.each do |name|
97
+ collection name
98
+ end
99
+ end
100
+
101
+ # A specific "collection" inside a data file. Collections are enumerable groups of one type of item.
102
+ # The schema of each item is the same within a collection.
103
+ class DataFileCollection
104
+ def initialize(data_file, collection_name)
105
+ @data_file = data_file
106
+ @collection_name = collection_name
107
+ @collection_data = @data_file.data[@collection_name]
108
+ end
109
+
110
+ def data
111
+ @collection_data
112
+ end
113
+
114
+ def sort!
115
+ case @collection_data
116
+ when Array
117
+ @collection_data.sort
118
+ when Hash
119
+ @collection_data = @collection_data.sort_by { |key, _value| key }.to_h
120
+ end
73
121
  end
74
122
  end
75
123
  end
@@ -0,0 +1,32 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module AppleData
5
+ # Factory Device Restore
6
+ class FactoryDataReset < AppleData::DataFile
7
+ def initialize
8
+ super('fdr.yaml')
9
+
10
+ @data ||= {} # : data
11
+
12
+ @data['properties'] = [] # : [property]
13
+ end
14
+
15
+ def ensure_property(prop)
16
+ prop_instance = @data['properties'].find { |p| p['name'] == prop }
17
+ unless prop_instance
18
+ prop_instance = {} # : property
19
+ prop_instance['name'] = prop
20
+ prop_instance['description'] = nil
21
+ @data['properties'] << prop_instance
22
+ end
23
+ prop_instance
24
+ end
25
+
26
+ def data
27
+ @data['properties'].sort_by! { |prop| prop['name'] }
28
+
29
+ @data
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,60 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module AppleData
5
+ # Data file for the IOReg data
6
+ class IOReg < AppleData::DataFile
7
+ def initialize
8
+ super('ioreg.yaml')
9
+
10
+ @classes = [] # : [IORegClass]
11
+ @instances ||= {} # : {string => IORegClass}
12
+
13
+ @data['classes'].each do |single_class|
14
+ @classes << IORegClass.load_one(single_class)
15
+ end
16
+ end
17
+
18
+ def data
19
+ @data = {}
20
+ @data['classes'] = @classes.map(&:to_h)
21
+ end
22
+
23
+ # A single IOKit class
24
+ class IORegClass
25
+ attr_accessor :description, :name, :parents, :known_names
26
+
27
+ def initialize(klass_name)
28
+ @name = klass_name
29
+ @parents = [] # : [string]
30
+ end
31
+
32
+ def self.for_name(name)
33
+ @instances[name] = IORegClass.new name unless @instances.key? name
34
+
35
+ @instances[name]
36
+ end
37
+
38
+ def self.values
39
+ @instances.values.sort_by(&:name)
40
+ end
41
+
42
+ def self.load_one(hash)
43
+ instance = IORegClass.for_name hash['name']
44
+ instance.description = hash['description']
45
+ instance.parents = hash['parents'] || []
46
+ instance.known_names = hash['known_names'] || []
47
+ instance.known_names.sort!
48
+ instance
49
+ end
50
+
51
+ def to_h
52
+ { 'name' => @name, 'description' => @description, 'parents' => @parents, 'known_names' => @known_names }
53
+ end
54
+
55
+ def user_client?
56
+ @parents.include? 'IOUserClient'
57
+ end
58
+ end
59
+ end
60
+ end
@@ -3,23 +3,25 @@
3
3
  require 'zip'
4
4
  require 'cfpropertylist'
5
5
 
6
- # Represents an IPSW on disk and provides helper access
7
- class IPSW
8
- def initialize(path)
9
- @path = path
10
- @zip = Zip::File.open(@path)
11
- @manifest = CFPropertyList.guess(@zip.get_entry('BuildManifest.plist').get_input_stream.read)
12
- end
6
+ module AppleData
7
+ # Represents an IPSW on disk and provides helper access
8
+ class IPSW
9
+ def initialize(path)
10
+ @path = path
11
+ @zip = Zip::File.open(@path)
12
+ @manifest = CFPropertyList.guess(@zip.get_entry('BuildManifest.plist').get_input_stream.read)
13
+ end
13
14
 
14
- def baseband_files
15
- result = []
16
- @manifest['BuildIdentities'].each do |identity|
17
- identity['Manifest'].each do |key, value|
18
- result << value if key == 'BasebandFirmware'
15
+ def baseband_files
16
+ result = []
17
+ @manifest['BuildIdentities'].each do |identity|
18
+ identity['Manifest'].each do |key, value|
19
+ result << value if key == 'BasebandFirmware'
20
+ end
19
21
  end
22
+ result
20
23
  end
21
- result
22
- end
23
24
 
24
- def img4_files; end
25
+ def img4_files; end
26
+ end
25
27
  end
@@ -2,27 +2,22 @@
2
2
 
3
3
  module AppleData
4
4
  # Represents a GID grouping of encrypted and decrypted keybags
5
- class GIDKeyBag < DataFile
5
+ class Keybag < DataFile
6
6
  @keybags = {}
7
- cattr_reader :keybags
8
7
 
9
- class << self
10
- def new(chip_id)
11
- self.[](chip_id)
12
- end
8
+ attr_reader :keybags
13
9
 
14
- def save_all
15
- @keybags.each_value(&:save)
16
- end
10
+ def self.save_all
11
+ @keybags.each_value(&:save)
12
+ end
17
13
 
18
- def [](chip_id)
19
- chip_id = chip_id.to_i
20
- return @keybags[chip_id] if @keybags.key? chip_id
14
+ def self.[](chip_id)
15
+ chip_id = chip_id.to_i
16
+ return @keybags[chip_id] if @keybags.key? chip_id
21
17
 
22
- instance = allocate
23
- instance.send(:initialize, chip_id)
24
- @keybags[chip_id] = instance
25
- end
18
+ instance = allocate
19
+ instance.send(:initialize, chip_id)
20
+ @keybags[chip_id] = instance
26
21
  end
27
22
 
28
23
  def initialize(chip_id)
@@ -31,7 +26,8 @@ module AppleData
31
26
 
32
27
  def get_board(board_id)
33
28
  board_id = board_id.to_i
34
- BoardKeyBag.new self, board_id, collection(:keybag_boards).ensure_key(board_id, description: false)
29
+ boards = collection(:keybag_boards)
30
+ BoardKeyBag.new self, board_id, boards.ensure_key(board_id, description: false)
35
31
  end
36
32
 
37
33
  # A keybag of builds for a particular build
@@ -45,7 +41,7 @@ module AppleData
45
41
  def merge_keydb_build(build_id, build)
46
42
  return unless build['keybags']
47
43
 
48
- @board[build_id] ||= {}
44
+ @board[build_id] ||= {} # : build
49
45
  @board[build_id]['components'] ||= {}
50
46
  @board[build_id]['components'].reverse_merge! build['keybags']
51
47
  end
@@ -3,10 +3,11 @@
3
3
 
4
4
  module AppleData
5
5
  # Schema file for the `lockdownd.yaml` file
6
- class LockdownData < AppleData::DataFile
6
+ class Lockdown < AppleData::DataFile
7
7
  def initialize
8
8
  super('lockdownd.yaml')
9
- @data ||= {}
9
+ @data ||= {} # : data
10
+
10
11
  @data['clients'] ||= []
11
12
  @data['domains'] ||= []
12
13
  end
@@ -15,19 +16,10 @@ module AppleData
15
16
  @data['clients'] << client unless @data['clients'].include? client
16
17
  end
17
18
 
18
- def ensure_domain_has_property(domain, property, _type = nil)
19
- domain_instance = get_domain domain
20
-
21
- return unless property
22
-
23
- domain_instance['properties'] << property unless domain_instance['properties'].include? property
24
- end
25
-
26
19
  def get_domain(domain)
27
20
  result = @data['domains'].find { |d| d['name'] == domain }
28
21
  unless result
29
- result = {}
30
- result['name'] = domain
22
+ result = { 'name' => domain } # : domain
31
23
  @data['domains'] << result
32
24
  end
33
25
  result['description'] ||= nil
@@ -35,6 +27,14 @@ module AppleData
35
27
  result
36
28
  end
37
29
 
30
+ def ensure_domain_has_property(domain, property, _type = nil)
31
+ domain_instance = get_domain domain
32
+
33
+ return unless property
34
+
35
+ domain_instance['properties'] << property unless domain_instance['properties'].include? property
36
+ end
37
+
38
38
  def data
39
39
  @data['clients'].sort!
40
40
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AppleData
4
- VERSION = '1.0.629'
4
+ VERSION = '1.0.648'
5
5
  end
data/lib/apple_data.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- DEFAULT_APPLE_DATA_SHARE = T.let(File.join(File.dirname(__FILE__), '../share/'), String)
4
-
5
3
  # Base Namespace for AppleData gem
6
4
  module AppleData
5
+ DEFAULT_APPLE_DATA_SHARE = File.join(File.dirname(__FILE__), '../share/')
6
+
7
7
  def get_data(file)
8
8
  YAML.load_file(File.join(@apple_data, file))
9
9
  end
@@ -13,14 +13,12 @@ module AppleData
13
13
  end
14
14
 
15
15
  def self.data_location
16
- @apple_data || DEFAULT_APPLE_DATA_SHARE
16
+ @apple_data || AppleData::DEFAULT_APPLE_DATA_SHARE
17
17
  end
18
18
  end
19
19
 
20
20
  require 'apple_data/data_file'
21
- require 'apple_data/boot_args'
22
- require 'apple_data/fdr'
23
- require 'apple_data/ioreg'
24
- require 'apple_data/macho'
21
+ require 'apple_data/factory_data_reset'
22
+ require 'apple_data/io_reg'
25
23
  require 'apple_data/lockdown'
26
24
  require 'apple_data/keybag'
data/share/apns.yaml CHANGED
@@ -2,6 +2,10 @@
2
2
  metadata:
3
3
  description:
4
4
  credits:
5
+ collections:
6
+ - apns_commands
7
+ - topics
8
+ - apns_environments
5
9
  apns_commands:
6
10
  7:
7
11
  name: connect
@@ -360,16 +364,18 @@ topics:
360
364
  com.apple.ess:
361
365
  com.apple.findmy:
362
366
  com.apple.gamed:
367
+ com.apple.iWork.Numbers:
368
+ com.apple.icloud-container.clouddocs.F3LWYJ7GM7.com.apple.garageband10:
369
+ com.apple.icloud-container.clouddocs.F3LWYJ7GM7.com.apple.mobilegarageband:
370
+ com.apple.icloud-container.clouddocs.F3LWYJ7GM7.com.apple.musicmemos.ideas:
371
+ com.apple.icloud-container.clouddocs.F6266T9T75.com.apple.iMovie:
363
372
  com.apple.icloud-container.clouddocs.com.apple.Automator:
364
373
  com.apple.icloud-container.clouddocs.com.apple.CloudDocs:
365
374
  com.apple.icloud-container.clouddocs.com.apple.CloudDocs.container-metadata:
366
375
  com.apple.icloud-container.clouddocs.com.apple.CloudDocs.health:
367
376
  com.apple.icloud-container.clouddocs.com.apple.CloudDocs.pp-metadata:
368
- com.apple.icloud-container.clouddocs.com.apple.finder:
369
377
  com.apple.icloud-container.clouddocs.com.apple.Grab:
370
- com.apple.icloud-container.clouddocs.com.apple.iBooks.cloudData:
371
378
  com.apple.icloud-container.clouddocs.com.apple.Keynote:
372
- com.apple.icloud-container.clouddocs.com.apple.mail:
373
379
  com.apple.icloud-container.clouddocs.com.apple.Mica:
374
380
  com.apple.icloud-container.clouddocs.com.apple.Notes:
375
381
  com.apple.icloud-container.clouddocs.com.apple.Numbers:
@@ -377,20 +383,25 @@ topics:
377
383
  com.apple.icloud-container.clouddocs.com.apple.Preview:
378
384
  com.apple.icloud-container.clouddocs.com.apple.QuickTimePlayerX:
379
385
  com.apple.icloud-container.clouddocs.com.apple.ScriptEditor2:
380
- com.apple.icloud-container.clouddocs.com.apple.shoebox:
381
386
  com.apple.icloud-container.clouddocs.com.apple.TextEdit:
382
387
  com.apple.icloud-container.clouddocs.com.apple.TextInput:
383
- com.apple.icloud-container.clouddocs.F3LWYJ7GM7.com.apple.garageband10:
384
- com.apple.icloud-container.clouddocs.F3LWYJ7GM7.com.apple.mobilegarageband:
385
- com.apple.icloud-container.clouddocs.F3LWYJ7GM7.com.apple.musicmemos.ideas:
386
- com.apple.icloud-container.clouddocs.F6266T9T75.com.apple.iMovie:
388
+ com.apple.icloud-container.clouddocs.com.apple.finder:
389
+ com.apple.icloud-container.clouddocs.com.apple.iBooks.cloudData:
390
+ com.apple.icloud-container.clouddocs.com.apple.mail:
391
+ com.apple.icloud-container.clouddocs.com.apple.shoebox:
392
+ com.apple.icloud-container.clouddocs.iCloud.com.apple.MobileSMS:
393
+ com.apple.icloud-container.clouddocs.iCloud.com.apple.Playgrounds:
387
394
  com.apple.icloud-container.clouddocs.iCloud.com.apple.configurator.ui:
388
395
  com.apple.icloud-container.clouddocs.iCloud.com.apple.iBooks:
389
396
  com.apple.icloud-container.clouddocs.iCloud.com.apple.iBooks.iTunesU:
390
- com.apple.icloud-container.clouddocs.iCloud.com.apple.MobileSMS:
391
- com.apple.icloud-container.clouddocs.iCloud.com.apple.Playgrounds:
392
397
  com.apple.icloud-container.clouddocs.iCloud.com.polishedplay.coreanimator:
393
398
  com.apple.icloud-container.clouddocs.iCloud.is.workflow.my.workflows:
399
+ com.apple.icloud-container.com.apple.Safari:
400
+ com.apple.icloud-container.com.apple.SafariShared.CloudTabs:
401
+ com.apple.icloud-container.com.apple.SafariShared.Settings:
402
+ com.apple.icloud-container.com.apple.SafariShared.WBSCloudBookmarksStore:
403
+ com.apple.icloud-container.com.apple.TrustedPeersHelper:
404
+ com.apple.icloud-container.com.apple.UsageTrackingAgent:
394
405
  com.apple.icloud-container.com.apple.amsengagementd:
395
406
  com.apple.icloud-container.com.apple.appleaccount.beneficiary:
396
407
  com.apple.icloud-container.com.apple.appleaccount.beneficiary.private:
@@ -405,20 +416,16 @@ topics:
405
416
  com.apple.icloud-container.com.apple.cloudpaird:
406
417
  com.apple.icloud-container.com.apple.findmy.findmylocateagent:
407
418
  com.apple.icloud-container.com.apple.gamed:
419
+ com.apple.icloud-container.com.apple.iWork.Numbers:
408
420
  com.apple.icloud-container.com.apple.icloud.fmfd:
409
421
  com.apple.icloud-container.com.apple.icloud.searchpartyuseragent:
410
422
  com.apple.icloud-container.com.apple.imagent:
411
- com.apple.icloud-container.com.apple.iWork.Numbers:
412
423
  com.apple.icloud-container.com.apple.keyboardservicesd:
413
424
  com.apple.icloud-container.com.apple.knowledge-agent:
414
425
  com.apple.icloud-container.com.apple.passd:
415
426
  com.apple.icloud-container.com.apple.photos.cloud:
416
427
  com.apple.icloud-container.com.apple.protectedcloudstorage.protectedcloudkeysyncing:
417
428
  com.apple.icloud-container.com.apple.reminders:
418
- com.apple.icloud-container.com.apple.Safari:
419
- com.apple.icloud-container.com.apple.SafariShared.CloudTabs:
420
- com.apple.icloud-container.com.apple.SafariShared.Settings:
421
- com.apple.icloud-container.com.apple.SafariShared.WBSCloudBookmarksStore:
422
429
  com.apple.icloud-container.com.apple.security.cuttlefish:
423
430
  com.apple.icloud-container.com.apple.security.kcsharing:
424
431
  com.apple.icloud-container.com.apple.securityd:
@@ -427,9 +434,7 @@ topics:
427
434
  com.apple.icloud-container.com.apple.suggestd:
428
435
  com.apple.icloud-container.com.apple.syncdefaultsd:
429
436
  com.apple.icloud-container.com.apple.transparencyd:
430
- com.apple.icloud-container.com.apple.TrustedPeersHelper:
431
437
  com.apple.icloud-container.com.apple.upload-request-proxy.com.apple.photos.cloud:
432
- com.apple.icloud-container.com.apple.UsageTrackingAgent:
433
438
  com.apple.icloud-container.com.apple.willowd:
434
439
  com.apple.icloud.fmip.voiceassistantsync:
435
440
  com.apple.icloud.presence.mode.status:
@@ -437,7 +442,6 @@ topics:
437
442
  com.apple.idmsauth:
438
443
  com.apple.idmsauthagent:
439
444
  com.apple.itunesstored:
440
- com.apple.iWork.Numbers:
441
445
  com.apple.jalisco:
442
446
  com.apple.madrid:
443
447
  com.apple.mobileassetd:
@@ -494,11 +498,11 @@ topics:
494
498
  com.apple.private.alloy.fmf:
495
499
  com.apple.private.alloy.gamecenter.imessage:
496
500
  com.apple.private.alloy.gelato:
497
- com.apple.private.alloy.groupkit:
498
- com.apple.private.alloy.groupkit.invite:
499
501
  com.apple.private.alloy.groupRemoteControl.cloud:
500
502
  com.apple.private.alloy.groupRemoteControl.messaging:
501
503
  com.apple.private.alloy.groupRemoteControl.session:
504
+ com.apple.private.alloy.groupkit:
505
+ com.apple.private.alloy.groupkit.invite:
502
506
  com.apple.private.alloy.hearing:
503
507
  com.apple.private.alloy.home:
504
508
  com.apple.private.alloy.home.invite:
data/share/backup.yaml CHANGED
@@ -6,32 +6,32 @@ metadata:
6
6
  - backup_domains
7
7
  backup_domains:
8
8
  AppDomain-com.apple.Maps:
9
- AppDomain-com.apple.mobilemail:
10
- AppDomain-com.apple.mobilenotes:
11
- AppDomain-com.apple.mobilesafari:
12
9
  AppDomain-com.apple.MobileSMS:
13
10
  AppDomain-com.apple.Music:
14
- AppDomain-com.apple.news:
15
11
  AppDomain-com.apple.Passbook:
16
- AppDomain-com.apple.podcasts:
17
12
  AppDomain-com.apple.ScreenshotServicesService:
18
13
  AppDomain-com.apple.SleepLockScreen:
14
+ AppDomain-com.apple.mobilemail:
15
+ AppDomain-com.apple.mobilenotes:
16
+ AppDomain-com.apple.mobilesafari:
17
+ AppDomain-com.apple.news:
18
+ AppDomain-com.apple.podcasts:
19
19
  AppDomain-com.apple.store.Jolly:
20
20
  AppDomainGroup-243LU875E5.groups.com.apple.podcasts:
21
- AppDomainGroup-group.com.apple.mail:
22
21
  AppDomainGroup-group.com.apple.Maps:
23
22
  AppDomainGroup-group.com.apple.Music:
23
+ AppDomainGroup-group.com.apple.mail:
24
24
  AppDomainGroup-group.com.apple.news:
25
25
  AppDomainGroup-group.com.apple.notes:
26
26
  AppDomainGroup-group.com.apple.tips:
27
27
  AppDomainGroup-group.com.apple.weather:
28
- AppDomainPlugin-com.apple.AppleMediaDiscovery.AMDEngagementExtension:
29
28
  AppDomainPlugin-com.apple.AppStore.ProductPageExtension:
29
+ AppDomainPlugin-com.apple.AppleMediaDiscovery.AMDEngagementExtension:
30
30
  AppDomainPlugin-com.apple.Maps.GeneralMapsWidget:
31
31
  AppDomainPlugin-com.apple.MobileSMS.MessagesNotificationExtension:
32
32
  AppDomainPlugin-com.apple.Music.Messages:
33
- AppDomainPlugin-com.apple.news.widget:
34
33
  AppDomainPlugin-com.apple.TestFlight.ServiceExtension:
34
+ AppDomainPlugin-com.apple.news.widget:
35
35
  AppDomainPlugin-com.apple.weather.widget:
36
36
  HomeDomain:
37
37
  KeyboardDomain:
@@ -3,6 +3,7 @@ metadata:
3
3
  description:
4
4
  credits:
5
5
  - rickmark
6
+ collections: []
6
7
  bbfw_contents:
7
8
  acdb.mbn:
8
9
  description: accessory database
@@ -2,6 +2,7 @@
2
2
  metadata:
3
3
  description:
4
4
  credits: []
5
+ collections: []
5
6
  versions:
6
7
  - 1.00.03-5
7
8
  - 1.14.04
@@ -3,6 +3,7 @@ metadata:
3
3
  description: Data on the Qualcomm X55 (Mav21) baseband
4
4
  credits:
5
5
  - rickmark
6
+ collections: []
6
7
  bbfw_contents:
7
8
  - acdb.mbn
8
9
  - apdp.mbn