Пример #1
0
    def test_magic(self):
        # Add values here that are shown in the wild for file magic output
        # !! Always try to add it also to test_combination

        descriptions = {
            "Linux Compressed ROM File System data": "cramfs",
            "Linux rev 1.0 ext2 filesystem data": "ext",

            'DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, '
            'root entries 512, sectors 100 (volumes <=32 MB) , Media descriptor 0xf8, '
            'sectors/FAT 1, sectors/track 32, heads 64, serial number 0x3cb7474b, '
            'label: "TEST       ", FAT (12 bit)': "fat",

            "ISO 9660 CD-ROM filesystem data 'test'": "iso",
            "Minix filesystem, V1, 30 char names, 12800 zones": "minix",

            'DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS    ", sectors/cluster 8, '
            'Media descriptor 0xf8, sectors/track 0, dos < 4.0 BootSector (0x80), FAT (1Y bit '
            'by descriptor); NTFS, sectors 2048, $MFT start cluster 4, $MFTMirror start '
            'cluster 128, bytes/RecordSegment 2^(-1*246), clusters/index block 1, serial '
            'number 04e8742c12a96cecd; contains Microsoft Windows XP/VISTA bootloader BOOTMGR': "ntfs",

            "Squashfs filesystem, little endian, version 4.0": "squashfs",
        }

        for description, fstype in descriptions.items():
            volume = Volume(disk=Disk(ImageParser(), "..."))
            volume._get_blkid_type = mock.Mock(return_value=None)
            volume._get_magic_type = mock.Mock(return_value=description)
            volume.determine_fs_type()
            self.assertEqual(FILE_SYSTEM_TYPES[fstype], volume.fstype)
Пример #2
0
    def test_magic(self):
        # Add values here that are shown in the wild for file magic output
        # !! Always try to add it also to test_combination

        descriptions = {
            "Linux Compressed ROM File System data": "cramfs",
            "Linux rev 1.0 ext2 filesystem data": "ext",

            'DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, '
            'root entries 512, sectors 100 (volumes <=32 MB) , Media descriptor 0xf8, '
            'sectors/FAT 1, sectors/track 32, heads 64, serial number 0x3cb7474b, '
            'label: "TEST       ", FAT (12 bit)': "fat",

            "ISO 9660 CD-ROM filesystem data 'test'": "iso",
            "Minix filesystem, V1, 30 char names, 12800 zones": "minix",

            'DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS    ", sectors/cluster 8, '
            'Media descriptor 0xf8, sectors/track 0, dos < 4.0 BootSector (0x80), FAT (1Y bit '
            'by descriptor); NTFS, sectors 2048, $MFT start cluster 4, $MFTMirror start '
            'cluster 128, bytes/RecordSegment 2^(-1*246), clusters/index block 1, serial '
            'number 04e8742c12a96cecd; contains Microsoft Windows XP/VISTA bootloader BOOTMGR': "ntfs",

            "Squashfs filesystem, little endian, version 4.0": "squashfs",
        }

        for description, fstype in descriptions.items():
            volume = Volume(disk=Disk(ImageParser(), "..."))
            volume._get_blkid_type = mock.Mock(return_value=None)
            volume._get_magic_type = mock.Mock(return_value=description)
            volume.determine_fs_type()
            self.assertEqual(FILE_SYSTEM_TYPES[fstype], volume.fstype)
Пример #3
0
 def test_fstype_fallback(self):
     volume = Volume(disk=Disk(ImageParser(), "..."))
     volume.fstype = "?bsd"
     volume._get_blkid_type = mock.Mock(return_value=None)
     volume._get_magic_type = mock.Mock(return_value=None)
     volume.determine_fs_type()
     self.assertEqual("bsd", volume.fstype)
Пример #4
0
 def test_fstype_fallback(self):
     volume = Volume(disk=Disk(ImageParser(), "..."))
     volume._get_blkid_type = mock.Mock(return_value=None)
     volume._get_magic_type = mock.Mock(return_value=None)
     volume._get_fstype_from_parser('?ufs')
     volume.determine_fs_type()
     self.assertEqual(FILE_SYSTEM_TYPES["ufs"], volume.fstype)
