def testDpkgCmdParser(self): """Ensure we can extract packages from dpkg output.""" parser = linux_cmd_parser.DpkgCmdParser() content = open(os.path.join(self.base_path, "dpkg.out")).read() out = list( parser.Parse("/usr/bin/dpkg", ["--list"], content, "", 0, 5, None)) self.assertEqual(len(out), 181) self.assertTrue(isinstance(out[1], rdfvalue.SoftwarePackage)) self.assertTrue(out[0].name, "acpi-support-base")
def testDpkgCmdParserPrecise(self): """Ensure we can extract packages from dpkg output on ubuntu precise.""" parser = linux_cmd_parser.DpkgCmdParser() content = open( os.path.join(self.base_path, "checks/data/dpkg.precise.out"), "rb").read() out = list( parser.Parse("/usr/bin/dpkg", ["--list"], content, "", 0, 5, None)) self.assertEqual(len(out), 30) self.assertTrue(isinstance(out[1], rdf_client.SoftwarePackage)) self.assertTrue(out[0].name, "adduser")
def GetDPKGData(): if DPKG_SW: return DPKG_SW # Load some dpkg data parser = linux_cmd_parser.DpkgCmdParser() test_data = os.path.join(CHECKS_DIR, "data/dpkg.out") with open(test_data, "rb") as f: DPKG_SW.extend( parser.Parse("/usr/bin/dpkg", ["-l"], f.read(), "", 0, 5, None)) return DPKG_SW
from grr.lib import test_lib from grr.lib.checks import checks from grr.lib.checks import checks_test_lib from grr.lib.checks import filters from grr.lib.rdfvalues import anomaly as anomaly_rdf from grr.parsers import config_file as config_file_parsers from grr.parsers import linux_cmd_parser from grr.parsers import wmi_parser CHECKS_DIR = os.path.join(config_lib.CONFIG["Test.data_dir"], "checks") TRIGGER_1 = ("DebianPackagesStatus", "Linux", None, None) TRIGGER_2 = ("WMIInstalledSoftware", "Windows", None, None) TRIGGER_3 = ("DebianPackagesStatus", None, None, "foo") # Load some dpkg data parser = linux_cmd_parser.DpkgCmdParser() test_data = os.path.join(config_lib.CONFIG["Test.data_dir"], "dpkg.out") with open(test_data) as f: DPKG_SW = list( parser.Parse("/usr/bin/dpkg", ["-l"], f.read(), "", 0, 5, None)) # Load some wmi data parser = wmi_parser.WMIInstalledSoftwareParser() test_data = os.path.join(config_lib.CONFIG["Test.data_dir"], "wmi_sw.yaml") WMI_SW = [] with open(test_data) as f: wmi = yaml.safe_load(f) for sw in wmi: WMI_SW.extend(parser.Parse(None, sw, None)) # Load an sshd config