Skip to content

Commit e208998

Browse files
committed
update_management
1 parent 69cd31c commit e208998

File tree

5 files changed

+84
-83
lines changed

5 files changed

+84
-83
lines changed

src/__main__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/usr/bin/env python
2-
# (c) 2021 Michał Górny
2+
# (c) 2021 Michał Górny - pxcs
33
# 2-clause BSD license
44

55
"""BlackMarlinExec support."""
@@ -22,7 +22,7 @@
2222
from pkgcore.restrictions.restriction import base as base_restriction
2323

2424
from kuroneko.cache import cached_get
25-
from kuroneko.database import Database, Bug
25+
from src.bme import blackmarlinexec, Bug
2626

2727

2828
try:

src/blackmarlinexec.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,12 @@ def gen_cli_args():
7171
CODENAME = "p3xsouger"
7272

7373
parser = argparse.ArgumentParser(description=f"""
74-
.______ __ ___ ______ __ ___ .___ ___. ___ .______ __ __ .__ __. __________ ___ _______ ______
75-
| _ \ | | / \ / || |/ / | \/ | / \ | _ \ | | | | | \ | | | ____\ \ / / | ____| / |
76-
| |_) | | | / ^ \ | ,----'| ' / | \ / | / ^ \ | |_) | | | | | | \| | | |__ \ V / | |__ | ,----'
77-
| _ < | | / /_\ \ | | | < | |\/| | / /_\ \ | / | | | | | . ` | | __| > < | __| | |
78-
| |_) | | `----./ _____ \ | `----.| . \ | | | | / _____ \ | |\ \----.| `----.| | | |\ | | |____ / . \ | |____ | `----.
79-
|______/ |_______/__/ \__\ \______||__|\__\ |__| |__| /__/ \__\ | _| `._____||_______||__| |__| \__| |_______/__/ \__\ |_______| \______|
74+
.______ __ ___ ______ __ ___ .___ ___. ___ .______ __ __ .__ __. __________ ___ _______ ______
75+
| _ \ | | / \ / | | |/ / | \/ | / \ | _ \ | | | | | \ | | | ____\ \ / / | ____| / |
76+
| |_) | | | / ^ \ | ,----' | ' / | \ / | / ^ \ | |_) | | | | | | \| | | |__ \ V / | |__ | ,----'
77+
| _ < | | / /_\ \ | | | < | |\/| | / /_\ \ | / | | | | | . ` | | __| > < | __| | |
78+
| |_) | | `----./ _____ \ | `----. | . \ | | | | / _____ \ | |\ \----. | `----.| | | |\ | | |____ / . \ | |____ | `----.
79+
|______/ |_______/__/ \__\ \______| |__|\__\ |__| |__| /__/ \__\ | _| `._____| |_______||__| |__| \__| |_______/__/ \__\ |_______| \______|
8080
8181
Seven Degrees of Domain Admin, used for ( Pentesting the corporate )
8282
Forged by @pxcs and @GangstaCrew using python and C for ( lib )

src/bme.py

Lines changed: 74 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,24 @@
88
from time import sleep
99
from ipaddress import ip_address
1010

11-
from bme.helpers.logger import highlight
12-
from bme.helpers.misc import identify_target_file
13-
from bme.parsers.ip import parse_targets
14-
from bme.parsers.nmap import parse_nmap_xml
15-
from bme.parsers.nessus import parse_nessus_file
16-
from bme.BlackMarlinExec import BlackMarlinExec
17-
from bme.loaders.protocolloader import ProtocolLoader
18-
from bme.loaders.moduleloader import ModuleLoader
19-
from bme.servers.http import BMEServer
20-
from bme.BlackMarlinExec_run import BlackMarlinExec_run_setup
21-
from bme.context import Context
22-
from bme.paths import BME_PATH, DATA_PATH
23-
from bme.console import bme_console
24-
from bme.logger import bme_logger
25-
from bme.config import bme_config, bme_workspace, config_log, ignore_opsec
11+
from src.bme.helpers.logger import highlight
12+
from src.bme.helpers.misc import identify_target_file
13+
from src.bme.parsers.ip import parse_targets
14+
from src.bme.parsers.nmap import parse_nmap_xml
15+
from src.bme.parsers.nessus import parse_nessus_file
16+
from src.bme.BlackMarlinExec import BlackMarlinExec
17+
from src.bme.loaders.protocolloader import ProtocolLoader
18+
from src.bme.loaders.moduleloader import ModuleLoader
19+
from src.bme.servers.http import src.bmeServer
20+
from src.bme.BlackMarlinExec_run import BlackMarlinExec_run_setup
21+
from src.bme.context import Context
22+
from src.bme.paths import src.bme_PATH, DATA_PATH
23+
from src.bme.console import src.bme_console
24+
from src.bme.logger import src.bme_logger
25+
from src.bme.config import src.bme_config, src.bme_workspace, config_log, ignore_opsec
2626
from concurrent.futures import ThreadPoolExecutor, as_completed
2727
import asyncio
28-
import bme.helpers.powershell as powershell
28+
import src.bme.helpers.powershell as powershell
2929
import shutil
3030
import webbrowser
3131
import random
@@ -39,18 +39,18 @@
3939
from sys import platform
4040

4141
import configparser
42-
from bme.paths import BME_PATH, DATA_PATH
43-
from bme.first_run import first_run_setup
44-
from bme.logger import bme_logger
42+
from src.bme.paths import src.bme_PATH, DATA_PATH
43+
from src.bme.first_run import first_run_setup
44+
from src.bme.logger import src.bme_logger
4545
from ast import literal_eval
4646

4747
import argparse
4848
import sys
4949
from argparse import RawTextHelpFormatter
50-
from bme.loaders.protocolloader import ProtocolLoader
51-
from bme.helpers.logger import highlight
50+
from src.bme.loaders.protocolloader import ProtocolLoader
51+
from src.bme.helpers.logger import highlight
5252
from termcolor import colored
53-
from bme.logger import bme_logger
53+
from src.bme.logger import bme_logger
5454
import importlib.metadata
5555

5656
import __init__
@@ -71,12 +71,12 @@ def gen_cli_args():
7171
CODENAME = "p3xsouger"
7272

7373
parser = argparse.ArgumentParser(description=f"""
74-
.______ __ ___ ______ __ ___ .___ ___. ___ .______ __ __ .__ __. __________ ___ _______ ______
75-
| _ \ | | / \ / || |/ / | \/ | / \ | _ \ | | | | | \ | | | ____\ \ / / | ____| / |
76-
| |_) | | | / ^ \ | ,----'| ' / | \ / | / ^ \ | |_) | | | | | | \| | | |__ \ V / | |__ | ,----'
77-
| _ < | | / /_\ \ | | | < | |\/| | / /_\ \ | / | | | | | . ` | | __| > < | __| | |
78-
| |_) | | `----./ _____ \ | `----.| . \ | | | | / _____ \ | |\ \----.| `----.| | | |\ | | |____ / . \ | |____ | `----.
79-
|______/ |_______/__/ \__\ \______||__|\__\ |__| |__| /__/ \__\ | _| `._____||_______||__| |__| \__| |_______/__/ \__\ |_______| \______|
74+
.______ __ ___ ______ __ ___ .___ ___. ___ .______ __ __ .__ __. __________ ___ _______ ______
75+
| _ \ | | / \ / | | |/ / | \/ | / \ | _ \ | | | | | \ | | | ____\ \ / / | ____| / |
76+
| |_) | | | / ^ \ | ,----' | ' / | \ / | / ^ \ | |_) | | | | | | \| | | |__ \ V / | |__ | ,----'
77+
| _ < | | / /_\ \ | | | < | |\/| | / /_\ \ | / | | | | | . ` | | __| > < | __| | |
78+
| |_) | | `----./ _____ \ | `----. | . \ | | | | / _____ \ | |\ \----. | `----.| | | |\ | | |____ / . \ | |____ | `----.
79+
|______/ |_______/__/ \__\ \______| |__|\__\ |__| |__| /__/ \__\ | _| `._____| |_______||__| |__| \__| |_______/__/ \__\ |_______| \______|
8080
8181
Seven Degrees of Domain Admin, used for ( Pentesting the corporate )
8282
Forged by @pxcs and @GangstaCrew using python and C for ( lib )
@@ -113,7 +113,7 @@ def gen_cli_args():
113113
)
114114
parser.add_argument("--verbose", action="store_true", help="enable verbose output")
115115
parser.add_argument("--debug", action="store_true", help="enable debug level information")
116-
parser.add_argument("--version", action="store_true", help="Display bme version")
116+
parser.add_argument("--version", action="store_true", help="Display src.bme version")
117117

118118
module_parser = argparse.ArgumentParser(add_help=False)
119119
mgroup = module_parser.add_mutually_exclusive_group()
@@ -242,7 +242,7 @@ def gen_cli_args():
242242
protocol_object = p_loader.load_protocol(protocols[protocol]["argspath"])
243243
subparsers = protocol_object.proto_args(subparsers, std_parser, module_parser)
244244
except:
245-
bme_logger.exception(f"Error loading proto_args from proto_args.py file in protocol folder: {protocol}")
245+
src.bme_logger.exception(f"Error loading proto_args from proto_args.py file in protocol folder: {protocol}")
246246

247247
if len(sys.argv) == 1:
248248
parser.print_help()
@@ -276,50 +276,50 @@ def create_db_engine(db_path):
276276

277277

278278
async def start_run(protocol_obj, args, db, targets):
279-
bme_logger.debug(f"Creating ThreadPoolExecutor")
279+
src.bme_logger.debug(f"Creating ThreadPoolExecutor")
280280
if args.no_progress or len(targets) == 1:
281281
with ThreadPoolExecutor(max_workers=args.threads + 1) as executor:
282-
bme_logger.debug(f"Creating thread for {protocol_obj}")
282+
src.bme_logger.debug(f"Creating thread for {protocol_obj}")
283283
_ = [executor.submit(protocol_obj, args, db, target) for target in targets]
284284
else:
285-
with Progress(console=bme_console) as progress:
285+
with Progress(console=src.bme_console) as progress:
286286
with ThreadPoolExecutor(max_workers=args.threads + 1) as executor:
287287
current = 0
288288
total = len(targets)
289289
tasks = progress.add_task(
290-
f"[green]Running bme against {total} {'target' if total == 1 else 'targets'}",
290+
f"[green]Running src.bme against {total} {'target' if total == 1 else 'targets'}",
291291
total=total,
292292
)
293-
bme_logger.debug(f"Creating thread for {protocol_obj}")
293+
src.bme_logger.debug(f"Creating thread for {protocol_obj}")
294294
futures = [executor.submit(protocol_obj, args, db, target) for target in targets]
295295
for _ in as_completed(futures):
296296
current += 1
297297
progress.update(tasks, completed=current)
298298

