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
RedTeamCoin — Red Team Coin para operações de mineração de criptomoedas. | Kitploit
Ferramentas/GitHubGitHub/xyplex3/redteamcoin
ExploraçãoCriptografiaTestes de PenetraçãoComando e ControleRed TeamingDesenvolvimento de Payloads
GitHubxyplex3/redteamcoin

RedTeamCoin

Red Team Coin para operações de mineração de criptomoedas.

Ver Repositório
2522há 6 mesesRevisado 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

RedTeamCoin

RedTeamCoin Logo

License Pre-Commit Security Scanning Release Test & Build Verification Windows Miner Test


RedTeamCoin é uma implementação de pool de mineração de criptomoedas baseada em blockchain, projetada para testes de segurança autorizados e operações de red team. Desenvolvida em Go com suporte a cliente Java, simula ataques reais de criptomineração para ajudar organizações a avaliar suas capacidades de detecção e quantificar os danos potenciais de operações de mineração realizadas por atores maliciosos.

Esta ferramenta permite que equipes de segurança demonstrem de forma segura e legal cenários de ataque de criptomineração em sistemas corporativos, gerem relatórios de impacto abrangentes e validem controles de segurança — tudo dentro de um ambiente controlado usando uma blockchain isolada e não pública.

Sumário

  • Visão Geral
  • Recursos
  • Início Rápido
  • Como Funciona
  • Uso
    • Executando o Servidor
    • Executando um Minerador
    • Conectando a Servidores Remotos
  • Mineração GPU
  • Configuração
  • Referência da API
  • Arquitetura
  • Desenvolvimento
  • Contribuição
  • Solução de Problemas
  • Documentação
  • Licença
  • Agradecimentos

Visão Geral

Por que usar RedTeamCoin?

  • Demonstrar o impacto real dos ataques de criptojacking
  • Testar e validar sistemas de monitoramento e detecção de segurança
  • Gerar avaliações de danos quantificáveis para relatórios executivos
  • Simular operações de mineração com segurança sem conectar a blockchains públicas

Componentes do Sistema:

  • Servidor de Pool de Mineração - Gerencia a blockchain e coordena a distribuição de trabalho
  • Mineradores Cliente - Clientes de mineração CPU/GPU (implementações Go e Java)
  • Painel Web - Monitoramento, controle e estatísticas em tempo real
  • Ferramentas de Análise - Geram relatórios abrangentes de avaliação de danos

Recursos

  • Implementação Blockchain: Blockchain personalizada baseada em proof-of-work com dificuldade configurável
  • Servidor de Pool de Mineração: Gerencia vários mineradores e distribuição de trabalho via gRPC
  • Mineradores Cliente: Clientes de mineração automatizados (Go e Java) com registro de endereço IP e nome do host
  • Minerador Java Independente: Minerador desktop com interface gráfica habilitada
  • Cliente Java gRPC: Cliente gRPC headless para servidores e automação
  • Controle de Mineradores do Lado do Servidor: Pausar, retomar, limitar uso da CPU e excluir mineradores remotamente
  • Limitação de CPU: Limitar o uso da CPU do minerador de 0 a 100% para gerenciar recursos
  • Suporte a Mineração GPU: Suporte a CUDA e OpenCL para mineração acelerada por GPU
  • Mineração Híbrida: Mineração simultânea de CPU e GPU para máximo desempenho
  • Painel Web: Monitoramento em tempo real de mineradores, estatísticas e blockchain com botões de controle
  • Autenticação API REST: Autenticação segura baseada em token para endpoints da API
  • Criptografia TLS gRPC do Cliente: Criptografia TLS opcional para conexões gRPC seguras entre cliente e servidor
  • Rastreamento Duplo de IP: Registra tanto o IP reportado pelo cliente quanto o IP detectado pelo servidor
  • Estatísticas de CPU e GPU: Rastreamento e relatórios abrangentes de uso de recursos
  • Protocol Buffers: Comunicação eficiente cliente-servidor usando protobuf/gRPC
  • Auto-Terminação: Mineradores desligam e se auto-excluem automaticamente quando removidos do servidor

Início Rápido

Coloque o RedTeamCoin em funcionamento em menos de 5 minutos:

Pré-requisitos

  • Go 1.21 ou posterior
  • Compilador Protocol Buffer (protoc)

