Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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.

··Feeds·Contato·Privacidade·© 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.0k83há 7 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 em bare metal

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

Copyright (c) The TamaGo Authors. Todos os direitos reservados.

TamaGo gopher

Introdução

TamaGo é um framework que possibilita a compilação e execução de aplicações Go sem dependências em processadores bare metal (AMD64, ARM, ARM64, RISCV64).

O projeto surge do desejo de reduzir a superfície de ataque do firmware de sistemas embarcados, removendo qualquer dependência em tempo de execução de código C e sistemas operacionais.

O framework TamaGo consiste nos seguintes componentes:

  • Uma distribuição Go modificada que estende o suporte a GOOS para o destino tamago, permitindo execução bare metal através de uma sobreposição runtime/goos definida por GOOSPKG.

  • Pacotes Go para suporte a processadores/SoCs.

  • 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 (uma importação necessária), com uma separação limpa de outras arquiteturas.

Uma forte ênfase é colocada na reutilização de código de arquiteturas existentes já incluídas no runtime Go padrão, veja Internos.

As modificações mantêm suporte completo à biblioteca padrão.

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

Lançamentos atuais

Os links a seguir são os lançamentos mais recentes da Distribuição Go modificada TamaGo, que adiciona suporte a GOOS=tamago à versão Go correspondente, e da Biblioteca TamaGo:

GitHub release Build Status
GitHub release

Documentação

Go Reference

A documentação principal pode ser encontrada no wiki do projeto.

A documentação da API dos pacotes pode ser encontrada em pkg.go.dev.

Destinos AMD64 suportados

A tabela a seguir resume os destinos x86-64 atualmente suportados (GOOS=tamago GOARCH=amd64).

Destinos ARM suportados

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

Destinos ARM64 suportados

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

Destinos RISC-V suportados

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

Destinos de espaço de usuário

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

Compilar e executar programas Go em espaço de usuário como GOOS=tamago fornece o benefício do isolamento de chamadas de sistema, pois o executável não pode aproveitar o runtime Go para acessar diretamente os recursos do SO, isso resulta em:

  • isolamento do sistema de arquivos do SO, através de disco emulado em memória
  • isolamento de rede do SO, veja net.SocketFunc
  • API para rede, rng, manipuladores de tempo personalizados

A tabela a seguir resume o suporte atual para espaço de usuário:

¹ Usado para executar testes de distribuição padrão e go test -tags user_linux

Compilando

Distribuição Go com suporte a GOOS=tamago

O comando tamago baixa, compila e executa o comando go da Distribuição TamaGo correspondente à versão do módulo tamago no 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:

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

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

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

Alternativamente, a última distribuição TamaGo pode ser compilada manualmente ou o último lançamento binário pode ser usado:

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

Compilando aplicações

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

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

As aplicações Go são obrigadas a importar o pacote de placa relevante para garantir que a inicialização de hardware e o suporte de runtime ocorram:

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

As aplicações Go podem ser compiladas com o compilador construído na etapa anterior, com a adição de alguns flags/variáveis:

root@kitploit:~
# define esta biblioteca como sobreposição `runtime/goos`
export GOOSPKG=github.com/usbarmory/tamago

# Exemplo para Cloud Hypervisor, QEMU e Firecracker KVM
GOOS=tamago GOARCH=amd64 ${TAMAGO} build -ldflags "-T 0x10010000 -R 0x1000" main.go

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

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

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

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

# Exemplo para espaço de usuário Linux
GOOS=tamago ${TAMAGO} build main.go

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

Build tags

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

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

Executando e depurando

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

A aplicação de exemplo fornece uso de driver de exemplo e instruções para execução nativa, bem como emulada.

Uma execução emulada da aplicação de exemplo pode ser iniciada da seguinte forma:

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

Aplicações usando TamaGo

  • go-boot - o gerenciador de boot UEFI bare metal Go
  • GoKey - o smartcard bare metal Go
  • GoTEE - Ambiente de Execução Confiável Go
  • ArmoredWitness - rede de testemunhas entre ecossistemas
  • armory-drive - unidade criptografada USB
  • armory-ums - firmware de Armazenamento em Massa USB
  • armory-boot - boot loader do USB armory
  • tamago-example - aplicação de exemplo TamaGo
  • tamago-sev-example - exemplo de VM confidencial (AMD SEV-SNP)
  • kotama - demonstrador de destino RISC-V pequeno
  • kanzashi - Agente Bare Metal

Drivers externos usando TamaGo

  • go-net - Driver de Rede Genérico
  • go-net/imx-usb - Driver i.MX Ethernet sobre USB
  • go-net/virtio - Driver de Rede VirtIO
  • imx-usbserial - Driver i.MX Serial sobre USB

Recursos adicionais

  • API de Pacotes
  • API de Runtime
  • Compatibilidade
  • Internos
  • FAQ
  • Apresentações: TamaGo, ArmoredWitness

Mantenedores

Andrea Barisani
[email protected]

Andrej Rosano
[email protected]

Licença

tamago | https://github.com/usbarmory/tamago
Copyright (c) The TamaGo Authors. Todos os direitos reservados.

Este projeto é distribuído sob a licença BSD encontrada no arquivo LICENSE.

O logotipo TamaGo é adaptado do gopher Go projetado 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
CPUPlataformaPacote CPUPacote 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
SoCPlacaPacote SoCPacote 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
SoCPlacaPacote SoCPacote Placa
NXP i.MX8M Plus8MPLUSLPD4-EVKimx8mpimx8mpevk
Microchip LAN969xEVB-LAN9696-24portlan969xlan9696evb
SoCPlacaPacote SoCPacote Placa
SiFive FU540QEMU sifive_ufu540qemu/sifive_u
AI Foundry Erbiumerbium_emuerbiumerbium_emu
AI Foundry ET-SoC-1sys_emuetsoc1sys_emu
Sistema OperacionalGOARCHPacotes Runtime
Linuxamd64,arm,arm64,riscv64runtime/goos¹
Linuxamd64,arm,arm64,riscv64linux
GoTEEarm,riscv64applet