Пример #5
0
    def test_combination(self):
        # Add values here to test full combinations of specific filesystem types
        # The _ as key is the expected result

        _ = "use as key for the expected result"
        definitions = [
            {_: "cramfs", "blkid": "cramfs", "magic": "Linux Compressed ROM File System data", "fsdescription": "???"},
            {_: "exfat", "blkid": "exfat", "fsdescription": "NTFS / exFAT", "statfstype": "exFAT"},
            {_: "ext", "blkid": "ext4", "fsdescription": "Linux (0x83)", "guid": "", "statfstype": "Ext2"},
            {_: "fat", "blkid": "vfat", "magic": "FAT (12 bit)", "fsdescription": "DOS FAT12 (0x04)",
             "statfstype": "FAT12"},
            {_: "iso", "blkid": "iso9660", "magic": ".. ISO 9660 ..", "statfstype": "ISO9660"},
            {_: "minix", "blkid": "min  ix", "magic": "Minix filesystem", "fsdescription": "???"},
            {_: "ntfs", "blkid": "ntfs", "magic": ".. NTFS ..", "fsdescription": "NTFS / exFAT", "statfstype": "NTFS"},
            {_: "squashfs", "blkid": "squashfs", "magic": "Squashfs filesystem", "fsdescription": "???"},

            {_: "lvm", "guid": "79D3D6E6-07F5-C244-A23C-238F2A3DF928"},
            {_: "raid", "fsdescription": "Linux (0x83)", "blkid": "linux_raid_member"},

            {_: "volumesystem", "blkid": "dos", "fsdescription": "Logical Volume"},
            {_: "volumesystem", "blkid": "dos", "fsdescription": "RAID Volume"},
            {_: "volumesystem", "blkid": "dos", "magic": "DOS/MBR boot sector"},
            {_: "volumesystem", "fsdescription": "BSD/386, 386BSD, NetBSD, FreeBSD (0xa5)", "blkid": "ufs"},
            {_: "ufs", "fsdescription": "4.2BSD (0x07)", "blkid": "ufs"},
        ]

        for definition in definitions:
            volume = Volume(disk=Disk(ImageParser(), "..."))
            volume._get_blkid_type = mock.Mock(return_value=definition.get("blkid"))
            volume._get_magic_type = mock.Mock(return_value=definition.get("magic"))
            volume.info = definition
            volume.determine_fs_type()
            self.assertEqual(FILE_SYSTEM_TYPES[definition[_]], volume.fstype)
Пример #6
0
    def test_fsdescription(self):
        # Add names in here that are shown in the wild for output of mmls / gparted
        # !! Always try to add it also to test_combination

        descriptions = {
            # Names assigned by imagemounter
            "Logical Volume": "unknown",
            "LUKS Volume": "unknown",
            "BDE Volume": "unknown",
            "RAID Volume": "unknown",
            "VSS Store": "unknown",

            "NTFS / exFAT": "ntfs",  # mmls, should use fallback
            "Linux (0x83)": "unknown",  # should use unknown
            "4.2BSD": "ufs",
            "BSD/386, 386BSD, NetBSD, FreeBSD (0xa5)": "volumesystem",
            "DOS FAT16": "fat",
        }
        for description, fstype in descriptions.items():
            volume = Volume(disk=Disk(ImageParser(), "..."))
            volume._get_blkid_type = mock.Mock(return_value=None)
            volume._get_magic_type = mock.Mock(return_value=None)
            self.fstype = ""  # prevent fallback to unknown by default
            volume.info['fsdescription'] = description
            volume.determine_fs_type()
            self.assertEqual(FILE_SYSTEM_TYPES[fstype], volume.fstype)
Пример #7
0
 def test_fstype_fallback(self):
     volume = Volume(disk=Disk(ImageParser(), "..."))
     volume._get_blkid_type = mock.Mock(return_value=None)
     volume._get_magic_type = mock.Mock(return_value=None)
     volume._get_fstype_from_parser('?ufs')
     volume.determine_fs_type()
     self.assertEqual(FILE_SYSTEM_TYPES["ufs"], volume.fstype)
