1 2 3 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Tests for the SleuthKit (TSK) volume system."""
from __future__ import unicode_literals
import unittest
from dfvfs.path import os_path_spec
from dfvfs.path import tsk_partition_path_spec
from dfvfs.volume import tsk_volume_system
from tests import test_lib as shared_test_lib
@shared_test_lib.skipUnlessHasTestFile(['tsk_volume_system.raw'])
class TSKVolumeSystemTest(shared_test_lib.BaseTestCase):
"""Tests the SleuthKit (TSK) volume system."""
def setUp(self):
"""Sets up the needed objects used throughout the test."""
test_file = self._GetTestFilePath(['tsk_volume_system.raw'])
path_spec = os_path_spec.OSPathSpec(location=test_file)
self._tsk_path_spec = tsk_partition_path_spec.TSKPartitionPathSpec(
location='/', parent=path_spec)
# mmls test_data/tsk_volume_system.raw
# DOS Partition Table
# Offset Sector: 0
# Units are in 512-byte sectors
#
# Slot Start End Length Description
# 00: Meta 0000000000 0000000000 0000000001 Primary Table (#0)
# 01: ----- 0000000000 0000000000 0000000001 Unallocated
# 02: 00:00 0000000001 0000000350 0000000350 Linux (0x83)
# 03: Meta 0000000351 0000002879 0000002529 DOS Extended (0x05)
# 04: Meta 0000000351 0000000351 0000000001 Extended Table (#1)
# 05: ----- 0000000351 0000000351 0000000001 Unallocated
# 06: 01:00 0000000352 0000002879 0000002528 Linux (0x83)
def testIterateVolumes(self):
"""Test the iterate volumes functionality."""
volume_system = tsk_volume_system.TSKVolumeSystem()
volume_system.Open(self._tsk_path_spec)
self.assertEqual(volume_system.bytes_per_sector, 512)
self.assertEqual(volume_system.number_of_sections, 7)
self.assertEqual(volume_system.number_of_volumes, 2)
volume = volume_system.GetVolumeByIndex(1)
self.assertIsNotNone(volume)
self.assertEqual(volume.number_of_extents, 1)
self.assertEqual(volume.number_of_attributes, 2)
self.assertEqual(volume.identifier, 'p2')
expected_value = 6
volume_attribute = volume.GetAttribute('address')
self.assertIsNotNone(volume_attribute)
self.assertEqual(volume_attribute.value, expected_value)
expected_value = 'Linux (0x83)'
volume_attribute = volume.GetAttribute('description')
self.assertIsNotNone(volume_attribute)
self.assertEqual(volume_attribute.value, expected_value)
volume = volume_system.GetVolumeByIndex(7)
self.assertIsNone(volume)
if __name__ == '__main__':
unittest.main()
|