Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
tamago — Framework pour compiler et exécuter des applications Go sur des processeurs bare metal, permettant un développement de firmware sécurisé avec une surface d'attaque réduite grâce à la suppression des dépendances OS et C. | Kitploit
Outils/GitHubGitHub/usbarmory/tamago
Sécurité des Systèmes EmbarquésVirtualisation de SécuritéSécurité MatérielleAnalyse de Micrologiciel
GitHubusbarmory/tamago

tamago

Framework pour compiler et exécuter des applications Go sur des processeurs bare metal, permettant un développement de firmware sécurisé avec une surface d'attaque réduite grâce à la suppression des dépendances OS et C.

Voir le dépôt
2.0k83il y a 7 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

TamaGo - Go sur métal nu

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

Copyright (c) Les Auteurs de TamaGo. Tous droits réservés.

TamaGo gopher

Introduction

TamaGo est un framework qui permet la compilation et l'exécution d'applications Go non entravées sur des processeurs en métal nu (AMD64, ARM, ARM64, RISCV64).

Le projet est né du désir de réduire la surface d'attaque des firmwares de systèmes embarqués en supprimant toute dépendance d'exécution sur du code C et des systèmes d'exploitation.

Le framework TamaGo se compose des composants suivants :

  • Une distribution Go modifiée qui étend le support GOOS à la cible tamago, permettant une exécution sur métal nu via un overlay runtime/goos défini par GOOSPKG.

  • Des paquets Go pour le support des processeurs/SoC.

  • Des paquets Go pour le support des cartes.

Les modifications sont minimes par rapport au compilateur Go original, au runtime et à l'application cible (une importation requise), avec une séparation nette des autres architectures.

Un accent fort est mis sur la réutilisation du code des architectures existantes déjà incluses dans le runtime Go standard, voir Internals.

Les modifications maintiennent un support complet de la bibliothèque standard.

Ces aspects sont motivés par le désir de fournir un framework permettant un développement sécurisé de firmware Go sur des systèmes embarqués.

Versions actuelles

Les liens suivants sont les dernières versions de la distribution Go modifiée TamaGo, qui ajoute le support GOOS=tamago à la version Go correspondante, et de la bibliothèque TamaGo :

GitHub release Build Status
GitHub release

Documentation

Go Reference

La documentation principale se trouve sur le wiki du projet.

La documentation de l'API des paquets se trouve sur pkg.go.dev.

Cibles AMD64 supportées

Le tableau suivant résume les cibles x86-64 actuellement supportées (GOOS=tamago GOARCH=amd64).

Cibles ARM supportées

Le tableau suivant résume les SoC et cartes ARM actuellement supportés (GOOS=tamago GOARCH=arm).

Cibles ARM64 supportées

Le tableau suivant résume les SoC et cartes ARM64 actuellement supportés (GOOS=tamago GOARCH=arm64).

Cibles RISC-V supportées

Le tableau suivant résume les SoC et cartes RISC-V actuellement supportés (GOOS=tamago GOARCH=riscv64).

Cibles espace utilisateur

L'exécution de programmes compilés avec GOOS=tamago peut également avoir lieu dans l'espace utilisateur en important tout paquet qui implémente l'overlay runtime/goos requis avec une supervision du système d'exploitation au lieu de pilotes sur métal nu.

La compilation et l'exécution de programmes Go dans l'espace utilisateur en tant que GOOS=tamago offrent l'avantage de l'isolation des appels système, car l'exécutable ne peut pas utiliser le runtime Go pour accéder directement aux ressources du système d'exploitation, ce qui donne :

  • isolation du système de fichiers du système d'exploitation, via un disque émulé en mémoire
  • isolation du réseau du système d'exploitation, voir net.SocketFunc
  • API pour des gestionnaires réseau, rng, temps personnalisés

Le tableau suivant résume le support espace utilisateur actuellement disponible :

¹ Utilisé pour exécuter les tests de distribution standard et go test -tags user_linux

Compilation

Distribution Go supportant GOOS=tamago

La commande tamago télécharge, compile et exécute la commande go de la distribution TamaGo correspondant à la version du module tamago dans le go.mod de l'application.

Les applications peuvent ajouter github.com/usbarmory/tamago à go.mod, puis remplacer la commande go par :

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

ou ajouter la ligne suivante à go.mod pour utiliser go tool tamago comme commande go :

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

Alternativement, la dernière distribution TamaGo peut être construite manuellement ou la dernière version binaire peut être utilisée :

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

Construction d'applications

Lors de la compilation, la variable d'environnement Go GOOSPKG doit être définie pour activer cette bibliothèque comme overlay afin de supporter GOOS=tamago.

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

