Skip to content

.pls and .lst files

james edited this page Sep 29, 2018 · 2 revisions

Overview

These formats are used to store Flipnote playlists for various purposes, they can be found in various locations on the SD card as well as within the app's savefile (public.sav) on the NAND.

Playlists consist of an encrypted list of files followed by a 16-bit checksum. SD card playlists are also padded with null bytes so they are always a consistent length.

.lst files only list filenames, whereas .pls files use full filepaths. Filepaths begin with either sdmc:/ or nand:/ and can be up to 256 bytes long.

SD Files

Filename Length (bytes) Purpose
dirmemo2.lst 160000 Used by each Flipnote folder on the SD card to list the Flipnotes inside it.
mark0.pls 8000 Lists Flipnotes that have had a sticker added to them.
mark1.pls 8000 Lists Flipnotes that have had a sticker added to them.
mark2.pls 8000 Lists Flipnotes that have had a sticker added to them.
mark3.pls 8000 Lists Flipnotes that have had a sticker added to them.
recent10.pls 4000 Lists the 10 most recently edited Flipnotes.

NAND Files

Filename Purpose
nand.pls Lists all the Flipnotes stored on System Memory.
mark0.pls Lists Flipnotes that have had a sticker added to them.
mark1.pls Lists Flipnotes that have had a sticker added to them.
mark2.pls Lists Flipnotes that have had a sticker added to them.
mark3.pls Lists Flipnotes that have had a sticker added to them.
recent10.pls Lists the 10 most recently edited Flipnotes.
latest1.pls Most recently edited Flipnote.
remind.pls Tracks calendar Flipnotes?
friend.pls Lists people who you've shared Flipnotes with over local wireless. This file is a little weird and should perhaps be investigated further.

List content

The file list is a simple newline-separated list which always ends with a trailing newline and a null byte (0x0A00). It is encrypted using an XOR cipher with the following constant key:

0xF7 0x4C 0x6A 0x3A 0xFB 0x82 0xA6 0x37
0x6E 0x11 0x38 0xCF 0xA0 0xDD 0x85 0xC0
0xC7 0x9B 0xC4 0xD8 0xDD 0x28 0x8A 0x87
0x53 0x20 0xEE 0xE0 0x0B 0xEB 0x43 0xA0
0xDB 0x55 0x0F 0x75 0x36 0x37 0xEB 0x35
0x6A 0x34 0x7F 0xB5 0x0F 0x99 0xF7 0xEF
0x43 0x25 0xCE 0xA0 0x29 0x46 0xD9 0xD4
0x4D 0xBB 0x04 0x66 0x68 0x08 0xF1 0xF8

Checksum

The 16-bit checksum is computed by md5-hashing the plaintext list data and only keeping the 7th and 9th bytes.