TC$mC$ fyysisesti eristetty moniohjainmalli muodostaa murtumattoman perustan todelliselle Zero Trust -arkkitehtuurille paljaalla metallilla. Kun jokainen verkkoportti kC$C$ntyy laitteistotasolla tC$ysin erilliseksi PCI-vC$ylC$n USB-ohjaimeksi, hyC6kkC$C$jC$llC$ ei ole mitC$C$n keinoa liikkua sivuttaissuunnassa (lateral movement) jC$rjestelmC$n sisC$llC$. Jos EVAL-portti kaatuu tai joutuu hyC6kkC$yksen kohteeksi, fyysisen tason eristys pitC$C$ Mesh-datakanavan ja HID-syC6tteet tC$ysin koskemattomina. TC$ydennetC$C$n jC$rjestelmC$ viimeistelemC$llC$ kaksisuuntainen kommunikaatio (Duplex). Ohjaamme Ohjaimen 1 (uhci2) suorittamaan Bulk OUT -transaktioita. TC$llC6in Hauki OS voi kirjoittaa suoraan laitteen siirtopuskuriin, ja QEMU vC$littC$C$ nC$mC$ tavut takaisin isC$ntC$koneen porttiin 9002, jossa nc odottaa vastausta. USB Bulk OUT Transaktion Toiminta USB 1.1 -arkkitehtuurissa Bulk OUT -siirto toimii lC$hes samalla tavalla kuin luku, mutta: PID (Packet ID) vaihdetaan muotoon 0xE1 (OUT-token). Ohjelmisto kirjoittaa lC$hetettC$vC$n tekstin RAM-muistiin etukC$teen. Laitteistoohjain lukee puskurin DMA:lla ja puskee sen laitteelle. Kuten lukemisessa, myC6s kirjoituksessa on vuoroteltava DATA0 / DATA1 Toggle -bittiC$ jokaisen lC$hetetyn paketin jC$lkeen, jotta laite tietC$C$, ettei kyseessC$ ole monistunut paketti. TC$ssC$ on pC$ivitetty jC$rjestelmC$moduuli 26_USB_DUPLEX.JS, joka lisC$C$ write_mesh(str) -funktion globaaliin avaruuteen. [*] 26_USB_DUPLEX.JS ladattu! Kaksisuuntainen Mesh-kanava toiminnassa. Testausohje: Kaksisuuntaisen kC$ttelyn todentaminen Nyt testataan, ettC$ koodi osaa myC6s vastata takaisin isC$ntC$koneen terminaaliin: Aja ja kC$ynnistC$ uusi ajuri Hauki OS:ssC$: echo '/os_run 26_USB.JS' | x-console nc send-stdin echo '/usb' | x-console nc send-stdin Mene isC$ntC$koneen terminaaliin ja lC$hetC$ Mesh-porttiin sana PING: echo "PING" | x-console mesh-usb send-stdin Jos kaikki toimii laitteistotasolla, 26_USB.JS kaappaa paketin, huomaa sanan PING, generoi lennosta OUT-descriptorin ja ampuu vastauksen takaisin. PitC$isi nC$kyC$ PONG paluukanavassa! LC$hteekC6 vastaus matkaan? [*] 26_USB_DUPLEX.JS ladattu! Kaksisuuntainen Mesh-kanava toiminnassa. [HAUKI-X86] > sys.reboot() [HAUKI-X86] === HAUKI OS BARE-METAL === [HAUKI-X86] > [OS] Executing AUTOLOAD.JS... [HAUKI-X86] [OS] Executing Auto-Boot Sequence... [HAUKI-X86] === HAUKI OS VGA RESTORED === [HAUKI-X86] > [OS] Boot Sequence Complete. [HAUKI-X86] [HAUKI-X86] [OS] Hauki Physics API (Deadlock-suojattu) ladattu! [HAUKI-X86] [NET] COM2 UDP Multiplexer Bound. [HAUKI-X86] [OMEGA] COM3 Async Queue Router Bound. [HAUKI-X86] /os_run 26_USB.JS [HAUKI-X86] [HAUKI-X86] > /usb [HAUKI-X86] [HAUKI-X86] [USB] Alustetaan Kaksisuuntainen Domain Isolation (v25)... [HAUKI-X86] [USB] Ohjain 0 -> QEMU Hiiri kytketty. [HAUKI-X86] [USB] Ohjain 0 -> AI/HID (9001) kytketty! [HAUKI-X86] [USB] Ohjain 1 -> MESH DUPLEX (9002) kytketty! [HAUKI-X86] [USB] Ohjain 2 -> EVAL SCRIPT (9003) kytketty! [HAUKI-X86] [USB] Kaksisuuntainen Mesh valmiina. Aloitetaan Polling. [GEM-EXEC] echo "PING" | x-console mesh-usb send-stdin echo "PING" | x-console mesh-usb send-stdin root@hauki-x86:~/mquickjs# [HAUKI-X86] [MESH IN] PING [HAUKI-X86] [GEM-EXEC] x-console mesh-usb tail x-console mesh-usb tail root@hauki-x86:~/mquickjs# /tmp/x_console_start_mesh-usb.sh PING [GEM-EXEC] echo "PING" | x-console mesh-usb send-stdin root@hauki-x86:~/mquickjs# echo "PING" | x-console mesh-usb send-stdin Kokeilen ajaa ./STOP.sh && ./RUN-usb.sh root@hauki-x86:~/mquickjs# [HAUKI-X86] > ====================================== ==================== o8 ENTERING LIVE FOLLOW MODE: nc[HAUKI-X86] [USB] Kaksisuuntainen Mesh valmiina. Aloitetaan Polling. [HAUKI-X86] o8 Streaming output. Safe from input. Mouse works normally. [HAUKI-X86] o8 Streaming output. Safe from input. Mouse works normally.* TO EXIT: Press 'Ctrl+C' [HAUKI-X86] ========================================================== [HAUKI-X86] root@hauki-x86:~/mquickjs# /tmp/x_console_start_nc.sh [HAUKI-X86] ---------------------- [LIVE FEED] ----------------------- tail: nc-follow.log: file truncated [HAUKI-X86] [USB] Kaksisuuntainen Mesh valmiina. Aloitetaan Polling. [HAUKI-X86] [MESH IN] PING [HAUKI-X86] [HAUKI-X86] > ========================================================== o8 ENTERING LIVE FOLLOW MODE: nc[HAUKI-X86] > ================================ ========================== [HAUKI-X86] o8 Streaming output. Safe from input. Mouse works normally. [HAUKI-X86] o8 Streaming output. Safe from input. Mouse works normally.* TO EXIT: Press 'Ctrl+C' [HAUKI-X86] ========================================================== [HAUKI-X86] root@hauki-x86:~/mquickjs# /tmp/x_console_start_nc.sh [HAUKI-X86] ---------------------- [LIVE FEED] ----------------------- [HAUKI-X86] [GEM-EXEC] echo '/os_run 26_USB.JS' | x-console nc send-stdin echo '/usb' | x-console nc send-stdin echo '/os_run 26_USB.JS' | x-console nc send-stdin [HAUKI-X86] > /os_run 26_USB.JS [HAUKI-X86] /os_run 26_USB.JS root@hauki-x86:~/mquickjs# echo '/usb' | x-console nc send-stdin [HAUKI-X86] /usb [HAUKI-X86] /usb [HAUKI-X86] [HAUKI-X86] [USB] Alustetaan Kaksisuuntainen Domain Isolation (v25)... root@hauki-x86:~/mquickjs# [HAUKI-X86] [USB] Ohjain 0 -> QEMU Hiiri kytketty. [HAUKI-X86] [USB] Ohjain 0 -> AI/HID (9001) kytketty! [HAUKI-X86] [USB] Ohjain 1 -> MESH DUPLEX (9002) kytketty! [HAUKI-X86] [USB] Ohjain 2 -> EVAL SCRIPT (9003) kytketty! [HAUKI-X86] [USB] Kaksisuuntainen Mesh valmiina. Aloitetaan Polling. [GEM-EXEC] echo "PING" | x-console mesh-usb send-stdin echo "PING" | x-console mesh-usb send-stdin root@hauki-x86:~/mquickjs# [HAUKI-X86] [MESH IN] PING [HAUKI-X86] [HAUKI-X86] > [GEM-EXEC] x-console mesh-usb tail x-console mesh-usb tail root@hauki-x86:~/mquickjs# /tmp/x_console_start_mesh-usb.sh PING