Ubuntu/Debian:```bash sudo apt update sudo apt install -y golang-go protobuf-compiler

root@kitploit:~
**macOS:**```bash
brew install go protobuf

Windows:

  • Instale Go em https://golang.org/dl/
  • Instale protoc em https://github.com/protocolbuffers/protobuf/releases

Instalação```bash

Clone the repository

git clone https://github.com/xyplex3/RedTeamCoin.git cd RedTeamCoin

Install dependencies

make install-tools make deps

Build server and client

make build

root@kitploit:~
### Verificação

Verifique se a compilação foi concluída com sucesso:```bash
ls -lh bin/
# Expected output: server and client binaries (1-5 MB each)

./bin/server --help
# Expected output: Usage information for the server

Executando Seu Primeiro Pool de Mineração

1. Inicie o servidor:```bash make run-server

root@kitploit:~
Você deve ver uma saída como:```text
RedTeamCoin Mining Pool Server
Authentication Token: abc123def456...
Dashboard URL: http://localhost:8080?token=abc123def456...
gRPC server listening on port 50051

2. Iniciar um minerador (em um novo terminal):```bash make run-client

root@kitploit:~
Você deve ver atividade de mineração:```text
Connected to mining pool at localhost:50051
Registered as miner: miner-hostname-1234567890
Mining block #1... Hash rate: 2.5 MH/s
Block found! Nonce: 98765, Hash: 000000ab1cd...

3. Ver o painel de controlo:

Abra o URL do passo 1 no seu navegador, ou navegue para:```text http://localhost:8080?token=YOUR_AUTH_TOKEN_HERE

root@kitploit:~
Você verá estatísticas em tempo real, incluindo mineradores ativos, taxas de hash e blocos minerados.

**Nota:** O servidor escuta em todas as interfaces de rede - substitua `localhost` pelo IP do seu servidor para acesso remoto.

## Como Funciona

O pool de mineração opera usando um mecanismo de consenso de prova de trabalho:

1. O servidor inicializa a blockchain com o bloco gênese
2. Os mineradores se conectam via gRPC e registram com IP/hostname
3. O servidor distribui atribuições de trabalho (modelos de bloco)
4. Os mineradores calculam hashes SHA-256 para encontrar nonces válidos
5. Os mineradores enviam soluções quando a meta de dificuldade é atingida
6. O servidor valida e adiciona blocos à blockchain
7. O painel exibe estatísticas em tempo real e atividade dos mineradores

Cada bloco requer encontrar um hash com um número específico de zeros à esquerda (dificuldade configurável). Os mineradores recebem 50 RTC por bloco minerado.

### Fluxo de Dados```text
Client Miner                    Server
    |                              |
    |--RegisterMiner(IP,Hostname)->|
    |<--RegistrationResponse-------|
    |--GetWork()------------------>|
    |<--WorkResponse(Block)--------|
    | [Mining: compute hashes]     |
    |--SubmitWork(nonce,hash)----->|
    |                              | [Validate proof-of-work
    |                              |  and add block to chain]
    |<--SubmissionResponse---------|
    |--Heartbeat(stats)----------->|
    |<--HeartbeatResponse----------|

Utilização

Executando o Servidor

HTTP (Padrão):```bash ./bin/server

root@kitploit:~
- Servidor gRPC: porta **50051**
- Painel web: **http://localhost:8080**

**HTTPS/TLS (Recomendado):**```bash
# Generate certificates (one time)
./generate_certs.sh

# Start with TLS
RTC_SERVER_TLS_ENABLED=true ./bin/server
  • servidor gRPC: porta 50051
  • Painel web: https://localhost:8443
  • Redirecionamento HTTP: http://localhost:8080

Nota #1: Com HTTPS, os navegadores mostrarão um aviso de segurança para certificados autoassinados. Clique em "Avançado" → "Prosseguir para localhost".

Nota #2: O painel web e o servidor gRPC serão executados em todas as interfaces do servidor e podem ser usados no lugar de localhost.

Executando um Minerador

Cliente Go (Binário Nativo)

