Skip to content

Commit 74e49ab

Browse files
committed
Revert "Merge pull request Pennyw0rth#729 from haytechy/refactor_SMBSpider"
This reverts commit 4137704, reversing changes made to e11898b.
1 parent e779921 commit 74e49ab

4 files changed

Lines changed: 224 additions & 130 deletions

File tree

nxc/modules/spider_plus.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from impacket.smbconnection import SessionError
1010
from impacket.nmb import NetBIOSTimeout
1111

12+
1213
CHUNK_SIZE = 4096
1314

1415

nxc/protocols/smb.py

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1503,39 +1503,46 @@ def wmi(self, wmi_query=None, namespace=None):
15031503
dcom.disconnect()
15041504
return records if records else False
15051505

1506-
def spider(self):
1507-
if self.args.regex:
1508-
try:
1509-
self.args.regex = [re.compile(bytes(rx, "utf8")) for rx in self.args.regex]
1510-
except Exception as e:
1511-
self.logger.fail(f"Regex compilation error: {e}")
1512-
elif self.args.pattern is None:
1513-
self.args.pattern = [""]
1514-
if self.args.exclude_folders is None:
1515-
self.args.exclude_folders = []
1516-
1517-
spidering = SMBSpider(
1518-
self.conn,
1519-
self.logger,
1506+
def spider(
1507+
self,
1508+
share=None,
1509+
folder=".",
1510+
pattern=None,
1511+
regex=None,
1512+
exclude_dirs=None,
1513+
depth=None,
1514+
content=False,
1515+
only_files=True,
1516+
silent=True
1517+
):
1518+
if exclude_dirs is None:
1519+
exclude_dirs = []
1520+
if regex is None:
1521+
regex = []
1522+
if pattern is None:
1523+
pattern = []
1524+
spider = SMBSpider(self.conn, self.logger)
1525+
if not silent:
1526+
self.logger.display("Started spidering")
1527+
start_time = time()
1528+
if not share:
1529+
spider.spider(
15201530
self.args.spider,
15211531
self.args.spider_folder,
15221532
self.args.pattern,
15231533
self.args.regex,
1524-
self.args.exclude_folders,
1534+
self.args.exclude_dirs,
15251535
self.args.depth,
15261536
self.args.content,
15271537
self.args.only_files,
1528-
self.args.only_folders,
1529-
self.args.spider_all
1538+
self.args.silent
15301539
)
1540+
else:
1541+
spider.spider(share, folder, pattern, regex, exclude_dirs, depth, content, only_files, silent)
1542+
if not silent:
1543+
self.logger.display(f"Done spidering (Completed in {time() - start_time})")
15311544

1532-
self.logger.display("Started spidering")
1533-
start_time = time()
1534-
spidering.spider()
1535-
self.logger.display(f"Done spidering (Completed in {round(time() - start_time, 3)} seconds)")
1536-
1537-
def spider_all(self):
1538-
self.spider()
1545+
return spider.results
15391546

15401547
def rid_brute(self, max_rid=None):
15411548
entries = []

nxc/protocols/smb/proto_args.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -62,19 +62,16 @@ def proto_args(parser, parents):
6262
wmi_group.add_argument("--wmi-namespace", metavar="NAMESPACE", default="root\\cimv2", help="WMI Namespace")
6363

6464
spidering_group = smb_parser.add_argument_group("Spidering", "Options for spidering shares")
65-
spidering_group_type = spidering_group.add_mutually_exclusive_group()
66-
spidering_group_type.add_argument("--spider", nargs="+", metavar="SHARE", type=str, help="Share to spider")
67-
spidering_group_type.add_argument("--spider-all", action="store_true", help="Spider all the readable shares")
68-
spidering_group.add_argument("--spider-folder", metavar="FOLDER", default="/", type=str, help="Folder to spider")
69-
spidering_group.add_argument("--content", action="store_true", help="Enable file content searching")
70-
spidering_group.add_argument("--exclude-folders", nargs="+", type=str, metavar="DIR_LIST", help="Directories to exclude from spidering")
71-
spidering_group.add_argument("--depth", type=int, help="Max spider recursion depth")
72-
spidering_group_search = spidering_group.add_mutually_exclusive_group()
73-
spidering_group_search.add_argument("--pattern", nargs="+", help="Pattern(s) to search for in folders, filenames and file content")
74-
spidering_group_search.add_argument("--regex", nargs="+", help="Regex(s) to search for in folders, filenames and file content")
75-
spidering_group_filter = spidering_group.add_mutually_exclusive_group()
76-
spidering_group_filter.add_argument("--only-files", action="store_true", help="Only spider files")
77-
spidering_group_filter.add_argument("--only-folders", action="store_true", help="Only spider folders")
65+
spidering_group.add_argument("--spider", metavar="SHARE", type=str, help="share to spider")
66+
spidering_group.add_argument("--spider-folder", metavar="FOLDER", default=".", type=str, help="folder to spider")
67+
spidering_group.add_argument("--content", action="store_true", help="enable file content searching")
68+
spidering_group.add_argument("--exclude-dirs", type=str, metavar="DIR_LIST", default="", help="directories to exclude from spidering")
69+
spidering_group.add_argument("--depth", type=int, help="max spider recursion depth")
70+
spidering_group.add_argument("--only-files", action="store_true", help="only spider files")
71+
spidering_group.add_argument("--silent", action="store_true", help="Do not print found files/directories", default=False)
72+
segroup = spidering_group.add_mutually_exclusive_group()
73+
segroup.add_argument("--pattern", nargs="+", help="pattern(s) to search for in folders, filenames and file content")
74+
segroup.add_argument("--regex", nargs="+", help="regex(s) to search for in folders, filenames and file content")
7875

7976
files_group = smb_parser.add_argument_group("Files", "Options for remote file interaction")
8077
files_group.add_argument("--put-file", action="append", nargs=2, metavar="FILE", help="Put a local file into remote target, ex: whoami.txt \\\\Windows\\\\Temp\\\\whoami.txt")

0 commit comments

Comments
 (0)