# naitik1208/jf-router architecture

> Architecture diagram of the GitHub repository naitik1208/jf-router, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/naitik1208/jf-router
- Repository: https://github.com/naitik1208/jf-router

## Overview

JF Router Control Toolkit is a collection of router-access procedures, firmware assets, and reusable scripts for JCOW404/JCOW411 devices. Its user workflow is to choose a documented operation and apply it to a router; the README identifies root access as a core capability, but does not establish a single required sequence among the other operations. Config decryption also has a standalone key-guessing utility that tries candidate keys against a downloaded backup and writes a decrypted file. Most scripts and procedures were not excerpted, so their internal calls and dependencies are not mapped.

Main entry points: [`Instructions/Downgrade Firmware.md`](https://github.com/naitik1208/jf-router/blob/main/Instructions/Downgrade%20Firmware.md) (Firmware downgrade), [`keyguesser.py`](https://github.com/naitik1208/jf-router/blob/main/keyguesser.py) (Key guesser), [`Instructions/Run NextDNS.md`](https://github.com/naitik1208/jf-router/blob/main/Instructions/Run%20NextDNS.md) (NextDNS setup), [`Scripts/nextdns.sh`](https://github.com/naitik1208/jf-router/blob/main/Scripts/nextdns.sh) (NextDNS script)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and files"]
  node_root["Root access"]
  node_ftp["Root FTP"]
  node_extract["USB extraction"]
end

subgraph group_control["Router control"]
  node_scripts["Custom scripts"]
  node_tr069["TR-069 disable<br/>[Disable TR-069.md]"]
  node_firmware["Firmware downgrade"]
  node_images404["JCOW404 images"]
  node_images411["JCOW411 images"]
  node_router_scripts["Router scripts"]
end

subgraph group_network["Network changes"]
  node_nextdns["NextDNS setup<br/>[Run NextDNS.md]"]
  node_dns_script["NextDNS script<br/>[nextdns.sh]"]
end

subgraph group_config["Config decryption"]
  node_config_help["Config decryption guide"]
  node_backup["Encrypted backup"]
  node_keyguesser["Key guesser<br/>[keyguesser.py]"]
  node_plaintext["Decrypted config"]
end

node_owner(("Router owner"))
node_router["JF ONT router"]
node_openssl["OpenSSL"]

node_owner -->|"uses"| node_root
node_owner -->|"enables"| node_ftp
node_owner -->|"extracts files"| node_extract
node_owner -->|"runs"| node_scripts
node_owner -->|"disables"| node_tr069
node_owner -->|"downgrades"| node_firmware
node_owner -->|"configures"| node_nextdns
node_owner -->|"follows"| node_config_help
node_firmware -.->|"uses images"| node_images404
node_firmware -.->|"uses images"| node_images411
node_nextdns -->|"script available"| node_dns_script
node_router_scripts -.->|"includes"| node_dns_script
node_router -->|"provides backup"| node_backup
node_backup -->|"input to"| node_keyguesser
node_keyguesser -->|"invokes"| node_openssl
node_keyguesser -->|"writes"| node_plaintext

click node_root "https://github.com/naitik1208/jf-router/blob/main/Instructions/Get-Root-Access-JF-ONT.md"
click node_ftp "https://github.com/naitik1208/jf-router/blob/main/Instructions/Enable%20Root%20FTP%20JF%20Router.md"
click node_extract "https://github.com/naitik1208/jf-router/tree/main/Instructions"
click node_scripts "https://github.com/naitik1208/jf-router/blob/main/Instructions/Run%20Custom%20Scripts%20On%20Your%20Router.md"
click node_tr069 "https://github.com/naitik1208/jf-router/blob/main/Instructions/Disable%20TR-069.md"
click node_firmware "https://github.com/naitik1208/jf-router/blob/main/Instructions/Downgrade%20Firmware.md"
click node_images404 "https://github.com/naitik1208/jf-router/tree/main/Firmware/JCOW404"
click node_images411 "https://github.com/naitik1208/jf-router/tree/main/Firmware/JCOW411"
click node_nextdns "https://github.com/naitik1208/jf-router/blob/main/Instructions/Run%20NextDNS.md"
click node_dns_script "https://github.com/naitik1208/jf-router/blob/main/Scripts/nextdns.sh"
click node_router_scripts "https://github.com/naitik1208/jf-router/tree/main/Scripts"
click node_config_help "https://github.com/naitik1208/jf-router/blob/main/Instructions/Decrypt%20Config%20File.md"
click node_keyguesser "https://github.com/naitik1208/jf-router/blob/main/keyguesser.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_root,node_ftp,node_extract toneBlue
class node_scripts,node_tr069,node_firmware,node_images404,node_images411,node_router_scripts toneAmber
class node_nextdns,node_dns_script,node_owner,node_router toneMint
class node_config_help,node_backup,node_keyguesser,node_plaintext toneRose
class node_openssl toneIndigo
```

## Components

### Access and files

- [Root access](https://github.com/naitik1208/jf-router/blob/main/Instructions/Get-Root-Access-JF-ONT.md): `Instructions/Get-Root-Access-JF-ONT.md`
- [Root FTP](https://github.com/naitik1208/jf-router/blob/main/Instructions/Enable%20Root%20FTP%20JF%20Router.md): `Instructions/Enable Root FTP JF Router.md`
- [USB extraction](https://github.com/naitik1208/jf-router/tree/main/Instructions): `Instructions`

### Router control

- [Custom scripts](https://github.com/naitik1208/jf-router/blob/main/Instructions/Run%20Custom%20Scripts%20On%20Your%20Router.md): `Instructions/Run Custom Scripts On Your Router.md`
- [TR-069 disable](https://github.com/naitik1208/jf-router/blob/main/Instructions/Disable%20TR-069.md): `Instructions/Disable TR-069.md`
- [Firmware downgrade](https://github.com/naitik1208/jf-router/blob/main/Instructions/Downgrade%20Firmware.md): `Instructions/Downgrade Firmware.md`
- [JCOW404 images](https://github.com/naitik1208/jf-router/tree/main/Firmware/JCOW404): `Firmware/JCOW404`
- [JCOW411 images](https://github.com/naitik1208/jf-router/tree/main/Firmware/JCOW411): `Firmware/JCOW411`
- [Router scripts](https://github.com/naitik1208/jf-router/tree/main/Scripts): `Scripts`

### Network changes

- [NextDNS setup](https://github.com/naitik1208/jf-router/blob/main/Instructions/Run%20NextDNS.md): `Instructions/Run NextDNS.md`
- [NextDNS script](https://github.com/naitik1208/jf-router/blob/main/Scripts/nextdns.sh): `Scripts/nextdns.sh`

### Config decryption

- [Config decryption guide](https://github.com/naitik1208/jf-router/blob/main/Instructions/Decrypt%20Config%20File.md): `Instructions/Decrypt Config File.md`
- **Encrypted backup**
- [Key guesser](https://github.com/naitik1208/jf-router/blob/main/keyguesser.py): `keyguesser.py`
- **Decrypted config**

### Other components

- **Router owner**
- **JF ONT router**
- **OpenSSL**

## Connections

- Router owner → Root access: uses (evidence: `README.md`)
- Router owner → Root FTP: enables (evidence: `README.md`)
- Router owner → USB extraction: extracts files (evidence: `README.md`)
- Router owner → Custom scripts: runs (evidence: `README.md`)
- Router owner → TR-069 disable: disables (evidence: `README.md`)
- Router owner → Firmware downgrade: downgrades (evidence: `README.md`)
- Router owner → NextDNS setup: configures (evidence: `README.md`)
- Router owner → Config decryption guide: follows (evidence: `README.md`)
- Firmware downgrade → JCOW404 images: uses images
- Firmware downgrade → JCOW411 images: uses images
- NextDNS setup → NextDNS script: script available (evidence: `README.md`)
- Router scripts → NextDNS script: includes
- JF ONT router → Encrypted backup: provides backup
- Encrypted backup → Key guesser: input to (evidence: `keyguesser.py`)
- Key guesser → OpenSSL: invokes (evidence: `keyguesser.py`)
- Key guesser → Decrypted config: writes (evidence: `keyguesser.py`)
