forked from p15670423/monkey
Add arg parsing to dropper
This commit is contained in:
parent
54f054a4e7
commit
6f74a5e6cc
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue