logging fixes

This commit is contained in:
ed 2022-11-15 21:28:27 +00:00
parent 91d132c2b4
commit cd2513ec16
7 changed files with 26 additions and 13 deletions

View file

@ -678,7 +678,7 @@ def run_argparse(
ap2 = ap.add_argument_group('FTP options')
ap2.add_argument("--ftp", metavar="PORT", type=int, help="enable FTP server on PORT, for example \033[32m3921")
ap2.add_argument("--ftps", metavar="PORT", type=int, help="enable FTPS server on PORT, for example \033[32m3990")
ap2.add_argument("--ftp-dbg", action="store_true", help="enable debug logging")
ap2.add_argument("--ftpv", action="store_true", help="verbose")
ap2.add_argument("--ftp-nat", metavar="ADDR", type=u, help="the NAT address to use for passive connections")
ap2.add_argument("--ftp-pr", metavar="P-P", type=u, help="the range of TCP ports to use for passive connections, for example \033[32m12000-13000")
@ -692,8 +692,10 @@ def run_argparse(
ap2.add_argument("--smbw", action="store_true", help="enable write support (please dont)")
ap2.add_argument("--smb1", action="store_true", help="disable SMBv2, only enable SMBv1 (CIFS)")
ap2.add_argument("--smb-port", metavar="PORT", type=int, default=445, help="port to listen on -- if you change this value, you must NAT from TCP:445 to this port using iptables or similar")
ap2.add_argument("--smb-dbg", action="store_true", help="show debug messages")
ap2.add_argument("--smb-nwa-1", action="store_true", help="disable impacket#1433 workaround (truncate directory listings to 64kB)")
ap2.add_argument("--smbv", action="store_true", help="verbose")
ap2.add_argument("--smbvv", action="store_true", help="verboser")
ap2.add_argument("--smbvvv", action="store_true", help="verbosest")
ap2 = ap.add_argument_group('opt-outs')
ap2.add_argument("-nw", action="store_true", help="never write anything to disk (debug/benchmark)")

View file

@ -401,7 +401,7 @@ class Ftpd(object):
h2.masquerade_address = self.args.ftp_nat
lgr = logging.getLogger("pyftpdlib")
lgr.setLevel(logging.DEBUG if self.args.ftp_dbg else logging.INFO)
lgr.setLevel(logging.DEBUG if self.args.ftpv else logging.INFO)
ioloop = IOLoop()
for ip in self.args.i:

View file

@ -185,7 +185,8 @@ class MCast(object):
sck = srv.sck
if srv.v6:
if self.args.zmv:
self.log("v6({}) idx({}) {}".format(srv.ip, srv.idx, srv.ips), 6)
zsl = list(srv.ips.keys())
self.log("v6({}) idx({}) {}".format(srv.ip, srv.idx, zsl), 6)
for ip in srv.ips:
bip = socket.inet_pton(socket.AF_INET6, ip)

View file

@ -21,6 +21,10 @@ if TYPE_CHECKING:
from .svchub import SvcHub
lg = logging.getLogger("smb")
debug, info, warning, error = (lg.debug, lg.info, lg.warning, lg.error)
class SMB(object):
def __init__(self, hub: "SvcHub") -> None:
self.hub = hub
@ -29,9 +33,10 @@ class SMB(object):
self.log = hub.log
self.files: dict[int, tuple[float, str]] = {}
lg.setLevel(logging.DEBUG if self.args.smbvvv else logging.INFO)
for x in ["impacket", "impacket.smbserver"]:
lgr = logging.getLogger(x)
lgr.setLevel(logging.DEBUG if self.args.smb_dbg else logging.INFO)
lgr.setLevel(logging.DEBUG if self.args.smbvv else logging.INFO)
try:
from impacket import smbserver
@ -109,7 +114,7 @@ class SMB(object):
# cf = inspect.currentframe().f_back
# c1 = cf.f_back.f_code.co_name
# c2 = cf.f_code.co_name
logging.debug('%s("%s", %s)\033[K\033[0m', caller, vpath, str(a))
debug('%s("%s", %s)\033[K\033[0m', caller, vpath, str(a))
# TODO find a way to grab `identity` in smbComSessionSetupAndX and smb2SessionSetup
vfs, rem = self.asrv.vfs.get(vpath, LEELOO_DALLAS, True, True)
@ -118,7 +123,7 @@ class SMB(object):
def _listdir(self, vpath: str, *a: Any, **ka: Any) -> list[str]:
vpath = vpath.replace("\\", "/").lstrip("/")
# caller = inspect.currentframe().f_back.f_code.co_name
logging.debug('listdir("%s", %s)\033[K\033[0m', vpath, str(a))
debug('listdir("%s", %s)\033[K\033[0m', vpath, str(a))
vfs, rem = self.asrv.vfs.get(vpath, LEELOO_DALLAS, False, False)
_, vfs_ls, vfs_virt = vfs.ls(
rem, LEELOO_DALLAS, not self.args.no_scandir, [[False, False]]
@ -135,7 +140,7 @@ class SMB(object):
for n, fn in enumerate(ls):
if sz >= 64000:
t = "listing only %d of %d files (%d byte); see impacket#1433"
logging.warning(t, n, len(ls), sz)
warning(t, n, len(ls), sz)
break
nsz = len(fn.encode("utf-16", "replace"))
@ -168,7 +173,7 @@ class SMB(object):
oldest = min([x[0] for x in self.files.values()])
cutoff = oldest + (now - oldest) / 2
self.files = {k: v for k, v in self.files.items() if v[0] > cutoff}
logging.info("was tracking %d files, now %d", nf, len(self.files))
info("was tracking %d files, now %d", nf, len(self.files))
vpath = vpath.replace("\\", "/").lstrip("/")
self.files[ret] = (now, vpath)
@ -269,7 +274,7 @@ class SMB(object):
def _hook(self, *a: Any, **ka: Any) -> None:
src = inspect.currentframe().f_back.f_code.co_name
logging.error("\033[31m%s:hook(%s)\033[0m", src, a)
error("\033[31m%s:hook(%s)\033[0m", src, a)
raise Exception("nope")
def _disarm(self) -> None:
@ -303,5 +308,5 @@ class SMB(object):
def yeet(msg: str) -> None:
logging.info(msg)
info(msg)
raise Exception(msg)

View file

@ -111,7 +111,7 @@ class SvcHub(object):
lg = logging.getLogger()
lh = HLog(self.log)
lg.handlers = [lh]
lg.setLevel(logging.INFO)
lg.setLevel(logging.DEBUG)
if args.stackmon:
start_stackmon(args.stackmon, 0)

View file

@ -125,6 +125,9 @@ class TcpSrv(object):
title_vars = [x[1:] for x in self.args.wintitle.split(" ") if x.startswith("$")]
t = "available @ {}://{}:{}/ (\033[33m{}\033[0m)"
for ip, desc in sorted(eps.items(), key=lambda x: x[1]):
if ip.startswith("fe80"):
continue
for port in sorted(self.args.p):
if (
port not in ok.get(ip, [])

View file

@ -179,7 +179,9 @@ IMPLICATIONS = [
["e2v", "e2d"],
["smbw", "smb"],
["smb1", "smb"],
["smb_dbg", "smb"],
["smbvvv", "smbvv"],
["smbvv", "smbv"],
["smbv", "smb"],
["zmvv", "zmv"],
["zmv", "zm"],
["zms", "zm"],