Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
tamago — Framework zur Kompilierung und Ausführung von Go-Anwendungen auf Bare-Metal-Prozessoren, das eine sichere Firmware-Entwicklung mit reduzierter Angriffsfläche durch Entfernung von Betriebssystem- und C-Abhängigkeiten ermöglicht. | Kitploit
Tools/GitHubGitHub/usbarmory/tamago
Embedded-System-SicherheitSicherheitsvirtualisierungHardware-SicherheitFirmware-Analyse
GitHubusbarmory/tamago

tamago

Framework zur Kompilierung und Ausführung von Go-Anwendungen auf Bare-Metal-Prozessoren, das eine sichere Firmware-Entwicklung mit reduzierter Angriffsfläche durch Entfernung von Betriebssystem- und C-Abhängigkeiten ermöglicht.

Repository anzeigen
2.0k83vor 7 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

TamaGo - Bare Metal Go

tamago | https://github.com/usbarmory/tamago

Copyright (c) The TamaGo Authors. All Rights Reserved.

TamaGo gopher

Einleitung

TamaGo ist ein Framework, das die Kompilierung und Ausführung von uneingeschränkten Go-Anwendungen auf Bare-Metal-Prozessoren (AMD64, ARM, ARM64, RISCV64) ermöglicht.

Das Projekt entstand aus dem Wunsch, die Angriffsfläche von eingebetteten System-Firmware zu reduzieren, indem jegliche Laufzeitabhängigkeit von C-Code und Betriebssystemen entfernt wird.

Das TamaGo-Framework besteht aus den folgenden Komponenten:

  • Eine modifizierte Go-Distribution, die GOOS um das Ziel tamago erweitert und Bare-Metal-Ausführung durch einen von GOOSPKG gesetzten runtime/goos-Overlay ermöglicht.

  • Go-Pakete für Prozessor-/SoC-Unterstützung.

  • Go-Pakete für Board-Unterstützung.

Die Modifikationen am ursprünglichen Go-Compiler, der Laufzeit und der Zielanwendung (ein erforderlicher Import) sind minimal und sauber von anderen Architekturen getrennt.

Es wird großer Wert auf die Wiederverwendung von Code aus bestehenden Architekturen gelegt, die bereits in der standardmäßigen Go-Laufzeit enthalten sind – siehe Internals.

Die Modifikationen erhalten die vollständige Unterstützung der Standardbibliothek.

Diese Aspekte sind motiviert durch den Wunsch, ein Framework bereitzustellen, das eine sichere Go-Firmware-Entwicklung auf eingebetteten Systemen ermöglicht.

Aktuelle Veröffentlichungen

Die folgenden Links sind die neuesten Veröffentlichungen der modifizierten Go-Distribution von TamaGo, die GOOS=tamago zur entsprechenden Go-Version hinzufügt, sowie der TamaGo-Bibliothek:

GitHub release Build Status
GitHub release

Dokumentation

Go Reference

Die Hauptdokumentation befindet sich im Projekt-Wiki.

Die API-Dokumentation der Pakete findet sich unter pkg.go.dev.

Unterstützte AMD64-Ziele

Die folgende Tabelle fasst derzeit unterstützte x86-64-Ziele zusammen (GOOS=tamago GOARCH=amd64).

Unterstützte ARM-Ziele

Die folgende Tabelle fasst derzeit unterstützte ARM-SoCs und -Boards zusammen (GOOS=tamago GOARCH=arm).

Unterstützte ARM64-Ziele

Die folgende Tabelle fasst derzeit unterstützte ARM64-SoCs und -Boards zusammen (GOOS=tamago GOARCH=arm64).

Unterstützte RISC-V-Ziele

Die folgende Tabelle fasst derzeit unterstützte RISC-V-SoCs und -Boards zusammen (GOOS=tamago GOARCH=riscv64).

Userspace-Ziele

Die Ausführung von mit GOOS=tamago kompilierten Programmen kann auch im Userspace erfolgen, indem ein Paket importiert wird, das den erforderlichen runtime/goos-Overlay mit Betriebssystem-Überwachung anstelle von Bare-Metal-Treibern implementiert.

