The Network Execution Tool
This report summarizes scanner evidence for Pennyw0rth/NetExec, a Python project with 5,921 GitHub stars. SynthScan examined 49,159 lines of code across 273 source files, recording 1127 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 31.4 (High pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 400 finding(s).
Are imports declared and package/API names verified? 4 finding(s).
Are wrappers, guards, and repeated structures necessary? 829 finding(s).
Which changes need focused human review? 1127 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1127 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | build_collector.py | 22 | except Exception as e: | CODE |
| LOW | build_collector.py | 29 | except Exception as e: | CODE |
| LOW | nxc/database.py | 32 | except Exception as e: | CODE |
| MEDIUM | nxc/database.py | 28 | def open_config(config_path): | CODE |
| LOW | nxc/netexec.py | 66 | except Exception: | CODE |
| LOW | nxc/netexec.py | 119 | except Exception as e: | CODE |
| LOW | nxc/logger.py | 174 | except Exception as e: | CODE |
| LOW | nxc/connection.py | 47 | except Exception: | CODE |
| LOW | nxc/connection.py | 68 | except Exception: | CODE |
| LOW | nxc/connection.py | 77 | except Exception: | CODE |
| LOW | nxc/connection.py | 128 | except Exception as e: | CODE |
| LOW | nxc/connection.py | 187 | except Exception as e: | CODE |
| LOW | nxc/connection.py | 209 | except Exception as e: | CODE |
| MEDIUM | nxc/connection.py | 200 | def resolver(self, target): | CODE |
| LOW | nxc/cli.py | 120 | except Exception as e: | STRING |
| LOW | nxc/parsers/ldap_results.py | 54 | except Exception: | CODE |
| MEDIUM | nxc/parsers/ldap_results.py | 39 | def sid_to_str(sid): | CODE |
| LOW | nxc/parsers/ip.py | 32 | except Exception as e: | CODE |
| LOW | nxc/modules/recyclebin.py | 86 | except Exception as e: | CODE |
| LOW | nxc/modules/smbghost.py | 57 | except Exception as e: | CODE |
| LOW | nxc/modules/sccm-recon6.py | 45 | except Exception as e: | CODE |
| LOW | nxc/modules/sccm-recon6.py | 113 | except Exception as e: | CODE |
| LOW | nxc/modules/sccm-recon6.py | 119 | except Exception as e: | CODE |
| LOW | nxc/modules/ntdsutil.py | 70 | except Exception as e: | CODE |
| LOW | nxc/modules/ntdsutil.py | 82 | except Exception as e: | CODE |
| LOW | nxc/modules/ntdsutil.py | 94 | except Exception as e: | CODE |
| LOW | nxc/modules/ntdsutil.py | 103 | except Exception as e: | CODE |
| LOW | nxc/modules/ntdsutil.py | 136 | except Exception: | CODE |
| LOW | nxc/modules/ntdsutil.py | 170 | except Exception as e: | CODE |
| LOW | nxc/modules/find-computer.py | 66 | except Exception as e: | CODE |
| LOW | nxc/modules/reg-query.py | 63 | except Exception as e: | CODE |
| LOW⚡ | nxc/modules/reg-query.py | 112 | except Exception as e: | CODE |
| LOW | nxc/modules/reg-query.py | 135 | except Exception: | CODE |
| LOW | nxc/modules/reg-query.py | 150 | except Exception: | CODE |
| LOW | nxc/modules/reg-query.py | 159 | except Exception as e: | CODE |
| LOW | nxc/modules/wcc.py | 246 | except Exception as e: | CODE |
| LOW | nxc/modules/wcc.py | 278 | except Exception as e: | CODE |
| LOW | nxc/modules/wcc.py | 507 | except Exception: | CODE |
| LOW | nxc/modules/wcc.py | 520 | except Exception as e: | CODE |
| LOW | nxc/modules/wcc.py | 585 | except Exception as e: | CODE |
| LOW | nxc/modules/wcc.py | 606 | except Exception as e: | CODE |
| LOW | nxc/modules/wcc.py | 727 | except Exception as e: | CODE |
| MEDIUM | nxc/modules/wcc.py | 512 | def check_defender_exclusion(self, *spec, options=None): | CODE |
| LOW | nxc/modules/enable_cmdshell.py | 76 | except Exception as e: | CODE |
| LOW | nxc/modules/hyperv-host.py | 50 | except Exception as e: | CODE |
| LOW | nxc/modules/example_module.py | 46 | except Exception as e: | CODE |
| LOW⚡ | nxc/modules/remove-mic.py | 118 | except Exception: | CODE |
| LOW⚡ | nxc/modules/remove-mic.py | 122 | except Exception: | CODE |
| LOW⚡ | nxc/modules/remove-mic.py | 126 | except Exception: | CODE |
| LOW | nxc/modules/spooler.py | 54 | except Exception as e: | CODE |
| LOW | nxc/modules/spooler.py | 98 | except Exception: | CODE |
| LOW | nxc/modules/putty.py | 153 | except Exception as e: | CODE |
| LOW | nxc/modules/putty.py | 174 | except Exception as e: | CODE |
| LOW | nxc/modules/putty.py | 227 | except Exception as e: | CODE |
| LOW | nxc/modules/wdigest.py | 87 | except Exception: | CODE |
| LOW | nxc/modules/shadowrdp.py | 51 | except Exception as e: | CODE |
| LOW | nxc/modules/shadowrdp.py | 81 | except Exception as e: | CODE |
| MEDIUM | nxc/modules/shadowrdp.py | 30 | def on_admin_login(self, context, connection): | CODE |
| LOW⚡ | nxc/modules/wifi.py | 28 | except Exception as e: | CODE |
| LOW⚡ | nxc/modules/wifi.py | 36 | except Exception: | CODE |
| 554 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | nxc/netexec.py | 81 | CODE | |
| LOW | nxc/connection.py | 34 | CODE | |
| LOW | nxc/connection.py | 104 | CODE | |
| LOW | nxc/connection.py | 386 | CODE | |
| LOW | nxc/connection.py | 481 | CODE | |
| LOW | nxc/connection.py | 528 | CODE | |
| LOW | nxc/nxcdb.py | 120 | CODE | |
| LOW | nxc/nxcdb.py | 388 | CODE | |
| LOW | nxc/nxcdb.py | 471 | CODE | |
| LOW | nxc/parsers/ldap_results.py | 5 | CODE | |
| LOW | nxc/parsers/ip.py | 15 | CODE | |
| LOW | nxc/parsers/ip.py | 88 | CODE | |
| LOW | nxc/parsers/ip.py | 114 | CODE | |
| LOW | nxc/modules/recyclebin.py | 24 | CODE | |
| LOW | nxc/modules/sccm-recon6.py | 96 | CODE | |
| LOW | nxc/modules/find-computer.py | 37 | CODE | |
| LOW | nxc/modules/reg-query.py | 22 | CODE | |
| LOW | nxc/modules/reg-query.py | 77 | CODE | |
| LOW | nxc/modules/wcc.py | 131 | CODE | |
| LOW | nxc/modules/wcc.py | 253 | CODE | |
| LOW | nxc/modules/wcc.py | 538 | CODE | |
| LOW | nxc/modules/wcc.py | 621 | CODE | |
| LOW | nxc/modules/putty.py | 158 | CODE | |
| LOW | nxc/modules/shadowrdp.py | 30 | CODE | |
| LOW | nxc/modules/wifi.py | 15 | CODE | |
| LOW | nxc/modules/impersonate.py | 53 | CODE | |
| LOW | nxc/modules/get-network.py | 82 | CODE | |
| LOW | nxc/modules/enum_cve.py | 58 | CODE | |
| LOW | nxc/modules/mssql_priv.py | 49 | CODE | |
| LOW | nxc/modules/obsolete.py | 34 | CODE | |
| LOW | nxc/modules/group-mem.py | 74 | CODE | |
| LOW | nxc/modules/backup_operator.py | 214 | CODE | |
| LOW | nxc/modules/backup_operator.py | 263 | CODE | |
| LOW | nxc/modules/keepass_trigger.py | 125 | CODE | |
| LOW | nxc/modules/keepass_trigger.py | 183 | CODE | |
| LOW | nxc/modules/keepass_trigger.py | 241 | CODE | |
| LOW | nxc/modules/keepass_trigger.py | 285 | CODE | |
| LOW | nxc/modules/keepass_trigger.py | 379 | CODE | |
| LOW | nxc/modules/iis.py | 38 | CODE | |
| LOW | nxc/modules/handlekatz.py | 53 | CODE | |
| LOW | nxc/modules/enum_ca.py | 39 | CODE | |
| LOW | nxc/modules/groupmembership.py | 33 | CODE | |
| LOW | nxc/modules/laps.py | 29 | CODE | |
| LOW | nxc/modules/coerce_plus.py | 44 | CODE | |
| LOW | nxc/modules/sccm.py | 48 | CODE | |
| LOW | nxc/modules/sccm.py | 125 | CODE | |
| LOW | nxc/modules/sccm.py | 242 | CODE | |
| LOW | nxc/modules/badsuccessor.py | 107 | CODE | |
| LOW | nxc/modules/wam.py | 17 | CODE | |
| LOW | nxc/modules/wam.py | 26 | CODE | |
| LOW | nxc/modules/enum_av.py | 44 | CODE | |
| LOW | nxc/modules/enum_av.py | 63 | CODE | |
| LOW | nxc/modules/slinky.py | 74 | CODE | |
| LOW | nxc/modules/raisechild.py | 84 | CODE | |
| LOW | nxc/modules/raisechild.py | 171 | CODE | |
| LOW | nxc/modules/raisechild.py | 184 | CODE | |
| LOW | nxc/modules/recent_files.py | 19 | CODE | |
| LOW | nxc/modules/dpapi_hash.py | 18 | CODE | |
| LOW | nxc/modules/presence.py | 51 | CODE | |
| LOW | nxc/modules/presence.py | 158 | CODE | |
| 167 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | nxc/modules/example_module.py | 0 | concurrent. required if on_admin_login is not present. this gets called on each authenticated connection | STRING |
| HIGH | nxc/modules/groupmembership.py | 0 | concurrent. required if on_admin_login is not present. this gets called on each authenticated connection | STRING |
| HIGH | nxc/modules/get-desc-users.py | 0 | concurrent. required if on_admin_login is not present. this gets called on each authenticated connection | STRING |
| HIGH | nxc/protocols/ftp/database.py | 0 | check if this credential has already been added to the database, if not add it in. | STRING |
| HIGH | nxc/protocols/winrm/database.py | 0 | check if this credential has already been added to the database, if not add it in. | STRING |
| HIGH | nxc/protocols/wmi/database.py | 0 | check if this credential has already been added to the database, if not add it in. | STRING |
| HIGH | nxc/protocols/ldap/database.py | 0 | check if this credential has already been added to the database, if not add it in. | STRING |
| HIGH | nxc/protocols/ssh/database.py | 0 | check if this credential has already been added to the database, if not add it in. | STRING |
| HIGH | nxc/protocols/smb/database.py | 0 | check if this credential has already been added to the database, if not add it in. | STRING |
| HIGH | nxc/protocols/mssql/database.py | 0 | check if this credential has already been added to the database, if not add it in. | STRING |
| HIGH | nxc/protocols/ftp/db_navigator.py | 0 | clear_database this completely destroys all data in the currently connected database you cannot undo this command | STRING |
| HIGH | nxc/protocols/nfs/db_navigator.py | 0 | clear_database this completely destroys all data in the currently connected database you cannot undo this command | STRING |
| HIGH | nxc/protocols/winrm/db_navigator.py | 0 | clear_database this completely destroys all data in the currently connected database you cannot undo this command | STRING |
| HIGH | nxc/protocols/wmi/db_navigator.py | 0 | clear_database this completely destroys all data in the currently connected database you cannot undo this command | STRING |
| HIGH | nxc/protocols/ldap/db_navigator.py | 0 | clear_database this completely destroys all data in the currently connected database you cannot undo this command | STRING |
| HIGH | nxc/protocols/vnc/db_navigator.py | 0 | clear_database this completely destroys all data in the currently connected database you cannot undo this command | STRING |
| HIGH | nxc/protocols/rdp/db_navigator.py | 0 | clear_database this completely destroys all data in the currently connected database you cannot undo this command | STRING |
| HIGH | nxc/protocols/ssh/db_navigator.py | 0 | clear_database this completely destroys all data in the currently connected database you cannot undo this command | STRING |
| HIGH | nxc/protocols/smb/db_navigator.py | 0 | clear_database this completely destroys all data in the currently connected database you cannot undo this command | STRING |
| HIGH | nxc/protocols/mssql/db_navigator.py | 0 | clear_database this completely destroys all data in the currently connected database you cannot undo this command | STRING |
| HIGH | nxc/protocols/nfs/database.py | 0 | check if this check result has already been added to the database, if not, add it in. | STRING |
| HIGH | nxc/protocols/wmi/database.py | 0 | check if this check result has already been added to the database, if not, add it in. | STRING |
| HIGH | nxc/protocols/ldap/database.py | 0 | check if this check result has already been added to the database, if not, add it in. | STRING |
| HIGH | nxc/protocols/ssh/database.py | 0 | check if this check result has already been added to the database, if not, add it in. | STRING |
| HIGH | nxc/protocols/smb/database.py | 0 | check if this check result has already been added to the database, if not, add it in. | STRING |
| HIGH | nxc/protocols/winrm/database.py | 0 | check if this host has already been added to the database, if not, add it in. todo: return inserted or updated row ids a | STRING |
| HIGH | nxc/protocols/rdp/database.py | 0 | check if this host has already been added to the database, if not, add it in. todo: return inserted or updated row ids a | STRING |
| HIGH | nxc/protocols/mssql/database.py | 0 | check if this host has already been added to the database, if not, add it in. todo: return inserted or updated row ids a | STRING |
| HIGH | nxc/protocols/winrm/database.py | 0 | return credentials for a list of users from the database. | STRING |
| HIGH | nxc/protocols/wmi/database.py | 0 | return credentials for a list of users from the database. | STRING |
| HIGH | nxc/protocols/smb/database.py | 0 | return credentials for a list of users from the database. | STRING |
| HIGH | nxc/protocols/mssql/database.py | 0 | return credentials for a list of users from the database. | STRING |
| HIGH | nxc/protocols/winrm/database.py | 0 | add domain backupkey :domain is the domain fqdn :pvk is the domain backupkey | STRING |
| HIGH | nxc/protocols/wmi/database.py | 0 | add domain backupkey :domain is the domain fqdn :pvk is the domain backupkey | STRING |
| HIGH | nxc/protocols/smb/database.py | 0 | add domain backupkey :domain is the domain fqdn :pvk is the domain backupkey | STRING |
| HIGH | nxc/protocols/mssql/database.py | 0 | add domain backupkey :domain is the domain fqdn :pvk is the domain backupkey | STRING |
| HIGH | nxc/protocols/winrm/database.py | 0 | check if this dpapi secret id is valid. :dpapi_secret_id is a primary id | STRING |
| HIGH | nxc/protocols/wmi/database.py | 0 | check if this dpapi secret id is valid. :dpapi_secret_id is a primary id | STRING |
| HIGH | nxc/protocols/smb/database.py | 0 | check if this dpapi secret id is valid. :dpapi_secret_id is a primary id | STRING |
| HIGH | nxc/protocols/mssql/database.py | 0 | check if this dpapi secret id is valid. :dpapi_secret_id is a primary id | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | build_collector.py | 20 | except FileNotFoundError: | CODE |
| HIGH | build_collector.py | 91 | except FileNotFoundError: | CODE |
| HIGH | nxc/connection.py | 68 | except Exception: | CODE |
| HIGH | nxc/connection.py | 77 | except Exception: | CODE |
| HIGH | nxc/nxcdb.py | 571 | except KeyboardInterrupt: | CODE |
| HIGH | nxc/parsers/ldap_results.py | 54 | except Exception: | CODE |
| HIGH | nxc/modules/backup_operator.py | 255 | except SessionError: | CODE |
| HIGH | nxc/modules/enum_av.py | 57 | except Exception: | CODE |
| HIGH | nxc/modules/bitlocker.py | 108 | except Exception: | CODE |
| HIGH | nxc/modules/notepad++.py | 54 | except Exception: | CODE |
| HIGH | nxc/modules/user-desc.py | 108 | except AttributeError: | CODE |
| HIGH | nxc/modules/powershell_history.py | 64 | except Exception: | CODE |
| HIGH | nxc/protocols/rdp.py | 206 | except Exception: | CODE |
| HIGH | nxc/protocols/rdp.py | 155 | except Exception: | CODE |
| HIGH | nxc/protocols/ldap/kerberos.py | 143 | except Exception: | CODE |
| HIGH | nxc/protocols/smb/mmcexec.py | 289 | except Exception: | CODE |
| HIGH | nxc/protocols/smb/smbspider.py | 66 | except SessionError: | CODE |
| HIGH | nxc/protocols/smb/smbexec.py | 83 | except Exception: | CODE |
| HIGH | nxc/protocols/smb/smbexec.py | 90 | except Exception: | CODE |
| HIGH | nxc/protocols/smb/smbexec.py | 134 | except Exception: | CODE |
| HIGH | nxc/protocols/smb/smbexec.py | 150 | except Exception: | CODE |
| HIGH | nxc/protocols/smb/atexec.py | 220 | except Exception: | CODE |
| HIGH | nxc/protocols/smb/wmiexec.py | 180 | except Exception: | CODE |
| HIGH | nxc/helpers/misc.py | 227 | except ImportError: | CODE |
| HIGH | nxc/helpers/misc.py | 212 | except importlib.metadata.PackageNotFoundError: | CODE |
| HIGH | nxc/helpers/firefox.py | 293 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | nxc/modules/wcc.py | 401 | def check_last_successful_update(self): | CODE |
| LOW | nxc/modules/wcc.py | 423 | def check_guest_account_disabled(self): | CODE |
| LOW | nxc/modules/enable_cmdshell.py | 47 | def backup_show_advanced_options(self): | CODE |
| LOW | nxc/modules/enable_cmdshell.py | 53 | def restore_show_advanced_options(self): | CODE |
| LOW | nxc/modules/impersonate.py | 49 | def list_available_primary_tokens(self, _, connection): | CODE |
| LOW | nxc/modules/mssql_priv.py | 161 | def perform_impersonation_check(self, user: User, grantors=None): | CODE |
| LOW | nxc/modules/enum_av.py | 44 | def _detect_installed_services(self, context, connection, target): | CODE |
| LOW | nxc/modules/gpp_privileges.py | 174 | def initialize_ldap_connection(self, connection): | CODE |
| LOW | nxc/modules/mremoteng.py | 144 | def extract_remoteng_passwords(self, encrypted_password, encryption_attributes: MRemoteNgEncryptionAttributes): | CODE |
| LOW | nxc/modules/add-computer.py | 142 | def _samr_set_workstation_trust(self, dce, domain_handle, user_handle): | CODE |
| LOW | nxc/modules/ldap-checker.py | 123 | def does_ldaps_complete_handshake(self, context, dc_ip): | CODE |
| LOW | nxc/modules/vnc.py | 57 | def vnc_client_proxyconf_extract(self, dploot_conn): | CODE |
| LOW | nxc/modules/ms17-010.py | 75 | def generate_smb_proto_payload(self, *protos): | CODE |
| LOW | nxc/modules/ms17-010.py | 100 | def calculate_doublepulsar_xor_key(self, s): | CODE |
| LOW⚡ | nxc/modules/ms17-010.py | 159 | def session_setup_andx_request(self): | CODE |
| LOW | nxc/modules/ms17-010.py | 208 | def tree_connect_andx_request(self, ip, userid): | CODE |
| LOW | nxc/modules/winscp.py | 54 | def user_object_to_name_mapper(self, context, connection, all_user_objects): | STRING |
| LOW | nxc/modules/winscp.py | 118 | def registry_session_extractor(self, context, connection, user_object, sessionName): | STRING |
| LOW⚡ | nxc/modules/winscp.py | 146 | def find_all_logged_in_users_in_registry(self, context, connection): | CODE |
| LOW | nxc/protocols/ldap.py | 901 | def resolve_and_display_hostname(name, domain_name=None): | CODE |
| LOW | nxc/protocols/ldap.py | 1797 | def _collect_adcs_for_bloodhound(self, timestamp): | CODE |
| LOW | nxc/protocols/rdp.py | 642 | async def _submit_typed_run_command(self, command): | STRING |
| LOW | nxc/protocols/ftp/database.py | 280 | def remove_loggedin_relations(self, cred_id=None, host_id=None): | CODE |
| LOW | nxc/protocols/winrm/database.py | 309 | def get_credentials_for_users(self, usernames: list[str], cred_type: str | None = None): | CODE |
| LOW | nxc/protocols/winrm/database.py | 422 | def remove_loggedin_relations(self, user_id=None, host_id=None): | CODE |
| LOW | nxc/protocols/wmi/database.py | 208 | def get_credentials_for_users(self, usernames: list[str], cred_type: str | None = None): | CODE |
| LOW | nxc/protocols/ldap/bloodhound.py | 113 | def resolve_collection_methods(methods, logger): | CODE |
| LOW | nxc/protocols/ssh/database.py | 412 | def remove_loggedin_relations(self, cred_id=None, host_id=None): | CODE |
| LOW | nxc/protocols/smb/samruser.py | 144 | def old_large_int_to_datetime(large_int): | CODE |
| LOW | nxc/protocols/smb/database.py | 431 | def get_credentials_for_users(self, usernames: list[str], cred_type: str | None = None): | CODE |
| LOW | nxc/protocols/smb/database.py | 693 | def get_users_with_share_access(self, host_id, share_name, permissions): | CODE |
| LOW | nxc/protocols/smb/database.py | 843 | def remove_loggedin_relations(self, user_id=None, host_id=None): | CODE |
| LOW | nxc/protocols/mssql/database.py | 313 | def get_credentials_for_users(self, usernames: list[str], cred_type: str | None = None): | CODE |
| LOW | nxc/protocols/mssql/database.py | 394 | def remove_loggedin_relations(self, user_id=None, host_id=None): | CODE |
| LOW⚡ | nxc/helpers/firefox.py | 237 | def is_master_password_correct(self, key_data, master_password=b""): | CODE |
| LOW | nxc/helpers/negotiate_parser.py | 43 | def decode_tds_info_error_msgtext(data, offset): | CODE |
| LOW | nxc/helpers/rpc.py | 92 | def create_from_string_binding(self, string_binding, target_ip=None, set_remote_host=None, anonymous_rpc=False): | CODE |
| LOW | nxc/helpers/dpapi.py | 16 | def upgrade_to_dploot_connection(target, connection): | CODE |
| LOW | nxc/helpers/dpapi.py | 130 | def collect_masterkeys_from_target(self, dump_users: True, dump_system: False): | CODE |
| LOW | tests/test_smb_database.py | 145 | def test_remove_admin_relation(): | CODE |
| LOW | tests/test_smb_database.py | 189 | def test_remove_group_relations(): | CODE |
| LOW | tests/test_smb_database.py | 205 | def test_get_domain_controllers(): | CODE |
| LOW⚡ | tests/test_smb_database.py | 221 | def test_get_shares_by_access(): | CODE |
| LOW⚡ | tests/test_smb_database.py | 225 | def test_get_users_with_share_access(): | CODE |
| LOW⚡ | tests/test_smb_database.py | 229 | def test_add_domain_backupkey(): | CODE |
| LOW⚡ | tests/test_smb_database.py | 233 | def test_get_domain_backupkey(): | CODE |
| LOW⚡ | tests/test_smb_database.py | 237 | def test_is_dpapi_secret_valid(): | CODE |
| LOW⚡ | tests/test_smb_database.py | 249 | def test_add_loggedin_relation(): | CODE |
| LOW⚡ | tests/test_smb_database.py | 253 | def test_get_loggedin_relations(): | CODE |
| LOW⚡ | tests/test_smb_database.py | 257 | def test_remove_loggedin_relations(): | CODE |
| LOW⚡ | tests/test_smb_database.py | 261 | def test_get_keys_returns_empty_for_smb(db): | CODE |
| LOW⚡ | tests/test_smb_database.py | 270 | def test_get_keys_all_and_by_id_fallback(db): | CODE |
| LOW⚡ | tests/test_smb_database.py | 276 | def test_write_list_empty_entries(tmp_path): | CODE |
| LOW | tests/test_smb_database.py | 293 | def test_do_export_keys_empty_guard(db, tmp_path): | CODE |
| LOW⚡ | tests/test_sanitize.py | 223 | def test_sanitize_dns_preserves_windows_device_names(name): | CODE |
| LOW⚡ | tests/test_sanitize.py | 227 | def test_sanitize_dns_bounds_long_values_with_stable_hash(): | CODE |
| LOW⚡ | tests/test_sanitize.py | 236 | def test_sanitize_dns_replaces_malformed_bytes(): | CODE |
| LOW⚡ | tests/test_sanitize.py | 240 | def test_sanitize_dns_always_returns_a_string(): | CODE |
| LOW⚡ | tests/test_sanitize.py | 250 | def test_sanitize_dns_postconditions(hostname): | CODE |
| LOW⚡ | tests/test_sanitize.py | 391 | def test_sanitize_path_component_handles_cross_platform_names(name, expected): | CODE |
| 41 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | nxc/modules/group-mem.py | 44 | CODE | |
| MEDIUM | nxc/modules/group-mem.py | 45 | CODE | |
| MEDIUM | nxc/modules/group-mem.py | 47 | CODE | |
| MEDIUM | nxc/modules/group-mem.py | 49 | CODE | |
| MEDIUM | nxc/modules/group-mem.py | 54 | CODE | |
| MEDIUM | nxc/modules/group-mem.py | 55 | CODE | |
| MEDIUM | nxc/modules/group-mem.py | 58 | CODE | |
| MEDIUM | nxc/modules/group-mem.py | 59 | CODE | |
| MEDIUM | nxc/modules/group-mem.py | 60 | CODE | |
| MEDIUM | nxc/modules/group-mem.py | 63 | CODE | |
| MEDIUM | nxc/modules/group-mem.py | 64 | CODE | |
| MEDIUM | nxc/modules/group-mem.py | 65 | CODE | |
| MEDIUM | nxc/modules/group-mem.py | 67 | CODE | |
| MEDIUM | nxc/modules/firefox.py | 30 | CODE | |
| MEDIUM | nxc/modules/firefox.py | 31 | CODE | |
| MEDIUM | nxc/modules/firefox.py | 32 | CODE | |
| MEDIUM | nxc/modules/firefox.py | 33 | CODE | |
| MEDIUM | nxc/modules/firefox.py | 34 | CODE | |
| MEDIUM | nxc/modules/firefox.py | 35 | CODE | |
| MEDIUM | nxc/modules/firefox.py | 36 | CODE | |
| MEDIUM | nxc/modules/firefox.py | 37 | CODE | |
| MEDIUM | nxc/modules/firefox.py | 38 | CODE | |
| MEDIUM | nxc/modules/firefox.py | 40 | CODE | |
| MEDIUM | nxc/modules/firefox.py | 52 | CODE | |
| MEDIUM | nxc/modules/firefox.py | 67 | CODE | |
| MEDIUM | nxc/modules/ntlm_reflection.py | 52 | CODE | |
| MEDIUM | nxc/modules/ntlm_reflection.py | 53 | CODE | |
| MEDIUM | nxc/modules/ntlm_reflection.py | 54 | CODE | |
| MEDIUM | nxc/modules/ntlm_reflection.py | 55 | CODE | |
| MEDIUM | nxc/modules/ntlm_reflection.py | 56 | CODE | |
| MEDIUM | nxc/modules/ntlm_reflection.py | 57 | CODE | |
| MEDIUM | nxc/modules/ntlm_reflection.py | 59 | CODE | |
| MEDIUM | nxc/modules/ntlm_reflection.py | 60 | CODE | |
| MEDIUM | nxc/modules/ntlm_reflection.py | 62 | CODE | |
| MEDIUM | nxc/modules/ldap-checker.py | 178 | CODE | |
| MEDIUM | nxc/modules/ldap-checker.py | 179 | CODE | |
| MEDIUM | nxc/modules/ldap-checker.py | 180 | CODE | |
| MEDIUM | nxc/modules/ldap-checker.py | 183 | CODE | |
| MEDIUM | nxc/modules/ldap-checker.py | 187 | CODE | |
| MEDIUM | nxc/modules/ldap-checker.py | 194 | CODE | |
| MEDIUM | nxc/modules/ldap-checker.py | 224 | CODE | |
| MEDIUM | nxc/modules/ldap-checker.py | 225 | CODE | |
| MEDIUM | nxc/modules/ldap-checker.py | 240 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | nxc/modules/recyclebin.py | 72 | # Create the export path | COMMENT |
| MEDIUM | nxc/modules/pre2k.py | 34 | # Define the search filter | COMMENT |
| MEDIUM | nxc/modules/spider_plus.py | 359 | # Create the subdirectories based on the share name and file path. | COMMENT |
| MEDIUM | nxc/modules/daclread.py | 215 | # Initialize module variables | COMMENT |
| MEDIUM | nxc/modules/daclread.py | 335 | # This function is called before any writing action (write, remove or restore) | COMMENT |
| MEDIUM | nxc/modules/ms17-010.py | 120 | # Define the NetBIOS header | COMMENT |
| MEDIUM | nxc/modules/ms17-010.py | 126 | # Define the SMB header | COMMENT |
| MEDIUM | nxc/modules/ms17-010.py | 142 | # Define the negotiate_proto_request | COMMENT |
| MEDIUM⚡ | nxc/modules/ms17-010.py | 163 | # Define the NetBIOS bytes | COMMENT |
| MEDIUM⚡ | nxc/modules/ms17-010.py | 169 | # Define the SMB header bytes | COMMENT |
| MEDIUM | nxc/modules/ms17-010.py | 185 | # Define the session setup andx request bytes | COMMENT |
| MEDIUM | nxc/modules/ms17-010.py | 244 | # Create the IPC string | COMMENT |
| MEDIUM | nxc/modules/ms17-010.py | 357 | # Define the netbios section of the SMB request | COMMENT |
| MEDIUM | nxc/modules/ms17-010.py | 363 | # Define the SMB header section of the SMB request | COMMENT |
| MEDIUM | nxc/modules/ms17-010.py | 379 | # Define the trans2 request section of the SMB request | COMMENT |
| MEDIUM | nxc/protocols/ldap.py | 1252 | # Create the format string for each row | COMMENT |
| MEDIUM | nxc/protocols/smb.py | 1307 | # Create the template for formatting | COMMENT |
| MEDIUM | nxc/protocols/smb.py | 1440 | # Create the template for formatting | COMMENT |
| MEDIUM | nxc/protocols/smb.py | 2207 | # Create a safe local directory structure while retaining the raw remote path for SMB. | COMMENT |
| MEDIUM | nxc/protocols/ldap/laps.py | 52 | # Create the baseDN | COMMENT |
| MEDIUM | nxc/protocols/ldap/laps.py | 125 | # Create the baseDN | COMMENT |
| MEDIUM | nxc/protocols/ldap/bloodhound.py | 42 | # Create a domain controller object | COMMENT |
| MEDIUM | nxc/protocols/ldap/bloodhound.py | 44 | # Create an object resolver | COMMENT |
| MEDIUM | nxc/helpers/powershell.py | 191 | # The following code gives us some control over where and how Invoke-PSInject does its thang | COMMENT |
| MEDIUM | nxc/helpers/rpc.py | 74 | # Create a new SMB conn if we don't have one already or | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | nxc/config.py | 18 | # Check if there are any missing options in the config file | COMMENT |
| LOW⚡ | nxc/modules/reg-query.py | 110 | # Check if value exists | COMMENT |
| LOW⚡ | nxc/modules/reg-query.py | 121 | # Check if value exists | COMMENT |
| LOW⚡ | nxc/modules/reg-query.py | 123 | # Check if value exists | COMMENT |
| LOW | nxc/modules/spooler.py | 62 | # Display results. | COMMENT |
| LOW | nxc/modules/sccm.py | 77 | # Print results | COMMENT |
| LOW | nxc/modules/presence.py | 152 | # Check if process SID matches any admin user SID | COMMENT |
| LOW | nxc/modules/presence.py | 174 | # Check if SID and LogonType are found, then check if SID matches any admin user | COMMENT |
| LOW | nxc/modules/notepad.py | 154 | # Read the file into a buffer | COMMENT |
| LOW | nxc/modules/mssql_dumper.py | 123 | # Check if any of the cells in the row match any of the regex patterns | COMMENT |
| LOW | nxc/modules/lockscreendoors.py | 73 | # Check if the description is as expected | COMMENT |
| LOW | nxc/modules/spider_plus.py | 284 | # Check if proceeding with download attempt. | COMMENT |
| LOW | nxc/modules/spider_plus.py | 304 | # Check if the remote file is readable. | COMMENT |
| LOW | nxc/modules/spider_plus.py | 311 | # Check if the file is already downloaded and up-to-date. | COMMENT |
| LOW | nxc/modules/spider_plus.py | 373 | # Check if the file is empty and should not be. | COMMENT |
| LOW⚡ | nxc/modules/veeam.py | 112 | # Check if we found an SQL Server of some kind | COMMENT |
| LOW⚡ | nxc/protocols/ldap.py | 1006 | # Check if we can resolve the trusted domain's DC using DNS | COMMENT |
| LOW | nxc/protocols/smb.py | 230 | # Check if the host is a valid IP address, if not we parse the FQDN in the Exception | COMMENT |
| LOW | nxc/protocols/smb.py | 1338 | # Check if we need to filter for usernames | COMMENT |
| LOW | nxc/protocols/smb.py | 140 | self.smbv1 = None # Check if SMBv1 is supported | CODE |
| LOW | nxc/protocols/smb.py | 141 | self.smbv3 = None # Check if SMBv3 is supported | CODE |
| LOW | nxc/protocols/wmi.py | 399 | # Read the file | COMMENT |
| LOW⚡ | nxc/protocols/nfs.py | 143 | # Check if root escape is possible | COMMENT |
| LOW | nxc/protocols/nfs.py | 416 | # Write the file data to the local file | COMMENT |
| LOW | nxc/protocols/nfs.py | 434 | # Check if local file is exist | COMMENT |
| LOW | nxc/protocols/nfs.py | 617 | # Check if "." is already the root directory | COMMENT |
| LOW | nxc/protocols/nfs.py | 853 | # Write the file data to the local file | COMMENT |
| LOW | nxc/protocols/ftp.py | 130 | # Check if the current connection is ASCII (ASCII does not support .size()) | COMMENT |
| LOW | nxc/protocols/ftp.py | 145 | # Check if the file was downloaded | COMMENT |
| LOW | nxc/protocols/ftp.py | 162 | # Check if the file was uploaded | COMMENT |
| LOW | nxc/protocols/ftp.py | 172 | # Check if the current connection is ASCII (ASCII does not support .size()) | COMMENT |
| LOW | nxc/protocols/ldap/laps.py | 212 | # Check if item is in cache | COMMENT |
| LOW | nxc/helpers/misc.py | 223 | # Check if it's CE based on version string | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | nxc/modules/mssql_coerce.py | 59 | f"SELECT * FROM sys.fn_xe_file_target_read_file ('\\\\{self.listener}\\file','\\\\{self.listener}\\file',null, | CODE |
| HIGH | nxc/protocols/mssql.py | 575 | get_owner_command = f"icacls C:\\windows\\temp\\{sam_storename} /grant {self.username}:F && icacls C:\\windows\\ | STRING |
| HIGH | nxc/protocols/mssql.py | 610 | get_owner_command = f"icacls C:\\windows\\temp\\{security_storename} /grant {self.username}:F && icacls C:\\wind | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | nxc/helpers/powershell.py | 62 | Obfuscates a PowerShell script. Args: ---- path_to_script (str): The path to the PowerShell script | STRING |
| HIGH | nxc/helpers/bloodhound.py | 2 | Adds a user to the BloodHound graph database. Args: ---- user (str or list): The username of the user o | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | nxc/modules/remove-mic.py | 1 | # Original Author: | COMMENT |
| LOW | nxc/protocols/wmi/wmiexec_event.py | 1 | # Author: xiaolichan # ruff: ignore[commented-out-code] | COMMENT |
| LOW | nxc/protocols/wmi/wmiexec.py | 1 | # Author: xiaolichan # ruff: ignore[commented-out-code] | COMMENT |
| LOW | nxc/protocols/smb/mmcexec.py | 1 | # Copyright (c) 2003-2016 CORE Security Technologies | COMMENT |
| LOW | nxc/helpers/pfx.py | 1 | # SECUREAUTH LABS. Copyright 2018 SecureAuth Corporation. All rights reserved. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | nxc/protocols/smb.py | 2031 | CODE | |
| LOW | nxc/protocols/smb/mmcexec.py | 62 | CODE | |
| LOW | nxc/protocols/smb/smbspider.py | 24 | CODE | |
| LOW | nxc/protocols/smb/atexec.py | 16 | CODE | |
| LOW | nxc/protocols/smb/wmiexec.py | 13 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | nxc/parsers/ldap_results.py | 28 | # If we can't decode the value, we'll just return the bytes | COMMENT |
| LOW | nxc/protocols/rdp.py | 632 | # type a one-liner that reads and executes the clipboard we just set | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | nxc/modules/coerce_plus.py | 2 | CODE |