File: artifacts.py

package info (click to toggle)
plaso 20201007-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 519,924 kB
  • sloc: python: 79,002; sh: 629; xml: 72; sql: 14; vhdl: 11; makefile: 10
file content (159 lines) | stat: -rw-r--r-- 5,904 bytes parent folder | download
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Tests for the artifacts attribute containers."""

from __future__ import unicode_literals

import unittest

from plaso.containers import artifacts
from plaso.lib import definitions

from tests import test_lib as shared_test_lib


class EnvironmentVariableArtifactTest(shared_test_lib.BaseTestCase):
  """Tests for the environment variable artifact."""

  def testGetAttributeNames(self):
    """Tests the GetAttributeNames function."""
    attribute_container = artifacts.EnvironmentVariableArtifact()

    expected_attribute_names = ['case_sensitive', 'name', 'value']

    attribute_names = sorted(attribute_container.GetAttributeNames())
    self.assertEqual(attribute_names, expected_attribute_names)


class HostnameArtifactTest(shared_test_lib.BaseTestCase):
  """Tests for the hostname artifact."""

  def testGetAttributeNames(self):
    """Tests the GetAttributeNames function."""
    attribute_container = artifacts.HostnameArtifact()

    expected_attribute_names = ['name', 'schema']

    attribute_names = sorted(attribute_container.GetAttributeNames())
    self.assertEqual(attribute_names, expected_attribute_names)


class OperatingSystemArtifactTest(shared_test_lib.BaseTestCase):
  """Tests for the operating system artifact."""

  # pylint: disable=protected-access

  def testVersionTuple(self):
    """Tests the version_tuplele property."""
    attribute_container = artifacts.OperatingSystemArtifact(version="5.1")
    self.assertEqual(attribute_container.version_tuple, (5, 1))

    attribute_container = artifacts.OperatingSystemArtifact()
    self.assertIsNone(attribute_container.version_tuple)

    attribute_container = artifacts.OperatingSystemArtifact(version="5.a")
    self.assertIsNone(attribute_container.version_tuple)

  def testGetNameFromProduct(self):
    """Tests the _GetNameFromProduct function."""
    attribute_container = artifacts.OperatingSystemArtifact(
        product='Windows Server 2012 R2 Standard')

    name = attribute_container._GetNameFromProduct()
    self.assertEqual(name, 'Windows 2012 R2')

    attribute_container = artifacts.OperatingSystemArtifact(
        product='Microsoft Windows Server 2003')

    name = attribute_container._GetNameFromProduct()
    self.assertEqual(name, 'Windows 2003')

  def testIsEquivalent(self):
    """Tests the IsEquivalent function."""
    win2k12_container = artifacts.OperatingSystemArtifact(
        product='Windows 2012')
    winxp_container = artifacts.OperatingSystemArtifact(product='Windows XP')

    self.assertFalse(win2k12_container.IsEquivalent(winxp_container))
    self.assertFalse(winxp_container.IsEquivalent(win2k12_container))

    winnt62_container = artifacts.OperatingSystemArtifact(
        family=definitions.OPERATING_SYSTEM_FAMILY_WINDOWS_NT, version='6.2')
    winnt51_container = artifacts.OperatingSystemArtifact(
        family=definitions.OPERATING_SYSTEM_FAMILY_WINDOWS_NT, version='5.1')

    self.assertFalse(winnt62_container.IsEquivalent(winnt51_container))
    self.assertFalse(winnt51_container.IsEquivalent(winnt62_container))

    win9x_container = artifacts.OperatingSystemArtifact(
        family=definitions.OPERATING_SYSTEM_FAMILY_WINDOWS_9x)
    winnt_container = artifacts.OperatingSystemArtifact(
        family=definitions.OPERATING_SYSTEM_FAMILY_WINDOWS_NT)

    self.assertFalse(win9x_container.IsEquivalent(winnt_container))
    self.assertFalse(winnt_container.IsEquivalent(win9x_container))

    winnt51_container = artifacts.OperatingSystemArtifact(
        family=definitions.OPERATING_SYSTEM_FAMILY_WINDOWS_NT, version='5.1')
    winxp_container = artifacts.OperatingSystemArtifact(product='Windows XP')

    self.assertTrue(winnt51_container.IsEquivalent(winxp_container))
    self.assertTrue(winxp_container.IsEquivalent(winnt51_container))

  def testGetAttributeNames(self):
    """Tests the GetAttributeNames function."""
    attribute_container = artifacts.OperatingSystemArtifact()

    expected_attribute_names = ['family', 'name', 'product', 'version']

    attribute_names = sorted(attribute_container.GetAttributeNames())
    self.assertEqual(attribute_names, expected_attribute_names)


class SourceConfigurationArtifactTest(shared_test_lib.BaseTestCase):
  """Tests for the source configuration artifact."""

  def testGetAttributeNames(self):
    """Tests the GetAttributeNames function."""
    attribute_container = artifacts.SourceConfigurationArtifact()

    expected_attribute_names = [
        'mount_path', 'path_spec', 'system_configuration']

    attribute_names = sorted(attribute_container.GetAttributeNames())
    self.assertEqual(attribute_names, expected_attribute_names)


class SystemConfigurationArtifactTest(shared_test_lib.BaseTestCase):
  """Tests for the system configuration artifact."""

  def testGetAttributeNames(self):
    """Tests the GetAttributeNames function."""
    attribute_container = artifacts.SystemConfigurationArtifact()

    expected_attribute_names = [
        'available_time_zones', 'code_page', 'hostname', 'keyboard_layout',
        'operating_system', 'operating_system_product',
        'operating_system_version', 'time_zone', 'user_accounts']

    attribute_names = sorted(attribute_container.GetAttributeNames())
    self.assertEqual(attribute_names, expected_attribute_names)


class UserAccountArtifactTest(shared_test_lib.BaseTestCase):
  """Tests for the user account artifact."""

  def testGetAttributeNames(self):
    """Tests the GetAttributeNames function."""
    attribute_container = artifacts.UserAccountArtifact()

    expected_attribute_names = [
        'full_name', 'group_identifier', 'identifier', 'user_directory',
        'username']

    attribute_names = sorted(attribute_container.GetAttributeNames())
    self.assertEqual(attribute_names, expected_attribute_names)


if __name__ == '__main__':
  unittest.main()