Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
tamago — Framework para compilar y ejecutar aplicaciones Go en procesadores bare metal, que permite el desarrollo seguro de firmware con una superficie de ataque reducida al eliminar las dependencias del sistema operativo y de C. | Kitploit
Herramientas/GitHubGitHub/usbarmory/tamago
Seguridad de Sistemas EmbebidosVirtualización de SeguridadSeguridad de HardwareAnálisis de Firmware
GitHubusbarmory/tamago

tamago

Framework para compilar y ejecutar aplicaciones Go en procesadores bare metal, que permite el desarrollo seguro de firmware con una superficie de ataque reducida al eliminar las dependencias del sistema operativo y de C.

Ver Repositorio
2.0k83hace 5 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

TamaGo - Go sobre metal desnudo

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

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

TamaGo gopher

Introducción

TamaGo es un framework que permite la compilación y ejecución de aplicaciones Go sin restricciones en procesadores de metal desnudo (AMD64, ARM, ARM64, RISCV64).

El proyecto surge del deseo de reducir la superficie de ataque del firmware de sistemas embebidos eliminando cualquier dependencia en tiempo de ejecución de código C y sistemas operativos.

El framework TamaGo consta de los siguientes componentes:

  • Una distribución Go modificada que extiende el soporte GOOS al objetivo tamago, permitiendo la ejecución en metal desnudo a través de una superposición runtime/goos establecida por GOOSPKG.

  • Paquetes Go para soporte de procesador/SoC.

  • Paquetes Go para soporte de placas.

Las modificaciones son mínimas en comparación con el compilador Go original, el runtime y la aplicación objetivo (una importación requerida), con una separación limpia de otras arquitecturas.

Se pone un fuerte énfasis en la reutilización de código de las arquitecturas existentes ya incluidas en el runtime estándar de Go, consulte Internals.

Las modificaciones mantienen soporte completo de la biblioteca estándar.

Dichos aspectos están motivados por el deseo de proporcionar un framework que permita el desarrollo seguro de firmware Go en sistemas embebidos.

Lanzamientos actuales

Los siguientes enlaces son los últimos lanzamientos para la distribución Go modificada de TamaGo, que agrega soporte GOOS=tamago a la versión Go correspondiente, y la biblioteca TamaGo:

GitHub release Build Status
GitHub release

Documentación

Go Reference

La documentación principal se puede encontrar en el wiki del proyecto.

La documentación de la API del paquete se puede encontrar en pkg.go.dev.

Objetivos AMD64 compatibles

La siguiente tabla resume los objetivos x86-64 actualmente compatibles (GOOS=tamago GOARCH=amd64).

Objetivos ARM compatibles

La siguiente tabla resume los SoC y placas ARM actualmente compatibles (GOOS=tamago GOARCH=arm).

Objetivos ARM64 compatibles

La siguiente tabla resume los SoC y placas ARM64 actualmente compatibles (GOOS=tamago GOARCH=arm64).

Objetivos RISC-V compatibles

La siguiente tabla resume los SoC y placas RISC-V actualmente compatibles (GOOS=tamago GOARCH=riscv64).

Objetivos de espacio de usuario

La ejecución de programas compilados con GOOS=tamago también puede realizarse en espacio de usuario importando cualquier paquete que implemente la superposición runtime/goos requerida con supervisión del sistema operativo en lugar de controladores de metal desnudo.

Compilar y ejecutar programas Go en espacio de usuario como GOOS=tamago proporciona el beneficio del aislamiento de llamadas al sistema, ya que el ejecutable no puede aprovechar el runtime Go para acceder directamente a los recursos del sistema operativo; esto resulta en:

  • aislamiento del sistema de archivos del SO, a través de disco emulado en memoria
  • aislamiento de la red del SO, consulte net.SocketFunc
  • API para controladores de red, rng y tiempo personalizados

La siguiente tabla resume el soporte de espacio de usuario actualmente disponible:

¹ Se usa para ejecutar pruebas de distribución estándar y go test -tags user_linux

Compilación

Distribución Go compatible con GOOS=tamago

El comando tamago descarga, compila y ejecuta el comando go de la distribución TamaGo que coincide con la versión del módulo tamago desde el go.mod de la aplicación.

Las aplicaciones pueden agregar github.com/usbarmory/tamago a go.mod, y luego reemplazar el comando go con:

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