Uso básico:```bash ./bin/client

root@kitploit:~
**Executar múltiplos mineradores:**
Abra terminais adicionais e execute `./bin/client` em cada um.

#### Mineradores Java

O RedTeamCoin fornece duas implementações de mineradores Java:

##### Cliente gRPC Java (Headless)

Cliente gRPC pronto para produção para servidores e automação.

**Pré-requisitos:**

- Java 11 ou posterior
- Maven (apenas para compilação)

**Compilar usando Makefile:**```bash
make build-java-client

Ou construir manualmente:```bash cd java-client mvn clean package

root@kitploit:~
**Executar:**```bash
# Connect to localhost
java -jar bin/redteamcoin-miner-client.jar

# Connect to remote server
java -jar bin/redteamcoin-miner-client.jar -server 192.168.1.100:50051

Recursos:

  • Protocolo gRPC (compatível com cliente Go)
  • Operação headless (sem GUI)
  • Controle do servidor (pausar/retomar/limitar)
  • Reconexão automática
  • Auto-exclusão por comando do servidor
Minerador Java Autônomo (GUI)

Minerador desktop com interface gráfica.

Pré-requisitos:

  • Java 21 ou posterior
  • Maven (apenas para compilação)

Compilar usando Makefile:```bash make build-java-standalone

root@kitploit:~
**Ou construir manualmente:**```bash
cd java-standalone
mvn clean package

Executar:```bash

GUI mode (default)

java -jar bin/redteamcoin-miner-standalone.jar

CLI mode

java -jar bin/redteamcoin-miner-standalone.jar --pool localhost:50051

root@kitploit:~
**Funcionalidades:**

- Interface gráfica de ambiente de trabalho  
- Exibição de estatísticas visuais  
- Protocolo JSON/Socket simples  
- Incorporado em aplicações  

##### Compilar Todos os Miners Java```bash
make build-java-all

Benefícios dos Java Miners:

  • Arquivo JAR único, fácil de distribuir
  • Multiplataforma (Windows, Linux, macOS)
  • Nenhuma compilação necessária nos sistemas de destino
  • Apenas requer Java Runtime (JRE)

Consulte java-client/README.md para obter a documentação completa do cliente Java gRPC.

Conectando-se a Servidores Remotos

Por padrão, os clientes se conectam a localhost:50051. Para se conectar a um servidor remoto:

Usando a flag de linha de comando (recomendado):```bash ./bin/client -server 192.168.1.100:50051 ./bin/client -s mining-pool.example.com:50051

root@kitploit:~
**Usando variável de ambiente:**```bash
export RTC_CLIENT_SERVER_ADDRESS=192.168.1.100:50051
./bin/client

Prioridade: Flag de linha de comando > Variável de ambiente > Padrão (localhost:50051)

Mineração em GPU

RedTeamCoin suporta mineração acelerada por GPU para GPUs NVIDIA (CUDA) e AMD/Intel (OpenCL). A mineração em GPU é 100-400x mais rápida e significativamente mais eficiente em termos energéticos do que a mineração em CPU.

Instalação da GPU

NVIDIA CUDA:```bash sudo apt install cuda-toolkit make build-cuda

root@kitploit:~
**AMD/Intel OpenCL:**```bash
sudo apt install ocl-icd-opencl-dev
make build-opencl

Detecção automática:```bash make build-gpu # Automatically detects and builds for available GPU

root@kitploit:~
### Uso da GPU```bash
# Auto-detect GPU (default)
./bin/client

# Force CPU only
RTC_CLIENT_MINING_GPU_ENABLED=false ./bin/client

# Hybrid mode (CPU + GPU)
RTC_CLIENT_MINING_HYBRID_MODE=true ./bin/client

# GPU with remote server
./bin/client -server mining-pool.example.com:50051

Comparação de Desempenho

ConfiguraçãoTaxa de HashAceleraçãoEficiência (MH/W)
CPU (1 core)~2 MH/sReferência~0.02
CPU (8 cores)~16 MH/s8x~0.02
GPU (RTX 3080)~500 MH/s250x~2.0
GPU (RTX 3090)~600 MH/s300x~2.5
GPU (AMD MI250)~800 MH/s400x~3.0
Híbrido (CPU+GPU)~620 MH/s310x~2.0

Nota: A mineração por GPU é 100-150x mais eficiente em energia do que a mineração por CPU.

