mirror of
https://github.com/hanzoui/custom-nodes-security-scan.git
synced 2026-10-30 20:56:54 +00:00
69 lines
2.8 KiB
Python
69 lines
2.8 KiB
Python
# Copyright (C) 2014-2016 Cuckoo Foundation.
|
|
# This file is part of Cuckoo Sandbox - http://www.cuckoosandbox.org
|
|
# See the file 'docs/LICENSE' for copying permission.
|
|
|
|
import ConfigParser
|
|
|
|
class Config:
|
|
def __init__(self, cfg):
|
|
"""@param cfg: configuration file."""
|
|
config = ConfigParser.ConfigParser(allow_no_value=True)
|
|
config.read(cfg)
|
|
|
|
for section in config.sections():
|
|
for name, raw_value in config.items(section):
|
|
if name == "file_name":
|
|
value = config.get(section, name)
|
|
else:
|
|
try:
|
|
value = config.getboolean(section, name)
|
|
except ValueError:
|
|
try:
|
|
value = config.getint(section, name)
|
|
except ValueError:
|
|
value = config.get(section, name)
|
|
setattr(self, name, value)
|
|
|
|
def get_options(self):
|
|
"""Get analysis options.
|
|
@return: options dict.
|
|
"""
|
|
# The analysis package can be provided with some options in the
|
|
# following format:
|
|
# option1=value1,option2=value2,option3=value3
|
|
#
|
|
# Here we parse such options and provide a dictionary that will be made
|
|
# accessible to the analysis package.
|
|
options = {}
|
|
if hasattr(self, "options") and len(self.options) > 0:
|
|
try:
|
|
# Split the options by comma.
|
|
fields = self.options.split(",")
|
|
except ValueError:
|
|
pass
|
|
else:
|
|
for field in fields:
|
|
# Split the name and the value of the option.
|
|
try:
|
|
# Sometimes, we have a key without a value (i.e. it's a
|
|
# command line argument), so we can't use the
|
|
# `key, value = field.split("=", 1)` style here
|
|
parts = field.split("=", 1)
|
|
except ValueError:
|
|
pass
|
|
else:
|
|
key = parts[0].strip()
|
|
arg_prefix = "arg-"
|
|
if not key.startswith(arg_prefix):
|
|
# If the parsing went good, we add the option to the
|
|
# dictionary.
|
|
value = parts[1].strip()
|
|
options[key] = value
|
|
elif len(key) > len(arg_prefix):
|
|
# Remove "arg-" prefix from the key
|
|
key = key[4:]; parts[0] = key
|
|
# Add this key (with a value maybe) to the args
|
|
if "args" not in options: options["args"] = []
|
|
options["args"] += parts
|
|
return options
|