diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000..bdbf33c --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1,6 @@ +title: KAT β€” Keyfob Analysis Toolkit +description: Terminal-based RF signal analysis for automotive keyfobs +theme: jekyll-theme-minimal +show_downloads: false +exclude: + - README.md diff --git a/docs/fiat_v0.md b/docs/fiat_v0.md index 56111d6..224d99f 100644 --- a/docs/fiat_v0.md +++ b/docs/fiat_v0.md @@ -1,3 +1,7 @@ +--- +layout: default +--- + # Fiat V0 Protocol **Rust module:** `src/protocols/fiat_v0.rs` diff --git a/docs/ford_v0.md b/docs/ford_v0.md index 4d981cb..d3484cd 100644 --- a/docs/ford_v0.md +++ b/docs/ford_v0.md @@ -1,3 +1,7 @@ +--- +layout: default +--- + # Ford V0 Protocol **Rust module:** `src/protocols/ford_v0.rs` diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..58fe3e2 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,170 @@ + + + + + + KAT β€” Keyfob Analysis Toolkit + + + +
+
+

KAT β€” Keyfob Analysis Toolkit

+

Terminal-based RF signal analysis for automotive keyfobs

+
+
+ + + +
+
+
+

Capture, Decode & Analyze Keyfob Signals

+

A real-time terminal UI for RF signal analysis with support for HackRF One and RTL-SDR hardware.

+ +
+
+ +
+
+

Key Features

+
+
+

πŸ“‘ Real-Time Capture

+

Receive and demodulate AM/OOK keyfob signals at configurable frequencies with HackRF or RTL-SDR

+
+
+

πŸ”“ Multi-Protocol Decoding

+

14 protocol decoders including Kia V0–V6, Ford, Fiat, Subaru, Suzuki, VAG, PSA, and more

+
+
+

πŸ”‘ KeeLoq Keystore

+

Generic KeeLoq fallback with embedded manufacturer keys for automatic decoding

+
+
+

πŸ“€ Signal Retransmission

+

Transmit Lock, Unlock, Trunk, and Panic commands from decoded signals (HackRF only)

+
+
+

πŸ’Ύ Multiple Export Formats

+

.fob (JSON) and .sub (Flipper Zero compatible) formats for signal storage and sharing

+
+
+

πŸ”§ Rich Signal Details

+

View encoding, RF modulation, encryption, serial, counter, key data, CRC, and raw timing data

+
+
+
+
+ +
+
+

Supported Protocols

+
+
+

Kia

+
    +
  • Kia V0
  • +
  • Kia V1
  • +
  • Kia V2
  • +
  • Kia V3 / V4
  • +
  • Kia V5
  • +
  • Kia V6
  • +
+
+
+

Other Manufacturers

+
    +
  • Ford V0
  • +
  • Fiat V0
  • +
  • Subaru
  • +
  • Suzuki
  • +
  • VAG (VW/Audi/Seat/Skoda)
  • +
  • PSA (Peugeot/CitroΓ«n)
  • +
+
+
+

Generic

+
    +
  • Scher-Khan
  • +
  • Star Line
  • +
  • KeeLoq (Generic)
  • +
+
+
+
+
+ +
+
+

Requirements

+

Hardware

+
    +
  • HackRF One (or compatible) β€” Full receive and transmit capabilities
  • +
  • RTL433 / RTL-SDR β€” Receive-only; no transmit supported
  • +
+ +

Software

+
    +
  • Rust 1.75+ (for building from source)
  • +
  • libhackrf β€” HackRF C library and headers
  • +
  • libusb β€” For RTL433/RTL-SDR support
  • +
+ +

Operating System

+

macOS, Linux, and other Unix-like systems. Precompiled binaries and installation instructions available on GitHub.

+
+
+ +
+
+

Protocol Documentation

+

Detailed protocol specifications and decoder documentation:

+ +
+
+ +
+
+

⚠️ Security and Legal Disclaimer

+

Use KAT only on systems and vehicles you own or have explicit, written permission to test. Capturing, decoding, or transmitting keyfob and vehicle-access signals without authorization may be illegal in your jurisdiction. You are solely responsible for ensuring your use complies with applicable laws. KAT is intended for security research, authorized penetration testing, education, and legitimate testing on your own equipment.