Les applications Go sont tenues d'importer le paquet de carte approprié pour garantir que l'initialisation matérielle et le support du runtime aient lieu :

root@kitploit:~
import (
	// Example for USB armory Mk II
	_ "github.com/usbarmory/tamago/board/usbarmory/mk2"
)

Les applications Go peuvent être compilées avec le compilateur construit à l'étape précédente, avec l'ajout de quelques flags/variables :

root@kitploit:~
# set this library as `runtime/goos` overlay
export GOOSPKG=github.com/usbarmory/tamago

# Example for Cloud Hypervisory, QEMU and Firecracker KVMs
GOOS=tamago GOARCH=amd64 ${TAMAGO} build -ldflags "-T 0x10010000 -R 0x1000" main.go

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

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

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

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

# Example for Linux userspace
GOOS=tamago ${TAMAGO} build main.go

Consultez le fichier README du paquet de carte respectif pour les informations de compilation pour chaque cible spécifique.

Tags de construction

Les tags de construction suivants permettent aux applications de remplacer la définition propre du paquet pour l'overlay runtime/goos :

  • linkramstart: override ramStart
  • linkramsize: override ramSize
  • linkprintk: override printk
  • linkcpuinit: override cpuinit
  • tiny : réduire les besoins d'allocation du heap

Exécution et débogage

Consultez le fichier README du paquet de carte respectif pour les informations d'exécution et de débogage pour chaque cible spécifique (réelle ou émulée).

L'application exemple fournit un exemple d'utilisation du pilote et des instructions pour l'exécution native et émulée.

Une exécution émulée de l'application exemple peut être lancée comme suit :

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

Applications utilisant TamaGo

  • go-boot - le gestionnaire de démarrage UEFI Go sur métal nu
  • GoKey - la carte à puce Go sur métal nu
  • GoTEE - Go Trusted Execution Environment
  • ArmoredWitness - réseau de témoin inter-écosystème
  • armory-drive - lecteur USB crypté
  • armory-ums - firmware de stockage de masse USB
  • armory-boot - chargeur de démarrage USB armory
  • tamago-example - application exemple TamaGo
  • tamago-sev-example - exemple de VM confidentielle (AMD SEV-SNP)
  • kotama - démonstrateur de cible RISC-V miniature
  • kanzashi - Agent sur métal nu

Pilotes externes utilisant TamaGo

  • go-net - Pilote réseau générique
  • go-net/imx-usb - Pilote i.MX Ethernet over USB
  • go-net/virtio - Pilote réseau VirtIO
  • imx-usbserial - Pilote i.MX Serial over USB

Ressources supplémentaires

  • API des paquets
  • API du runtime
  • Compatibilité
  • Fonctionnement interne
  • FAQ
  • Présentations : TamaGo, ArmoredWitness

Mainteneurs

Andrea Barisani
[email protected]

Andrej Rosano
[email protected]

Licence

tamago | https://github.com/usbarmory/tamago
Copyright (c) Les Auteurs de TamaGo. Tous droits réservés.

Ce projet est distribué sous la licence de type BSD trouvée dans le fichier LICENSE.

Le logo TamaGo est adapté du gopher Go conçu par Renee French et sous licence Creative Commons 3.0 Attribution. Illustration vectorielle du gopher Go par Hugo Arganda.

Télécharger l’outil
CPUPlateformePaquet CPUPaquet plateforme
AMD/Intel 64 bitsCloud Hypervisoramd64cloud_hypervisor/vm
AMD/Intel 64 bitsFirecracker microvmamd64firecracker/microvm
AMD/Intel 64 bitsQEMU microvmamd64qemu/microvm
AMD/Intel 64 bitsUEFIamd64uefi/x64
AMD/Intel 64 bitsGoogle Compute Engineamd64google/gcp, uefi/x64
SoCCartePaquet SoCPaquet carte
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
SoCCartePaquet SoCPaquet carte
NXP i.MX8M Plus8MPLUSLPD4-EVKimx8mpimx8mpevk
Microchip LAN969xEVB-LAN9696-24portlan969xlan9696evb
SoCCartePaquet SoCPaquet carte
SiFive FU540QEMU sifive_ufu540qemu/sifive_u
AI Foundry Erbiumerbium_emuerbiumerbium_emu
AI Foundry ET-SoC-1sys_emuetsoc1sys_emu
Système d'exploitationGOARCHPaquets runtime
Linuxamd64,arm,arm64,riscv64runtime/goos¹
Linuxamd64,arm,arm64,riscv64linux
GoTEEarm,riscv64applet