299299

300300
def main():
301-
first_run_setup(bme_logger)
301+
first_run_setup(src.bme_logger)
302302
root_logger = logging.getLogger("root")
303303
args = gen_cli_args()
304304

305305
if args.verbose:
306-
bme_logger.logger.setLevel(logging.INFO)
306+
src.bme_logger.logger.setLevel(logging.INFO)
307307
root_logger.setLevel(logging.INFO)
308308
elif args.debug:
309-
bme_logger.logger.setLevel(logging.DEBUG)
309+
src.bme_logger.logger.setLevel(logging.DEBUG)
310310
root_logger.setLevel(logging.DEBUG)
311311
else:
312-
bme_logger.logger.setLevel(logging.ERROR)
312+
src.bme_logger.logger.setLevel(logging.ERROR)
313313
root_logger.setLevel(logging.ERROR)
314314

315315
# if these are the same, it might double log to file (two FileHandlers will be added)
316316
# but this should never happen by accident
317317
if config_log:
318-
bme_logger.add_file_log()
318+
src.bme_logger.add_file_log()
319319
if hasattr(args, "log") and args.log:
320-
bme_logger.add_file_log(args.log)
320+
src.bme_logger.add_file_log(args.log)
321321

322-
bme_logger.debug(f"Passed args: {args}")
322+
src.bme_logger.debug(f"Passed args: {args}")
323323

324324
# FROM HERE ON A PROTOCOL IS REQUIRED
325325
if not args.protocol:
@@ -328,11 +328,11 @@ def main():
328328
if args.protocol == "ssh":
329329
if args.key_file:
330330
if not args.password:
331-
bme_logger.fail(f"Password is required, even if a key file is used - if no passphrase for key, use `-p ''`")
331+
src.bme_logger.fail(f"Password is required, even if a key file is used - if no passphrase for key, use `-p ''`")
332332
exit(1)
333333

