-
Notifications
You must be signed in to change notification settings - Fork 2
Troubleshooting and FAQ
Common OCInferno setup and runtime issues, with quick fixes. For auth-specific failures see the error table in Authentication Reference.
Run via the module entrypoint instead:
python -m ocinfernoIf you installed via pip, confirm you are in the same virtual environment you
installed into and that its bin/ is on PATH. The legacy/internal
python -m cli.main startup path is deprecated — use ocinferno or
python -m ocinferno.
Excel export is an optional extra (it pulls in pandas + xlsxwriter), lazily
imported so a base install stays lean. Install it, then rerun:
pip install "ocinferno[excel]"
data export excelcsv, json, and treeimage exports work in the base install and need no extra.
See Data View/Export.
Table rendering works out of the box with no extra dependencies. To switch rendering style, set the workspace config:
configs set std_output_format table # default
configs set std_output_format txt # plain textMost service modules fan out per compartment. If OCInferno has not learned the compartment tree yet, enumerate it first, or point the run at specific compartments:
modules run enum_comp # discover + persist the compartment tree
compartments list # inspect what was found
compartments set # pick a current compartment (interactive)Or scope a single run directly with the runner flags:
modules run enum_identity --current-cid # only the current compartment
modules run enum_identity --all-cids # all discovered compartments
modules run enum_identity --cids ocid1.compartment.oc1..COMPARTMENT_IDOCI returns NotAuthorizedOrNotFound for both missing permissions and missing
resources. Empty enumeration usually means the current principal's effective
permissions (via IAM policy and, for instance/resource principals, dynamic-group
membership) do not grant read/inspect on that service in that compartment.
- Confirm which principal is active:
creds me. - Verify the compartment scope is correct (
compartments list). - Try another compartment or a broader-privileged credential (
creds swap). - Run with
-v/--debugto see the underlying service status/code:modules run enum_identity -v.
Set a workspace default region, or pass one when adding the credential:
configs set current_default_region us-phoenix-1
configs regions list # list known regions; current default highlightedUnknown values for current_default_region are accepted with a warning (this
supports private/dedicated regions). Auth modes that can auto-detect region (profile,
instance principal via IMDS) will use that when no region is set — see
Authentication Reference.
Some OCI services are not available in every region (e.g. Generative AI is not
available in ca-montreal-1). When OCInferno tries to reach a service endpoint
that has no DNS record in the configured region, it now times out in ≤ 10 seconds
and prints a yellow skip line:
[-] enum_generative_ai.projects: skipped (DNS timed out after 10s for
'generativeai.ca-montreal-1.oci.oraclecloud.com' — the OCI endpoint may not
exist in this region.)
This is expected behaviour — the skip is recorded and the run continues. Subsequent compartments in the same region reuse the cached failure result and skip instantly.
If you want to run a specific module against a different region without changing the
workspace default, use --regions:
modules run enum_generative_ai --regions us-chicago-1A 409 "Conflict: duplicate kind name" means node kinds from a previous push are
still registered in BloodHound. Use --reset to clear them and re-push in one step:
modules run process_og_node_color_images \
--custom-nodes-token-id TOKEN_ID --custom-nodes-token-key TOKEN_KEY --resetOr wipe without re-pushing (e.g. before switching to a fresh BloodHound instance):
modules run process_og_node_color_images \
--custom-nodes-token-id TOKEN_ID --custom-nodes-token-key TOKEN_KEY --clearMap the exact error message to a cause/fix using the Common Auth Errors table. Quick checks:
- OCIDs must start with
ocid1.and the fingerprint must be colon-delimited hex. - For direct
api-keymode, all of--user,--fingerprint,--tenancy-id,--region, and a key (--private-key/--private-key-file) are required. - For
session-token, add--tenancy-idif it cannot be extracted from the token. - Balance your quotes — startup parsing uses shell-style tokenization.
Set a workspace-wide proxy, or override per run:
configs set proxy http://127.0.0.1:8080 # all module runs
modules run enum_identity --proxy http://127.0.0.1:8080 # single run
configs unset proxy # remove the default laterStartup credential auth exchanges use a separate --auth-proxy flag
(ocinferno --auth-proxy http://127.0.0.1:8080), because some federation flows
(notably instance-principal x509 exchange) fall outside the per-module proxy. See
Authentication Reference.
- Downloaded artifacts and exports:
./ocinferno_output/<workspace_id>_<workspace_name>/...(override an individual export with--out-dir/--out-file). - SQLite database (under
ocinferno/databases/): one unified file,ocinferno.db, holding workspaces/credentials/user-permissions plus every enumerated resource table (schema frommappings/database_info.json).--db service/--db metadatabelow both point at this same file — the split is a query-scope convenience, not two separate files.
Query them directly:
data sql --db service "SELECT * FROM identity_policies LIMIT 20"
data sql --db metadata "SELECT * FROM workspaces"The tree image is rendered from the saved compartment hierarchy. Populate it first:
modules run enum_comp
data export treeimageprocess_oracle_cloud_hound_data builds the graph from already-saved data, so
enumerate first (IAM policies and the compartment tree are the key inputs):
modules run enum_all --comp --get
modules run process_oracle_cloud_hound_data --expand-inherited --reset --out opengraph_output.jsonUse --reset to wipe the OpenGraph tables before generating so each run is fresh.
For graph semantics see OpenGraph - Node/Edge Tables,
OpenGraph - Default Priv Escalation Mode,
OpenGraph - IAM Conditionals, and
OpenGraph - Inheritance & IncludeAll.
Run the saved-data configuration audit engine after enumeration:
modules run process_config_checkSee ConfigChecker - Static Config Checks for the full findings catalog.
- Module contract + invariants: Module Development Guide
and
CLAUDE.md. - Contributing guidance:
CONTRIBUTING.md.
Home | Getting Started | Auth | Workspace | Orchestration Modules | Downloads to Disk | Data View/Export | Operator Runbook | Troubleshooting and FAQ | OpenGraph - Node/Edge Tables | OpenGraph - Default Priv Escalation Mode | OpenGraph - IAM Conditionals | OpenGraph - Inheritance & IncludeAll | ConfigChecker - Static Config Checks | Module Development Guide
- Authentication Reference
- Workspace Instructions
- Orchestration Module Reference
- Enumeration Module Reference
- Exploit Module Reference
- Downloads to Disk
- Data View/Export
- Troubleshooting and FAQ