class SFO
Public Class Methods
disp_as_hex(item)
click to toggle source
# File lib/SFO.rb, line 33 def self.disp_as_hex(item) item.to_binary_s.reverse.unpack('H*')[0] end
parse_sfo(stream)
click to toggle source
Takes a stream as an argument
# 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)
click to toggle source
# 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