Merge pull request #58 from KarimPwnz/random_feature

Introduce _random_ feature as per #50
This commit is contained in:
Michael Skelton
2019-08-17 09:22:10 +10:00
committed by GitHub
2 changed files with 38 additions and 8 deletions

View File

@@ -5,18 +5,23 @@ import os.path
from os import access, W_OK
import sys
from re import compile
from random import sample
from random import sample, choice
from math import ceil
class InputHelper(object):
@staticmethod
def readable_file(parser, arg):
def check_path(parser, arg):
if not os.path.exists(arg):
parser.error("The file %s does not exist!" % arg)
parser.error("The path %s does not exist!" % arg)
else:
return open(arg, 'r') # return an open file handle
return arg
@staticmethod
def readable_file(parser, arg):
if InputHelper.check_path(parser, arg):
return open(arg, 'r') # return an open file handle
@staticmethod
def check_positive(parser, arg):
ivalue = int(arg)
@@ -25,6 +30,17 @@ class InputHelper(object):
return arg
@staticmethod
def _get_files_from_directory(arg):
files = list()
for file in os.listdir(arg):
location = os.path.join(arg, file)
if os.path.isfile(location):
files.append(location)
return files
@staticmethod
def _get_ips_from_range(ip_range):
ips = set()
@@ -129,7 +145,6 @@ class InputHelper(object):
else:
real_ports = [arguments.realport]
# process targets first
if arguments.target:
ranges.add(arguments.target)
@@ -198,6 +213,10 @@ class InputHelper(object):
if len(targets) == 0:
raise Exception("No target provided, or empty target list")
if arguments.random:
files = InputHelper._get_files_from_directory(arguments.random)
random_file = choice(files)
if arguments.command:
commands.add(arguments.command.rstrip('\n'))
else:
@@ -212,6 +231,9 @@ class InputHelper(object):
if arguments.realport:
final_commands = InputHelper._replace_variable_for_commands(final_commands, "_realport_", real_ports)
if arguments.random:
final_commands = InputHelper._replace_variable_for_commands(final_commands, "_random_", [random_file])
if arguments.output:
final_commands = InputHelper._replace_variable_for_commands(final_commands, "_output_", [arguments.output])
@@ -339,6 +361,12 @@ class InputParser(object):
help='Specify a real port variable that can be used in commands as _realport_'
)
parser.add_argument(
'-random', dest='random',
help='Specify a directory of files that can be randomly used in commands as _random_',
type=lambda x: InputHelper.check_path(parser, x)
)
parser.add_argument(
'--no-cidr', dest='nocidr', action='store_true', default=False,
help='If set then CIDR notation in a target file will not be automatically '

View File

@@ -30,12 +30,13 @@ Dependencies will then be installed and Interlace will be added to your path as
| -o | Specify an output folder variable that can be used in commands as \_output\_ |
| -p | Specify a list of port variable that can be used in commands as \_port\_. This can be a single port, a comma delimited list, or use dash notation |
| -pL | Specify a list of proxies |
| --proto | Specify protocols that can be used in commands as \_proto\_ |
| --proto | Specify protocols that can be used in commands as \_proto\_ |
| -rp | Specify a real port variable that can be used in commands as \_realport\_ |
| --no-bar / --sober | If set then progress bar be stripped out |
| -random | Specify a directory of files that can be randomly used in commands as _random_ |
| --no-bar / --sober | If set then progress bar be stripped out |
| --no-cidr | If set then CIDR notation in a target file will not be automatically be expanded into individual hosts |
| --no-color | If set then any foreground or background colours will be stripped out |
| --silent | If set then only important information will be displayed and banners and other information will be redacted |
| --silent | If set then only important information will be displayed and banners and other information will be redacted |
| -v | If set then verbose output will be displayed in the terminal |
## Further information regarding ports (-p)
@@ -62,6 +63,7 @@ The following variables will be replaced in commands at runtime:
| \_port\_ | Replaced with the expanded port variable from interlace |
| \_realport\_ | Replaced with the real port variable from interlace |
| \_proxy\_ | Replaced with the proxy list from interlace |
| \_random\_ | Replaced with the randomly-chosen file from interlace |
# Usage Examples
## Run Nikto Over Multiple Sites