o agregar la siguiente línea a go.mod para usar go tool tamago como comando go:

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

Alternativamente, se puede compilar manualmente la última distribución TamaGo o usar la última versión binaria:

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

Compilación de aplicaciones

Al compilar, la variable de entorno Go GOOSPKG debe configurarse para habilitar esta biblioteca como superposición para soportar GOOS=tamago.

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

Las aplicaciones Go deben importar el paquete de placa correspondiente para asegurar que la inicialización del hardware y el soporte de runtime se realicen:

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

Las aplicaciones Go se pueden compilar con el compilador construido en el paso anterior, con la adición de algunas banderas/variables:

root@kitploit:~
# establecer esta biblioteca como superposición `runtime/goos`
export GOOSPKG=github.com/usbarmory/tamago

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

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

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

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

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

# Ejemplo para espacio de usuario Linux
GOOS=tamago ${TAMAGO} build main.go

Consulte el archivo README del paquete de placa respectivo para obtener información de compilación para cada objetivo específico.

Etiquetas de compilación

Las siguientes etiquetas de compilación permiten a las aplicaciones anular la definición del propio paquete para la superposición runtime/goos:

  • linkramstart: anular ramStart
  • linkramsize: anular ramSize
  • linkprintk: anular printk
  • linkcpuinit: anular cpuinit
  • tiny: reducir los requisitos de asignación de heap

Ejecución y depuración

Consulte el archivo README del paquete de placa respectivo para obtener información de ejecución y depuración para cada objetivo específico (real o emulado).

La aplicación de ejemplo proporciona un uso de controlador de muestra e instrucciones para la ejecución nativa y emulada.

Se puede lanzar una ejecución emulada de la aplicación de ejemplo de la siguiente manera:

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

Aplicaciones que usan TamaGo

  • go-boot - el gestor de arranque UEFI en Go sobre metal desnudo
  • GoKey - la tarjeta inteligente en Go sobre metal desnudo
  • GoTEE - Entorno de Ejecución Confiable en Go
  • ArmoredWitness - red de testigos entre ecosistemas
  • armory-drive - unidad USB cifrada
  • armory-ums - firmware de almacenamiento masivo USB
  • armory-boot - cargador de arranque USB armory
  • tamago-example - aplicación de ejemplo de TamaGo
  • tamago-sev-example - ejemplo de VM confidencial (AMD SEV-SNP)
  • kotama - demostrador de objetivo RISC-V pequeño
  • kanzashi - Agente de Metal Desnudo

Controladores externos que usan TamaGo

  • go-net - Controlador de red genérico
  • go-net/imx-usb - Controlador de i.MX Ethernet sobre USB
  • go-net/virtio - Controlador de red VirtIO
  • imx-usbserial - Controlador de i.MX Serial sobre USB

Recursos adicionales

  • API del paquete
  • API del runtime
  • Compatibilidad
  • Internos
  • FAQ
  • Presentaciones: TamaGo, ArmoredWitness

Mantenedores

Andrea Barisani
[email protected]

Andrej Rosano
[email protected]

Licencia

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

Este proyecto se distribuye bajo la licencia de estilo BSD que se encuentra en el archivo LICENSE.

El logotipo de TamaGo está adaptado del gopher de Go diseñado por Renee French y licenciado bajo la licencia Creative Commons 3.0 Attributions. Ilustración vectorial del gopher Go por Hugo Arganda.

Descargar herramienta
CPUPlataformaPaquete CPUPaquete de plataforma
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
SoCPlacaPaquete SoCPaquete de placa
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
SoCPlacaPaquete SoCPaquete de placa
NXP i.MX8M Plus8MPLUSLPD4-EVKimx8mpimx8mpevk
Microchip LAN969xEVB-LAN9696-24portlan969xlan9696evb
SoCPlacaPaquete SoCPaquete de placa
SiFive FU540QEMU sifive_ufu540qemu/sifive_u
AI Foundry Erbiumerbium_emuerbiumerbium_emu
AI Foundry ET-SoC-1sys_emuetsoc1sys_emu
Sistema OperativoGOARCHPaquetes de runtime
Linuxamd64,arm,arm64,riscv64runtime/goos¹
Linuxamd64,arm,arm64,riscv64linux
GoTEEarm,riscv64applet