worm.mp4
Worm; disk/RAM imaj alma, hash doğrulama, uzak agent yönetimi, vaka çıktıları ve raporlama için masaüstü adli bilişim aracıdır.
Uygulama Rust backend ile çalışır, arayüzü yerel pencere içinde açılır ve worm-linux / worm-win agent protokolüyle uyumludur.
- Ana Worm deposu: https://github.com/noirlang/worm
- Linux Agent: https://github.com/noirlang/worm-linux
- Windows Agent: https://github.com/noirlang/worm-win
- Linux binary:
https://worm.noirlang.tr/worm-linux - Windows EXE:
https://worm.noirlang.tr/worm-win.exe
Linux ve Windows hedeflenir. macOS desteği yoktur.
Arayüz tarayıcı sekmesi olarak değil, Linux'ta GTK/WebKit ve Windows'ta WebView2 tabanlı yerel pencere olarak açılır.
| Alan | Açıklama |
|---|---|
| Yerel disk edinimi | Dosya/blok cihazı kopyalama, SHA256 sidecar, .partial koruması |
| Uzak disk edinimi | imaj_baslat JSON-over-TCP protokolüyle raw stream alma |
| Yerel RAM edinimi | Linux AVML, Windows WinPMEM helper akışları |
| Uzak RAM edinimi | Agent tarafında edinim başlatma, ilerleme izleme, dump indirme |
| İş kontrolü | Pause/resume/stop komutlarının yerel ve uzak işlere uygulanması |
| Hash | MD5, SHA1, SHA256, SHA512 hesaplama |
| Kanıt | Sabit ~/Worm/Vakalar altında vaka ağacı, notlar, çıktı klasörleri ve rapor JSON/TXT üretimi |
| İmaj görüntüleme | Linux mount -o ro,loop ve partition'lı imajlar için losetup --partscan, Windows Mount-DiskImage salt-okunur mount |
| Güncelleme | GitHub release kontrolü, paket indirme, SHA256 doğrulama, installer başlatma |
| UI | Vanilla HTML/CSS/JS, Linux GTK/WebKit ve Windows WebView2 yerel pencere |
| CI | Ubuntu/Windows üzerinde test, release build ve binary artifact üretimi |
worm/
├── src/
│ ├── disk.rs # Yerel disk/dosya imaj alma
│ ├── ram.rs # AVML / WinPMEM kontrol ve edinim helperları
│ ├── remote.rs # worm-linux / worm-win JSON-over-TCP client
│ ├── ui_server.rs # Yerel HTTP API ve UI asset servisi
│ ├── native_window.rs # Linux GTK/WebKit ve Windows WebView2 yerel pencere
│ ├── hash.rs # Hash hesaplama
│ ├── evidence.rs # Vaka ve kanıt klasörleri
│ ├── report.rs # Rapor çıktıları
│ ├── settings.rs # Varsayılan ayarlar
│ ├── wireguard.rs # WireGuard config ve wrapper
│ └── main.rs # CLI ve UI giriş noktası
├── ui/
│ ├── index.html
│ ├── app.js
│ ├── styles.css
│ └── assets/
├── CONTRIBUTORS.md
└── .github/workflows/ci.yml
cargo run -- uiuygulamayı yerel pencere olarak başlatır.- Backend
127.0.0.1üzerinde geçici bir port açar. - UI yalnızca loopback API ile konuşur.
- Uzak edinimler
worm-linux/worm-winagentlarına JSON-over-TCP ile bağlanır.
Ubuntu/Debian örneği:
sudo apt update
sudo apt install -y build-essential pkg-config libgtk-3-dev libwebkit2gtk-4.1-devRust toolchain:
rustup toolchain install stable --component rustfmt
rustup default stableWindows native pencere için Microsoft Edge WebView2 Runtime gerekir. Windows 10/11 sistemlerde genellikle hazır gelir; eksikse Microsoft Evergreen Runtime kurulmalıdır.
Debug build:
cargo build --lockedRelease build:
cargo build --release --lockedTestler:
cargo test --lockedFormat kontrolü:
cargo fmt --all -- --checkYerel pencere olarak açma:
cargo run -- uiDerlenmiş binary ile açma:
./target/release/worm uiTarayıcı debug modu:
cargo run -- ui-browsercargo run -- settings-default
cargo run -- hash <file> sha256
cargo run -- disk-list
cargo run -- disk-size <device-or-file>
cargo run -- verify <image> <sha256>
cargo run -- ram-status
cargo run -- remote-disks <ip> <port> [token]
cargo run -- remote-image <ip> <port> <disk_id> <output_dir> [token]
cargo run -- remote-tool-check <ip> <port> <winpmem|avml> [token]
cargo run -- wireguard-config <path>Linux Agent:
wget -O worm-linux https://worm.noirlang.tr/worm-linux
chmod +x worm-linux
./worm-linuxWindows Agent:
worm-win.exe dosyasını https://worm.noirlang.tr/worm-win.exe adresinden indirin ve yönetici olarak çalıştırın.
Uygulama tarafında:
- Windows veya Linux araç sayfasını açın.
- Uzak disk veya uzak RAM akışını seçin.
- Agent IP/port bilgisini girin.
- Token kullanıyorsanız anahtarı onaylayın.
- Bağlan düğmesiyle agent erişimini doğrulayın.
- Disk taraması veya RAM araç kontrolünü çalıştırın.
- Çıktı konumunu seçip edinimi başlatın.
Rust client, mevcut worm-linux ve worm-win agentlarının JSON-over-TCP protokolüyle uyumlu çalışır.
Temel komutlar:
merhaba: agent kimlik ve özellik doğrulama.disk_listele: uzak diskleri listeleme.imaj_baslat: uzak disk stream başlatma.winpmem_kontrol: Windows RAM aracı kontrolü.avml_kontrol: Linux RAM aracı kontrolü.ram_edinim_baslat: uzak RAM dump üretimi.ram_dosya_indir: oluşan RAM dump dosyasını indirme.edinim_kontrol:pause,resume,stopiş kontrolü.
- Başarısız disk transferlerinde hedef dosya
.partialolarak korunur. - Tamamlanan disk imajlarında SHA256 sidecar üretilir.
- Uzak stream sırasında stop geldiğinde bağlantı kapatılır; partial dosyanın içine JSON hata satırı yazılmaz.
- RAM edinimlerinde yüzde ilerleme mevcut dosya boyutu veya agent eventleri üzerinden hesaplanır.
- Uzak RAM akışında önce agent dump üretir, ardından aynı iş kimliğiyle dump dosyası indirilir.
- Yerel RAM edinimi root/administrator yetkisi gerektirebilir.
Release asset adları:
worm-windows-x64.msiworm-linux-x64.AppImageSHA256SUMS
CI Linux ve Windows release binary artifact üretir. MSI/AppImage paketleme ayrıca bağlanacaktır.
Workflow: .github/workflows/ci.yml
Push ve pull requestlerde:
- Sistem bağımlılıkları kurulur.
- Rust stable toolchain hazırlanır.
cargo fmt --all -- --checkçalışır.node --check ui/app.jsile UI JavaScript söz dizimi doğrulanır.cargo test --lockedçalışır.cargo build --release --lockedçalışır.- Linux ve Windows release binary artifact olarak yüklenir.
Actions sayfası:
Katkıcılar README içinde GitHub geçmişinden otomatik gösterilir; elle kişi listesi tutulmaz.
- GitHub contributor grafiği: https://github.com/noirlang/worm/graphs/contributors
- Destek ve katkı rehberi: CONTRIBUTORS.md
Worm yalnızca yetkili adli bilişim süreçlerinde kullanılmalıdır. Disk ve RAM edinimi sistem bütünlüğünü, gizliliği ve yasal yetki sınırlarını doğrudan etkiler. Test verisi dışındaki gerçek edinimler için doğru izin, doğru hedef ve doğru çıktı konumu kontrol edilmelidir.
- AppImage/MSI paketleme hattının release workflow'a bağlanması.
- Uzak agent protokol testlerinin daha geniş mock senaryolarla çoğaltılması.
- Windows raw DD/IMG mount için opsiyonel forensic image driver entegrasyonu.
- macOS bu dalda desteklenmez; hedef platformlar Linux ve Windows'tur.
Worm is a desktop forensic tool for disk/RAM imaging, hash verification, remote agent control, case outputs, and reporting.
The application runs on a Rust backend, opens the UI in a native window, and works with the worm-linux / worm-win agent protocol.
- Main Worm repository: https://github.com/noirlang/worm
- Linux Agent: https://github.com/noirlang/worm-linux
- Windows Agent: https://github.com/noirlang/worm-win
- Linux binary:
https://worm.noirlang.tr/worm-linux - Windows EXE:
https://worm.noirlang.tr/worm-win.exe
Linux and Windows are targeted. macOS is not supported.
The UI opens as a native application window: GTK/WebKit on Linux and WebView2 on Windows.
| Area | Description |
|---|---|
| Local disk acquisition | File/block-device copy, SHA256 sidecar, .partial preservation |
| Remote disk acquisition | Raw stream through the imaj_baslat JSON-over-TCP protocol |
| Local RAM acquisition | Linux AVML and Windows WinPMEM helper flows |
| Remote RAM acquisition | Start acquisition on the agent, track progress, download dump |
| Job control | Pause/resume/stop commands for local and remote jobs |
| Hashing | MD5, SHA1, SHA256, SHA512 |
| Evidence | Case tree, notes, output folders, and JSON/TXT reports under fixed ~/Worm/Vakalar |
| Image viewing | Linux mount -o ro,loop plus losetup --partscan for partitioned images, Windows Mount-DiskImage read-only mount |
| Update | GitHub release check, package download, SHA256 verification, installer launch |
| UI | Vanilla HTML/CSS/JS served in Linux GTK/WebKit and Windows WebView2 native windows |
| CI | Ubuntu/Windows tests, release build, and binary artifact upload |
worm/
├── src/
│ ├── disk.rs # Local disk/file imaging
│ ├── ram.rs # AVML / WinPMEM checks and acquisition helpers
│ ├── remote.rs # worm-linux / worm-win JSON-over-TCP client
│ ├── ui_server.rs # Local HTTP API and UI asset server
│ ├── native_window.rs # Linux GTK/WebKit and Windows WebView2 native window
│ ├── hash.rs # Hash calculation
│ ├── evidence.rs # Case and evidence folders
│ ├── report.rs # Report output
│ ├── settings.rs # Defaults
│ ├── wireguard.rs # WireGuard config and wrapper
│ └── main.rs # CLI and UI entry point
├── ui/
│ ├── index.html
│ ├── app.js
│ ├── styles.css
│ └── assets/
├── CONTRIBUTORS.md
└── .github/workflows/ci.yml
cargo run -- uistarts the native app window.- The backend opens a temporary
127.0.0.1port. - The UI talks only to the loopback API.
- Remote acquisition connects to
worm-linux/worm-winover JSON-over-TCP.
Ubuntu/Debian example:
sudo apt update
sudo apt install -y build-essential pkg-config libgtk-3-dev libwebkit2gtk-4.1-devRust toolchain:
rustup toolchain install stable --component rustfmt
rustup default stableThe Windows native window requires Microsoft Edge WebView2 Runtime. It is usually present on Windows 10/11; install Microsoft Evergreen Runtime if it is missing.
Debug build:
cargo build --lockedRelease build:
cargo build --release --lockedTests:
cargo test --lockedFormat check:
cargo fmt --all -- --checkOpen as a native application window:
cargo run -- uiOpen from the release binary:
./target/release/worm uiBrowser debug mode:
cargo run -- ui-browsercargo run -- settings-default
cargo run -- hash <file> sha256
cargo run -- disk-list
cargo run -- disk-size <device-or-file>
cargo run -- verify <image> <sha256>
cargo run -- ram-status
cargo run -- remote-disks <ip> <port> [token]
cargo run -- remote-image <ip> <port> <disk_id> <output_dir> [token]
cargo run -- remote-tool-check <ip> <port> <winpmem|avml> [token]
cargo run -- wireguard-config <path>Linux Agent:
wget -O worm-linux https://worm.noirlang.tr/worm-linux
chmod +x worm-linux
./worm-linuxWindows Agent:
Download worm-win.exe from https://worm.noirlang.tr/worm-win.exe and run it as Administrator.
Application side:
- Open the Windows or Linux tools page.
- Select a remote disk or remote RAM workflow.
- Enter the agent IP/port.
- Approve the token if one is used.
- Verify agent access with Connect.
- Run disk scan or RAM tool check.
- Select output location and start acquisition.
The Rust client is compatible with the JSON-over-TCP protocol used by the current worm-linux and worm-win agents.
Core commands:
merhaba: agent identity and capability handshake.disk_listele: list remote disks.imaj_baslat: start remote disk stream.winpmem_kontrol: check Windows RAM acquisition tool.avml_kontrol: check Linux RAM acquisition tool.ram_edinim_baslat: produce remote RAM dump.ram_dosya_indir: download generated RAM dump.edinim_kontrol:pause,resume,stopjob control.
- Failed disk transfers preserve the target file as
.partial. - Completed disk images produce a SHA256 sidecar.
- When stop is requested during remote streaming, the connection is closed; JSON error lines are not written into partial binary output.
- RAM progress is calculated from output file size or agent progress events.
- Remote RAM first produces a dump on the agent, then downloads it with the same job id.
- Local RAM acquisition may require root/administrator privileges.
Release asset names:
worm-windows-x64.msiworm-linux-x64.AppImageSHA256SUMS
CI produces Linux and Windows release binary artifacts. MSI/AppImage packaging will be connected separately.
Workflow: .github/workflows/ci.yml
On push and pull requests:
- System dependencies are installed.
- Stable Rust toolchain is prepared.
cargo fmt --all -- --checkruns.node --check ui/app.jsvalidates the UI JavaScript syntax.cargo test --lockedruns.cargo build --release --lockedruns.- Linux and Windows release binaries are uploaded as artifacts.
Actions page:
Contributors are rendered from GitHub history in this README; no manual person list is kept.
- GitHub contributors graph: https://github.com/noirlang/worm/graphs/contributors
- Support and contribution guide: CONTRIBUTORS.md
Worm should be used only in authorized forensic workflows. Disk and RAM acquisition directly affects system integrity, privacy, and legal authorization boundaries. For real acquisitions, verify permission, target selection, and output location before starting.
- Connect AppImage/MSI packaging to the release workflow.
- Expand remote agent protocol tests with more mock scenarios.
- Optional forensic image driver integration for Windows raw DD/IMG mounts.
- macOS is not supported in this branch; the target platforms are Linux and Windows.
