Class: SFO
- Inherits:
-
Object
- Object
- SFO
- Defined in:
- lib/SFO.rb
Defined Under Namespace
Classes: Attribute, Attribute2, Header, SFO, Sfo_index_table_entry
Class Method Summary collapse
- .disp_as_hex(item) ⇒ Object
-
.parse_sfo(stream) ⇒ Object
Takes a stream as an argument.
- .transform_data(key, data) ⇒ Object
Class Method Details
.disp_as_hex(item) ⇒ Object
33 34 35 |
# File 'lib/SFO.rb', line 33 def self.disp_as_hex(item) item.to_binary_s.reverse.unpack('H*')[0] end |
.parse_sfo(stream) ⇒ Object
Takes a stream as an argument
135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/SFO.rb', line 135 def self.parse_sfo(stream) sfo = SFO.read(stream) unless sfo.header.magic == 1179865088 return nil end sfoHash = Hash[sfo.key_table.zip(sfo.data_table)].inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo} sfoHash.each_key do |key| sfoHash[key] = transform_data(key,sfoHash[key]) end sfoHash end |
.transform_data(key, data) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/SFO.rb', line 4 def self.transform_data(key,data) case key when :SYSTEM_VER disp_as_hex data when :PUBTOOLVER disp_as_hex data when :REMOTE_PLAY_KEY_ASSIGN disp_as_hex data when :DOWNLOAD_DATA_SIZE disp_as_hex data when :APP_TYPE disp_as_hex data when :PARENTAL_LEVEL disp_as_hex data when :PT_PARAM disp_as_hex data when :DEV_FLAG disp_as_hex data when :PUBTOOLMINVER disp_as_hex data when :ATTRIBUTE Attribute.read(data.to_binary_s.reverse) when :ATTRIBUTE2 Attribute2.read(data.to_binary_s.reverse) else data.to_binary_s.strip end end |