+
+
+
+ + + + diff --git a/docs/keeloq_generic.md b/docs/keeloq_generic.md index ab0bb5a..c396c59 100644 --- a/docs/keeloq_generic.md +++ b/docs/keeloq_generic.md @@ -1,3 +1,7 @@ +--- +layout: default +--- + # KeeLoq Generic Fallback **Rust module:** `src/protocols/keeloq_generic.rs` diff --git a/docs/kia_v0.md b/docs/kia_v0.md index 7e89031..8fd5e6b 100644 --- a/docs/kia_v0.md +++ b/docs/kia_v0.md @@ -1,3 +1,7 @@ +--- +layout: default +--- + # Kia V0 Protocol **Rust module:** `src/protocols/kia_v0.rs` diff --git a/docs/kia_v1.md b/docs/kia_v1.md index 245617f..c8ccc3a 100644 --- a/docs/kia_v1.md +++ b/docs/kia_v1.md @@ -1,3 +1,7 @@ +--- +layout: default +--- + # Kia V1 Protocol **Rust module:** `src/protocols/kia_v1.rs` diff --git a/docs/kia_v2.md b/docs/kia_v2.md index 6079229..9e178dc 100644 --- a/docs/kia_v2.md +++ b/docs/kia_v2.md @@ -1,3 +1,7 @@ +--- +layout: default +--- + # Kia V2 Protocol **Rust module:** `src/protocols/kia_v2.rs` diff --git a/docs/kia_v3_v4.md b/docs/kia_v3_v4.md index 5acc33e..0247bd7 100644 --- a/docs/kia_v3_v4.md +++ b/docs/kia_v3_v4.md @@ -1,3 +1,7 @@ +--- +layout: default +--- + # Kia V3/V4 Protocol **Rust module:** `src/protocols/kia_v3_v4.rs` diff --git a/docs/kia_v5.md b/docs/kia_v5.md index e3c0868..7ee8ec4 100644 --- a/docs/kia_v5.md +++ b/docs/kia_v5.md @@ -1,3 +1,7 @@ +--- +layout: default +--- + # Kia V5 Protocol **Rust module:** `src/protocols/kia_v5.rs` diff --git a/docs/kia_v6.md b/docs/kia_v6.md index 23c2109..9fd5d15 100644 --- a/docs/kia_v6.md +++ b/docs/kia_v6.md @@ -1,3 +1,7 @@ +--- +layout: default +--- + # Kia V6 Protocol **Rust module:** `src/protocols/kia_v6.rs` diff --git a/docs/psa.md b/docs/psa.md index 01252df..60855a1 100644 --- a/docs/psa.md +++ b/docs/psa.md @@ -1,3 +1,7 @@ +--- +layout: default +--- + # PSA (Peugeot/CitroΓ«n) Protocol **Rust module:** `src/protocols/psa.rs` diff --git a/docs/scher_khan.md b/docs/scher_khan.md index 7aecc5b..aa05ab5 100644 --- a/docs/scher_khan.md +++ b/docs/scher_khan.md @@ -1,3 +1,7 @@ +--- +layout: default +--- + # Scher-Khan Protocol **Rust module:** `src/protocols/scher_khan.rs` diff --git a/docs/star_line.md b/docs/star_line.md index 3f84e7d..b5a7a90 100644 --- a/docs/star_line.md +++ b/docs/star_line.md @@ -1,3 +1,7 @@ +--- +layout: default +--- + # Star Line Protocol **Rust module:** `src/protocols/star_line.rs` diff --git a/docs/style.css b/docs/style.css new file mode 100644 index 0000000..2bebd1c --- /dev/null +++ b/docs/style.css @@ -0,0 +1,351 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +:root { + --primary-color: #6366f1; + --secondary-color: #8b5cf6; + --text-color: #1f2937; + --light-bg: #f9fafb; + --border-color: #e5e7eb; + --success-color: #10b981; +} + +html { + scroll-behavior: smooth; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', sans-serif; + color: var(--text-color); + line-height: 1.6; +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 20px; +} + +/* Header */ +header { + background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); + color: white; + padding: 40px 0 20px; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); +} + +header h1 { + font-size: 2.5rem; + margin-bottom: 8px; +} + +header .tagline { + font-size: 1.1rem; + opacity: 0.95; +} + +/* Navigation */ +.navbar { + background: white; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); + position: sticky; + top: 0; + z-index: 100; +} + +.navbar ul { + list-style: none; + display: flex; + gap: 2rem; + padding: 1rem 0; + flex-wrap: wrap; +} + +.navbar a { + text-decoration: none; + color: var(--text-color); + font-weight: 500; + transition: color 0.3s; +} + +.navbar a:hover { + color: var(--primary-color); +} + +/* Hero Section */ +.hero { + padding: 60px 0; + text-align: center; + background: var(--light-bg); +} + +.hero h2 { + font-size: 2rem; + margin-bottom: 1rem; + color: var(--text-color); +} + +.hero p { + font-size: 1.1rem; + color: #6b7280; + margin-bottom: 2rem; +} + +.cta-buttons { + display: flex; + gap: 1rem; + justify-content: center; + flex-wrap: wrap; +} + +.btn { + padding: 12px 28px; + border-radius: 6px; + text-decoration: none; + font-weight: 600; + transition: all 0.3s; + display: inline-block; +} + +.btn-primary { + background: var(--primary-color); + color: white; +} + +.btn-primary:hover { + background: #4f46e5; + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3); +} + +.btn-secondary { + background: white; + color: var(--primary-color); + border: 2px solid var(--primary-color); +} + +.btn-secondary:hover { + background: var(--light-bg); + transform: translateY(-2px); +} + +/* Features Section */ +.features { + padding: 60px 0; +} + +.features h2 { + font-size: 2rem; + text-align: center; + margin-bottom: 3rem; +} + +.feature-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; +} + +.feature-card { + padding: 2rem; + background: var(--light-bg); + border-radius: 8px; + border-left: 4px solid var(--primary-color); + transition: transform 0.3s, box-shadow 0.3s; +} + +.feature-card:hover { + transform: translateY(-4px); + box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1); +} + +.feature-card h3 { + margin-bottom: 0.5rem; + color: var(--primary-color); + font-size: 1.2rem; +} + +.feature-card p { + color: #6b7280; +} + +/* Protocols Section */ +.protocols { + padding: 60px 0; + background: var(--light-bg); +} + +.protocols h2 { + font-size: 2rem; + text-align: center; + margin-bottom: 3rem; +} + +.protocol-list { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 2rem; +} + +.protocol-column h3 { + color: var(--primary-color); + margin-bottom: 1rem; + font-size: 1.2rem; +} + +.protocol-column ul { + list-style: none; +} + +.protocol-column li { + padding: 0.5rem 0; + color: #4b5563; + border-bottom: 1px solid #e5e7eb; +} + +.protocol-column li:last-child { + border-bottom: none; +} + +/* Requirements Section */ +.requirements { + padding: 60px 0; +} + +.requirements h2 { + font-size: 2rem; + margin-bottom: 2rem; +} + +.requirements h3 { + color: var(--primary-color); + margin-top: 1.5rem; + margin-bottom: 1rem; + font-size: 1.2rem; +} + +.requirements ul { + list-style: none; + margin-bottom: 1.5rem; +} + +.requirements li { + padding: 0.75rem 0 0.75rem 2rem; + position: relative; +} + +.requirements li:before { + content: "βœ“"; + position: absolute; + left: 0; + color: var(--success-color); + font-weight: bold; +} + +/* Documentation Section */ +.documentation { + padding: 60px 0; + background: var(--light-bg); +} + +.documentation h2 { + font-size: 2rem; + margin-bottom: 1.5rem; +} + +.documentation > .container > p { + margin-bottom: 2rem; + color: #6b7280; +} + +.doc-links { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); + gap: 1rem; +} + +.doc-link { + padding: 12px 16px; + background: white; + border: 1px solid var(--border-color); + border-radius: 6px; + text-decoration: none; + color: var(--primary-color); + font-weight: 500; + transition: all 0.3s; + text-align: center; +} + +.doc-link:hover { + background: var(--primary-color); + color: white; + border-color: var(--primary-color); +} + +/* Security Notice */ +.security-notice { + padding: 40px 0; + background: #fef2f2; +} + +.security-notice h3 { + color: #dc2626; + margin-bottom: 1rem; +} + +.security-notice p { + color: #7f1d1d; + line-height: 1.8; +} + +/* Footer */ +footer { + background: var(--text-color); + color: white; + padding: 20px 0; + text-align: center; + margin-top: 60px; +} + +footer a { + color: var(--primary-color); + text-decoration: none; +} + +footer a:hover { + text-decoration: underline; +} + +/* Responsive */ +@media (max-width: 768px) { + header h1 { + font-size: 1.8rem; + } + + .hero h2 { + font-size: 1.5rem; + } + + .features h2, + .protocols h2, + .requirements h2, + .documentation h2 { + font-size: 1.5rem; + } + + .navbar ul { + gap: 1rem; + } + + .cta-buttons { + flex-direction: column; + } + + .btn { + width: 100%; + text-align: center; + } +} diff --git a/docs/subaru.md b/docs/subaru.md index b0e88db..25bc88d 100644 --- a/docs/subaru.md +++ b/docs/subaru.md @@ -1,3 +1,7 @@ +--- +layout: default +--- + # Subaru Protocol **Rust module:** `src/protocols/subaru.rs` diff --git a/docs/suzuki.md b/docs/suzuki.md index d8c4725..b622b1b 100644 --- a/docs/suzuki.md +++ b/docs/suzuki.md @@ -1,3 +1,7 @@ +--- +layout: default +--- + # Suzuki Protocol **Rust module:** `src/protocols/suzuki.rs` diff --git a/docs/vag.md b/docs/vag.md index 095255b..b028f3f 100644 --- a/docs/vag.md +++ b/docs/vag.md @@ -1,3 +1,7 @@ +--- +layout: default +--- + # VAG (VW/Audi/Seat/Skoda) Protocol **Rust module:** `src/protocols/vag.rs`