exploitfarm 0.2.4__tar.gz → 0.2.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/PKG-INFO +1 -1
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/exploitfarm/__init__.py +1 -1
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/exploitfarm/xploit.py +4 -3
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/exploitfarm.egg-info/PKG-INFO +1 -1
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/setup.py +1 -1
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/xfarm +4 -4
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/MANIFEST.in +0 -0
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/README.md +0 -0
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/exploitfarm/cmd/__init__.py +0 -0
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/exploitfarm/cmd/config.py +0 -0
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/exploitfarm/cmd/exploitinit.py +0 -0
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/exploitfarm/cmd/login.py +0 -0
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/exploitfarm/cmd/startxploit.py +0 -0
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/exploitfarm/model.py +0 -0
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/exploitfarm/utils/__init__.py +0 -0
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/exploitfarm/utils/config.py +0 -0
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/exploitfarm/utils/reqs.py +0 -0
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/exploitfarm.egg-info/SOURCES.txt +0 -0
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/exploitfarm.egg-info/dependency_links.txt +0 -0
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/exploitfarm.egg-info/requires.txt +0 -0
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/exploitfarm.egg-info/top_level.txt +0 -0
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/requirements.txt +0 -0
- {exploitfarm-0.2.4 → exploitfarm-0.2.6}/setup.cfg +0 -0
|
@@ -130,13 +130,14 @@ class AttackStorage:
|
|
|
130
130
|
|
|
131
131
|
WARNING_RUNTIME = 5
|
|
132
132
|
|
|
133
|
-
def qprint(*args):
|
|
133
|
+
def qprint(*args, end="\n"):
|
|
134
134
|
try:
|
|
135
135
|
for arg in args:
|
|
136
136
|
if isinstance(arg, str):
|
|
137
137
|
g.print_queue.put(escape(arg), block=False)
|
|
138
138
|
else:
|
|
139
139
|
g.print_queue.put(arg, block=False)
|
|
140
|
+
g.print_queue.put(end, block=False)
|
|
140
141
|
except (KeyboardInterrupt, ValueError):
|
|
141
142
|
traceback.print_exc()
|
|
142
143
|
pass
|
|
@@ -304,7 +305,7 @@ def process_sploit_filter(proc:subprocess.Popen, team: dict, start_time: dt, kil
|
|
|
304
305
|
def read_and_print(stdout:io.BytesIO, buffer:io.BytesIO):
|
|
305
306
|
# Read stdout line by line in a separate thread
|
|
306
307
|
for line in iter(stdout.readline, b''):
|
|
307
|
-
qprint(line.decode('utf-8', errors='replace')) # Print to main stdout in real-time
|
|
308
|
+
qprint(line.decode('utf-8', errors='replace'), end="") # Print to main stdout in real-time
|
|
308
309
|
buffer.write(line)
|
|
309
310
|
buffer.flush()
|
|
310
311
|
buffer.write(stdout.read())
|
|
@@ -480,7 +481,7 @@ def xploit(path: str):
|
|
|
480
481
|
def run_printer_queue():
|
|
481
482
|
try:
|
|
482
483
|
while True:
|
|
483
|
-
print(g.print_queue.get())
|
|
484
|
+
print(g.print_queue.get(), end="")
|
|
484
485
|
except Exception:
|
|
485
486
|
pass
|
|
486
487
|
|
|
@@ -6,7 +6,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
|
|
|
6
6
|
with open('requirements.txt', 'r', encoding='utf-8') as f:
|
|
7
7
|
required = [ele.strip() for ele in f.read().splitlines() if not ele.strip().startswith("#") and ele.strip() != ""]
|
|
8
8
|
|
|
9
|
-
VERSION = "0.2.
|
|
9
|
+
VERSION = "0.2.6"
|
|
10
10
|
|
|
11
11
|
setuptools.setup(
|
|
12
12
|
name="exploitfarm",
|
|
@@ -83,11 +83,11 @@ def reset():
|
|
|
83
83
|
@app.command(help="Start the exploit")
|
|
84
84
|
def start(
|
|
85
85
|
path: str = typer.Argument(".", help="The path of the exploit"),
|
|
86
|
-
pool_size: PositiveInt = typer.Option(50, "-p", help="The number of workers to start"),
|
|
86
|
+
pool_size: PositiveInt = typer.Option(50, "--pool-size", "-p", help="The number of workers to start"),
|
|
87
87
|
submit_pool_timeout: PositiveInt = typer.Option(3, help="The timeout for the submit pool to wait for new attack results and send flags"),
|
|
88
88
|
server_status_refresh_period: PositiveInt = typer.Option(5, help="The period to refresh the server status"),
|
|
89
|
-
test: Optional[str] = typer.Option(None, help="Test the exploit"),
|
|
90
|
-
test_timeout: PositiveInt = typer.Option(30,
|
|
89
|
+
test: Optional[str] = typer.Option(None, "--test", "-t", help="Test the exploit"),
|
|
90
|
+
test_timeout: PositiveInt = typer.Option(30, help="The timeout for the test"),
|
|
91
91
|
):
|
|
92
92
|
path = os.path.abspath(path)
|
|
93
93
|
from exploitfarm.xploit import start_xploit, shutdown, xploit_one
|
|
@@ -274,7 +274,7 @@ def status(
|
|
|
274
274
|
|
|
275
275
|
@app.command(help="Initiate a new exploit configuration")
|
|
276
276
|
def init(
|
|
277
|
-
edit: bool = typer.Option(False, help="Edit the exploit configuration"),
|
|
277
|
+
edit: bool = typer.Option(False, "--edit", "-e", help="Edit the exploit configuration"),
|
|
278
278
|
name: Optional[str] = typer.Option(None, help="The name of the exploit"),
|
|
279
279
|
service: Optional[UUID] = typer.Option(None, help="The service of the exploit"),
|
|
280
280
|
language: Optional[Language] = typer.Option(None, help="The language of the exploit"),
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|