Пример #8
0
    def test_fsdescription(self):
        # Add names in here that are shown in the wild for output of mmls / gparted
        # !! Always try to add it also to test_combination

        descriptions = {
            # Names assigned by imagemounter
            "Logical Volume": "unknown",
            "LUKS Volume": "unknown",
            "BDE Volume": "unknown",
            "RAID Volume": "unknown",
            "VSS Store": "unknown",

            "NTFS / exFAT": "ntfs",  # mmls, should use fallback
            "Linux (0x83)": "unknown",  # should use unknown
            "4.2BSD": "ufs",
            "BSD/386, 386BSD, NetBSD, FreeBSD (0xa5)": "volumesystem",
            "DOS FAT16": "fat",
        }
        for description, fstype in descriptions.items():
            volume = Volume(disk=Disk(ImageParser(), "..."))
            volume._get_blkid_type = mock.Mock(return_value=None)
            volume._get_magic_type = mock.Mock(return_value=None)
            self.fstype = ""  # prevent fallback to unknown by default
            volume.info['fsdescription'] = description
            volume.determine_fs_type()
            self.assertEqual(FILE_SYSTEM_TYPES[fstype], volume.fstype)
Пример #9
0
    def test_combination(self):
        # Add values here to test full combinations of specific filesystem types
        # The _ as key is the expected result

        _ = "use as key for the expected result"
        definitions = [
            {_: "cramfs", "blkid": "cramfs", "magic": "Linux Compressed ROM File System data", "fsdescription": "???"},
            {_: "exfat", "blkid": "exfat", "fsdescription": "NTFS / exFAT", "statfstype": "exFAT"},
            {_: "ext", "blkid": "ext4", "fsdescription": "Linux (0x83)", "guid": "", "statfstype": "Ext2"},
            {_: "fat", "blkid": "vfat", "magic": "FAT (12 bit)", "fsdescription": "DOS FAT12 (0x04)",
                       "statfstype": "FAT12"},
            {_: "iso", "blkid": "iso9660", "magic": ".. ISO 9660 ..", "statfstype": "ISO9660"},
            {_: "minix", "blkid": "min  ix", "magic": "Minix filesystem", "fsdescription": "???"},
            {_: "ntfs", "blkid": "ntfs", "magic": ".. NTFS ..", "fsdescription": "NTFS / exFAT", "statfstype": "NTFS"},
            {_: "squashfs", "blkid": "squashfs", "magic": "Squashfs filesystem", "fsdescription": "???"},

            {_: "lvm", "guid": "79D3D6E6-07F5-C244-A23C-238F2A3DF928"},
            {_: "raid", "fsdescription": "Linux (0x83)", "blkid": "linux_raid_member"},

            {_: "volumesystem", "blkid": "dos", "fsdescription": "Logical Volume"},
            {_: "volumesystem", "blkid": "dos", "fsdescription": "RAID Volume"},
            {_: "volumesystem", "blkid": "dos", "magic": "DOS/MBR boot sector"},
            {_: "volumesystem", "fsdescription": "BSD/386, 386BSD, NetBSD, FreeBSD (0xa5)", "blkid": "ufs"},
            {_: "ufs", "fsdescription": "4.2BSD (0x07)", "blkid": "ufs"},
        ]

        for definition in definitions:
            volume = Volume(disk=Disk(ImageParser(), "..."))
            volume._get_blkid_type = mock.Mock(return_value=definition.get("blkid"))
            volume._get_magic_type = mock.Mock(return_value=definition.get("magic"))
            volume.info = definition
            volume.determine_fs_type()
            self.assertEqual(FILE_SYSTEM_TYPES[definition[_]], volume.fstype)
Пример #10
0
 def test_guid(self):
     for description, fstype in FILE_SYSTEM_GUIDS.items():
         volume = Volume(disk=Disk(ImageParser(), "..."))
         volume._get_blkid_type = mock.Mock(return_value=None)
         volume._get_magic_type = mock.Mock(return_value=None)
         volume.info['guid'] = description
         volume.determine_fs_type()
         self.assertEqual(fstype, volume.fstype)
Пример #11
0
    def test_fstype_fallback_unknown(self):
        volume = Volume(disk=Disk(ImageParser(), "..."))
        volume._get_blkid_type = mock.Mock(return_value=None)
        volume._get_magic_type = mock.Mock(return_value=None)
        volume.info['fsdescription'] = "Linux (0x83)"

        # If something more specific is set, we use that
        volume._get_fstype_from_parser('?ufs')
        volume.determine_fs_type()
        self.assertEqual(FILE_SYSTEM_TYPES["ufs"], volume.fstype)

        # Otherwise we fallback to unknown if Linux (0x83) is set
        volume._get_fstype_from_parser('')
        volume.determine_fs_type()
        self.assertEqual(UnknownFileSystemType(), volume.fstype)