Testando a Funcionalidade da GPU```bash

Test GPU detection

./bin/client 2>&1 | grep -i "gpu|cuda|opencl"

Force CPU mining (verify fallback works)

RTC_CLIENT_MINING_GPU_ENABLED=false ./bin/client

Force GPU mining (if available)

RTC_CLIENT_MINING_GPU_ENABLED=true ./bin/client

Test hybrid CPU+GPU mode

RTC_CLIENT_MINING_HYBRID_MODE=true ./bin/client

root@kitploit:~
Veja [docs/GPU_MINING.md](https://github.com/xyplex3/redteamcoin/blob/main/docs/GPU_MINING.md) para o guia completo de mineração GPU.

## Configuração

RedTeamCoin usa [Viper](https://github.com/spf13/viper) para gerenciamento flexível de configuração. As configurações podem ser especificadas por meio de variáveis de ambiente, arquivos de configuração YAML ou flags de linha de comando com a seguinte precedência:

**Flags de linha de comando** > **Variáveis de ambiente** > **Arquivos de configuração** > **Padrões**

### Configuração

**Inicialize os arquivos de configuração:**```bash
# Initialize both server and client configs
make init-config

# Or initialize individually
make init-server-config  # Creates server-config.yaml
make init-client-config  # Creates client-config.yaml

Isso copia arquivos YAML de exemplo para o seu diretório de trabalho para edição. Você também pode colocar arquivos de configuração em ~/.rtc/ ou /etc/rtc/.

Substituir com variáveis de ambiente:```bash

Environment variables take precedence over config files

export RTC_SERVER_MINING_DIFFICULTY=8 export RTC_CLIENT_SERVER_ADDRESS=pool.example.com:50051 ./bin/server

root@kitploit:~
### Variáveis de Ambiente

Todas as variáveis de ambiente usam prefixos: `RTC_SERVER_` para servidor, `RTC_CLIENT_` para cliente.

**Configuração do Servidor:**

| Variável                                | Descrição                   | Padrão            |
| --------------------------------------- | ----------------------------- | ------------------ |
| `RTC_SERVER_NETWORK_GRPC_PORT`          | Porta do servidor gRPC              | `50051`            |
| `RTC_SERVER_NETWORK_API_PORT`           | Porta da API HTTPS                | `8443`             |
| `RTC_SERVER_NETWORK_HTTP_PORT`          | Porta da interface web HTTP       | `8080`             |
| `RTC_SERVER_MINING_DIFFICULTY`          | Dificuldade de mineração (1-64)      | `6`                |
| `RTC_SERVER_MINING_BLOCK_REWARD`        | Recompensa do bloco em moedas         | `50`               |
| `RTC_SERVER_TLS_ENABLED`                | Habilitar HTTPS/TLS              | `false`            |
| `RTC_SERVER_TLS_CERT_FILE`              | Caminho do certificado TLS          | `certs/server.crt` |
| `RTC_SERVER_TLS_KEY_FILE`               | Caminho da chave privada TLS               | `certs/server.key` |
| `RTC_SERVER_API_READ_TIMEOUT`           | Timeout de leitura da API              | `15s`              |
| `RTC_SERVER_API_WRITE_TIMEOUT`          | Timeout de escrita da API             | `15s`              |
| `RTC_SERVER_API_IDLE_TIMEOUT`           | Timeout de ociosidade da API              | `60s`              |
| `RTC_SERVER_LOGGING_UPDATE_INTERVAL`    | Intervalo de atualização de estatísticas         | `30s`              |
| `RTC_SERVER_LOGGING_FILE_PATH`          | Caminho do arquivo de log                 | `pool_log.json`    |
| `RTC_AUTH_TOKEN` *(legado)*             | Token de autenticação personalizado   | Auto-gerado     |

**Configuração do Cliente:**

| Variável                                          | Descrição                         | Padrão           |
| ------------------------------------------------- | ----------------------------------- | ----------------- |
| `RTC_CLIENT_SERVER_ADDRESS`                       | Endereço do servidor do pool (host:porta)     | `localhost:50051` |
| `RTC_CLIENT_SERVER_TLS_ENABLED`                   | Habilitar TLS para conexão gRPC      | `false`           |
| `RTC_CLIENT_SERVER_TLS_INSECURE_SKIP_VERIFY`      | Pular verificação de certificado       | `true`            |
| `RTC_CLIENT_SERVER_TLS_CA_CERT_FILE`              | Caminho para o arquivo de certificado CA         | `""`              |
| `RTC_CLIENT_MINING_GPU_ENABLED`                   | Habilitar mineração GPU                   | `true`            |
| `RTC_CLIENT_MINING_HYBRID_MODE`                   | Habilitar mineração simultânea CPU+GPU  | `false`           |
| `RTC_CLIENT_MINING_AUTO_DELETE`                   | Exclusão automática ao desligar             | `true`            |
| `RTC_CLIENT_GPU_NONCE_RANGE`                      | Intervalo de nonce por lote de GPU           | `500000000`       |
| `RTC_CLIENT_GPU_CPU_START_NONCE`                  | Nonce inicial da CPU (evitar sobreposição com GPU) | `5000000000`      |
| `RTC_CLIENT_NETWORK_HEARTBEAT_INTERVAL`           | Intervalo de atualização de status              | `30s`             |
| `RTC_CLIENT_NETWORK_RETRY_INTERVAL`               | Atraso de retentativa de conexão              | `10s`             |
| `RTC_CLIENT_NETWORK_MAX_RETRY_TIME`               | Duração máxima de retentativa                  | `5m`              |
| `RTC_CLIENT_BEHAVIOR_WORKER_UPDATE_INTERVAL`      | Intervalo de relatório de progresso do worker     | `100000`          |
| `POOL_SERVER` *(legado)*                          | Endereço do servidor remoto               | `localhost:50051` |
| `GPU_MINING` *(legado)*                           | Habilitar/desabilitar mineração GPU           | Auto-detectar       |
| `HYBRID_MINING` *(legado)*                        | Habilitar mineração CPU+GPU               | `false`           |

### Exemplos de Arquivos de Configuração

**Configuração do servidor** (`server-config.yaml`):```yaml
network:
  grpc_port: 50051
  api_port: 8443
  http_port: 8080
