Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
tamago — Framework para compilar e executar aplicações Go em processadores bare metal, permitindo o desenvolvimento seguro de firmware com superfície de ataque reduzida através da remoção de dependências de SO e C. | Kitploit
Ferramentas/GitHubGitHub/usbarmory/tamago
Segurança de Sistemas EmbarcadosVirtualização para SegurançaSegurança de HardwareAnálise de Firmware
GitHubusbarmory/tamago

tamago

Framework para compilar e executar aplicações Go em processadores bare metal, permitindo o desenvolvimento seguro de firmware com superfície de ataque reduzida através da remoção de dependências de SO e C.

Ver Repositório
2.0k8348há 10 diasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
TamaGo - Go bare metal
======================

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

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

![TamaGo gopher](https://github.com/usbarmory/tamago/wiki/images/tamago.svg?sanitize=true)

Introdução
============

TamaGo é um framework que permite a compilação e execução de aplicações Go
sem dependências em processadores bare metal.

Os projetos surgem do desejo de reduzir a superfície de ataque do firmware de
sistemas embarcados, removendo qualquer dependência de runtime em código C e
Sistemas Operacionais.

O framework TamaGo é composto pelos seguintes componentes:

 - Uma [distribuição Go](https://github.com/usbarmory/tamago-go) modificada
   que estende o suporte a `GOOS` para o alvo `tamago`, permitindo execução
   bare metal através de um overlay [runtime/goos](https://github.com/usbarmory/tamago-go/tree/latest/src/runtime/goos)
   definido por `GOOSPKG`.

 - Pacotes Go para suporte a processador/SoC.

 - Pacotes Go para suporte a placas.

As modificações são mínimas em relação ao compilador Go original, runtime e a
aplicação alvo (um import necessário), com uma separação limpa de outras
arquiteturas.

É dada forte ênfase à reutilização de código de arquiteturas existentes já
incluídas no runtime padrão do Go, consulte
[Internals](https://github.com/usbarmory/tamago/wiki/Internals).

As modificações mantêm [suporte completo à biblioteca padrão](https://github.com/usbarmory/tamago/wiki/Compatibility).

Tais aspetos são motivados pelo desejo de fornecer um framework que permita
o desenvolvimento seguro de firmware Go em sistemas embarcados.

Versões atuais
================

Os links seguintes são as versões mais recentes para a
[distribuição Go modificada do TamaGo](https://github.com/usbarmory/tamago-go),
que adiciona suporte a `GOOS=tamago` à versão Go correspondente, e
[biblioteca TamaGo](https://github.com/usbarmory/tamago):

[![GitHub release](https://img.shields.io/github/v/release/usbarmory/tamago-go)](https://github.com/usbarmory/tamago-go/releases/latest) [![Build Status](https://github.com/usbarmory/tamago-go/workflows/Build%20Go%20compiler/badge.svg)](https://github.com/usbarmory/tamago-go/actions)  
[![GitHub release](https://img.shields.io/github/v/release/usbarmory/tamago)](https://github.com/usbarmory/tamago/releases/latest)

Documentação
=============

[![Go Reference](https://pkg.go.dev/badge/github.com/usbarmory/tamago.svg)](https://pkg.go.dev/github.com/usbarmory/tamago)

A documentação principal pode ser encontrada na
[wiki do projeto](https://github.com/usbarmory/tamago/wiki).

A documentação da API dos pacotes pode ser encontrada em
[pkg.go.dev](https://pkg.go.dev/github.com/usbarmory/tamago).

Alvos AMD64 suportados
=======================

A tabela seguinte resume os alvos x86-64 atualmente suportados
(`GOOS=tamago GOARCH=amd64`).

| CPU              | Plataforma                                                                  | Pacote CPU                                                    | Pacote Plataforma                                                                                                                                    |
|------------------|---------------------------------------------------------------------------|----------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|
| AMD/Intel 64-bit | [Cloud Hypervisor](https://www.cloudhypervisor.org )                      | [amd64](https://github.com/usbarmory/tamago/tree/master/amd64) | [cloud_hypervisor/vm](https://github.com/usbarmory/tamago/tree/master/board/cloud_hypervisor/vm)                                                    |
| AMD/Intel 64-bit | [Firecracker microvm](https://firecracker-microvm.github.io)              | [amd64](https://github.com/usbarmory/tamago/tree/master/amd64) | [firecracker/microvm](https://github.com/usbarmory/tamago/tree/master/board/firecracker/microvm)                                                    |
| AMD/Intel 64-bit | [QEMU microvm](https://www.qemu.org/docs/master/system/i386/microvm.html) | [amd64](https://github.com/usbarmory/tamago/tree/master/amd64) | [qemu/microvm](https://github.com/usbarmory/tamago/tree/master/board/qemu/microvm)                                                                  |
| AMD/Intel 64-bit | [UEFI](https://uefi.org/)                                                 | [amd64](https://github.com/usbarmory/tamago/tree/master/amd64) | [uefi/x64](https://github.com/usbarmory/go-boot/tree/main/uefi/x64)                                                                                 |
| AMD/Intel 64-bit | [Google Compute Engine](https://cloud.google.com/products/compute)        | [amd64](https://github.com/usbarmory/tamago/tree/master/amd64) | [google/gcp](https://github.com/usbarmory/tamago/tree/master/board/google/gcp), [uefi/x64](https://github.com/usbarmory/go-boot/tree/main/uefi/x64) |

Alvos ARM suportados
=====================

A tabela seguinte resume os SoCs e placas ARM atualmente suportados
(`GOOS=tamago GOARCH=arm`).

| SoC                   | Placa                                                                                                                                                                                | Pacote SoC                                                                  | Pacote Placa                                                                          |
|-----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|----------------------------------------------------------------------------------------|
| NXP i.MX6ULZ/i.MX6UL  | [USB armory Mk II](https://github.com/usbarmory/usbarmory/wiki/Mk-II-Introduction)                                                                                                   | [imx6ul](https://github.com/usbarmory/tamago/tree/master/soc/nxp/imx6ul)     | [usbarmory/mk2](https://github.com/usbarmory/tamago/tree/master/board/usbarmory)       |
| NXP i.MX6ULL/i.MX6UL  | [USB armory Mk II LAN](https://github.com/usbarmory/usbarmory/wiki/Mk-II-LAN)                                                                                                        | [imx6ul](https://github.com/usbarmory/tamago/tree/master/soc/nxp/imx6ul)     | [usbarmory/mk2](https://github.com/usbarmory/tamago/tree/master/board/usbarmory)       |
| NXP i.MX6ULL/i.MX6ULZ | [MCIMX6ULL-EVK](https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/evaluation-kit-for-the-i-mx-6ull-and-6ulz-applications-processor:MCIMX6ULL-EVK) | [imx6ul](https://github.com/usbarmory/tamago/tree/master/soc/nxp/imx6ul)     | [mx6ullevk](https://github.com/usbarmory/tamago/tree/master/board/nxp/mx6ullevk)       |
| Broadcom BCM2835      | [Raspberry Pi Zero](https://www.raspberrypi.org/products/raspberry-pi-zero)                                                                                                          | [bcm2835](https://github.com/usbarmory/tamago/tree/master/soc/bcm2835)       | [pi/pizero](https://github.com/usbarmory/tamago/tree/master/board/raspberrypi)         |
| Broadcom BCM2835      | [Raspberry Pi 1 Model A+](https://www.raspberrypi.org/products/raspberry-pi-1-model-a-plus/)                                                                                         | [bcm2835](https://github.com/usbarmory/tamago/tree/master/soc/bcm2835)       | [pi/pi1](https://github.com/usbarmory/tamago/tree/master/board/raspberrypi)            |
| Broadcom BCM2835      | [Raspberry Pi 1 Model B+](https://www.raspberrypi.org/products/raspberry-pi-1-model-b-plus/)                                                                                         | [bcm2835](https://github.com/usbarmory/tamago/tree/master/soc/bcm2835)       | [pi/pi1](https://github.com/usbarmory/tamago/tree/master/board/raspberrypi)            |
| Broadcom BCM2836      | [Raspberry Pi 2 Model B](https://www.raspberrypi.org/products/raspberry-pi-2-model-b)                                                                                                | [bcm2835](https://github.com/usbarmory/tamago/tree/master/soc/bcm2835)       | [pi/pi2](https://github.com/usbarmory/tamago/tree/master/board/raspberrypi)            |
| Nuvoton NUC980        | [NuMaker-IIoT-NUC980G2](https://www.nuvoton.com/products/iot-solution/iot-platform/numaker-iiot-nuc980g2)                                                                            | [nuc980](https://github.com/usbarmory/tamago/tree/master/soc/nuvoton/nuc980) | [nuc980iiot](https://github.com/usbarmory/tamago/tree/master/board/nuvoton/nuc980iiot) |

Alvos ARM64 suportados
=======================

A tabela seguinte resume os SoCs e placas ARM64 atualmente suportados
(`GOOS=tamago GOARCH=arm64`).

| SoC               | Placa                                                                                                    | Pacote SoC                                                                      | Pacote Placa                                                                            |
|-------------------|----------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------|------------------------------------------------------------------------------------------|
| NXP i.MX8M Plus   | [8MPLUSLPD4-EVK](https://www.nxp.com/design/design-center/development-boards-and-designs/8MPLUSLPD4-EVK) | [imx8mp](https://github.com/usbarmory/tamago/tree/master/soc/nxp/imx8mp)         | [imx8mpevk](https://github.com/usbarmory/tamago/tree/master/board/nxp/imx8mpevk)         |
| Microchip LAN969x | [EVB-LAN9696-24port](https://www.microchip.com/en-us/development-tool/ev23x71a)                          | [lan969x](https://github.com/usbarmory/tamago/tree/master/soc/microchip/lan969x) | [lan9696evb](https://github.com/usbarmory/tamago/tree/master/board/microchip/lan9696evb) |

Alvos RISC-V suportados
========================

A tabela seguinte resume os SoCs e placas RISC-V atualmente suportados
(`GOOS=tamago GOARCH=riscv64`).

| SoC                 | Placa                                                                         | Pacote SoC                                                                       | Pacote Placa                                                                            |
|---------------------|-------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|------------------------------------------------------------------------------------------|
| AI Foundry Erbium   | [erbium_emu](https://github.com/aifoundry-org/et-platform)                    | [erbium](https://github.com/usbarmory/tamago/tree/master/soc/aifoundry/erbium)    | [erbium_emu](https://github.com/usbarmory/tamago/tree/master/board/aifoundry/erbium_emu) |
| AI Foundry ET-SoC-1 | [sys_emu](https://github.com/aifoundry-org/et-platform/tree/master/sw-sysemu) | [etsoc1](https://github.com/usbarmory/tamago/tree/master/soc/aifoundry/etsoc1)    | [sys_emu](https://github.com/usbarmory/tamago/tree/master/board/aifoundry/sys_emu)       |
| Fisilink FSL91030   | [MilkV Vega](https://milkv.io/vega)                                           | [fsl91030](https://github.com/usbarmory/tamago/tree/master/soc/fisilink/fsl91030) | [vega](https://github.com/usbarmory/tamago/tree/master/board/milkv/vega)                 |
| Fisilink FSL91030   | [Nuclei QEMU](https://doc.nucleisys.com/nuclei_tools/qemu/index.html)         | [fsl91030](https://github.com/usbarmory/tamago/tree/master/soc/fisilink/fsl91030) | [eval_soc](https://github.com/usbarmory/tamago/tree/master/board/nuclei/eval_soc)        |
| SiFive FU540        | [QEMU sifive_u](https://www.qemu.org/docs/master/system/riscv/sifive_u.html)  | [fu540](https://github.com/usbarmory/tamago/tree/master/soc/sifive/fu540)         | [qemu/sifive_u](https://github.com/usbarmory/tamago/tree/master/board/qemu/sifive_u)     |

Alvos LoongArch suportados
===========================

A tabela seguinte resume os SoCs e placas LoongArch atualmente suportados
(`GOOS=tamago GOARCH=loong64`).

| SoC             | Placa                                                                    | Pacote SoC                                                                       | Pacote Placa                                                                |
|-----------------|--------------------------------------------------------------------------|-----------------------------------------------------------------------------------|------------------------------------------------------------------------------|
| Loongson 3A5000 | [QEMU virt](https://www.qemu.org/docs/master/system/loongarch/virt.html) | [ls3a5000](https://github.com/usbarmory/tamago/tree/master/soc/loongson/ls3a5000) | [qemu/virt](https://github.com/usbarmory/tamago/tree/master/board/qemu/virt) |

Alvos em espaço de utilizador
=================

A execução de programas compilados com `GOOS=tamago` também pode ocorrer em
espaço de utilizador importando qualquer pacote que implemente o overlay
`runtime/goos` necessário com supervisão do SO em vez de drivers bare metal.

Compilar e executar programas Go em espaço de utilizador como `GOOS=tamago`
proporciona o benefício do isolamento de chamadas de sistema, uma vez que o
executável não pode tirar partido do runtime Go para aceder diretamente a
recursos do SO, o que resulta em:

  * isolamento do sistema de ficheiros do SO, através de disco emulado em memória
  * isolamento da rede do SO, consulte [net.SocketFunc](https://github.com/usbarmory/tamago-go/blob/latest/src/net/net_tamago.go)
  * API para rede, rng e handlers de tempo personalizados

A tabela seguinte resume o suporte em espaço de utilizador atualmente disponível:

| Sistema Operativo                            | `GOARCH`                | Pacotes de Runtime                                                                   |
|----------------------------------------------|-------------------------|--------------------------------------------------------------------------------------|
| [Linux](https://www.kernel.org/)             | amd64,arm,arm64,riscv64 | [runtime/goos](https://github.com/usbarmory/tamago-go/blob/latest/src/runtime/goos)¹ |
| [Linux](https://www.kernel.org/)             | amd64,arm,arm64,riscv64 | [linux](https://github.com/usbarmory/tamago/tree/master/user/linux)                  |
| [GoTEE](https://github.com/usbarmory/GoTEE/) |             arm,riscv64 | [applet](https://pkg.go.dev/github.com/usbarmory/GoTEE/applet)                       |

¹ Utilizado para executar [testes da distribuição padrão](https://github.com/usbarmory/tamago/wiki/Compatibility) e `go test -tags user_linux`

Compilação
=========

Distribuição Go com suporte a `GOOS=tamago`
---------------------------------------

O comando [tamago](https://github.com/usbarmory/tamago/tree/latest/cmd/tamago)
descarrega, compila e executa o comando `go` da
[distribuição TamaGo](https://github.com/usbarmory/tamago-go) correspondente à
versão do módulo tamago do `go.mod` da aplicação.

As aplicações podem adicionar `github.com/usbarmory/tamago` ao `go.mod` e, em
seguida, substituir o comando `go` por:


```sh
go run github.com/usbarmory/tamago/cmd/tamago
```

ou adicione a seguinte linha ao `go.mod` para usar `go tool tamago` como comando go:

```
tool github.com/usbarmory/tamago/cmd/tamago
```

Alternativamente, a
[última distribuição do TamaGo](https://github.com/usbarmory/tamago-go/tree/latest) pode ser
compilada manualmente ou a
[última versão binária](https://github.com/usbarmory/tamago-go/releases/latest) pode ser utilizada:

```sh
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
```

Compilando aplicações
-----------------------

Durante a compilação, a variável de ambiente Go `GOOSPKG` deve ser definida para habilitar
esta biblioteca como overlay para suportar `GOOS=tamago`.

```
export GOOSPKG=github.com/usbarmory/tamago
```

Aplicações Go precisam importar o pacote de placa relevante para garantir
que a inicialização de hardware e o suporte em tempo de execução ocorram:

```golang
import (
	// Example for USB armory Mk II
	_ "github.com/usbarmory/tamago/board/usbarmory/mk2"
)
```

Aplicações Go podem ser compiladas com o compilador criado no passo anterior,
com a adição de algumas flags/variáveis:

```sh
# 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 GOEXPERIMENT=softfloat ${TAMAGO} build -ldflags "-T 0x40010000 -R 0x1000" main.go

# Example for QEMU LoongArch virt
GOOS=tamago GOARCH=loong64 ${TAMAGO} build -ldflags "-T 0x1000000 -R 0x1000" main.go

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

Consulte o arquivo README do pacote de placa respectivo para obter informações de compilação para
cada alvo específico.

Tags de compilação
==================

As seguintes tags de compilação permitem que as aplicações substituam a definição
própria do pacote para a sobreposição `runtime/goos`:

* `linkramstart`: substitui `ramStart`
* `linkramsize`: substitui `ramSize`
* `linkprintk`: substitui `printk`
* `linkcpuinit`: substitui `cpuinit`
* `tiny`: reduz os requisitos de alocação de heap

Execução e depuração
====================

Consulte o arquivo README do pacote de placa respectivo para obter informações de execução e depuração
para cada alvo específico (real ou emulado).

A [aplicação de exemplo](https://github.com/usbarmory/tamago-example)
fornece exemplos de uso de drivers e instruções para execução nativa, bem como emulada.

Uma execução emulada da [aplicação de exemplo](https://github.com/usbarmory/tamago-example)
pode ser iniciada da seguinte forma:

```sh
git clone https://github.com/usbarmory/tamago-example
cd tamago-example && make qemu
```

Aplicações que usam TamaGo
=========================

* [go-boot](https://github.com/usbarmory/go-boot) - o gerenciador de inicialização UEFI Go bare metal
* [GoKey](https://github.com/usbarmory/GoKey) - o smartcard Go bare metal
* [GoTEE](https://github.com/usbarmory/GoTEE) - Go Trusted Execution Environment
* [ArmoredWitness](https://github.com/transparency-dev/armored-witness) - rede de testemunhas entre ecossistemas
* [armory-drive](https://github.com/usbarmory/armory-drive) - unidade USB criptografada
* [armory-ums](https://github.com/usbarmory/armory-ums) - firmware de armazenamento em massa USB
* [armory-boot](https://github.com/usbarmory/armory-boot) - carregador de inicialização do USB armory
* [tamago-example](https://github.com/usbarmory/tamago-example) - aplicação de exemplo do TamaGo
* [tamago-sev-example](https://github.com/usbarmory/tamago-sev-example) - exemplo de VM Confidencial (AMD SEV-SNP)
* [kotama](https://github.com/usbarmory/kotama) - demonstrador de alvo RISC-V minúsculo
* [kanzashi](https://github.com/abarisani/kanzashi) - Agente Bare Metal

Drivers externos que usam TamaGo
=============================

* [go-net](https://github.com/usbarmory/go-net) - driver de rede genérico
* [go-net/imx-usb](https://github.com/usbarmory/go-net/tree/main/imx-usb) - driver de Ethernet sobre USB i.MX
* [go-net/virtio](https://github.com/usbarmory/go-net/tree/main/virtio) - driver de rede VirtIO
* [imx-usbserial](https://github.com/usbarmory/imx-usbserial) - driver de Serial sobre USB i.MX

Recursos adicionais
====================

* [API do pacote](https://pkg.go.dev/github.com/usbarmory/tamago)
* [API de runtime](https://github.com/usbarmory/tamago-go/blob/latest/src/runtime/goos/README.md)
* [Compatibilidade](https://github.com/usbarmory/tamago/wiki/Compatibility)
* [Internos](https://github.com/usbarmory/tamago/wiki/Internals)
* [FAQ](https://github.com/usbarmory/tamago/wiki/Frequently-Asked-Questions-(FAQ))
* Apresentações: [TamaGo](https://github.com/abarisani/abarisani.github.io/tree/master/research/tamago), [ArmoredWitness](https://github.com/abarisani/abarisani.github.io/tree/master/research/witness)

Mantenedores
===========

Andrea Barisani  
[email protected]  

Andrej Rosano  
[email protected]  

Licença
=======

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

Este projeto é distribuído sob a licença no estilo BSD encontrada no arquivo
[LICENSE](https://github.com/usbarmory/tamago/blob/master/LICENSE).

O logotipo do TamaGo é adaptado do gopher Go criado por Renee French e
licenciado sob a licença Creative Commons 3.0 Attributions. Ilustração vetorial
do Go Gopher por Hugo Arganda.
Baixar ferramenta