Пример #12
0
    def test_fstype_fallback_unknown(self):
        volume = Volume(disk=Disk(ImageParser(), "..."))
        volume._get_blkid_type = mock.Mock(return_value=None)
        volume._get_magic_type = mock.Mock(return_value=None)
        volume.info['fsdescription'] = "Linux (0x83)"

        # If something more specific is set, we use that
        volume._get_fstype_from_parser('?ufs')
        volume.determine_fs_type()
        self.assertEqual(FILE_SYSTEM_TYPES["ufs"], volume.fstype)

        # Otherwise we fallback to unknown if Linux (0x83) is set
        volume._get_fstype_from_parser('')
        volume.determine_fs_type()
        self.assertEqual(UnknownFileSystemType(), volume.fstype)
Пример #13
0
    def test_fstype_fallback_unknown(self):
        volume = Volume(disk=Disk(ImageParser(), "..."))
        volume._get_blkid_type = mock.Mock(return_value=None)
        volume._get_magic_type = mock.Mock(return_value=None)
        volume.info['fsdescription'] = "Linux (0x83)"

        # If something more specific is set, we use that
        volume.fstype = "?bsd"
        volume.determine_fs_type()
        self.assertEqual("bsd", volume.fstype)

        # Otherwise we fallback to unknown if Linux (0x83) is set
        volume.fstype = ""
        volume.determine_fs_type()
        self.assertEqual("unknown", volume.fstype)
Пример #14
0
    def test_guid(self):

        FILE_SYSTEM_GUIDS = {
            '2AE031AA-0F40-DB11-9590-000C2911D1B8': 'vmfs',
            #'8053279D-AD40-DB11-BF97-000C2911D1B8': 'vmkcore-diagnostics',
            #'6A898CC3-1DD2-11B2-99A6-080020736631': 'zfs-member',
            #'C38C896A-D21D-B211-99A6-080020736631': 'zfs-member',
            #'0FC63DAF-8483-4772-8E79-3D69D8477DE4': 'linux',
            'E6D6D379-F507-44C2-A23C-238F2A3DF928': 'lvm',
            '79D3D6E6-07F5-C244-A23C-238F2A3DF928': 'lvm',
            'CA7D7CCB-63ED-4C53-861C-1742536059CC': 'luks'
        }

        for description, fstype in FILE_SYSTEM_GUIDS.items():
            volume = Volume(disk=Disk(ImageParser(), "..."))
            volume._get_blkid_type = mock.Mock(return_value=None)
            volume._get_magic_type = mock.Mock(return_value=None)
            volume.info['guid'] = description
            volume.determine_fs_type()
            self.assertEqual(FILE_SYSTEM_TYPES[fstype], volume.fstype)
Пример #15
0
    def test_guid(self):

        FILE_SYSTEM_GUIDS = {
            '2AE031AA-0F40-DB11-9590-000C2911D1B8': 'vmfs',
            # '8053279D-AD40-DB11-BF97-000C2911D1B8': 'vmkcore-diagnostics',
            # '6A898CC3-1DD2-11B2-99A6-080020736631': 'zfs-member',
            # 'C38C896A-D21D-B211-99A6-080020736631': 'zfs-member',
            # '0FC63DAF-8483-4772-8E79-3D69D8477DE4': 'linux',
            'E6D6D379-F507-44C2-A23C-238F2A3DF928': 'lvm',
            '79D3D6E6-07F5-C244-A23C-238F2A3DF928': 'lvm',
            'CA7D7CCB-63ED-4C53-861C-1742536059CC': 'luks'
        }

        for description, fstype in FILE_SYSTEM_GUIDS.items():
            volume = Volume(disk=Disk(ImageParser(), "..."))
            volume._get_blkid_type = mock.Mock(return_value=None)
            volume._get_magic_type = mock.Mock(return_value=None)
            volume.info['guid'] = description
            volume.determine_fs_type()
            self.assertEqual(FILE_SYSTEM_TYPES[fstype], volume.fstype)
Пример #16
0
    def test_blkid(self):
        # Add values here that are shown in the wild for blkid
        # !! Always try to add it also to test_combination

        descriptions = {
            "cramfs": "cramfs",
            "ext4": "ext",
            "ext2": "ext",
            "vfat": "fat",
            "iso9660": "iso",
            "minix": "minix",
            "ntfs": "ntfs",
            "squashfs": "squashfs",
            "ufs": "ufs",
            "dos": "volumesystem",
        }

        for description, fstype in descriptions.items():
            volume = Volume(disk=Disk(ImageParser(), "..."))
            volume._get_blkid_type = mock.Mock(return_value=description)
            volume._get_magic_type = mock.Mock(return_value=None)
            volume.determine_fs_type()
            self.assertEqual(fstype, volume.fstype)