mining:
  difficulty: 8
  block_reward: 100
tls:
  enabled: true
  cert_file: /etc/rtc/certs/server.crt
  key_file: /etc/rtc/certs/server.key
logging:
  update_interval: 30s
  file_path: /var/log/rtc/pool.json

Configuração do cliente (client-config.yaml):```yaml server: address: pool.example.com:50051 tls: enabled: false insecure_skip_verify: true ca_cert_file: "" mining: gpu_enabled: true hybrid_mode: false auto_delete: true gpu: nonce_range: 1000000000 cpu_start_nonce: 5000000000 network: heartbeat_interval: 30s retry_interval: 10s max_retry_time: 5m

root@kitploit:~
### Autenticação

Todos os endpoints da API (exceto a página inicial do dashboard) exigem autenticação via token Bearer.

**Token gerado automaticamente:**
O servidor gera um token seguro na inicialização e o exibe no console.

**Token personalizado:**```bash
export RTC_AUTH_TOKEN="your-secret-token"
./bin/server

Performance

Os tempos de mineração esperados variam de acordo com o desempenho da CPU e a sorte:

  • Dificuldade 4: ~1-10 segundos/bloco (CPU única)
  • Dificuldade 5: ~10-60 segundos/bloco
  • Dificuldade 6: ~1-10 minutos/bloco

Configuração HTTPS```bash

Generate certificates

./generate_certs.sh

Start with HTTPS using new config system

export RTC_SERVER_TLS_ENABLED=true export RTC_AUTH_TOKEN="my-secure-token" ./bin/server

Custom certificates

export RTC_SERVER_TLS_CERT_FILE="/path/to/cert.pem" export RTC_SERVER_TLS_KEY_FILE="/path/to/key.pem" ./bin/server

root@kitploit:~
See [docs/TLS_SETUP.md](https://github.com/xyplex3/redteamcoin/blob/main/docs/TLS_SETUP.md) para configuração detalhada de TLS.

## Referência da API

### Endpoints da API REST

**Endpoints públicos:**

- `GET /` - Painel web (HTML)
- `GET /blocks` - Ver página de todos os blocos (HTML)

**Endpoints autenticados:**

- `GET /api/stats` - Estatísticas da pool (JSON)
- `GET /api/miners` - Lista de todos os mineradores (JSON)
- `GET /api/blockchain` - Blockchain completo (JSON)
- `GET /api/blocks/{index}` - Detalhes do bloco específico (JSON)
- `GET /api/validate` - Validar integridade da blockchain (JSON)
- `GET /api/cpu` - Estatísticas de uso de CPU e GPU (JSON)
- `POST /api/miner/pause` - Pausar mineração para um minerador específico
- `POST /api/miner/resume` - Retomar mineração para um minerador específico
- `POST /api/miner/delete` - Excluir um minerador (auto-termina e auto-exclui)
- `POST /api/miner/throttle` - Definir porcentagem de limitação de CPU (0-100%)

### Exemplos de Autenticação

**cURL:**```bash
# Get stats
curl -H "Authorization: Bearer YOUR_TOKEN" http://localhost:8080/api/stats