Das Kompilieren und Ausführen von Go-Programmen im Userspace als GOOS=tamago bietet den Vorteil der Systemaufruf-Isolation, da das ausführbare Programm die Go-Laufzeit nicht nutzen kann, um direkt auf Betriebssystem-Ressourcen zuzugreifen. Dies führt zu:

  • Isolation vom Betriebssystem-Dateisystem durch emulierte Festplatte im Arbeitsspeicher
  • Isolation vom Betriebssystem-Netzwerk, siehe net.SocketFunc
  • API für benutzerdefinierte Netzwerk-, Zufallszahlen- und Zeit-Handler

Die folgende Tabelle fasst derzeit verfügbare Userspace-Unterstützung zusammen:

¹ Verwendet zum Ausführen von Standard-Distributionstests und go test -tags user_linux

Kompilieren

Go-Distribution mit Unterstützung für GOOS=tamago

Der Befehl tamago lädt den go-Befehl aus der TamaGo-Distribution herunter, kompiliert und führt ihn aus, die mit der tamago-Modulversion aus der go.mod der Anwendung übereinstimmt.

Anwendungen können github.com/usbarmory/tamago zur go.mod hinzufügen und dann den go-Befehl ersetzen durch:

root@kitploit:~
go run github.com/usbarmory/tamago/cmd/tamago

oder die folgende Zeile zur go.mod hinzufügen, um go tool tamago als go-Befehl zu verwenden:

root@kitploit:~
tool github.com/usbarmory/tamago/cmd/tamago

Alternativ kann die neueste TamaGo-Distribution manuell erstellt werden oder die neueste binäre Veröffentlichung verwendet werden:

root@kitploit:~
wget https://github.com/usbarmory/tamago-go/archive/refs/tags/latest.zip
unzip latest.zip
cd tamago-go-latest/src && ./all.bash
cd ../bin && export TAMAGO=`pwd`/go

Anwendungen erstellen

Beim Kompilieren muss die Go-Umgebungsvariable GOOSPKG gesetzt werden, um diese Bibliothek als Overlay zu aktivieren und GOOS=tamago zu unterstützen.

root@kitploit:~
export GOOSPKG=github.com/usbarmory/tamago

Go-Anwendungen müssen das entsprechende Board-Paket importieren, um sicherzustellen, dass die Hardware-Initialisierung und Laufzeitunterstützung stattfinden:

root@kitploit:~
import (
	// Beispiel für USB armory Mk II
	_ "github.com/usbarmory/tamago/board/usbarmory/mk2"
)

Go-Anwendungen können mit dem im vorherigen Schritt erstellten Compiler kompiliert werden, mit einigen zusätzlichen Flags/Variablen:

root@kitploit:~
# Diese Bibliothek als `runtime/goos`-Overlay setzen
export GOOSPKG=github.com/usbarmory/tamago

# Beispiel für Cloud Hypervisory, QEMU und Firecracker KVMs
GOOS=tamago GOARCH=amd64 ${TAMAGO} build -ldflags "-T 0x10010000 -R 0x1000" main.go

# Beispiel für NXP i.MX6UL
GOOS=tamago GOARM=7 GOARCH=arm ${TAMAGO} build -ldflags "-T 0x80010000 -R 0x1000" main.go

# Beispiel für NXP 8MPLUSLPD4-EVK
GOOS=tamago GOARCH=arm64 ${TAMAGO} build -ldflags "-T 0x40010000 -R 0x1000" main.go

# Beispiel für SiFive FU540
GOOS=tamago GOARCH=riscv64 ${TAMAGO} build -ldflags "-T 0x80010000 -R 0x1000" main.go

# Beispiel für AI Foundry Erbium
GOOS=tamago GOARCH=riscv64 GOSOFT=1 ${TAMAGO} build -ldflags "-T 0x40010000 -R 0x1000" main.go

# Beispiel für Linux Userspace
GOOS=tamago ${TAMAGO} build main.go

Siehe die jeweilige README-Datei des Board-Pakets für Kompilierungsinformationen zu jedem spezifischen Ziel.

Build-Tags

Die folgenden Build-Tags erlauben es Anwendungen, die paketeigenen Definitionen für den runtime/goos-Overlay zu überschreiben:

  • linkramstart: Überschreibt ramStart
  • linkramsize: Überschreibt ramSize
  • linkprintk: Überschreibt printk
  • linkcpuinit: Überschreibt cpuinit
  • tiny: Reduziert die Heap-Allokationsanforderungen

Ausführen und Debuggen