Пример #17
0
    def test_blkid(self):
        # Add values here that are shown in the wild for blkid
        # !! Always try to add it also to test_combination

        descriptions = {
            "cramfs": "cramfs",
            "ext4": "ext",
            "ext2": "ext",
            "vfat": "fat",
            "iso9660": "iso",
            "minix": "minix",
            "ntfs": "ntfs",
            "squashfs": "squashfs",
            "ufs": "ufs",

            "dos": "volumesystem",
        }

        for description, fstype in descriptions.items():
            volume = Volume(disk=Disk(ImageParser(), "..."))
            volume._get_blkid_type = mock.Mock(return_value=description)
            volume._get_magic_type = mock.Mock(return_value=None)
            volume.determine_fs_type()
            self.assertEqual(FILE_SYSTEM_TYPES[fstype], volume.fstype)
Пример #18
0
 def test_no_clue_fstype(self):
     volume = Volume(disk=Disk(ImageParser(), "..."))
     volume._get_blkid_type = mock.Mock(return_value=None)
     volume._get_magic_type = mock.Mock(return_value=None)
     volume.determine_fs_type()
     self.assertEqual(UnknownFileSystem, volume.filesystem.__class__)
Пример #19
0
 def test_little_clue_fstype(self):
     volume = Volume(disk=Disk(ImageParser(), "..."))
     volume._get_blkid_type = mock.Mock(return_value="-")
     volume._get_magic_type = mock.Mock(return_value="-")
     volume.determine_fs_type()
     self.assertEqual(UnknownFileSystemType(), volume.fstype)
Пример #20
0
 def test_valid_vstype(self):
     volume = Volume(disk=Disk(ImageParser(), "..."), fstype="dos")
     volume.determine_fs_type()
     self.assertEqual("dos", volume.volumes.vstype)
     self.assertEqual(FILE_SYSTEM_TYPES["volumesystem"], volume.fstype)
Пример #21
0
 def test_valid_fstype(self):
     volume = Volume(disk=Disk(ImageParser(), "..."), fstype='ext')
     volume.determine_fs_type()
     self.assertEqual(FILE_SYSTEM_TYPES['ext'], volume.fstype)
Пример #22
0
 def test_valid_fstype(self):
     volume = Volume(disk=Disk(ImageParser(), "..."), fstype='ext')
     volume.determine_fs_type()
     self.assertEqual(FILE_SYSTEM_TYPES['ext'], volume.fstype)
Пример #23
0
 def test_valid_vstype(self):
     volume = Volume(disk=Disk(ImageParser(), "..."), fstype="dos")
     volume.determine_fs_type()
     self.assertEqual("dos", volume.volumes.vstype)
     self.assertEqual(FILE_SYSTEM_TYPES["volumesystem"], volume.fstype)
Пример #24
0
 def test_little_clue_fstype(self):
     volume = Volume(disk=Disk(ImageParser(), "..."))
     volume._get_blkid_type = mock.Mock(return_value="-")
     volume._get_magic_type = mock.Mock(return_value="-")
     volume.determine_fs_type()
     self.assertEqual(UnknownFileSystemType(), volume.fstype)
Пример #25
0
 def test_no_clue_fstype(self):
     volume = Volume(disk=Disk(ImageParser(), "..."))
     volume._get_blkid_type = mock.Mock(return_value=None)
     volume._get_magic_type = mock.Mock(return_value=None)
     volume.determine_fs_type()
     self.assertEqual("unknown", volume.fstype)
Пример #26
0
 def test_valid_fstype(self):
     volume = Volume(disk=Disk(ImageParser(), "..."))
     volume.fstype = 'ext'
     volume.determine_fs_type()
     self.assertEqual("ext", volume.fstype)
Пример #27
0
 def test_valid_vstype(self):
     volume = Volume(disk=Disk(ImageParser(), "..."))
     volume.fstype = 'dos'
     volume.determine_fs_type()
     self.assertEqual("dos", volume.volumes.vstype)
     self.assertEqual("volumesystem", volume.fstype)