# Get miners
curl -H "Authorization: Bearer YOUR_TOKEN" http://localhost:8080/api/miners

# Pause a miner
curl -X POST -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"miner_id":"miner-hostname-1234567890"}' \
  http://localhost:8080/api/miner/pause

# Set CPU throttle to 50%
curl -X POST -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"miner_id":"miner-hostname-1234567890","throttle_percent":50}' \
  http://localhost:8080/api/miner/throttle

# HTTPS (with self-signed cert)
curl -k -H "Authorization: Bearer YOUR_TOKEN" https://localhost:8443/api/stats

JavaScript:```javascript const token = "YOUR_TOKEN_HERE"; const headers = { Authorization: Bearer ${token} };

fetch("http://localhost:8080/api/stats", { headers }) .then((r) => r.json()) .then((data) => console.log(data));

root@kitploit:~
**Python:**```python
import requests

headers = {'Authorization': 'Bearer YOUR_TOKEN'}
response = requests.get('http://localhost:8080/api/stats', headers=headers)
print(response.json())

gRPC Serviços```protobuf

service MiningPool { rpc RegisterMiner(MinerInfo) returns (RegistrationResponse); rpc GetWork(WorkRequest) returns (WorkResponse); rpc SubmitWork(WorkSubmission) returns (SubmissionResponse); rpc Heartbeat(MinerStatus) returns (HeartbeatResponse); rpc StopMining(MinerInfo) returns (StopResponse); }

root@kitploit:~
## Arquitetura

### Stack de Tecnologia

- **Linguagem**: Go 1.21+
- **Framework RPC**: gRPC com Protocol Buffers
- **Servidor Web**: Biblioteca padrão Go net/http
- **Dependências**: google.golang.org/protobuf, google.golang.org/grpc

## Desenvolvimento

### Comandos de Build```bash
make proto                # Generate protobuf code
make build                # Build server and client (CPU only)
make build-gpu            # Build with GPU support (auto-detect)
make build-cuda           # Build with NVIDIA CUDA
make build-opencl         # Build with AMD/Intel OpenCL
make build-windows        # Cross-compile for Windows
make build-all-platforms  # Cross-compile for all platforms
make clean                # Remove build artifacts
make deps                 # Download dependencies
make init                 # Full initialization

Testes

RedTeamCoin inclui testes unitários abrangentes tanto para o servidor quanto para os componentes do cliente.

Execute todos os testes:

root@kitploit:~
python -m pytest
``````bash
make test                 # Run all tests (server + client)