Siehe die jeweilige README-Datei des Board-Pakets für Ausführungs- und Debugging-Informationen zu jedem spezifischen Ziel (echt oder emuliert).

Die Beispielanwendung bietet eine beispielhafte Treibernutzung und Anleitungen sowohl für native als auch emulierte Ausführung.

Ein emulierter Lauf der Beispielanwendung kann wie folgt gestartet werden:

root@kitploit:~
git clone https://github.com/usbarmory/tamago-example
cd tamago-example && make qemu

Anwendungen, die TamaGo verwenden

  • go-boot – der Bare-Metal-Go-UEFI-Boot-Manager
  • GoKey – die Bare-Metal-Go-Smartcard
  • GoTEE – Go Trusted Execution Environment
  • ArmoredWitness – ökosystemübergreifendes Witness-Netzwerk
  • armory-drive – USB-verschlüsseltes Laufwerk
  • armory-ums – USB-Massenspeicher-Firmware
  • armory-boot – USB armory Bootloader
  • tamago-example – TamaGo-Beispielanwendung
  • tamago-sev-example – Beispiel für eine vertrauliche VM (AMD SEV-SNP)
  • kotama – Tiny RISC-V Ziel-Demonstrator
  • kanzashi – Bare-Metal-Agent

Externe Treiber mit TamaGo

  • go-net – Generischer Netzwerktreiber
  • go-net/imx-usb – i.MX Ethernet über USB-Treiber
  • go-net/virtio – VirtIO-Netzwerktreiber
  • imx-usbserial – i.MX Seriell über USB-Treiber

Zusätzliche Ressourcen

  • Paket-API
  • Laufzeit-API
  • Kompatibilität
  • Internals
  • FAQ
  • Präsentationen: TamaGo, ArmoredWitness

Betreuer

Andrea Barisani
[email protected]

Andrej Rosano
[email protected]

Lizenz

tamago | https://github.com/usbarmory/tamago
Copyright (c) The TamaGo Authors. All Rights Reserved.

Dieses Projekt wird unter der BSD-ähnlichen Lizenz verteilt, die sich in der LICENSE-Datei befindet.

Das TamaGo-Logo ist eine Adaption des Go-Gophers, der von Renee French entworfen wurde und unter der Creative Commons 3.0 Attribution-Lizenz lizenziert ist. Go-Gopher-Vektorillustration von Hugo Arganda.

Tool herunterladen
CPUPlattformCPU-PaketPlattform-Paket
AMD/Intel 64-bitCloud Hypervisoramd64cloud_hypervisor/vm
AMD/Intel 64-bitFirecracker microvmamd64firecracker/microvm
AMD/Intel 64-bitQEMU microvmamd64qemu/microvm
AMD/Intel 64-bitUEFIamd64uefi/x64
AMD/Intel 64-bitGoogle Compute Engineamd64google/gcp, uefi/x64
SoCBoardSoC-PaketBoard-Paket
NXP i.MX6ULZ/i.MX6ULUSB armory Mk IIimx6ulusbarmory/mk2
NXP i.MX6ULL/i.MX6ULUSB armory Mk II LANimx6ulusbarmory/mk2
NXP i.MX6ULL/i.MX6ULZMCIMX6ULL-EVKimx6ulmx6ullevk
Broadcom BCM2835Raspberry Pi Zerobcm2835pi/pizero
Broadcom BCM2835Raspberry Pi 1 Model A+bcm2835pi/pi1
Broadcom BCM2835Raspberry Pi 1 Model B+bcm2835pi/pi1
Broadcom BCM2836Raspberry Pi 2 Model Bbcm2835pi/pi2
Nuvoton NUC980NuMaker-IIoT-NUC980G2nuc980nuc980iiot
SoCBoardSoC-PaketBoard-Paket
NXP i.MX8M Plus8MPLUSLPD4-EVKimx8mpimx8mpevk
Microchip LAN969xEVB-LAN9696-24portlan969xlan9696evb
SoCBoardSoC-PaketBoard-Paket
SiFive FU540QEMU sifive_ufu540qemu/sifive_u
AI Foundry Erbiumerbium_emuerbiumerbium_emu
AI Foundry ET-SoC-1sys_emuetsoc1sys_emu
BetriebssystemGOARCHLaufzeit-Pakete
Linuxamd64,arm,arm64,riscv64runtime/goos¹
Linuxamd64,arm,arm64,riscv64linux
GoTEEarm,riscv64applet