2.1
Instalasi dan Konfigurasi Awal
config/config.yaml adalah inti konfigurasi Deep Eye: daftar ai_providers, parameter scanner, dan preset vulnerability_scanner dibaca dari berkas itu. Repository ini tidak punya tahap build; instalasi berarti menyiapkan virtual environment .deep-venv, memasang requirements.txt, lalu menghasilkan satu berkas konfigurasi. Halaman ini hanya membahas pembentukan dan pembacaan berkas tersebut. Pemakaian flag sehari-hari ada di Antarmuka CLI.
Siklus status konfigurasi
Skrip installer menyalin template hanya bila config/config.yaml belum ada, sehingga berkas lama tidak tertimpa (scripts/install.sh:60-691). Wizard onboard menulis berkas yang sama dari nol lewat write_config (utils/onboard.py:279-2862). ConfigLoader adalah jalur terakhir: berkas yang tidak ditemukan menghasilkan konfigurasi bawaan (utils/config_loader.py:18-473).
stateDiagram-v2
[*] --> TanpaConfig
TanpaConfig --> DariTemplate: installer menyalin config.example.yaml
TanpaConfig --> ConfigLama: config.yaml sudah ada
DariTemplate --> Wizard: python deep_eye.py --setup
DariTemplate --> Dimuat: deep_eye.py -c config/config.yaml
ConfigLama --> Wizard: --setup-force menimpa
ConfigLama --> Dimuat
Wizard --> Ditulis: write_config menulis YAML baru
Ditulis --> Dimuat
Dimuat --> SiapScan: validate_config lolos
Dimuat --> DefaultBawaan: berkas hilang atau YAML gagal di-parse
DefaultBawaan --> SiapScan
SiapScan --> [*]
style TanpaConfig fill:#f59e0b,color:#000
style DariTemplate fill:#f59e0b,color:#000
style ConfigLama fill:#f59e0b,color:#000
style Wizard fill:#f59e0b,color:#000
style Ditulis fill:#2d7d46,color:#fff
style SiapScan fill:#2d7d46,color:#fff
style Dimuat fill:#8b5cf6,color:#fff
style DefaultBawaan fill:#dc2626,color:#fff
%% fig: Siklus status config/config.yaml
%% desc: Berkas konfigurasi lahir dari installer atau wizard, dibaca ConfigLoader, dan berakhir pada konfigurasi bawaan bila berkas hilang atau rusak.Dua percabangan menentukan status akhir diagram di atas. Opsi --setup dan --setup-force menjalankan run_onboard lalu langsung return 0, sehingga tidak ada scan yang dimulai (deep_eye.py:252-2554). Tanpa opsi itu, berkas yang tidak ada memicu wizard, sedangkan berkas yang ada dibaca lewat ConfigLoader.load (deep_eye.py:257-2645).
Skrip installer
scripts/install.sh dipakai di Linux/macOS dan scripts/install.ps1 di Windows. Keduanya menjalankan urutan yang sama dengan perintah berbeda.
| Tahap | scripts/install.sh | scripts/install.ps1 |
|---|---|---|
| Cek Python | python3 --version, exit 1 bila python3 tidak ada (scripts/install.sh:12-206) | regex Python (\d+)\.(\d+), menolak versi di bawah 3.8 (scripts/install.ps1:19-297) |
| Virtual environment | membuat .deep-venv bila belum ada, lalu source .../bin/activate (scripts/install.sh:22-348) | python -m venv .deep-venv dari dalam scripts/, dilewati bila sudah ada (scripts/install.ps1:31-419) |
| Dependensi | pip install -r requirements.txt, exit 1 bila $? bukan 0 (scripts/install.sh:41-5110) | pip install -r ..\requirements.txt, exit 1 bila $LASTEXITCODE bukan 0 (scripts/install.ps1:52-6011) |
| Direktori | mkdir -p logs data reports templates (scripts/install.sh:53-5812) | New-Item untuk ..\logs, ..\data, ..\reports, ..\templates (scripts/install.ps1:64-7713) |
| Berkas config | menyalin config/config.example.yaml ke config/config.yaml bila belum ada (scripts/install.sh:60-691) | Copy-Item dengan syarat yang sama (scripts/install.ps1:79-8914) |
⚠️ Berkas hasil salinan belum bisa dipakai scan apa adanya. Blok
openaimasih berisiapi_key: "sk-your-openai-api-key-here"denganenabled: true(config/config.example.yaml:6-815). API key tersimpan plaintext diconfig/config.yaml, jadi batasi izin berkas itu denganchmod 600(SECURITY.md:29-3416).
Template config/config.example.yaml
Template ini adalah referensi lengkap, sementara wizard hanya menulis sebagian kunci. Baris pembukanya memang menginstruksikan penyalinan manual ke config.yaml (config/config.example.yaml:1-217).
| Bagian | Baris | Isi utama |
|---|---|---|
ai_providers | config/config.example.yaml:4-11018 | 12 provider, tiap entri memuat enabled, model, temperature, max_tokens, timeout, plus api_key atau base_url |
scanner | config/config.example.yaml:112-14519 | target_url, default_threads: 5, default_depth: 2, max_urls: 1000, ai_provider, oast_callback_url, proxy, verify_ssl |
vulnerability_scanner | config/config.example.yaml:147-23820 | enabled_checks per kelas kerentanan, payload_generation, testing |
| Modul opsional | config/config.example.yaml:240-29521 | websocket, ml_detection, osint, payload_obfuscation |
Arti tiap kunci enabled_checks dijelaskan di Pemindai Kerentanan dan Katalog Modul, sedangkan bentuk entri provider dibahas di Lapisan AI Provider.
Wizard onboard
Wizard dijalankan dengan python deep_eye.py --setup, dan --setup-force menimpa berkas yang sudah ada tanpa konfirmasi tambahan (deep_eye.py:145-15522). Bila config_path sudah ada dan force tidak diberikan, run_onboard menanyakan konfirmasi; penolakan membuat berkas lama dipakai apa adanya lewat yaml.safe_load (utils/onboard.py:171-18123).
run_onboard memanggil enam fungsi wizard secara berurutan (utils/onboard.py:192-19824), lalu merakit satu dict yang memuat ai_providers, scanner, vulnerability_scanner, reporting, logging, rate_limiting, database, oast, experimental, dan mobile (utils/onboard.py:200-25125).
| Langkah | Fungsi | Nilai yang diminta |
|---|---|---|
| 1 | _wizard_providers (utils/onboard.py:289-32926) | provider utama dari 13 pilihan PROVIDERS, lalu opsi provider tambahan untuk failover |
| 2 | _wizard_scanner (utils/onboard.py:364-40727) | target URL, threads 1-50, crawl depth 1-10, max_urls, mode quick/standard/full, oast_callback_url, proxy, verify_ssl |
| 3 | _wizard_checks (utils/onboard.py:410-42028) | preset core, standard, atau full module set |
| 4 | _wizard_report (utils/onboard.py:423-42729) | format laporan; pilihan "HTML+JSON" tetap menulis default_format: html |
| 5 | _wizard_experimental (utils/onboard.py:430-44130) | CVE matching dan path data/cve_intelligence.db |
| 6 | _wizard_mobile (utils/onboard.py:444-47231) | platform, package, artifact Frida untuk analisis mobile |
API key yang dibiarkan kosong tidak menggagalkan wizard: nilainya diganti placeholder your-<provider>-api-key-here dan harus disunting sesudahnya (utils/onboard.py:341-35232). Setelah write_config, _print_summary menampilkan ringkasan provider, target, threads, jumlah checks, format laporan, dan perintah untuk menjalankan ulang wizard (utils/onboard.py:475-48733). docs/QUICKSTART.md merangkum urutan yang sama dan menegaskan wizard berjalan otomatis ketika config/config.yaml hilang (docs/QUICKSTART.md:30-3634).
Pilihan format laporan pada langkah 4 hanya menetapkan nilai awal. Daftar format yang benar-benar dipakai saat ekspor dibahas di Pelaporan dan Ekspor.
Membaca konfigurasi dan substitusi environment variable
ConfigLoader.load membaca YAML dengan yaml.safe_load, mengganti variabel environment, lalu mencatat Configuration loaded from <path>. Berkas yang tidak ada hanya menghasilkan logger.warning dan konfigurasi bawaan, dan kegagalan parse juga ditangkap lalu diganti konfigurasi bawaan (utils/config_loader.py:18-473).
Substitusi bekerja rekursif pada string, dict, dan list, dengan pola ${NAMA_VAR} dan ${NAMA_VAR:-default} (utils/config_loader.py:49-6635). Artinya nilai rahasia bisa disimpan di environment dan config/config.yaml hanya memuat rujukannya.
⚠️ Fallback bawaan tidak setara dengan template. Konfigurasi bawaan hanya memuat satu entri
ai_providers.openaidenganenabled: False,scanner.default_threads: 5,default_depth: 2, sepuluhenabled_checks, danreporting.default_format: html(utils/config_loader.py:69-11136). Scan dengan konfigurasi ini tidak memakai AI provider apa pun, jadi periksa kembali hasil wizard sebelum menjalankan target nyata.