From 61b11fe4e5104e102a8f7c7d2c7ffcc049bbb96f Mon Sep 17 00:00:00 2001 From: Alessandro ZANNI Date: Thu, 20 Oct 2016 22:51:03 +0200 Subject: [PATCH] change smbspider verbosity --- pupy/modules/smbspider.py | 49 +++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/pupy/modules/smbspider.py b/pupy/modules/smbspider.py index 6e18f79c..a6306795 100644 --- a/pupy/modules/smbspider.py +++ b/pupy/modules/smbspider.py @@ -2,22 +2,21 @@ # Code modified from the awesome tool CrackMapExec: /cme/spider/smbspider.py # Thank you to byt3bl33d3r for its work from pupylib.PupyModule import * -#from netaddr import * from netaddr import * __class_name__="SMBSpider" @config(cat="admin") class SMBSpider(PupyModule): """ walk through a smb directory and recursively search a string into files """ - daemon=True + max_clients=1 def init_argparse(self): example = 'Examples:\n' - example += '>> run smbspider --pattern password --content 192.168.0.1\n' - example += '>> run smbspider -u john -p password1 -d TEST --regex password.* pwd.* --content -e txt,ini 192.168.0.1\n' - example += '>> run smbspider -u john --regex password.* -H \'aad3b435b51404eeaad3b435b51404ee:da76f2c4c96028b7a6111aef4a50a94d\' 172.16.0.20\n' + example += '>> run smbspider 192.168.0.1 --pattern password --content\n' + example += '>> run smbspider 192.168.0.1 -u john -p password1 -d TEST --regex password.* pwd.* --content -e txt,ini\n' + example += '>> run smbspider 172.16.0.20/24 -u john --regex password.* -H \'aad3b435b51404eeaad3b435b51404ee:da76f2c4c96028b7a6111aef4a50a94d\'\n' self.arg_parser = PupyArgumentParser(prog="smbspider", description=self.__doc__, epilog=example) self.arg_parser.add_argument("-u", metavar="USERNAME", dest='user', default='', help="Username, if omitted null session assumed") @@ -37,6 +36,7 @@ class SMBSpider(PupyModule): sgroup.add_argument('-e','--extensions',metavar='ext1,ext2,...', help='limit to some extensions') sgroup.add_argument("--depth", type=int, default=10, help='Spider recursion depth (default: 10)') sgroup.add_argument('-m','--max-size', type=int, default=7000000, help='max file size in byte (default 7 Mo)') + sgroup.add_argument('-v','--verbose', action='store_true', default=False, help='verbose mode') def run(self, args): exts=[] @@ -49,31 +49,30 @@ class SMBSpider(PupyModule): hosts = list() hosts.append(args.target[0]) - self.info("Loading dependencies") self.client.load_package("impacket") + self.client.load_package("calendar") self.client.load_package("pupyutils.smbspider") - + for host in hosts: - self.info("Connecting to the remote host: %s:%s" % (host, str(args.port))) + if args.verbose: + self.info("Connection on the remote host: %s:%s" % (host, str(args.port))) + smbspider = self.client.conn.modules["pupyutils.smbspider"].SMBSpider(host, args.domain, args.port, args.user, args.passwd, args.hash, args.content, args.regex, args.share, args.exclude_dirs, exts, args.pattern, args.max_size) logged = smbspider.login() - if not logged: - self.error("Connection failed !") - return - - # spider all shares - if args.share == 'all': - for share in smbspider.list_share(): - # self.info("Spidering remote share smb://%s/%s" % (host, share)) - smbspider.set_share(share) + if logged: + # spider all shares + if args.share == 'all': + for share in smbspider.list_share(): + smbspider.set_share(share) + for res in smbspider.spider(args.spider, int(args.depth)): + self.success("%s > %s" % (host, res)) + # spider only one share + else: for res in smbspider.spider(args.spider, int(args.depth)): self.success("%s" % res) - - # spider only one share + smbspider.logoff() + if args.verbose: + self.info("Search finished !") else: - for res in smbspider.spider(args.spider, int(args.depth)): - self.success("%s" % res) - - self.info("search finished !") - smbspider.logoff() - + if args.verbose: + self.error("Connection failed !") \ No newline at end of file