Add arg parsing to dropper

This commit is contained in:
Itay Mizeretz 2017-08-27 19:18:11 +03:00
parent 54f054a4e7
commit 6f74a5e6cc
1 changed files with 26 additions and 4 deletions

View File

@ -6,6 +6,7 @@ import shutil
import pprint import pprint
import logging import logging
import subprocess import subprocess
import argparse
from ctypes import c_char_p from ctypes import c_char_p
from model import MONKEY_CMDLINE from model import MONKEY_CMDLINE
from config import WormConfiguration from config import WormConfiguration
@ -24,14 +25,27 @@ MOVEFILE_DELAY_UNTIL_REBOOT = 4
class MonkeyDrops(object): class MonkeyDrops(object):
def __init__(self, args): def __init__(self, args):
self._monkey_args = args[1:] arg_parser = argparse.ArgumentParser()
arg_parser.add_argument('-p', '--parent')
arg_parser.add_argument('-t', '--tunnel')
arg_parser.add_argument('-s', '--server')
arg_parser.add_argument('-d', '--depth')
arg_parser.add_argument('-l', '--location')
self.monkey_args = args[1:]
self.opts, _ = arg_parser.parse_known_args(args)
self._config = {'source_path': os.path.abspath(sys.argv[0]), self._config = {'source_path': os.path.abspath(sys.argv[0]),
'destination_path': args[0]} 'destination_path': self.opts.location}
def initialize(self): def initialize(self):
LOG.debug("Dropper is running with config:\n%s", pprint.pformat(self._config)) LOG.debug("Dropper is running with config:\n%s", pprint.pformat(self._config))
def start(self): def start(self):
if self._config['destination_path'] is None:
# TODO: log or something.
return
# we copy/move only in case path is different # we copy/move only in case path is different
file_moved = (self._config['source_path'].lower() == self._config['destination_path'].lower()) file_moved = (self._config['source_path'].lower() == self._config['destination_path'].lower())
@ -81,8 +95,16 @@ class MonkeyDrops(object):
monkey_cmdline = MONKEY_CMDLINE % {'monkey_path': self._config['destination_path'], monkey_cmdline = MONKEY_CMDLINE % {'monkey_path': self._config['destination_path'],
} }
if 0 != len(self._monkey_args):
monkey_cmdline = "%s %s" % (monkey_cmdline, " ".join(self._monkey_args)) if self.opts.parent:
monkey_cmdline += "-p %s" % self.opts.parent
if self.opts.tunnel:
monkey_cmdline += "-t %s" % self.opts.tunnel
if self.opts.server:
monkey_cmdline += "-s %s" % self.opts.server
if self.opts.depth:
monkey_cmdline += "-d %s" % self.opts.depth
monkey_process = subprocess.Popen(monkey_cmdline, shell=True, monkey_process = subprocess.Popen(monkey_cmdline, shell=True,
stdin=None, stdout=None, stderr=None, stdin=None, stdout=None, stderr=None,
close_fds=True, creationflags=DETACHED_PROCESS) close_fds=True, creationflags=DETACHED_PROCESS)