334334
if args.use_kcache and not os.environ.get("KRB5CCNAME"):
335-
bme_logger.error("KRB5CCNAME environment variable is not set")
335+
src.bme_logger.error("KRB5CCNAME environment variable is not set")
336336
exit(1)
337337

338338
module_server = None
@@ -348,7 +348,7 @@ def main():
348348
args.cred_id.append(n)
349349
args.cred_id.remove(cred_id)
350350
except Exception as e:
351-
bme_logger.error(f"Error parsing database credential id: {e}")
351+
src.bme_logger.error(f"Error parsing database credential id: {e}")
352352
exit(1)
353353

354354
if hasattr(args, "target") and args.target:
@@ -368,66 +368,66 @@ def main():
368368

369369
# The following is a quick hack for the powershell obfuscation functionality, I know this is yucky
370370
if hasattr(args, "clear_obfscripts") and args.clear_obfscripts:
371-
shutil.rmtree(os.path.expanduser("~/.bme/obfuscated_scripts/"))
372-
os.mkdir(os.path.expanduser("~/.bme/obfuscated_scripts/"))
373-
bme_logger.success("Cleared cached obfuscated PowerShell scripts")
371+
shutil.rmtree(os.path.expanduser("~/.src.bme/obfuscated_scripts/"))
372+
os.mkdir(os.path.expanduser("~/.src.bme/obfuscated_scripts/"))
373+
src.bme_logger.success("Cleared cached obfuscated PowerShell scripts")
374374

375375
if hasattr(args, "obfs") and args.obfs:
376376
powershell.obfuscate_ps_scripts = True
377377

378-
bme_logger.debug(f"Protocol: {args.protocol}")
378+
src.bme_logger.debug(f"Protocol: {args.protocol}")
379379
p_loader = ProtocolLoader()
380380
protocol_path = p_loader.get_protocols()[args.protocol]["path"]
381-
bme_logger.debug(f"Protocol Path: {protocol_path}")
381+
src.bme_logger.debug(f"Protocol Path: {protocol_path}")
382382
protocol_db_path = p_loader.get_protocols()[args.protocol]["dbpath"]
383-
bme_logger.debug(f"Protocol DB Path: {protocol_db_path}")
383+
src.bme_logger.debug(f"Protocol DB Path: {protocol_db_path}")
384384

385385
protocol_object = getattr(p_loader.load_protocol(protocol_path), args.protocol)
386-
bme_logger.debug(f"Protocol Object: {protocol_object}")
386+
src.bme_logger.debug(f"Protocol Object: {protocol_object}")
387387
protocol_db_object = getattr(p_loader.load_protocol(protocol_db_path), "database")
388-
bme_logger.debug(f"Protocol DB Object: {protocol_db_object}")
388+
src.bme_logger.debug(f"Protocol DB Object: {protocol_db_object}")
389389

390-
db_path = path_join(bme_PATH, "workspaces", bme_workspace, f"{args.protocol}.db")
391-
bme_logger.debug(f"DB Path: {db_path}")
390+
db_path = path_join(src.bme_PATH, "workspaces", src.bme_workspace, f"{args.protocol}.db")
391+
src.bme_logger.debug(f"DB Path: {db_path}")
392392

393393
db_engine = create_db_engine(db_path)
394394

395395
db = protocol_db_object(db_engine)
396396

397-
# with the new bme/config.py this can be eventually removed, as it can be imported anywhere
398-
setattr(protocol_object, "config", bme_config)
397+
# with the new src.bme/config.py this can be eventually removed, as it can be imported anywhere
398+
setattr(protocol_object, "config", src.bme_config)
399399

400400
if args.module or args.list_modules:
401-
loader = ModuleLoader(args, db, bme_logger)
401+
loader = ModuleLoader(args, db, src.bme_logger)
402402
modules = loader.list_modules()
403403