Executar suítes de teste específicas:```bash

Server tests

cd server && go test -v

Client tests

cd client && go test -v -short

With coverage

cd server && go test -cover cd client && go test -cover

root@kitploit:~
**Cobertura de Testes:**

- **Servidor**: 76 testes, 66,3% de cobertura

  - `blockchain_test.go`: 15 testes - Validação de blockchain, cálculo de hash,
    acesso concorrente
  - `pool_test.go`: 26 testes - Gerenciamento de mineradores, distribuição de trabalho, estatísticas
  - `grpc_server_test.go`: 17 testes - Endpoints gRPC, controle de mineradores, heartbeats
  - `api_test.go`: 18 testes - API REST, autenticação, operações de mineradores

- **Cliente**: 41 testes, 16,2% de cobertura
  - `main_test.go`: 24 testes - Lógica de mineração, cálculo de hash, gerenciamento de estado
  - `gpu_test.go`: 18 testes - Detecção de GPU, gerenciamento de dispositivos, estatísticas

**Total**: 117 testes unitários cobrindo funcionalidades principais

**O que é testado:**

- Validação e integridade do blockchain
- Mineração de blocos e prova de trabalho
- Distribuição de trabalho em pool de mineração
- Registro e gerenciamento de mineradores
- Controle de mineradores no servidor (pausar/retomar/excluir/limitar)
- Protocolos de comunicação gRPC
- Endpoints da API REST e autenticação
- Detecção e inicialização de dispositivos GPU
- Cálculo de taxa de hash e estatísticas
- Operações concorrentes e segurança de threads
- Tratamento de erros e casos extremos

**Testes CI/CD:**

Todos os testes são executados automaticamente em:

- Pull requests
- Commits no branch principal
- Builds de release

Veja [.github/workflows/build-verification.yaml](https://github.com/xyplex3/redteamcoin/blob/main/.github/workflows/build-verification.yaml) para configuração de CI.

### Compilação Cruzada

**Windows (somente CPU):**```bash
make build-windows

Cria bin/client.exe

Windows com OpenCL (suporte a GPU):```bash

Requires MinGW-w64 and Windows OpenCL SDK

make build-windows-opencl

root@kitploit:~
Cria `bin/client-windows-opencl.exe`

Consulte [docs/WINDOWS_BUILD.md](https://github.com/xyplex3/redteamcoin/blob/main/docs/WINDOWS_BUILD.md) para obter instruções completas de compilação no Windows, incluindo:

- Compilações nativas do Windows com suporte a GPU
- Configuração de compilação cruzada a partir do Linux
- Configuração do token de autenticação
- Guia de solução de problemas

**Múltiplas plataformas:**```bash
make build-all-platforms

Cria:

  • client-linux-amd64 - Linux 64-bit
  • client-linux-arm64 - Linux ARM64
  • client-windows-amd64.exe - Windows 64-bit
  • client-darwin-amd64 - macOS Intel
  • client-darwin-arm64 - macOS Apple Silicon

Nota: Binários compilados de forma cruzada são apenas CPU (CGO desabilitado) a menos que use build-windows-opencl.

Ferramentas de Análise

Gere relatórios de avaliação de danos para análise de impacto de mineração:```bash make build-tools ./bin/generate_report -log pool_log.json

root@kitploit:~
**O relatório inclui:**

- Análise de consumo de recursos
- Avaliação de impacto no desempenho
- Danos à infraestrutura
- Implicações de segurança
- Resumo do impacto financeiro
- Análise sistema por sistema
- Recomendações de remediação

**Premissas de Custo:**

| Parâmetro          | Padrão    | Notas                 |
| ------------------ | --------- | --------------------- |
| Potência da CPU    | 150W      | Carga total           |
| Potência da GPU    | 250W      | Carga total           |
| Eletricidade       | $0,12/kWh | Ajuste conforme a região |
| Redução da Vida Útil | 20-40%    | Devido à mineração contínua |

**Convertendo Relatórios:**```bash
# PDF
pandoc Report_Miner_Activity_from_<date>_to_<date>.md -o report.pdf

# HTML
pandoc Report_Miner_Activity_from_<date>_to_<date>.md -o report.html

# DOCX
pandoc Report_Miner_Activity_from_<date>_to_<date>.md -o report.docx

Casos de Uso:

  • Análise pós-incidente
  • Briefings executivos
  • Justificativa financeira
  • Documentação de conformidade
  • Reivindicações de seguro
  • Evidências legais

Consulte tools/README.md para documentação completa.

Solução de Problemas

Problemas de Conexão Remota

