Merge branch 'develop' into XiaoliChan-nanodump
commit
ba5db57ac9
13
nxc/cli.py
13
nxc/cli.py
|
@ -16,11 +16,14 @@ def gen_cli_args():
|
||||||
CODENAME = "A New Beginning"
|
CODENAME = "A New Beginning"
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description=f"""
|
parser = argparse.ArgumentParser(description=f"""
|
||||||
_ _ _ _____
|
. .
|
||||||
| \ | | ___ | |_ | ____| __ __ ___ ___
|
.| |. _ _ _ _____
|
||||||
| \| | / _ \ | __| | _| \ \/ / / _ \ / __|
|
|| || | \ | | ___ | |_ | ____| __ __ ___ ___
|
||||||
| |\ | | __/ | |_ | |___ > < | __/ | (__
|
\\\( )// | \| | / _ \ | __| | _| \ \/ / / _ \ / __|
|
||||||
|_| \_| \___| \__| |_____| /_/\_\ \___| \___|
|
.=[ ]=. | |\ | | __/ | |_ | |___ > < | __/ | (__
|
||||||
|
/ /ॱ-ॱ\ \ |_| \_| \___| \__| |_____| /_/\_\ \___| \___|
|
||||||
|
ॱ \ / ॱ
|
||||||
|
ॱ ॱ
|
||||||
|
|
||||||
The network execution tool
|
The network execution tool
|
||||||
Maintained as an open source project by @NeffIsBack, @MJHallenbeck, @_zblurx
|
Maintained as an open source project by @NeffIsBack, @MJHallenbeck, @_zblurx
|
||||||
|
|
|
@ -2,11 +2,12 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# All credit to @an0n_r0
|
# All credit to @an0n_r0
|
||||||
# project : https://github.com/tothi/serviceDetector
|
# https://github.com/tothi/serviceDetector
|
||||||
|
# Module by @mpgn_x64
|
||||||
|
# https://twitter.com/mpgn_x64
|
||||||
|
|
||||||
from impacket.dcerpc.v5 import lsat, lsad
|
from impacket.dcerpc.v5 import lsat, lsad, transport
|
||||||
from impacket.dcerpc.v5.dtypes import NULL, MAXIMUM_ALLOWED, RPC_UNICODE_STRING
|
from impacket.dcerpc.v5.dtypes import NULL, MAXIMUM_ALLOWED, RPC_UNICODE_STRING
|
||||||
from impacket.dcerpc.v5 import transport
|
|
||||||
import pathlib
|
import pathlib
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,82 +28,83 @@ class NXCModule:
|
||||||
self.module_options = module_options
|
self.module_options = module_options
|
||||||
|
|
||||||
def options(self, context, module_options):
|
def options(self, context, module_options):
|
||||||
""" """
|
"""
|
||||||
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def on_login(self, context, connection):
|
def on_login(self, context, connection):
|
||||||
success = 0
|
target = self._get_target(connection)
|
||||||
|
context.log.debug(f"Detecting installed services on {target} using LsarLookupNames()...")
|
||||||
|
|
||||||
|
results = self._detect_installed_services(context, connection, target)
|
||||||
|
self.detect_running_processes(context, connection, results)
|
||||||
|
|
||||||
|
self.dump_results(results, connection.hostname, context)
|
||||||
|
|
||||||
|
def _get_target(self, connection):
|
||||||
|
return connection.host if not connection.kerberos else f"{connection.hostname}.{connection.domain}"
|
||||||
|
|
||||||
|
def _detect_installed_services(self, context, connection, target):
|
||||||
results = {}
|
results = {}
|
||||||
target = connection.host if not connection.kerberos else connection.hostname + "." + connection.domain
|
|
||||||
context.log.debug("Detecting installed services on {} using LsarLookupNames()...".format(target))
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
lsa = LsaLookupNames(
|
lsa = LsaLookupNames(
|
||||||
connection.domain,
|
domain=connection.domain,
|
||||||
connection.username,
|
username=connection.username,
|
||||||
connection.password,
|
password=connection.password,
|
||||||
target,
|
remote_name=target,
|
||||||
connection.kerberos,
|
do_kerberos=connection.kerberos,
|
||||||
connection.domain,
|
kdcHost=connection.domain,
|
||||||
connection.lmhash,
|
lmhash=connection.lmhash,
|
||||||
connection.nthash,
|
nthash=connection.nthash,
|
||||||
connection.aesKey,
|
aesKey=connection.aesKey
|
||||||
)
|
)
|
||||||
dce, rpctransport = lsa.connect()
|
|
||||||
|
dce, _ = lsa.connect()
|
||||||
policyHandle = lsa.open_policy(dce)
|
policyHandle = lsa.open_policy(dce)
|
||||||
|
|
||||||
for i, product in enumerate(conf["products"]):
|
for product in conf["products"]:
|
||||||
for service in product["services"]:
|
for service in product["services"]:
|
||||||
try:
|
try:
|
||||||
lsa.LsarLookupNames(dce, policyHandle, service["name"])
|
lsa.LsarLookupNames(dce, policyHandle, service["name"])
|
||||||
context.log.info(f"Detected installed service on {connection.host}: {product['name']} {service['description']}")
|
context.log.info(f"Detected installed service on {connection.host}: {product['name']} {service['description']}")
|
||||||
if product["name"] not in results:
|
results.setdefault(product["name"], {"services": []})["services"].append(service)
|
||||||
results[product["name"]] = {"services": []}
|
except:
|
||||||
results[product["name"]]["services"].append(service)
|
|
||||||
except Exception as e:
|
|
||||||
pass
|
pass
|
||||||
success += 1
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
context.log.fail(str(e))
|
context.log.fail(str(e))
|
||||||
|
|
||||||
|
return results
|
||||||
|
|
||||||
|
def detect_running_processes(self, context, connection, results):
|
||||||
context.log.info(f"Detecting running processes on {connection.host} by enumerating pipes...")
|
context.log.info(f"Detecting running processes on {connection.host} by enumerating pipes...")
|
||||||
try:
|
try:
|
||||||
for f in connection.conn.listPath("IPC$", "\\*"):
|
for f in connection.conn.listPath("IPC$", "\\*"):
|
||||||
fl = f.get_longname()
|
fl = f.get_longname()
|
||||||
for i, product in enumerate(conf["products"]):
|
for product in conf["products"]:
|
||||||
for pipe in product["pipes"]:
|
for pipe in product["pipes"]:
|
||||||
if pathlib.PurePath(fl).match(pipe["name"]):
|
if pathlib.PurePath(fl).match(pipe["name"]):
|
||||||
context.log.debug(f"{product['name']} running claim found on {connection.host} by existing pipe {fl} (likely processes: {pipe['processes']})")
|
context.log.debug(f"{product['name']} running claim found on {connection.host} by existing pipe {fl} (likely processes: {pipe['processes']})")
|
||||||
if product["name"] not in results:
|
prod_results = results.setdefault(product["name"], {})
|
||||||
results[product["name"]] = {}
|
prod_results.setdefault("pipes", []).append(pipe)
|
||||||
if "pipes" not in results[product["name"]]:
|
|
||||||
results[product["name"]]["pipes"] = []
|
|
||||||
results[product["name"]]["pipes"].append(pipe)
|
|
||||||
success += 1
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
context.log.debug(str(e))
|
context.log.debug(str(e))
|
||||||
|
|
||||||
self.dump_results(results, connection.hostname, success, context)
|
def dump_results(self, results, remoteName, context):
|
||||||
|
if not results:
|
||||||
|
context.log.highlight(f"Found NOTHING!")
|
||||||
|
return
|
||||||
|
|
||||||
def dump_results(self, results, remoteName, success, context):
|
for item, data in results.items():
|
||||||
# out1 = "On host {} found".format(remoteName)
|
message = f"Found {item}"
|
||||||
out1 = ""
|
if "services" in data:
|
||||||
for item in results:
|
message += " INSTALLED"
|
||||||
out = out1
|
if "pipes" in data:
|
||||||
if "services" in results[item]:
|
message += " and RUNNING"
|
||||||
out += f"{item} INSTALLED"
|
elif "pipes" in data:
|
||||||
if "pipes" in results[item]:
|
message += " RUNNING"
|
||||||
out += " and it seems to be RUNNING"
|
context.log.highlight(message)
|
||||||
# else:
|
|
||||||
# for product in conf['products']:
|
|
||||||
# if (item == product['name']) and (len(product['pipes']) == 0):
|
|
||||||
# out += " (NamedPipe for this service was not provided in config)"
|
|
||||||
elif "pipes" in results[item]:
|
|
||||||
out += f" {item} RUNNING"
|
|
||||||
context.log.highlight(out)
|
|
||||||
if (len(results) < 1) and (success > 1):
|
|
||||||
out = out1 + " NOTHING!"
|
|
||||||
context.log.highlight(out)
|
|
||||||
|
|
||||||
|
|
||||||
class LsaLookupNames:
|
class LsaLookupNames:
|
||||||
|
@ -121,7 +123,7 @@ class LsaLookupNames:
|
||||||
username="",
|
username="",
|
||||||
password="",
|
password="",
|
||||||
remote_name="",
|
remote_name="",
|
||||||
k=False,
|
do_kerberos=False,
|
||||||
kdcHost="",
|
kdcHost="",
|
||||||
lmhash="",
|
lmhash="",
|
||||||
nthash="",
|
nthash="",
|
||||||
|
@ -132,7 +134,7 @@ class LsaLookupNames:
|
||||||
self.password = password
|
self.password = password
|
||||||
self.remoteName = remote_name
|
self.remoteName = remote_name
|
||||||
self.string_binding = rf"ncacn_np:{remote_name}[\PIPE\lsarpc]"
|
self.string_binding = rf"ncacn_np:{remote_name}[\PIPE\lsarpc]"
|
||||||
self.doKerberos = k
|
self.doKerberos = do_kerberos
|
||||||
self.lmhash = lmhash
|
self.lmhash = lmhash
|
||||||
self.nthash = nthash
|
self.nthash = nthash
|
||||||
self.aesKey = aesKey
|
self.aesKey = aesKey
|
||||||
|
@ -207,71 +209,56 @@ class LsaLookupNames:
|
||||||
|
|
||||||
conf = {
|
conf = {
|
||||||
"products": [
|
"products": [
|
||||||
|
{
|
||||||
|
"name": "Acronis Cyber Protect Active Protection",
|
||||||
|
"services": [{"name": "AcronisActiveProtectionService", "description": "Acronis Active Protection Service"}],
|
||||||
|
"pipes": []
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Bitdefender",
|
"name": "Bitdefender",
|
||||||
"services": [
|
"services": [
|
||||||
{
|
{"name": "bdredline_agent", "description": "Bitdefender Agent RedLine Service"},
|
||||||
"name": "bdredline_agent",
|
|
||||||
"description": "Bitdefender Agent RedLine Service",
|
|
||||||
},
|
|
||||||
{"name": "BDAuxSrv", "description": "Bitdefender Auxiliary Service"},
|
{"name": "BDAuxSrv", "description": "Bitdefender Auxiliary Service"},
|
||||||
{
|
{"name": "UPDATESRV", "description": "Bitdefender Desktop Update Service"},
|
||||||
"name": "UPDATESRV",
|
|
||||||
"description": "Bitdefender Desktop Update Service",
|
|
||||||
},
|
|
||||||
{"name": "VSSERV", "description": "Bitdefender Virus Shield"},
|
{"name": "VSSERV", "description": "Bitdefender Virus Shield"},
|
||||||
{"name": "bdredline", "description": "Bitdefender RedLine Service"},
|
{"name": "bdredline", "description": "Bitdefender RedLine Service"},
|
||||||
{"name": "EPRedline", "description": "Bitdefender Endpoint Redline Service"},
|
{"name": "EPRedline", "description": "Bitdefender Endpoint Redline Service"},
|
||||||
{"name": "EPUpdateService", "description": "Bitdefender Endpoint Update Service"},
|
{"name": "EPUpdateService", "description": "Bitdefender Endpoint Update Service"},
|
||||||
{"name": "EPSecurityService", "description": "Bitdefender Endpoint Security Service"},
|
{"name": "EPSecurityService", "description": "Bitdefender Endpoint Security Service"},
|
||||||
{"name": "EPProtectedService", "description": "Bitdefender Endpoint Protected Service"},
|
{"name": "EPProtectedService", "description": "Bitdefender Endpoint Protected Service"},
|
||||||
{"name": "EPIntegrationService", "description": "Bitdefender Endpoint Integration Service"},
|
{"name": "EPIntegrationService", "description": "Bitdefender Endpoint Integration Service"}
|
||||||
],
|
],
|
||||||
"pipes": [
|
"pipes": [
|
||||||
{
|
{"name": "\\bdConnector\\ServiceControl\\EPSecurityService.exe", "processes": ["EPConsole.exe"]},
|
||||||
"name": "\\bdConnector\\ServiceControl\\EPSecurityService.exe",
|
{"name": "etw_sensor_pipe_ppl", "processes": ["EPProtectedService.exe"]},
|
||||||
"processes": ["EPConsole.exe"],
|
{"name": "local\\msgbus\\antitracker.low\\*", "processes": ["bdagent.exe"]},
|
||||||
},
|
{"name": "local\\msgbus\\aspam.actions.low\\*", "processes": ["bdagent.exe"]},
|
||||||
{
|
{"name": "local\\msgbus\\bd.process.broker.pipe", "processes": ["bdagent.exe", "bdservicehost.exe", "updatesrv.exe"]},
|
||||||
"name": "etw_sensor_pipe_ppl",
|
|
||||||
"processes": ["EPProtectedService.exe"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "local\\msgbus\\antitracker.low\\*",
|
|
||||||
"processes": ["bdagent.exe"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "local\\msgbus\\aspam.actions.low\\*",
|
|
||||||
"processes": ["bdagent.exe"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "local\\msgbus\\bd.process.broker.pipe",
|
|
||||||
"processes": ["bdagent.exe", "bdservicehost.exe", "updatesrv.exe"],
|
|
||||||
},
|
|
||||||
{"name": "local\\msgbus\\bdagent*", "processes": ["bdagent.exe"]},
|
{"name": "local\\msgbus\\bdagent*", "processes": ["bdagent.exe"]},
|
||||||
{
|
{"name": "local\\msgbus\\bdauxsrv", "processes": ["bdagent.exe", "bdntwrk.exe"]}
|
||||||
"name": "local\\msgbus\\bdauxsrv",
|
]
|
||||||
"processes": ["bdagent.exe", "bdntwrk.exe"],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Windows Defender",
|
"name": "Carbon Black App Control",
|
||||||
|
"services": [{"name": "Parity", "description": "Carbon Black App Control Agent"}],
|
||||||
|
"pipes": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CrowdStrike",
|
||||||
|
"services": [{"name": "CSFalconService", "description": "CrowdStrike Falcon Sensor Service"}],
|
||||||
|
"pipes": [{"name": "CrowdStrike\\{*", "processes": ["CSFalconContainer.exe", "CSFalconService.exe"]}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cybereason",
|
||||||
"services": [
|
"services": [
|
||||||
{
|
{"name": "CybereasonActiveProbe", "description": "Cybereason Active Probe"},
|
||||||
"name": "WinDefend",
|
{"name": "CybereasonCRS", "description": "Cybereason Anti-Ransomware"},
|
||||||
"description": "Windows Defender Antivirus Service",
|
{"name": "CybereasonBlocki", "description": "Cybereason Execution Prevention"}
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Sense",
|
|
||||||
"description": "Windows Defender Advanced Threat Protection Service",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "WdNisSvc",
|
|
||||||
"description": "Windows Defender Antivirus Network Inspection Service",
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
"pipes": [],
|
"pipes": [
|
||||||
|
{"name": "CybereasonAPConsoleMinionHostIpc_*", "processes": ["minionhost.exe"]},
|
||||||
|
{"name": "CybereasonAPServerProxyIpc_*", "processes": ["minionhost.exe"]}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ESET",
|
"name": "ESET",
|
||||||
|
@ -285,269 +272,108 @@ conf = {
|
||||||
"pipes": [{"name": "nod_scriptmon_pipe", "processes": [""]}],
|
"pipes": [{"name": "nod_scriptmon_pipe", "processes": [""]}],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CrowdStrike",
|
"name": "G DATA Security Client",
|
||||||
"services": [
|
"services": [
|
||||||
{
|
{"name": "AVKWCtl", "description": "Anti-virus Kit Window Control"},
|
||||||
"name": "CSFalconService",
|
{"name": "AVKProxy", "description": "G Data AntiVirus Proxy Service"},
|
||||||
"description": "CrowdStrike Falcon Sensor Service",
|
{"name": "GDScan", "description": "GDSG Data AntiVirus Scan Service"}
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"pipes": [
|
"pipes": [
|
||||||
{
|
{"name": "exploitProtectionIPC", "processes": ["AVKWCtlx64.exe"]}
|
||||||
"name": "CrowdStrike\\{*",
|
]
|
||||||
"processes": ["CSFalconContainer.exe", "CSFalconService.exe"],
|
|
||||||
}
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "SentinelOne",
|
|
||||||
"services": [
|
|
||||||
{
|
|
||||||
"name": "SentinelAgent",
|
|
||||||
"description": "SentinelOne Endpoint Protection Agent",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "SentinelStaticEngine",
|
|
||||||
"description": "Manage static engines for SentinelOne Endpoint Protection",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "LogProcessorService",
|
|
||||||
"description": "Manage logs for SentinelOne Endpoint Protection",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"pipes": [
|
|
||||||
{"name": "SentinelAgentWorkerCert.*", "processes": [""]},
|
|
||||||
{"name": "DFIScanner.Etw.*", "processes": ["SentinelStaticEngine.exe"]},
|
|
||||||
{"name": "DFIScanner.Inline.*", "processes": ["SentinelAgent.exe"]},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Carbon Black App Control",
|
|
||||||
"services": [{"name": "Parity", "description": "Carbon Black App Control Agent"}],
|
|
||||||
"pipes": [],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Cybereason",
|
|
||||||
"services": [
|
|
||||||
{
|
|
||||||
"name": "CybereasonActiveProbe",
|
|
||||||
"description": "Cybereason Active Probe",
|
|
||||||
},
|
|
||||||
{"name": "CybereasonCRS", "description": "Cybereason Anti-Ransomware"},
|
|
||||||
{
|
|
||||||
"name": "CybereasonBlocki",
|
|
||||||
"description": "Cybereason Execution Prevention",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"pipes": [
|
|
||||||
{
|
|
||||||
"name": "CybereasonAPConsoleMinionHostIpc_*",
|
|
||||||
"processes": ["minionhost.exe"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CybereasonAPServerProxyIpc_*",
|
|
||||||
"processes": ["minionhost.exe"],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Kaspersky Security for Windows Server",
|
"name": "Kaspersky Security for Windows Server",
|
||||||
"services": [
|
"services": [
|
||||||
{
|
{"name": "kavfsslp", "description": "Kaspersky Security Exploit Prevention Service"},
|
||||||
"name": "kavfsslp",
|
{"name": "KAVFS", "description": "Kaspersky Security Service"},
|
||||||
"description": "Kaspersky Security Exploit Prevention Service",
|
{"name": "KAVFSGT", "description": "Kaspersky Security Management Service"},
|
||||||
},
|
{"name": "klnagent", "description": "Kaspersky Security Center"}
|
||||||
|
|
||||||
{
|
|
||||||
"name": "KAVFS",
|
|
||||||
"description": "Kaspersky Security Service",
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "KAVFSGT",
|
|
||||||
"description": "Kaspersky Security Management Service",
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "klnagent",
|
|
||||||
"description": "Kaspersky Security Center",
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
"pipes": [
|
"pipes": [
|
||||||
{
|
{"name": "Exploit_Blocker", "processes": ["kavfswh.exe"]}
|
||||||
"name": "Exploit_Blocker",
|
]
|
||||||
"processes": ["kavfswh.exe"],
|
},
|
||||||
},
|
|
||||||
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Trend Micro Endpoint Security",
|
"name": "Panda Adaptive Defense 360",
|
||||||
"services": [
|
"services": [
|
||||||
{
|
{"name": "PandaAetherAgent", "description": "Panda Endpoint Agent"},
|
||||||
"name": "Trend Micro Endpoint Basecamp",
|
{"name": "PSUAService", "description": "Panda Product Service"},
|
||||||
"description": "Trend Micro Endpoint Basecamp",
|
{"name": "NanoServiceMain", "description": "Panda Cloud Antivirus Service"}
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "TMBMServer",
|
|
||||||
"description": "Trend Micro Unauthorized Change Prevention Service",
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "Trend Micro Web Service Communicator",
|
|
||||||
"description": "Trend Micro Web Service Communicator",
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "TMiACAgentSvc",
|
|
||||||
"description": "Trend Micro Application Control Service (Agent)",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CETASvc",
|
|
||||||
"description": "Trend Micro Cloud Endpoint Telemetry Service",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
|
|
||||||
"name": "iVPAgent",
|
|
||||||
"description": "Trend Micro Vulnerability Protection Service (Agent)",
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"pipes": [
|
"pipes": [
|
||||||
{
|
{"name": "NNS_API_IPC_SRV_ENDPOINT", "processes": ["PSANHost.exe"]},
|
||||||
"name": "IPC_XBC_XBC_AGENT_PIPE_*",
|
{"name": "PSANMSrvcPpal", "processes": ["PSUAService.exe"]}
|
||||||
"processes": ["EndpointBasecamp.exe"],
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "iacagent_*",
|
"name": "SentinelOne",
|
||||||
"processes": ["TMiACAgentSvc.exe"],
|
"services": [
|
||||||
},
|
{"name": "SentinelAgent", "description": "SentinelOne Endpoint Protection Agent"},
|
||||||
{
|
{"name": "SentinelStaticEngine", "description": "Manage static engines for SentinelOne Endpoint Protection"},
|
||||||
"name": "OIPC_LWCS_PIPE_*",
|
{"name": "LogProcessorService", "description": "Manage logs for SentinelOne Endpoint Protection"}
|
||||||
"processes": ["TmListen.exe"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Log_ServerNamePipe",
|
|
||||||
"processes": ["LogServer.exe"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "OIPC_NTRTSCAN_PIPE_*",
|
|
||||||
"processes": ["Ntrtscan.exe"],
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
"pipes": [
|
||||||
|
{"name": "SentinelAgentWorkerCert.*", "processes": [""]},
|
||||||
|
{"name": "DFIScanner.Etw.*", "processes": ["SentinelStaticEngine.exe"]},
|
||||||
|
{"name": "DFIScanner.Inline.*", "processes": ["SentinelAgent.exe"]}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Symantec Endpoint Protection",
|
"name": "Symantec Endpoint Protection",
|
||||||
"services": [
|
"services": [
|
||||||
{
|
{"name": "SepMasterService", "description": "Symantec Endpoint Protection"},
|
||||||
"name": "SepMasterService",
|
{"name": "SepScanService", "description": "Symantec Endpoint Protection Scan Services"},
|
||||||
"description": "Symantec Endpoint Protection",
|
{"name": "SNAC", "description": "Symantec Network Access Control"}
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "SepScanService",
|
|
||||||
"description": "Symantec Endpoint Protection Scan Services",
|
|
||||||
},
|
|
||||||
{"name": "SNAC", "description": "Symantec Network Access Control"},
|
|
||||||
],
|
],
|
||||||
"pipes": [],
|
"pipes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Sophos Intercept X",
|
"name": "Sophos Intercept X",
|
||||||
"services": [
|
"services": [
|
||||||
{
|
{"name": "SntpService", "description": "Sophos Network Threat Protection"},
|
||||||
"name": "SntpService",
|
{"name": "Sophos Endpoint Defense Service", "description": "Sophos Endpoint Defense Service"},
|
||||||
"description": "Sophos Network Threat Protection"
|
{"name": "Sophos File Scanner Service", "description": "Sophos File Scanner Service"},
|
||||||
},
|
{"name": "Sophos Health Service", "description": "Sophos Health Service"},
|
||||||
{
|
{"name": "Sophos Live Query", "description": "Sophos Live Query"},
|
||||||
"name": "Sophos Endpoint Defense Service",
|
{"name": "Sophos Managed Threat Response", "description": "Sophos Managed Threat Response"},
|
||||||
"description": "Sophos Endpoint Defense Service"
|
{"name": "Sophos MCS Agent", "description": "Sophos MCS Agent"},
|
||||||
},
|
{"name": "Sophos MCS Client", "description": "Sophos MCS Client"},
|
||||||
{
|
{"name": "Sophos System Protection Service", "description": "Sophos System Protection Service"}
|
||||||
"name": "Sophos File Scanner Service",
|
|
||||||
"description": "Sophos File Scanner Service"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Sophos Health Service",
|
|
||||||
"description": "Sophos Health Service"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Sophos Live Query",
|
|
||||||
"description": "Sophos Live Query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Sophos Managed Threat Response",
|
|
||||||
"description": "Sophos Managed Threat Response"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Sophos MCS Agent",
|
|
||||||
"description": "Sophos MCS Agent"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Sophos MCS Client",
|
|
||||||
"description": "Sophos MCS Client"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Sophos System Protection Service",
|
|
||||||
"description": "Sophos System Protection Service"
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"pipes": [
|
"pipes": [
|
||||||
{"name": "SophosUI", "processes": [""]},
|
{"name": "SophosUI", "processes": [""]},
|
||||||
{"name": "SophosEventStore", "processes": [""]},
|
{"name": "SophosEventStore", "processes": [""]},
|
||||||
{"name": "sophos_deviceencryption", "processes": [""]},
|
{"name": "sophos_deviceencryption", "processes": [""]},
|
||||||
{"name": "sophoslivequery_*", "processes": [""]},
|
{"name": "sophoslivequery_*", "processes": [""]}
|
||||||
],
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "G DATA Security Client",
|
"name": "Trend Micro Endpoint Security",
|
||||||
"services": [
|
"services": [
|
||||||
{
|
{"name": "Trend Micro Endpoint Basecamp", "description": "Trend Micro Endpoint Basecamp"},
|
||||||
"name": "AVKWCtl",
|
{"name": "TMBMServer", "description": "Trend Micro Unauthorized Change Prevention Service"},
|
||||||
"description": "Anti-virus Kit Window Control",
|
{"name": "Trend Micro Web Service Communicator", "description": "Trend Micro Web Service Communicator"},
|
||||||
},
|
{"name": "TMiACAgentSvc", "description": "Trend Micro Application Control Service (Agent)"},
|
||||||
{
|
{"name": "CETASvc", "description": "Trend Micro Cloud Endpoint Telemetry Service"},
|
||||||
"name": "AVKProxy",
|
{"name": "iVPAgent", "description": "Trend Micro Vulnerability Protection Service (Agent)"}
|
||||||
"description": "G Data AntiVirus Proxy Service"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "GDScan",
|
|
||||||
"description": "GDSG Data AntiVirus Scan Service",
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
"pipes": [
|
"pipes": [
|
||||||
{
|
{"name": "IPC_XBC_XBC_AGENT_PIPE_*", "processes": ["EndpointBasecamp.exe"]},
|
||||||
"name": "exploitProtectionIPC",
|
{"name": "iacagent_*", "processes": ["TMiACAgentSvc.exe"]},
|
||||||
"processes": ["AVKWCtlx64.exe"],
|
{"name": "OIPC_LWCS_PIPE_*", "processes": ["TmListen.exe"]},
|
||||||
},
|
{"name": "Log_ServerNamePipe", "processes": ["LogServer.exe"]},
|
||||||
],
|
{"name": "OIPC_NTRTSCAN_PIPE_*", "processes": ["Ntrtscan.exe"]}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Panda Adaptive Defense 360",
|
"name": "Windows Defender",
|
||||||
"services": [
|
"services": [
|
||||||
{
|
{"name": "WinDefend", "description": "Windows Defender Antivirus Service"},
|
||||||
"name": "PandaAetherAgent",
|
{"name": "Sense", "description": "Windows Defender Advanced Threat Protection Service"},
|
||||||
"description": "Panda Endpoint Agent",
|
{"name": "WdNisSvc", "description": "Windows Defender Antivirus Network Inspection Service"}
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "PSUAService",
|
|
||||||
"description": "Panda Product Service"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "NanoServiceMain",
|
|
||||||
"description": "Panda Cloud Antivirus Service",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"pipes": [
|
|
||||||
{
|
|
||||||
"name": "NNS_API_IPC_SRV_ENDPOINT",
|
|
||||||
"processes": ["PSANHost.exe"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "PSANMSrvcPpal",
|
|
||||||
"processes": ["PSUAService.exe"],
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
|
"pipes": []
|
||||||
}
|
}
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,289 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import os
|
||||||
|
from time import sleep
|
||||||
|
from datetime import datetime
|
||||||
|
from impacket.dcerpc.v5.dtypes import NULL
|
||||||
|
from impacket.dcerpc.v5 import tsch, transport
|
||||||
|
from nxc.helpers.misc import gen_random_string
|
||||||
|
from impacket.dcerpc.v5.rpcrt import RPC_C_AUTHN_GSS_NEGOTIATE, RPC_C_AUTHN_LEVEL_PKT_PRIVACY
|
||||||
|
|
||||||
|
|
||||||
|
class NXCModule:
|
||||||
|
"""
|
||||||
|
Execute a scheduled task remotely as a already connected user by @Defte_
|
||||||
|
Thanks @Shad0wC0ntr0ller for the idea of removing the hardcoded date that could be used as an IOC
|
||||||
|
"""
|
||||||
|
|
||||||
|
def options(self, context, module_options):
|
||||||
|
"""
|
||||||
|
CMD Command to execute
|
||||||
|
USER User to execute command as
|
||||||
|
"""
|
||||||
|
|
||||||
|
self.cmd = self.user = self.time = None
|
||||||
|
if "CMD" in module_options:
|
||||||
|
self.cmd = module_options["CMD"]
|
||||||
|
|
||||||
|
if "USER" in module_options:
|
||||||
|
self.user = module_options["USER"]
|
||||||
|
|
||||||
|
name = "schtask_as"
|
||||||
|
description = "Remotely execute a scheduled task as a logged on user"
|
||||||
|
supported_protocols = ["smb"]
|
||||||
|
opsec_safe = True
|
||||||
|
multiple_hosts = False
|
||||||
|
|
||||||
|
def on_admin_login(self, context, connection):
|
||||||
|
self.logger = context.log
|
||||||
|
if self.cmd is None:
|
||||||
|
self.logger.fail("You need to specify a CMD to run")
|
||||||
|
return 1
|
||||||
|
if self.user is None:
|
||||||
|
self.logger.fail("You need to specify a USER to run the command as")
|
||||||
|
return 1
|
||||||
|
|
||||||
|
self.logger.display("Connecting to the remote Service control endpoint")
|
||||||
|
try:
|
||||||
|
exec_method = TSCH_EXEC(
|
||||||
|
connection.host if not connection.kerberos else connection.hostname + "." + connection.domain,
|
||||||
|
connection.smb_share_name,
|
||||||
|
connection.username,
|
||||||
|
connection.password,
|
||||||
|
connection.domain,
|
||||||
|
self.user,
|
||||||
|
self.cmd,
|
||||||
|
connection.kerberos,
|
||||||
|
connection.aesKey,
|
||||||
|
connection.kdcHost,
|
||||||
|
connection.hash,
|
||||||
|
self.logger,
|
||||||
|
connection.args.get_output_tries,
|
||||||
|
"C$" # This one shouldn't be hardcoded but I don't know where to retrive the info
|
||||||
|
)
|
||||||
|
|
||||||
|
self.logger.display(f"Executing {self.cmd} as {self.user}")
|
||||||
|
output = exec_method.execute(self.cmd, True)
|
||||||
|
|
||||||
|
try:
|
||||||
|
if not isinstance(output, str):
|
||||||
|
output = output.decode(connection.args.codec)
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
# Required to decode specific french caracters otherwise it'll print b"<result>"
|
||||||
|
output = output.decode("cp437")
|
||||||
|
if output:
|
||||||
|
self.logger.highlight(output)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
if "SCHED_S_TASK_HAS_NOT_RUN" in str(e):
|
||||||
|
self.logger.fail("Task was not run, seems like the specified user has no active session on the target")
|
||||||
|
|
||||||
|
|
||||||
|
class TSCH_EXEC:
|
||||||
|
def __init__(self, target, share_name, username, password, domain, user, cmd, doKerberos=False, aesKey=None, kdcHost=None, hashes=None, logger=None, tries=None, share=None):
|
||||||
|
self.__target = target
|
||||||
|
self.__username = username
|
||||||
|
self.__password = password
|
||||||
|
self.__domain = domain
|
||||||
|
self.__share_name = share_name
|
||||||
|
self.__lmhash = ""
|
||||||
|
self.__nthash = ""
|
||||||
|
self.__outputBuffer = b""
|
||||||
|
self.__retOutput = False
|
||||||
|
self.__aesKey = aesKey
|
||||||
|
self.__doKerberos = doKerberos
|
||||||
|
self.__kdcHost = kdcHost
|
||||||
|
self.__tries = tries
|
||||||
|
self.__output_filename = None
|
||||||
|
self.__share = share
|
||||||
|
self.logger = logger
|
||||||
|
self.cmd = cmd
|
||||||
|
self.user = user
|
||||||
|
|
||||||
|
if hashes is not None:
|
||||||
|
if hashes.find(":") != -1:
|
||||||
|
self.__lmhash, self.__nthash = hashes.split(":")
|
||||||
|
else:
|
||||||
|
self.__nthash = hashes
|
||||||
|
|
||||||
|
if self.__password is None:
|
||||||
|
self.__password = ""
|
||||||
|
|
||||||
|
stringbinding = f"ncacn_np:{self.__target}[\\pipe\\atsvc]"
|
||||||
|
self.__rpctransport = transport.DCERPCTransportFactory(stringbinding)
|
||||||
|
|
||||||
|
if hasattr(self.__rpctransport, "set_credentials"):
|
||||||
|
# This method exists only for selected protocol sequences.
|
||||||
|
self.__rpctransport.set_credentials(
|
||||||
|
self.__username,
|
||||||
|
self.__password,
|
||||||
|
self.__domain,
|
||||||
|
self.__lmhash,
|
||||||
|
self.__nthash,
|
||||||
|
self.__aesKey,
|
||||||
|
)
|
||||||
|
self.__rpctransport.set_kerberos(self.__doKerberos, self.__kdcHost)
|
||||||
|
|
||||||
|
def execute(self, command, output=False):
|
||||||
|
self.__retOutput = output
|
||||||
|
self.execute_handler(command)
|
||||||
|
return self.__outputBuffer
|
||||||
|
|
||||||
|
def output_callback(self, data):
|
||||||
|
self.__outputBuffer = data
|
||||||
|
|
||||||
|
def get_current_date(self):
|
||||||
|
# Get current date and time
|
||||||
|
now = datetime.now()
|
||||||
|
|
||||||
|
# Format it to match the format in the XML: "YYYY-MM-DDTHH:MM:SS.ssssss"
|
||||||
|
return now.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3]
|
||||||
|
|
||||||
|
def gen_xml(self, command, fileless=False):
|
||||||
|
xml = f"""<?xml version="1.0" encoding="UTF-16"?>
|
||||||
|
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
|
||||||
|
<Triggers>
|
||||||
|
<CalendarTrigger>
|
||||||
|
<StartBoundary>{self.get_current_date()}</StartBoundary>
|
||||||
|
<Enabled>true</Enabled>
|
||||||
|
<ScheduleByDay>
|
||||||
|
<DaysInterval>1</DaysInterval>
|
||||||
|
</ScheduleByDay>
|
||||||
|
</CalendarTrigger>
|
||||||
|
</Triggers>
|
||||||
|
<Principals>
|
||||||
|
<Principal id="LocalSystem">
|
||||||
|
<UserId>{self.user}</UserId>
|
||||||
|
<RunLevel>HighestAvailable</RunLevel>
|
||||||
|
</Principal>
|
||||||
|
</Principals>
|
||||||
|
<Settings>
|
||||||
|
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
|
||||||
|
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
|
||||||
|
<StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
|
||||||
|
<AllowHardTerminate>true</AllowHardTerminate>
|
||||||
|
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
|
||||||
|
<IdleSettings>
|
||||||
|
<StopOnIdleEnd>true</StopOnIdleEnd>
|
||||||
|
<RestartOnIdle>false</RestartOnIdle>
|
||||||
|
</IdleSettings>
|
||||||
|
<AllowStartOnDemand>true</AllowStartOnDemand>
|
||||||
|
<Enabled>true</Enabled>
|
||||||
|
<Hidden>true</Hidden>
|
||||||
|
<RunOnlyIfIdle>false</RunOnlyIfIdle>
|
||||||
|
<WakeToRun>false</WakeToRun>
|
||||||
|
<ExecutionTimeLimit>P3D</ExecutionTimeLimit>
|
||||||
|
<Priority>7</Priority>
|
||||||
|
</Settings>
|
||||||
|
<Actions Context="LocalSystem">
|
||||||
|
<Exec>
|
||||||
|
<Command>cmd.exe</Command>
|
||||||
|
"""
|
||||||
|
if self.__retOutput:
|
||||||
|
self.__output_filename = f"\\Windows\\Temp\\{gen_random_string(6)}"
|
||||||
|
if fileless:
|
||||||
|
local_ip = self.__rpctransport.get_socket().getsockname()[0]
|
||||||
|
argument_xml = f" <Arguments>/C {command} > \\\\{local_ip}\\{self.__share_name}\\{self.__output_filename} 2>&1</Arguments>"
|
||||||
|
else:
|
||||||
|
argument_xml = f" <Arguments>/C {command} > {self.__output_filename} 2>&1</Arguments>"
|
||||||
|
|
||||||
|
elif self.__retOutput is False:
|
||||||
|
argument_xml = f" <Arguments>/C {command}</Arguments>"
|
||||||
|
|
||||||
|
self.logger.debug(f"Generated argument XML: {argument_xml}")
|
||||||
|
xml += argument_xml
|
||||||
|
xml += """
|
||||||
|
</Exec>
|
||||||
|
</Actions>
|
||||||
|
</Task>
|
||||||
|
"""
|
||||||
|
return xml
|
||||||
|
|
||||||
|
def execute_handler(self, command, fileless=False):
|
||||||
|
dce = self.__rpctransport.get_dce_rpc()
|
||||||
|
if self.__doKerberos:
|
||||||
|
dce.set_auth_type(RPC_C_AUTHN_GSS_NEGOTIATE)
|
||||||
|
|
||||||
|
dce.set_credentials(*self.__rpctransport.get_credentials())
|
||||||
|
dce.connect()
|
||||||
|
|
||||||
|
tmpName = gen_random_string(8)
|
||||||
|
|
||||||
|
xml = self.gen_xml(command, fileless)
|
||||||
|
|
||||||
|
self.logger.info(f"Task XML: {xml}")
|
||||||
|
taskCreated = False
|
||||||
|
self.logger.info(f"Creating task \\{tmpName}")
|
||||||
|
try:
|
||||||
|
# windows server 2003 has no MSRPC_UUID_TSCHS, if it bind, it will return abstract_syntax_not_supported
|
||||||
|
dce.set_auth_level(RPC_C_AUTHN_LEVEL_PKT_PRIVACY)
|
||||||
|
dce.bind(tsch.MSRPC_UUID_TSCHS)
|
||||||
|
tsch.hSchRpcRegisterTask(dce, f"\\{tmpName}", xml, tsch.TASK_CREATE, NULL, tsch.TASK_LOGON_NONE)
|
||||||
|
except Exception as e:
|
||||||
|
if "ERROR_NONE_MAPPED" in str(e):
|
||||||
|
self.logger.fail(f"User {self.user} is not connected on the target, cannot run the task")
|
||||||
|
if e.error_code and hex(e.error_code) == "0x80070005":
|
||||||
|
self.logger.fail("Schtask_as: Create schedule task got blocked.")
|
||||||
|
if "ERROR_TRUSTED_DOMAIN_FAILURE" in str(e):
|
||||||
|
self.logger.fail(f"User {self.user} does not exist in the domain.")
|
||||||
|
else:
|
||||||
|
self.logger.fail(f"Schtask_as: Create schedule task failed: {e}")
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
taskCreated = True
|
||||||
|
|
||||||
|
self.logger.info(f"Running task \\{tmpName}")
|
||||||
|
tsch.hSchRpcRun(dce, f"\\{tmpName}")
|
||||||
|
|
||||||
|
done = False
|
||||||
|
while not done:
|
||||||
|
self.logger.debug(f"Calling SchRpcGetLastRunInfo for \\{tmpName}")
|
||||||
|
resp = tsch.hSchRpcGetLastRunInfo(dce, f"\\{tmpName}")
|
||||||
|
if resp["pLastRuntime"]["wYear"] != 0:
|
||||||
|
done = True
|
||||||
|
else:
|
||||||
|
sleep(2)
|
||||||
|
|
||||||
|
self.logger.info(f"Deleting task \\{tmpName}")
|
||||||
|
tsch.hSchRpcDelete(dce, f"\\{tmpName}")
|
||||||
|
taskCreated = False
|
||||||
|
|
||||||
|
if taskCreated is True:
|
||||||
|
tsch.hSchRpcDelete(dce, f"\\{tmpName}")
|
||||||
|
|
||||||
|
if self.__retOutput:
|
||||||
|
if fileless:
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
with open(os.path.join("/tmp", "nxc_hosted", self.__output_filename), "r") as output:
|
||||||
|
self.output_callback(output.read())
|
||||||
|
break
|
||||||
|
except IOError:
|
||||||
|
sleep(2)
|
||||||
|
else:
|
||||||
|
smbConnection = self.__rpctransport.get_smb_connection()
|
||||||
|
tries = 1
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
self.logger.info(f"Attempting to read {self.__share}\\{self.__output_filename}")
|
||||||
|
smbConnection.getFile(self.__share, self.__output_filename, self.output_callback)
|
||||||
|
break
|
||||||
|
except Exception as e:
|
||||||
|
if tries >= self.__tries:
|
||||||
|
self.logger.fail("Schtask_as: Could not retrieve output file, it may have been detected by AV. Please increase the number of tries with the option '--get-output-tries'.")
|
||||||
|
break
|
||||||
|
if "STATUS_BAD_NETWORK_NAME" in str(e):
|
||||||
|
self.logger.fail(f"Schtask_as: Getting the output file failed - target has blocked access to the share: {self.__share} (but the command may have executed!)")
|
||||||
|
break
|
||||||
|
if "SHARING" in str(e) or "STATUS_OBJECT_NAME_NOT_FOUND" in str(e):
|
||||||
|
sleep(3)
|
||||||
|
tries += 1
|
||||||
|
else:
|
||||||
|
self.logger.debug(str(e))
|
||||||
|
|
||||||
|
if self.__outputBuffer:
|
||||||
|
self.logger.debug(f"Deleting file {self.__share}\\{self.__output_filename}")
|
||||||
|
smbConnection.deleteFile(self.__share, self.__output_filename)
|
||||||
|
|
||||||
|
dce.disconnect()
|
|
@ -356,6 +356,7 @@ class smb(connection):
|
||||||
hash_ntlm = hashlib.new("md4", msMCSAdmPwd.encode("utf-16le")).digest()
|
hash_ntlm = hashlib.new("md4", msMCSAdmPwd.encode("utf-16le")).digest()
|
||||||
self.hash = binascii.hexlify(hash_ntlm).decode()
|
self.hash = binascii.hexlify(hash_ntlm).decode()
|
||||||
|
|
||||||
|
self.args.local_auth = True
|
||||||
self.domain = self.hostname
|
self.domain = self.hostname
|
||||||
self.logger.extra["protocol"] = "SMB"
|
self.logger.extra["protocol"] = "SMB"
|
||||||
self.logger.extra["port"] = "445"
|
self.logger.extra["port"] = "445"
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand.
|
# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand.
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aardwolf"
|
name = "aardwolf"
|
||||||
version = "0.2.7"
|
version = "0.2.7"
|
||||||
description = "Asynchronous RDP protocol implementation"
|
description = "Asynchronous RDP protocol implementation"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -36,7 +35,6 @@ unicrypto = ">=0.0.10"
|
||||||
name = "aesedb"
|
name = "aesedb"
|
||||||
version = "0.1.4"
|
version = "0.1.4"
|
||||||
description = "NTDS parser toolkit"
|
description = "NTDS parser toolkit"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -53,7 +51,6 @@ unicrypto = ">=0.0.9"
|
||||||
name = "aioconsole"
|
name = "aioconsole"
|
||||||
version = "0.3.3"
|
version = "0.3.3"
|
||||||
description = "Asynchronous console and interfaces for asyncio"
|
description = "Asynchronous console and interfaces for asyncio"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -64,7 +61,6 @@ files = [
|
||||||
name = "aiosmb"
|
name = "aiosmb"
|
||||||
version = "0.4.6"
|
version = "0.4.6"
|
||||||
description = "Asynchronous SMB protocol implementation"
|
description = "Asynchronous SMB protocol implementation"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -88,7 +84,6 @@ winacl = "0.1.7"
|
||||||
name = "aiosqlite"
|
name = "aiosqlite"
|
||||||
version = "0.18.0"
|
version = "0.18.0"
|
||||||
description = "asyncio bridge to the standard sqlite3 module"
|
description = "asyncio bridge to the standard sqlite3 module"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -103,7 +98,6 @@ typing_extensions = {version = ">=4.0", markers = "python_version < \"3.8\""}
|
||||||
name = "aiowinreg"
|
name = "aiowinreg"
|
||||||
version = "0.0.10"
|
version = "0.0.10"
|
||||||
description = "Windows registry file reader"
|
description = "Windows registry file reader"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -118,7 +112,6 @@ winacl = ">=0.1.7"
|
||||||
name = "appdirs"
|
name = "appdirs"
|
||||||
version = "1.4.4"
|
version = "1.4.4"
|
||||||
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
|
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -130,7 +123,6 @@ files = [
|
||||||
name = "arc4"
|
name = "arc4"
|
||||||
version = "0.4.0"
|
version = "0.4.0"
|
||||||
description = "A small and insanely fast ARCFOUR (RC4) cipher implementation of Python"
|
description = "A small and insanely fast ARCFOUR (RC4) cipher implementation of Python"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -165,7 +157,6 @@ files = [
|
||||||
name = "asn1crypto"
|
name = "asn1crypto"
|
||||||
version = "1.5.1"
|
version = "1.5.1"
|
||||||
description = "Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP"
|
description = "Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -177,7 +168,6 @@ files = [
|
||||||
name = "asn1tools"
|
name = "asn1tools"
|
||||||
version = "0.166.0"
|
version = "0.166.0"
|
||||||
description = "ASN.1 parsing, encoding and decoding."
|
description = "ASN.1 parsing, encoding and decoding."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -196,7 +186,6 @@ shell = ["prompt_toolkit"]
|
||||||
name = "astroid"
|
name = "astroid"
|
||||||
version = "2.11.7"
|
version = "2.11.7"
|
||||||
description = "An abstract syntax tree for Python with inference support."
|
description = "An abstract syntax tree for Python with inference support."
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6.2"
|
python-versions = ">=3.6.2"
|
||||||
files = [
|
files = [
|
||||||
|
@ -215,7 +204,6 @@ wrapt = ">=1.11,<2"
|
||||||
name = "asyauth"
|
name = "asyauth"
|
||||||
version = "0.0.14"
|
version = "0.0.14"
|
||||||
description = "Unified authentication library"
|
description = "Unified authentication library"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -233,7 +221,6 @@ unicrypto = "0.0.10"
|
||||||
name = "asysocks"
|
name = "asysocks"
|
||||||
version = "0.2.7"
|
version = "0.2.7"
|
||||||
description = ""
|
description = ""
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -248,7 +235,6 @@ asn1crypto = "*"
|
||||||
name = "attrs"
|
name = "attrs"
|
||||||
version = "23.1.0"
|
version = "23.1.0"
|
||||||
description = "Classes Without Boilerplate"
|
description = "Classes Without Boilerplate"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -270,7 +256,6 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte
|
||||||
name = "bcrypt"
|
name = "bcrypt"
|
||||||
version = "4.0.1"
|
version = "4.0.1"
|
||||||
description = "Modern password hashing for your software and your servers"
|
description = "Modern password hashing for your software and your servers"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -305,7 +290,6 @@ typecheck = ["mypy"]
|
||||||
name = "beautifulsoup4"
|
name = "beautifulsoup4"
|
||||||
version = "4.12.2"
|
version = "4.12.2"
|
||||||
description = "Screen-scraping library"
|
description = "Screen-scraping library"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6.0"
|
python-versions = ">=3.6.0"
|
||||||
files = [
|
files = [
|
||||||
|
@ -324,7 +308,6 @@ lxml = ["lxml"]
|
||||||
name = "bitstruct"
|
name = "bitstruct"
|
||||||
version = "8.17.0"
|
version = "8.17.0"
|
||||||
description = "This module performs conversions between Python values and C bit field structs represented as Python byte strings."
|
description = "This module performs conversions between Python values and C bit field structs represented as Python byte strings."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -335,7 +318,6 @@ files = [
|
||||||
name = "black"
|
name = "black"
|
||||||
version = "20.8b1"
|
version = "20.8b1"
|
||||||
description = "The uncompromising code formatter."
|
description = "The uncompromising code formatter."
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -360,7 +342,6 @@ d = ["aiohttp (>=3.3.2)", "aiohttp-cors"]
|
||||||
name = "bloodhound"
|
name = "bloodhound"
|
||||||
version = "1.6.1"
|
version = "1.6.1"
|
||||||
description = "Python based ingestor for BloodHound"
|
description = "Python based ingestor for BloodHound"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -379,7 +360,6 @@ pyasn1 = ">=0.4"
|
||||||
name = "bs4"
|
name = "bs4"
|
||||||
version = "0.0.1"
|
version = "0.0.1"
|
||||||
description = "Dummy package for Beautiful Soup"
|
description = "Dummy package for Beautiful Soup"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -393,7 +373,6 @@ beautifulsoup4 = "*"
|
||||||
name = "certifi"
|
name = "certifi"
|
||||||
version = "2023.7.22"
|
version = "2023.7.22"
|
||||||
description = "Python package for providing Mozilla's CA Bundle."
|
description = "Python package for providing Mozilla's CA Bundle."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -405,7 +384,6 @@ files = [
|
||||||
name = "cffi"
|
name = "cffi"
|
||||||
version = "1.15.1"
|
version = "1.15.1"
|
||||||
description = "Foreign Function Interface for Python calling C code."
|
description = "Foreign Function Interface for Python calling C code."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -482,7 +460,6 @@ pycparser = "*"
|
||||||
name = "charset-normalizer"
|
name = "charset-normalizer"
|
||||||
version = "3.2.0"
|
version = "3.2.0"
|
||||||
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
|
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7.0"
|
python-versions = ">=3.7.0"
|
||||||
files = [
|
files = [
|
||||||
|
@ -567,7 +544,6 @@ files = [
|
||||||
name = "click"
|
name = "click"
|
||||||
version = "8.1.7"
|
version = "8.1.7"
|
||||||
description = "Composable command line interface toolkit"
|
description = "Composable command line interface toolkit"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -583,7 +559,6 @@ importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
|
||||||
name = "colorama"
|
name = "colorama"
|
||||||
version = "0.4.6"
|
version = "0.4.6"
|
||||||
description = "Cross-platform colored terminal text."
|
description = "Cross-platform colored terminal text."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
|
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -595,7 +570,6 @@ files = [
|
||||||
name = "cryptography"
|
name = "cryptography"
|
||||||
version = "40.0.2"
|
version = "40.0.2"
|
||||||
description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
|
description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -637,7 +611,6 @@ tox = ["tox"]
|
||||||
name = "dill"
|
name = "dill"
|
||||||
version = "0.3.7"
|
version = "0.3.7"
|
||||||
description = "serialize all of Python"
|
description = "serialize all of Python"
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -652,7 +625,6 @@ graph = ["objgraph (>=1.7.2)"]
|
||||||
name = "dnspython"
|
name = "dnspython"
|
||||||
version = "2.3.0"
|
version = "2.3.0"
|
||||||
description = "DNS toolkit"
|
description = "DNS toolkit"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7,<4.0"
|
python-versions = ">=3.7,<4.0"
|
||||||
files = [
|
files = [
|
||||||
|
@ -673,7 +645,6 @@ wmi = ["wmi (>=1.5.1,<2.0.0)"]
|
||||||
name = "dploot"
|
name = "dploot"
|
||||||
version = "2.2.1"
|
version = "2.2.1"
|
||||||
description = "DPAPI looting remotely in Python"
|
description = "DPAPI looting remotely in Python"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7,<4.0"
|
python-versions = ">=3.7,<4.0"
|
||||||
files = [
|
files = [
|
||||||
|
@ -691,7 +662,6 @@ pyasn1 = ">=0.4.8,<0.5.0"
|
||||||
name = "dsinternals"
|
name = "dsinternals"
|
||||||
version = "1.2.4"
|
version = "1.2.4"
|
||||||
description = ""
|
description = ""
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.4"
|
python-versions = ">=3.4"
|
||||||
files = [
|
files = [
|
||||||
|
@ -702,7 +672,6 @@ files = [
|
||||||
name = "exceptiongroup"
|
name = "exceptiongroup"
|
||||||
version = "1.1.3"
|
version = "1.1.3"
|
||||||
description = "Backport of PEP 654 (exception groups)"
|
description = "Backport of PEP 654 (exception groups)"
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -717,7 +686,6 @@ test = ["pytest (>=6)"]
|
||||||
name = "flake8"
|
name = "flake8"
|
||||||
version = "5.0.4"
|
version = "5.0.4"
|
||||||
description = "the modular source code checker: pep8 pyflakes and co"
|
description = "the modular source code checker: pep8 pyflakes and co"
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6.1"
|
python-versions = ">=3.6.1"
|
||||||
files = [
|
files = [
|
||||||
|
@ -735,7 +703,6 @@ pyflakes = ">=2.5.0,<2.6.0"
|
||||||
name = "flask"
|
name = "flask"
|
||||||
version = "2.2.5"
|
version = "2.2.5"
|
||||||
description = "A simple framework for building complex web applications."
|
description = "A simple framework for building complex web applications."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -758,7 +725,6 @@ dotenv = ["python-dotenv"]
|
||||||
name = "future"
|
name = "future"
|
||||||
version = "0.18.3"
|
version = "0.18.3"
|
||||||
description = "Clean single-source support for Python 3 and 2"
|
description = "Clean single-source support for Python 3 and 2"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
|
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -769,7 +735,6 @@ files = [
|
||||||
name = "greenlet"
|
name = "greenlet"
|
||||||
version = "2.0.2"
|
version = "2.0.2"
|
||||||
description = "Lightweight in-process concurrent programming"
|
description = "Lightweight in-process concurrent programming"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"
|
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -778,6 +743,7 @@ files = [
|
||||||
{file = "greenlet-2.0.2-cp27-cp27m-win32.whl", hash = "sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74"},
|
{file = "greenlet-2.0.2-cp27-cp27m-win32.whl", hash = "sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74"},
|
||||||
{file = "greenlet-2.0.2-cp27-cp27m-win_amd64.whl", hash = "sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343"},
|
{file = "greenlet-2.0.2-cp27-cp27m-win_amd64.whl", hash = "sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343"},
|
||||||
{file = "greenlet-2.0.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae"},
|
{file = "greenlet-2.0.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae"},
|
||||||
|
{file = "greenlet-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d967650d3f56af314b72df7089d96cda1083a7fc2da05b375d2bc48c82ab3f3c"},
|
||||||
{file = "greenlet-2.0.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df"},
|
{file = "greenlet-2.0.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df"},
|
||||||
{file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088"},
|
{file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088"},
|
||||||
{file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb"},
|
{file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb"},
|
||||||
|
@ -786,6 +752,7 @@ files = [
|
||||||
{file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91"},
|
{file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91"},
|
||||||
{file = "greenlet-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645"},
|
{file = "greenlet-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645"},
|
||||||
{file = "greenlet-2.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c"},
|
{file = "greenlet-2.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c"},
|
||||||
|
{file = "greenlet-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d4606a527e30548153be1a9f155f4e283d109ffba663a15856089fb55f933e47"},
|
||||||
{file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca"},
|
{file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca"},
|
||||||
{file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0"},
|
{file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0"},
|
||||||
{file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2"},
|
{file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2"},
|
||||||
|
@ -815,6 +782,7 @@ files = [
|
||||||
{file = "greenlet-2.0.2-cp37-cp37m-win32.whl", hash = "sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7"},
|
{file = "greenlet-2.0.2-cp37-cp37m-win32.whl", hash = "sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7"},
|
||||||
{file = "greenlet-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3"},
|
{file = "greenlet-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3"},
|
||||||
{file = "greenlet-2.0.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30"},
|
{file = "greenlet-2.0.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30"},
|
||||||
|
{file = "greenlet-2.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1087300cf9700bbf455b1b97e24db18f2f77b55302a68272c56209d5587c12d1"},
|
||||||
{file = "greenlet-2.0.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b"},
|
{file = "greenlet-2.0.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b"},
|
||||||
{file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526"},
|
{file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526"},
|
||||||
{file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b"},
|
{file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b"},
|
||||||
|
@ -823,6 +791,7 @@ files = [
|
||||||
{file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a"},
|
{file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a"},
|
||||||
{file = "greenlet-2.0.2-cp38-cp38-win32.whl", hash = "sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249"},
|
{file = "greenlet-2.0.2-cp38-cp38-win32.whl", hash = "sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249"},
|
||||||
{file = "greenlet-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40"},
|
{file = "greenlet-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40"},
|
||||||
|
{file = "greenlet-2.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8512a0c38cfd4e66a858ddd1b17705587900dd760c6003998e9472b77b56d417"},
|
||||||
{file = "greenlet-2.0.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8"},
|
{file = "greenlet-2.0.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8"},
|
||||||
{file = "greenlet-2.0.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6"},
|
{file = "greenlet-2.0.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6"},
|
||||||
{file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df"},
|
{file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df"},
|
||||||
|
@ -843,7 +812,6 @@ test = ["objgraph", "psutil"]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "3.4"
|
version = "3.4"
|
||||||
description = "Internationalized Domain Names in Applications (IDNA)"
|
description = "Internationalized Domain Names in Applications (IDNA)"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.5"
|
python-versions = ">=3.5"
|
||||||
files = [
|
files = [
|
||||||
|
@ -883,7 +851,6 @@ resolved_reference = "3beeda7c3188936ed20f58c2c169430c2cfdfb1a"
|
||||||
name = "importlib-metadata"
|
name = "importlib-metadata"
|
||||||
version = "4.2.0"
|
version = "4.2.0"
|
||||||
description = "Read metadata from Python packages"
|
description = "Read metadata from Python packages"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -903,7 +870,6 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pep517",
|
||||||
name = "importlib-resources"
|
name = "importlib-resources"
|
||||||
version = "5.12.0"
|
version = "5.12.0"
|
||||||
description = "Read resources from Python packages"
|
description = "Read resources from Python packages"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -922,7 +888,6 @@ testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-chec
|
||||||
name = "iniconfig"
|
name = "iniconfig"
|
||||||
version = "2.0.0"
|
version = "2.0.0"
|
||||||
description = "brain-dead simple config-ini parsing"
|
description = "brain-dead simple config-ini parsing"
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -934,7 +899,6 @@ files = [
|
||||||
name = "isort"
|
name = "isort"
|
||||||
version = "5.11.5"
|
version = "5.11.5"
|
||||||
description = "A Python utility / library to sort Python imports."
|
description = "A Python utility / library to sort Python imports."
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7.0"
|
python-versions = ">=3.7.0"
|
||||||
files = [
|
files = [
|
||||||
|
@ -952,7 +916,6 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"]
|
||||||
name = "itsdangerous"
|
name = "itsdangerous"
|
||||||
version = "2.1.2"
|
version = "2.1.2"
|
||||||
description = "Safely pass data to untrusted environments and back."
|
description = "Safely pass data to untrusted environments and back."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -964,7 +927,6 @@ files = [
|
||||||
name = "jinja2"
|
name = "jinja2"
|
||||||
version = "3.1.2"
|
version = "3.1.2"
|
||||||
description = "A very fast and expressive template engine."
|
description = "A very fast and expressive template engine."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -982,7 +944,6 @@ i18n = ["Babel (>=2.7)"]
|
||||||
name = "jsonform"
|
name = "jsonform"
|
||||||
version = "0.0.2"
|
version = "0.0.2"
|
||||||
description = "Form validation for JSON-like data (i.e. document) in Python."
|
description = "Form validation for JSON-like data (i.e. document) in Python."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -997,7 +958,6 @@ jsonschema = "*"
|
||||||
name = "jsonschema"
|
name = "jsonschema"
|
||||||
version = "4.17.3"
|
version = "4.17.3"
|
||||||
description = "An implementation of JSON Schema validation for Python"
|
description = "An implementation of JSON Schema validation for Python"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1021,7 +981,6 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-
|
||||||
name = "jsonsir"
|
name = "jsonsir"
|
||||||
version = "0.0.2"
|
version = "0.0.2"
|
||||||
description = "A serializer for JSON-like data in Python."
|
description = "A serializer for JSON-like data in Python."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1033,7 +992,6 @@ files = [
|
||||||
name = "lazy-object-proxy"
|
name = "lazy-object-proxy"
|
||||||
version = "1.9.0"
|
version = "1.9.0"
|
||||||
description = "A fast and thorough lazy object proxy."
|
description = "A fast and thorough lazy object proxy."
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1079,7 +1037,6 @@ files = [
|
||||||
name = "ldap3"
|
name = "ldap3"
|
||||||
version = "2.9.1"
|
version = "2.9.1"
|
||||||
description = "A strictly RFC 4510 conforming LDAP V3 pure Python client library"
|
description = "A strictly RFC 4510 conforming LDAP V3 pure Python client library"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1094,7 +1051,6 @@ pyasn1 = ">=0.4.6"
|
||||||
name = "ldapdomaindump"
|
name = "ldapdomaindump"
|
||||||
version = "0.9.4"
|
version = "0.9.4"
|
||||||
description = "Active Directory information dumper via LDAP"
|
description = "Active Directory information dumper via LDAP"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1112,7 +1068,6 @@ ldap3 = ">2.5.0,<2.5.2 || >2.5.2,<2.6 || >2.6"
|
||||||
name = "lsassy"
|
name = "lsassy"
|
||||||
version = "3.1.8"
|
version = "3.1.8"
|
||||||
description = "Python library to extract credentials from lsass remotely"
|
description = "Python library to extract credentials from lsass remotely"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1130,7 +1085,6 @@ rich = "*"
|
||||||
name = "lxml"
|
name = "lxml"
|
||||||
version = "4.9.2"
|
version = "4.9.2"
|
||||||
description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
|
description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*"
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1223,7 +1177,6 @@ source = ["Cython (>=0.29.7)"]
|
||||||
name = "markdown-it-py"
|
name = "markdown-it-py"
|
||||||
version = "2.2.0"
|
version = "2.2.0"
|
||||||
description = "Python port of markdown-it. Markdown parsing, done right!"
|
description = "Python port of markdown-it. Markdown parsing, done right!"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1249,7 +1202,6 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"]
|
||||||
name = "markupsafe"
|
name = "markupsafe"
|
||||||
version = "2.1.3"
|
version = "2.1.3"
|
||||||
description = "Safely add untrusted strings to HTML/XML markup."
|
description = "Safely add untrusted strings to HTML/XML markup."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1273,6 +1225,16 @@ files = [
|
||||||
{file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"},
|
{file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"},
|
||||||
{file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"},
|
{file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"},
|
||||||
{file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"},
|
{file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"},
|
||||||
|
{file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"},
|
||||||
|
{file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"},
|
||||||
|
{file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"},
|
||||||
|
{file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"},
|
||||||
|
{file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"},
|
||||||
|
{file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"},
|
||||||
|
{file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"},
|
||||||
|
{file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"},
|
||||||
|
{file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"},
|
||||||
|
{file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"},
|
||||||
{file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"},
|
{file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"},
|
||||||
{file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"},
|
{file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"},
|
||||||
{file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"},
|
{file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"},
|
||||||
|
@ -1309,7 +1271,6 @@ files = [
|
||||||
name = "masky"
|
name = "masky"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
description = "Python library with CLI allowing to remotely dump domain user credentials via an ADCS"
|
description = "Python library with CLI allowing to remotely dump domain user credentials via an ADCS"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1328,7 +1289,6 @@ pyasn1 = "*"
|
||||||
name = "mccabe"
|
name = "mccabe"
|
||||||
version = "0.7.0"
|
version = "0.7.0"
|
||||||
description = "McCabe checker, plugin for flake8"
|
description = "McCabe checker, plugin for flake8"
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1340,7 +1300,6 @@ files = [
|
||||||
name = "mdurl"
|
name = "mdurl"
|
||||||
version = "0.1.2"
|
version = "0.1.2"
|
||||||
description = "Markdown URL utilities"
|
description = "Markdown URL utilities"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1352,7 +1311,6 @@ files = [
|
||||||
name = "minidump"
|
name = "minidump"
|
||||||
version = "0.0.21"
|
version = "0.0.21"
|
||||||
description = "Python library to parse Windows minidump file format"
|
description = "Python library to parse Windows minidump file format"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1364,7 +1322,6 @@ files = [
|
||||||
name = "minikerberos"
|
name = "minikerberos"
|
||||||
version = "0.4.1"
|
version = "0.4.1"
|
||||||
description = "Kerberos manipulation library in pure Python"
|
description = "Kerberos manipulation library in pure Python"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1384,7 +1341,6 @@ unicrypto = "0.0.10"
|
||||||
name = "msgpack"
|
name = "msgpack"
|
||||||
version = "1.0.5"
|
version = "1.0.5"
|
||||||
description = "MessagePack serializer"
|
description = "MessagePack serializer"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1457,7 +1413,6 @@ files = [
|
||||||
name = "msldap"
|
name = "msldap"
|
||||||
version = "0.5.5"
|
version = "0.5.5"
|
||||||
description = "Python library to play with MS LDAP"
|
description = "Python library to play with MS LDAP"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1479,7 +1434,6 @@ winacl = "0.1.7"
|
||||||
name = "mypy-extensions"
|
name = "mypy-extensions"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
description = "Type system extensions for programs checked with the mypy type checker."
|
description = "Type system extensions for programs checked with the mypy type checker."
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.5"
|
python-versions = ">=3.5"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1491,7 +1445,6 @@ files = [
|
||||||
name = "neo4j"
|
name = "neo4j"
|
||||||
version = "4.4.11"
|
version = "4.4.11"
|
||||||
description = "Neo4j Bolt driver for Python"
|
description = "Neo4j Bolt driver for Python"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1505,7 +1458,6 @@ pytz = "*"
|
||||||
name = "netaddr"
|
name = "netaddr"
|
||||||
version = "0.8.0"
|
version = "0.8.0"
|
||||||
description = "A network address manipulation library for Python"
|
description = "A network address manipulation library for Python"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1517,7 +1469,6 @@ files = [
|
||||||
name = "oscrypto"
|
name = "oscrypto"
|
||||||
version = "1.3.0"
|
version = "1.3.0"
|
||||||
description = ""
|
description = ""
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = []
|
files = []
|
||||||
|
@ -1536,7 +1487,6 @@ resolved_reference = "d5f3437ed24257895ae1edd9e503cfb352e635a8"
|
||||||
name = "packaging"
|
name = "packaging"
|
||||||
version = "23.1"
|
version = "23.1"
|
||||||
description = "Core utilities for Python packages"
|
description = "Core utilities for Python packages"
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1548,7 +1498,6 @@ files = [
|
||||||
name = "paramiko"
|
name = "paramiko"
|
||||||
version = "2.12.0"
|
version = "2.12.0"
|
||||||
description = "SSH2 protocol library"
|
description = "SSH2 protocol library"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1572,7 +1521,6 @@ invoke = ["invoke (>=1.3)"]
|
||||||
name = "pathspec"
|
name = "pathspec"
|
||||||
version = "0.11.2"
|
version = "0.11.2"
|
||||||
description = "Utility library for gitignore style pattern matching of file paths."
|
description = "Utility library for gitignore style pattern matching of file paths."
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1584,7 +1532,6 @@ files = [
|
||||||
name = "pillow"
|
name = "pillow"
|
||||||
version = "9.5.0"
|
version = "9.5.0"
|
||||||
description = "Python Imaging Library (Fork)"
|
description = "Python Imaging Library (Fork)"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1664,7 +1611,6 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa
|
||||||
name = "pip"
|
name = "pip"
|
||||||
version = "23.2.1"
|
version = "23.2.1"
|
||||||
description = "The PyPA recommended tool for installing Python packages."
|
description = "The PyPA recommended tool for installing Python packages."
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1676,7 +1622,6 @@ files = [
|
||||||
name = "pkgutil-resolve-name"
|
name = "pkgutil-resolve-name"
|
||||||
version = "1.3.10"
|
version = "1.3.10"
|
||||||
description = "Resolve a name to an object."
|
description = "Resolve a name to an object."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1688,7 +1633,6 @@ files = [
|
||||||
name = "platformdirs"
|
name = "platformdirs"
|
||||||
version = "3.10.0"
|
version = "3.10.0"
|
||||||
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
|
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1707,7 +1651,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co
|
||||||
name = "pluggy"
|
name = "pluggy"
|
||||||
version = "1.2.0"
|
version = "1.2.0"
|
||||||
description = "plugin and hook calling mechanisms for python"
|
description = "plugin and hook calling mechanisms for python"
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1726,7 +1669,6 @@ testing = ["pytest", "pytest-benchmark"]
|
||||||
name = "prompt-toolkit"
|
name = "prompt-toolkit"
|
||||||
version = "3.0.39"
|
version = "3.0.39"
|
||||||
description = "Library for building powerful interactive command lines in Python"
|
description = "Library for building powerful interactive command lines in Python"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7.0"
|
python-versions = ">=3.7.0"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1741,7 +1683,6 @@ wcwidth = "*"
|
||||||
name = "pyasn1"
|
name = "pyasn1"
|
||||||
version = "0.4.8"
|
version = "0.4.8"
|
||||||
description = "ASN.1 types and codecs"
|
description = "ASN.1 types and codecs"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1753,7 +1694,6 @@ files = [
|
||||||
name = "pyasn1-modules"
|
name = "pyasn1-modules"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
description = "A collection of ASN.1-based protocols modules"
|
description = "A collection of ASN.1-based protocols modules"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7"
|
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1768,7 +1708,6 @@ pyasn1 = ">=0.4.6,<0.6.0"
|
||||||
name = "pycodestyle"
|
name = "pycodestyle"
|
||||||
version = "2.9.1"
|
version = "2.9.1"
|
||||||
description = "Python style guide checker"
|
description = "Python style guide checker"
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1780,7 +1719,6 @@ files = [
|
||||||
name = "pycparser"
|
name = "pycparser"
|
||||||
version = "2.21"
|
version = "2.21"
|
||||||
description = "C parser in Python"
|
description = "C parser in Python"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1792,7 +1730,6 @@ files = [
|
||||||
name = "pycryptodomex"
|
name = "pycryptodomex"
|
||||||
version = "3.18.0"
|
version = "3.18.0"
|
||||||
description = "Cryptographic library for Python"
|
description = "Cryptographic library for Python"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1834,7 +1771,6 @@ files = [
|
||||||
name = "pyflakes"
|
name = "pyflakes"
|
||||||
version = "2.5.0"
|
version = "2.5.0"
|
||||||
description = "passive checker of Python programs"
|
description = "passive checker of Python programs"
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1846,7 +1782,6 @@ files = [
|
||||||
name = "pygments"
|
name = "pygments"
|
||||||
version = "2.16.1"
|
version = "2.16.1"
|
||||||
description = "Pygments is a syntax highlighting package written in Python."
|
description = "Pygments is a syntax highlighting package written in Python."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1861,7 +1796,6 @@ plugins = ["importlib-metadata"]
|
||||||
name = "pylint"
|
name = "pylint"
|
||||||
version = "2.13.9"
|
version = "2.13.9"
|
||||||
description = "python code static checker"
|
description = "python code static checker"
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6.2"
|
python-versions = ">=3.6.2"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1886,7 +1820,6 @@ testutil = ["gitpython (>3)"]
|
||||||
name = "pylnk3"
|
name = "pylnk3"
|
||||||
version = "0.4.2"
|
version = "0.4.2"
|
||||||
description = "Windows LNK File Parser and Creator"
|
description = "Windows LNK File Parser and Creator"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1898,7 +1831,6 @@ files = [
|
||||||
name = "pynacl"
|
name = "pynacl"
|
||||||
version = "1.5.0"
|
version = "1.5.0"
|
||||||
description = "Python binding to the Networking and Cryptography (NaCl) library"
|
description = "Python binding to the Networking and Cryptography (NaCl) library"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1925,7 +1857,6 @@ tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"]
|
||||||
name = "pyopenssl"
|
name = "pyopenssl"
|
||||||
version = "23.2.0"
|
version = "23.2.0"
|
||||||
description = "Python wrapper module around the OpenSSL library"
|
description = "Python wrapper module around the OpenSSL library"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1944,7 +1875,6 @@ test = ["flaky", "pretend", "pytest (>=3.0.1)"]
|
||||||
name = "pyparsing"
|
name = "pyparsing"
|
||||||
version = "3.1.1"
|
version = "3.1.1"
|
||||||
description = "pyparsing module - Classes and methods to define and execute parsing grammars"
|
description = "pyparsing module - Classes and methods to define and execute parsing grammars"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6.8"
|
python-versions = ">=3.6.8"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1959,7 +1889,6 @@ diagrams = ["jinja2", "railroad-diagrams"]
|
||||||
name = "pyperclip"
|
name = "pyperclip"
|
||||||
version = "1.8.2"
|
version = "1.8.2"
|
||||||
description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)"
|
description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1970,7 +1899,6 @@ files = [
|
||||||
name = "pypsrp"
|
name = "pypsrp"
|
||||||
version = "0.7.0"
|
version = "0.7.0"
|
||||||
description = "PowerShell Remoting Protocol and WinRM for Python"
|
description = "PowerShell Remoting Protocol and WinRM for Python"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6,<4.0"
|
python-versions = ">=3.6,<4.0"
|
||||||
files = [
|
files = [
|
||||||
|
@ -1991,7 +1919,6 @@ kerberos = ["gssapi (>=1.5.0,<2.0.0)", "krb5 (<1.0.0)"]
|
||||||
name = "pypykatz"
|
name = "pypykatz"
|
||||||
version = "0.6.8"
|
version = "0.6.8"
|
||||||
description = "Python implementation of Mimikatz"
|
description = "Python implementation of Mimikatz"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2014,7 +1941,6 @@ winacl = "0.1.7"
|
||||||
name = "pyrsistent"
|
name = "pyrsistent"
|
||||||
version = "0.19.3"
|
version = "0.19.3"
|
||||||
description = "Persistent/Functional/Immutable data structures"
|
description = "Persistent/Functional/Immutable data structures"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2051,7 +1977,6 @@ files = [
|
||||||
name = "pyspnego"
|
name = "pyspnego"
|
||||||
version = "0.9.1"
|
version = "0.9.1"
|
||||||
description = "Windows Negotiate Authentication Client and Server"
|
description = "Windows Negotiate Authentication Client and Server"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2080,7 +2005,6 @@ yaml = ["ruamel.yaml"]
|
||||||
name = "pytest"
|
name = "pytest"
|
||||||
version = "7.4.0"
|
version = "7.4.0"
|
||||||
description = "pytest: simple powerful testing with Python"
|
description = "pytest: simple powerful testing with Python"
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2104,7 +2028,6 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no
|
||||||
name = "python-easyconfig"
|
name = "python-easyconfig"
|
||||||
version = "0.1.7"
|
version = "0.1.7"
|
||||||
description = "A simple library for loading configurations easily in Python, inspired by `flask.config`."
|
description = "A simple library for loading configurations easily in Python, inspired by `flask.config`."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2120,7 +2043,6 @@ six = "*"
|
||||||
name = "python-libnmap"
|
name = "python-libnmap"
|
||||||
version = "0.7.3"
|
version = "0.7.3"
|
||||||
description = "Python NMAP library enabling you to start async nmap tasks, parse and compare/diff scan results"
|
description = "Python NMAP library enabling you to start async nmap tasks, parse and compare/diff scan results"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2134,7 +2056,6 @@ defusedxml = ["defusedxml (>=0.6.0)"]
|
||||||
name = "pytz"
|
name = "pytz"
|
||||||
version = "2023.3"
|
version = "2023.3"
|
||||||
description = "World timezone definitions, modern and historical"
|
description = "World timezone definitions, modern and historical"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2146,7 +2067,6 @@ files = [
|
||||||
name = "pywerview"
|
name = "pywerview"
|
||||||
version = "0.3.3"
|
version = "0.3.3"
|
||||||
description = "A Python port of PowerSploit's PowerView"
|
description = "A Python port of PowerSploit's PowerView"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2163,7 +2083,6 @@ lxml = "*"
|
||||||
name = "pyyaml"
|
name = "pyyaml"
|
||||||
version = "6.0.1"
|
version = "6.0.1"
|
||||||
description = "YAML parser and emitter for Python"
|
description = "YAML parser and emitter for Python"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2172,6 +2091,7 @@ files = [
|
||||||
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"},
|
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"},
|
||||||
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"},
|
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"},
|
||||||
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"},
|
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"},
|
||||||
|
{file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"},
|
||||||
{file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"},
|
{file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"},
|
||||||
{file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"},
|
{file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"},
|
||||||
{file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"},
|
{file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"},
|
||||||
|
@ -2179,8 +2099,15 @@ files = [
|
||||||
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"},
|
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"},
|
||||||
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"},
|
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"},
|
||||||
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"},
|
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"},
|
||||||
|
{file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"},
|
||||||
{file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"},
|
{file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"},
|
||||||
{file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"},
|
{file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"},
|
||||||
|
{file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"},
|
||||||
|
{file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"},
|
||||||
|
{file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"},
|
||||||
|
{file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"},
|
||||||
|
{file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"},
|
||||||
|
{file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"},
|
||||||
{file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"},
|
{file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"},
|
||||||
{file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"},
|
{file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"},
|
||||||
{file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"},
|
{file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"},
|
||||||
|
@ -2197,6 +2124,7 @@ files = [
|
||||||
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"},
|
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"},
|
||||||
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"},
|
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"},
|
||||||
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"},
|
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"},
|
||||||
|
{file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"},
|
||||||
{file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"},
|
{file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"},
|
||||||
{file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"},
|
{file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"},
|
||||||
{file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"},
|
{file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"},
|
||||||
|
@ -2204,6 +2132,7 @@ files = [
|
||||||
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"},
|
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"},
|
||||||
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"},
|
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"},
|
||||||
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"},
|
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"},
|
||||||
|
{file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"},
|
||||||
{file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"},
|
{file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"},
|
||||||
{file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"},
|
{file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"},
|
||||||
{file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"},
|
{file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"},
|
||||||
|
@ -2213,7 +2142,6 @@ files = [
|
||||||
name = "regex"
|
name = "regex"
|
||||||
version = "2023.8.8"
|
version = "2023.8.8"
|
||||||
description = "Alternative regular expression module, to replace re."
|
description = "Alternative regular expression module, to replace re."
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2311,7 +2239,6 @@ files = [
|
||||||
name = "requests"
|
name = "requests"
|
||||||
version = "2.31.0"
|
version = "2.31.0"
|
||||||
description = "Python HTTP for Humans."
|
description = "Python HTTP for Humans."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2333,7 +2260,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
|
||||||
name = "resource"
|
name = "resource"
|
||||||
version = "0.2.1"
|
version = "0.2.1"
|
||||||
description = "A Python library concentrated on the Resource layer of RESTful APIs."
|
description = "A Python library concentrated on the Resource layer of RESTful APIs."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2350,7 +2276,6 @@ python-easyconfig = ">=0.1.0"
|
||||||
name = "rich"
|
name = "rich"
|
||||||
version = "13.5.2"
|
version = "13.5.2"
|
||||||
description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
|
description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7.0"
|
python-versions = ">=3.7.0"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2370,7 +2295,6 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"]
|
||||||
name = "setuptools"
|
name = "setuptools"
|
||||||
version = "68.0.0"
|
version = "68.0.0"
|
||||||
description = "Easily download, build, install, upgrade, and uninstall Python packages"
|
description = "Easily download, build, install, upgrade, and uninstall Python packages"
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2387,7 +2311,6 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (
|
||||||
name = "shiv"
|
name = "shiv"
|
||||||
version = "1.0.3"
|
version = "1.0.3"
|
||||||
description = "A command line utility for building fully self contained Python zipapps."
|
description = "A command line utility for building fully self contained Python zipapps."
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2404,7 +2327,6 @@ setuptools = "*"
|
||||||
name = "six"
|
name = "six"
|
||||||
version = "1.16.0"
|
version = "1.16.0"
|
||||||
description = "Python 2 and 3 compatibility utilities"
|
description = "Python 2 and 3 compatibility utilities"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2416,7 +2338,6 @@ files = [
|
||||||
name = "soupsieve"
|
name = "soupsieve"
|
||||||
version = "2.4.1"
|
version = "2.4.1"
|
||||||
description = "A modern CSS selector implementation for Beautiful Soup."
|
description = "A modern CSS selector implementation for Beautiful Soup."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2428,7 +2349,6 @@ files = [
|
||||||
name = "sqlalchemy"
|
name = "sqlalchemy"
|
||||||
version = "2.0.20"
|
version = "2.0.20"
|
||||||
description = "Database Abstraction Library"
|
description = "Database Abstraction Library"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2508,7 +2428,6 @@ sqlcipher = ["sqlcipher3-binary"]
|
||||||
name = "termcolor"
|
name = "termcolor"
|
||||||
version = "1.1.0"
|
version = "1.1.0"
|
||||||
description = "ANSII Color formatting for output in terminal."
|
description = "ANSII Color formatting for output in terminal."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2519,7 +2438,6 @@ files = [
|
||||||
name = "terminaltables"
|
name = "terminaltables"
|
||||||
version = "3.1.10"
|
version = "3.1.10"
|
||||||
description = "Generate simple tables in terminals from a nested list of strings."
|
description = "Generate simple tables in terminals from a nested list of strings."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.6"
|
python-versions = ">=2.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2531,7 +2449,6 @@ files = [
|
||||||
name = "toml"
|
name = "toml"
|
||||||
version = "0.10.2"
|
version = "0.10.2"
|
||||||
description = "Python Library for Tom's Obvious, Minimal Language"
|
description = "Python Library for Tom's Obvious, Minimal Language"
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
|
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2543,7 +2460,6 @@ files = [
|
||||||
name = "tomli"
|
name = "tomli"
|
||||||
version = "2.0.1"
|
version = "2.0.1"
|
||||||
description = "A lil' TOML parser"
|
description = "A lil' TOML parser"
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2555,7 +2471,6 @@ files = [
|
||||||
name = "tqdm"
|
name = "tqdm"
|
||||||
version = "4.66.1"
|
version = "4.66.1"
|
||||||
description = "Fast, Extensible Progress Meter"
|
description = "Fast, Extensible Progress Meter"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2576,7 +2491,6 @@ telegram = ["requests"]
|
||||||
name = "typed-ast"
|
name = "typed-ast"
|
||||||
version = "1.5.5"
|
version = "1.5.5"
|
||||||
description = "a fork of Python 2 and 3 ast modules with type comment support"
|
description = "a fork of Python 2 and 3 ast modules with type comment support"
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2627,7 +2541,6 @@ files = [
|
||||||
name = "typing-extensions"
|
name = "typing-extensions"
|
||||||
version = "4.7.1"
|
version = "4.7.1"
|
||||||
description = "Backported and Experimental Type Hints for Python 3.7+"
|
description = "Backported and Experimental Type Hints for Python 3.7+"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2639,7 +2552,6 @@ files = [
|
||||||
name = "unicrypto"
|
name = "unicrypto"
|
||||||
version = "0.0.10"
|
version = "0.0.10"
|
||||||
description = "Unified interface for cryptographic libraries"
|
description = "Unified interface for cryptographic libraries"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2651,14 +2563,13 @@ pycryptodomex = "*"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "urllib3"
|
name = "urllib3"
|
||||||
version = "2.0.4"
|
version = "2.0.6"
|
||||||
description = "HTTP library with thread-safe connection pooling, file post, and more."
|
description = "HTTP library with thread-safe connection pooling, file post, and more."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
{file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"},
|
{file = "urllib3-2.0.6-py3-none-any.whl", hash = "sha256:7a7c7003b000adf9e7ca2a377c9688bbc54ed41b985789ed576570342a375cd2"},
|
||||||
{file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"},
|
{file = "urllib3-2.0.6.tar.gz", hash = "sha256:b19e1a85d206b56d7df1d5e683df4a7725252a964e3993648dd0fb5a1c157564"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
|
@ -2671,7 +2582,6 @@ zstd = ["zstandard (>=0.18.0)"]
|
||||||
name = "wcwidth"
|
name = "wcwidth"
|
||||||
version = "0.2.6"
|
version = "0.2.6"
|
||||||
description = "Measures the displayed width of unicode strings in a terminal"
|
description = "Measures the displayed width of unicode strings in a terminal"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2683,7 +2593,6 @@ files = [
|
||||||
name = "werkzeug"
|
name = "werkzeug"
|
||||||
version = "2.2.3"
|
version = "2.2.3"
|
||||||
description = "The comprehensive WSGI web application library."
|
description = "The comprehensive WSGI web application library."
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2701,7 +2610,6 @@ watchdog = ["watchdog"]
|
||||||
name = "winacl"
|
name = "winacl"
|
||||||
version = "0.1.7"
|
version = "0.1.7"
|
||||||
description = "ACL/ACE/Security Descriptor manipulation library in pure Python"
|
description = "ACL/ACE/Security Descriptor manipulation library in pure Python"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2716,7 +2624,6 @@ cryptography = ">=38.0.1"
|
||||||
name = "wrapt"
|
name = "wrapt"
|
||||||
version = "1.15.0"
|
version = "1.15.0"
|
||||||
description = "Module for decorators, wrappers and monkey patching."
|
description = "Module for decorators, wrappers and monkey patching."
|
||||||
category = "dev"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
|
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2801,7 +2708,6 @@ files = [
|
||||||
name = "xmltodict"
|
name = "xmltodict"
|
||||||
version = "0.12.0"
|
version = "0.12.0"
|
||||||
description = "Makes working with XML feel like you are working with JSON"
|
description = "Makes working with XML feel like you are working with JSON"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2813,7 +2719,6 @@ files = [
|
||||||
name = "zipp"
|
name = "zipp"
|
||||||
version = "3.15.0"
|
version = "3.15.0"
|
||||||
description = "Backport of pathlib-compatible object wrapper for zip files"
|
description = "Backport of pathlib-compatible object wrapper for zip files"
|
||||||
category = "main"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
|
@ -2828,4 +2733,4 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.0"
|
lock-version = "2.0"
|
||||||
python-versions = "^3.7.0"
|
python-versions = "^3.7.0"
|
||||||
content-hash = "9dc5181178139fe742c1b9d18de9613e544a11e221b30299aabc8ab04b68cc09"
|
content-hash = "9dc5181178139fe742c1b9d18de9613e544a11e221b30299aabc8ab04b68cc09"
|
||||||
|
|
Loading…
Reference in New Issue