404404
if args.list_modules:
405405
for name, props in sorted(modules.items()):
406406
if args.protocol in props["supported_protocols"]:
407-
bme_logger.display(f"{name:<25} {props['description']}")
407+
src.bme_logger.display(f"{name:<25} {props['description']}")
408408
exit(0)
409409
elif args.module and args.show_module_options:
410410
for module in args.module:
411-
bme_logger.display(f"{module} module options:\n{modules[module]['options']}")
411+
src.bme_logger.display(f"{module} module options:\n{modules[module]['options']}")
412412
exit(0)
413413
elif args.module:
414-
bme_logger.debug(f"Modules to be Loaded: {args.module}, {type(args.module)}")
414+
src.bme_logger.debug(f"Modules to be Loaded: {args.module}, {type(args.module)}")
415415
for m in map(str.lower, args.module):
416416
if m not in modules:
417-
bme_logger.error(f"Module not found: {m}")
417+
src.bme_logger.error(f"Module not found: {m}")
418418
exit(1)
419419

420-
bme_logger.debug(f"Loading module {m} at path {modules[m]['path']}")
420+
src.bme_logger.debug(f"Loading module {m} at path {modules[m]['path']}")
421421
module = loader.init_module(modules[m]["path"])
422422

423423
if not module.opsec_safe:
424424
if ignore_opsec:
425-
bme_logger.debug(f"ignore_opsec is set in the configuration, skipping prompt")
426-
bme_logger.display(f"Ignore OPSEC in configuration is set and OPSEC unsafe module loaded")
425+
src.bme_logger.debug(f"ignore_opsec is set in the configuration, skipping prompt")
426+
src.bme_logger.display(f"Ignore OPSEC in configuration is set and OPSEC unsafe module loaded")
427427
else:
428428
ans = input(
429429
highlight(
430-
"[!] Module is not opsec safe, are you sure you want to run this? [Y/n] For global configuration, change ignore_opsec value to True on ~/bme/bme.conf",
430+
"[!] Module is not opsec safe, are you sure you want to run this? [Y/n] For global configuration, change ignore_opsec value to True on ~/src.bme/src.bme.conf",
431431
"red",
432432
)
433433
)
@@ -453,27 +453,27 @@ def main():
453453

454454
# loading a module server multiple times will obviously fail
455455
try:
456-
context = Context(db, bme_logger, args)
457-
module_server = bmeServer(
456+
context = Context(db, src.bme_logger, args)
457+
module_server = src.bmeServer(
458458
module,
459459
context,
460-
bme_logger,
460+
src.bme_logger,
461461
args.server_host,
462462
args.server_port,
463463
args.server,
464464
)
465465
module_server.start()
466466
protocol_object.server = module_server.server
467467
except Exception as e:
468-
bme_logger.error(f"Error loading module server for {module}: {e}")
468+
src.bme_logger.error(f"Error loading module server for {module}: {e}")
469469

470-
bme_logger.debug(f"proto_object: {protocol_object}, type: {type(protocol_object)}")
471-
bme_logger.debug(f"proto object dir: {dir(protocol_object)}")
470+
src.bme_logger.debug(f"proto_object: {protocol_object}, type: {type(protocol_object)}")
471+
src.bme_logger.debug(f"proto object dir: {dir(protocol_object)}")
472472
# get currently set modules, otherwise default to empty list
473473
current_modules = getattr(protocol_object, "module", [])
474474
current_modules.append(module)
475475
setattr(protocol_object, "module", current_modules)
476-
bme_logger.debug(f"proto object module after adding: {protocol_object.module}")
476+
src.bme_logger.debug(f"proto object module after adding: {protocol_object.module}")
477477

478478
if hasattr(args, "ntds") and args.ntds and not args.userntds:
479479
ans = input(
@@ -488,7 +488,7 @@ def main():
488488
try:
489489
asyncio.run(start_run(protocol_object, args, db, targets))
490490
except KeyboardInterrupt:
491-
bme_logger.debug("Got keyboard interrupt")
491+
src.bme_logger.debug("Got keyboard interrupt")
492492
finally:
493493
if module_server:
494494
module_server.shutdown()

src/fav.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from shodan.cli.helpers import get_api_key
1616
from fake_useragent import UserAgent
1717
from fake_useragent.errors import FakeUserAgentError
18+
from src.bme import BlackMarlinExec
1819

1920
class FavUp(object):
2021
def __init__(self, *args, **kwargs):

src/xlsx/net/core/forms.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from blackmarlinexec import forms
1+
from src.bme.blackmarlinexec import forms
22
from .models import Machine
33

44
class GoToForm(forms.Form):

0 commit comments

Comments
 (0)