class String def mngcrypt newstring = "" self.length.times do |i| newstring = newstring + (self.slice(i) ^ ((0x05 + (0xC1 * i)) % 0xFF)).chr end return newstring end end mng = File.new("ds_music.mng", 'rb') mng.seek(4) scriptpos = mng.read(4).unpack("V")[0] scriptlen = mng.read(4).unpack("V")[0] mng.seek(scriptpos) encscript = mng.read(scriptlen) p encscript.mngcrypt