Testando conectividade:```bash

Test connection

ping <server_ip> nc -zv <server_ip> 50051

Check server (on server side)

lsof -i :50051 ss -an | grep 50051

root@kitploit:~
**Problemas comuns:**

- Verifique o endereço e a porta do servidor
- Certifique-se de que o servidor está em execução
- Verifique as regras de firewall (cliente e servidor)
- Confirme a conectividade de rede
- Verifique se a porta 50051 está escutando

### Problemas com Mineração GPU

| Problema              | Solução                                                        |
| -------------------- | --------------------------------------------------------------- |
| "não é possível encontrar -lcuda" | `export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH` |
| "nvcc não encontrado"     | `sudo apt install cuda-toolkit`                                 |
| "Nenhum dispositivo OpenCL"   | `sudo apt install ocl-icd-opencl-dev`                           |
| GPU lenta             | `export RTC_CLIENT_MINING_GPU_ENABLED=true`                     |
| Erro de compilação CGo      | `sudo apt install build-essential`                              |

### Problemas Gerais

**Falhas de compilação:**

- Certifique-se de que o Go 1.21+ está instalado
- Execute `make deps` para instalar as dependências
- Execute `make install-tools` para as ferramentas protoc

**Conexão recusada:**

- Verifique se o servidor está em execução
- Verifique se a porta não está em uso: `lsof -i :50051`
- Verifique as configurações de firewall

**Erros de autenticação:**

- Verifique se o token corresponde à saída do servidor
- Verifique o formato do cabeçalho `Authorization: Bearer TOKEN`
- Certifique-se de que o token está incluído na URL ou nos cabeçalhos

## Documentação

### Guias do Usuário

- [docs/GPU_MINING.md](https://github.com/xyplex3/redteamcoin/blob/main/docs/GPU_MINING.md) - Mineração GPU com CUDA e OpenCL
- [docs/WINDOWS_BUILD.md](https://github.com/xyplex3/redteamcoin/blob/main/docs/WINDOWS_BUILD.md) - Guia de compilação para Windows (nativa e compilação cruzada)
- [docs/TLS_SETUP.md](https://github.com/xyplex3/redteamcoin/blob/main/docs/TLS_SETUP.md) - Configuração HTTPS/TLS
- [java-client/README.md](https://github.com/xyplex3/redteamcoin/blob/main/java-client/README.md) - Cliente gRPC Java (minerador headless)
- [tools/README.md](https://github.com/xyplex3/redteamcoin/blob/main/tools/README.md) - Ferramentas de análise e relatórios de danos

### Referências Técnicas

- [docs/WORKFLOWS.md](https://github.com/xyplex3/redteamcoin/blob/main/docs/WORKFLOWS.md) - Fluxos de trabalho CI/CD e processos de desenvolvimento

### Exemplos

- [docs/examples/](https://github.com/xyplex3/redteamcoin/blob/main/docs/examples) - Relatórios de exemplo e exemplos de uso

## Contribuindo

Aceitamos contribuições! Veja como começar:

1. Faça um fork do repositório
2. Crie um branch de funcionalidade: `git checkout -b feature/amazing-feature`
3. Faça suas alterações e adicione testes
4. Execute a suíte de testes: `make test`
5. Faça commit das suas alterações: `git commit -m 'Add amazing feature'`
6. Envie para o branch: `git push origin feature/amazing-feature`
7. Abra um Pull Request

### Configuração de Desenvolvimento```bash
# Clone your fork
git clone https://github.com/YOUR_USERNAME/RedTeamCoin.git
cd RedTeamCoin

# Install dependencies
make install-tools
make deps

# Run tests
make test

# Build and test locally
make build
make run-server  # Terminal 1
make run-client  # Terminal 2

Diretrizes de Código

  • Siga a formatação padrão do Go (gofmt)
  • Adicione testes unitários para novas funcionalidades
  • Atualize a documentação para alterações voltadas ao usuário
  • Garanta que todas as verificações de CI passem antes de enviar o PR

Nota de Segurança

Este é um projeto de demonstração/educacional para testes de segurança autorizados e operações de equipe vermelha. Ele é destinado a:

  • Engajamentos de teste de penetração autorizados
  • Validação de controles de segurança
  • Avaliação de capacidade de detecção
  • Fins educacionais e de treinamento

Esta ferramenta não é destinada ao uso em produção como uma criptomoeda real e carece de muitos recursos necessários para um sistema de produção (assinaturas criptográficas, carteiras, validação de transações, consenso de rede, etc.).

Use apenas com autorização explícita em sistemas que você possui ou tem permissão para testar.

Licença

Este projeto é licenciado sob a GNU General Public License v3.0 - consulte o arquivo LICENSE para mais detalhes.

Agradecimentos

Criado por:

  • Peter Greko (@Xyplex02)
  • Luciano Krigun (@klucho)
  • Jayson Grace (@l50)
Baixar ferramenta