Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
RedTeamCoin — Red Team Coin per operazioni di crypto-mining. | Kitploit
Strumenti/GitHubGitHub/xyplex3/redteamcoin
ExploitCrittografiaPenetration TestingCommand and ControlRed TeamingSviluppo Payload
GitHubxyplex3/redteamcoin

RedTeamCoin

Red Team Coin per operazioni di crypto-mining.

Vedi Repository
25226 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

RedTeamCoin

RedTeamCoin Logo

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


RedTeamCoin è un'implementazione di un pool di mining di criptovalute basata su blockchain, progettata per test di sicurezza autorizzati e operazioni red team. Realizzata in Go con supporto client Java, simula attacchi di cryptomining reali per aiutare le organizzazioni a valutare le proprie capacità di rilevamento e quantificare i danni potenziali derivanti da attività di mining da parte di attori malintenzionati.

Scarica lo strumento

Questo strumento consente ai team di sicurezza di dimostrare in modo sicuro e legale scenari di attacco cryptomining su sistemi aziendali, generare report di impatto completi e convalidare i controlli di sicurezza, il tutto all'interno di un ambiente controllato utilizzando una blockchain isolata e non pubblica.

Sommario

  • Panoramica
  • Funzionalità
  • Avvio rapido
  • Come funziona
  • Utilizzo
    • Esecuzione del server
    • Esecuzione di un miner
    • Connessione a server remoti
  • Mining GPU
  • Configurazione
  • Riferimento API
  • Architettura
  • Sviluppo
  • Contribuire
  • Risoluzione dei problemi
  • Documentazione
  • Licenza
  • Ringraziamenti

Panoramica

Perché usare RedTeamCoin?

  • Dimostrare l'impatto reale degli attacchi di cryptojacking
  • Testare e convalidare i sistemi di monitoraggio e rilevamento della sicurezza
  • Generare valutazioni quantificabili dei danni per report direzionali
  • Simulare in sicurezza operazioni di mining senza connettersi a blockchain pubbliche

Componenti del sistema:

  • Server del pool di mining - Gestisce la blockchain e coordina la distribuzione del lavoro
  • Client miner - Client di mining CPU/GPU (implementazioni Go e Java)
  • Dashboard web - Monitoraggio in tempo reale, controllo e statistiche
  • Strumenti di analisi - Genera report completi di valutazione dei danni

Funzionalità

  • Implementazione blockchain: Blockchain proof-of-work personalizzata con difficoltà configurabile
  • Server del pool di mining: Gestisce più miner e distribuzione del lavoro tramite gRPC
  • Client miner: Client di mining automatizzati (Go e Java) con registrazione di indirizzo IP e hostname
  • Miner Java autonomo: Miner desktop abilitato GUI con interfaccia visiva
  • Client gRPC Java: Client gRPC headless per server e automazione
  • Controllo miner lato server: Metti in pausa, riprendi, limita l'uso della CPU ed elimina i miner da remoto
  • Limitazione CPU: Limita l'utilizzo della CPU del miner dallo 0 al 100% per gestire le risorse
  • Supporto mining GPU: Supporto CUDA e OpenCL per mining accelerato da GPU
  • Mining ibrido: Mining simultaneo CPU e GPU per massime prestazioni
  • Dashboard web: Monitoraggio in tempo reale di miner, statistiche e blockchain con pulsanti di controllo
  • Autenticazione API REST: Autenticazione sicura basata su token per endpoint API
  • Crittografia TLS gRPC client: Crittografia TLS opzionale per connessioni gRPC sicure client-server
  • Tracciamento IP duale: Registra sia l'indirizzo IP segnalato dal client che quello rilevato dal server
  • Statistiche CPU e GPU: Tracciamento e reporting completi dell'utilizzo delle risorse
  • Protocol Buffers: Comunicazione efficiente client-server tramite protobuf/gRPC
  • Auto-terminazione: I miner si spengono e si auto-eliminano automaticamente quando vengono rimossi dal server

Avvio rapido

Metti in esecuzione RedTeamCoin in meno di 5 minuti:

Prerequisiti

  • Go 1.21 o successivo
  • Compilatore 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:

  • Installa Go da https://golang.org/dl/
  • Installa protoc da https://github.com/protocolbuffers/protobuf/releases

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

Verifica che la build sia completata con successo:```bash
ls -lh bin/
# Expected output: server and client binaries (1-5 MB each)

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

Esecuzione del tuo primo pool di mining

1. Avvia il server:```bash make run-server

root@kitploit:~
Dovresti vedere un output simile a:```text
RedTeamCoin Mining Pool Server
Authentication Token: abc123def456...
Dashboard URL: http://localhost:8080?token=abc123def456...
gRPC server listening on port 50051

2. Avvia un miner (in un nuovo terminale):```bash make run-client

root@kitploit:~
Dovresti vedere attività di mining:```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. Visualizza la dashboard:

Apri l'URL del passo 1 nel tuo browser, o naviga verso:```text http://localhost:8080?token=YOUR_AUTH_TOKEN_HERE

root@kitploit:~
Vedrai statistiche in tempo reale inclusi minatori attivi, tassi di hash e blocchi minati.

**Nota:** Il server ascolta su tutte le interfacce di rete - sostituisci `localhost` con l'IP del tuo server per l'accesso remoto.

## Come Funziona

Il pool di mining opera utilizzando un meccanismo di consenso proof-of-work:

1. Il server inizializza la blockchain con il blocco genesis
2. I minatori si connettono tramite gRPC e si registrano con IP/hostname
3. Il server distribuisce assegnazioni di lavoro (modelli di blocco)
4. I minatori calcolano hash SHA-256 per trovare nonce validi
5. I minatori inviano soluzioni quando viene raggiunta la difficoltà target
6. Il server convalida e aggiunge blocchi alla blockchain
7. La dashboard mostra statistiche in tempo reale e attività dei minatori

Ogni blocco richiede di trovare un hash con un numero specifico di zeri iniziali (difficoltà configurabile). I minatori ricevono 50 RTC per blocco minato.

### Flusso dei Dati```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----------|

Utilizzo

Avvio del Server

HTTP (Predefinito):```bash ./bin/server

root@kitploit:~
- Server gRPC: porta **50051**
- Dashboard web: **http://localhost:8080**

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

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

Nota #1: Con HTTPS, i browser mostreranno un avviso di sicurezza per i certificati autofirmati. Fare clic su "Avanzate" → "Procedi verso localhost".

Nota #2: La dashboard web e il server gRPC verranno eseguiti su tutte le interfacce del server e possono essere utilizzati al posto di localhost.

Esecuzione di un Miner

Client Go (Binario Nativo)

Utilizzo base:```bash ./bin/client

root@kitploit:~
**Esegui più miner:**
Apri terminali aggiuntivi ed esegui `./bin/client` in ciascuno.

#### Miner Java

RedTeamCoin fornisce due implementazioni di miner Java:

##### Client gRPC Java (Headless)

Client gRPC pronto per la produzione per server e automazione.

**Prerequisiti:**

- Java 11 o successivo
- Maven (solo per la compilazione)

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

Oppure costruisci manualmente:```bash cd java-client mvn clean package

root@kitploit:~
**Esegui:**```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

Caratteristiche:

  • Protocollo gRPC (corrisponde al client Go)
  • Operazione headless (senza GUI)
  • Controllo server (pausa/ripresa/throttle)
  • Riconnessione automatica
  • Auto-eliminazione su comando del server
Miner Java Standalone (GUI)

Miner desktop con interfaccia grafica.

Prerequisiti:

  • Java 21 o successivo
  • Maven (solo per la compilazione)

Compilazione tramite Makefile:```bash make build-java-standalone

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

Esegui:```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:~
**Caratteristiche:**

- Interfaccia GUI desktop
- Visualizzazione statistica visiva
- Protocollo JSON/Socket semplice
- Incorporato in applicazioni

##### Compila tutti i miner Java```bash
make build-java-all

Vantaggi dei Miners Java:

  • Singolo file JAR, facile da distribuire
  • Multi-piattaforma (Windows, Linux, macOS)
  • Nessuna compilazione necessaria sui sistemi target
  • Richiede solo Java Runtime (JRE)

Vedi java-client/README.md per la documentazione completa del client Java gRPC.

Connessione a Server Remoti

Per impostazione predefinita, i client si connettono a localhost:50051. Per connettersi a un server remoto:

Utilizzo del flag da riga di comando (consigliato):```bash ./bin/client -server 192.168.1.100:50051 ./bin/client -s mining-pool.example.com:50051

root@kitploit:~
**Usando la variabile d'ambiente:**```bash
export RTC_CLIENT_SERVER_ADDRESS=192.168.1.100:50051
./bin/client

Priorità: Flag da riga di comando > Variabile d'ambiente > Predefinito (localhost:50051)

Mining GPU

RedTeamCoin supporta il mining accelerato da GPU per GPU NVIDIA (CUDA) e AMD/Intel (OpenCL). Il mining su GPU è 100-400x più veloce e significativamente più efficiente dal punto di vista energetico rispetto al mining su CPU.

Installazione 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

Rilevamento automatico:```bash make build-gpu # Automatically detects and builds for available GPU

root@kitploit:~
### Uso 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

Confronto delle prestazioni

ConfigurazioneTasso di hashAccelerazioneEfficienza (MH/W)
CPU (1 core)~2 MH/sBaseline~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
Ibrido (CPU+GPU)~620 MH/s310x~2.0

Nota: Il mining con GPU è da 100 a 150 volte più efficiente dal punto di vista energetico rispetto al mining con CPU.

Test della funzionalità 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:~
See [docs/GPU_MINING.md](https://github.com/xyplex3/redteamcoin/blob/main/docs/GPU_MINING.md) per la guida completa al mining GPU.

## Configurazione

RedTeamCoin utilizza [Viper](https://github.com/spf13/viper) per una gestione flessibile della configurazione. Le impostazioni possono essere specificate tramite variabili d'ambiente, file di configurazione YAML o flag da riga di comando con la seguente precedenza:

**Flag da riga di comando** > **Variabili d'ambiente** > **File di configurazione** > **Valori predefiniti**

### Impostazione

**Inizializza i file di configurazione:**```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

Questo copia i file YAML di esempio nella tua directory di lavoro per la modifica. Puoi anche posizionare i file di configurazione in ~/.rtc/ o /etc/rtc/.

Override con variabili d'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:~
### Variabili d'ambiente

Tutte le variabili d'ambiente usano i prefissi: `RTC_SERVER_` per il server, `RTC_CLIENT_` per il client.

**Configurazione Server:**

| Variabile                                | Descrizione                    | Default           |
| --------------------------------------- | ------------------------------ | ----------------- |
| `RTC_SERVER_NETWORK_GRPC_PORT`          | Porta del server gRPC          | `50051`           |
| `RTC_SERVER_NETWORK_API_PORT`           | Porta API HTTPS                | `8443`            |
| `RTC_SERVER_NETWORK_HTTP_PORT`          | Porta interfaccia web HTTP     | `8080`            |
| `RTC_SERVER_MINING_DIFFICULTY`          | Difficoltà di mining (1-64)    | `6`               |
| `RTC_SERVER_MINING_BLOCK_REWARD`        | Ricompensa del blocco in monete | `50`              |
| `RTC_SERVER_TLS_ENABLED`                | Abilita HTTPS/TLS              | `false`           |
| `RTC_SERVER_TLS_CERT_FILE`              | Percorso del certificato TLS   | `certs/server.crt`|
| `RTC_SERVER_TLS_KEY_FILE`               | Percorso della chiave privata TLS | `certs/server.key`|
| `RTC_SERVER_API_READ_TIMEOUT`           | Timeout di lettura API         | `15s`             |
| `RTC_SERVER_API_WRITE_TIMEOUT`          | Timeout di scrittura API       | `15s`             |
| `RTC_SERVER_API_IDLE_TIMEOUT`           | Timeout di inattività API      | `60s`             |
| `RTC_SERVER_LOGGING_UPDATE_INTERVAL`    | Intervallo aggiornamento statistiche | `30s`        |
| `RTC_SERVER_LOGGING_FILE_PATH`          | Percorso del file di log       | `pool_log.json`   |
| `RTC_AUTH_TOKEN` *(legacy)*             | Token di autenticazione personalizzato | Generato automaticamente |

**Configurazione Client:**

| Variabile                                          | Descrizione                         | Default           |
| ------------------------------------------------- | ----------------------------------- | ----------------- |
| `RTC_CLIENT_SERVER_ADDRESS`                       | Indirizzo del server pool (host:porta) | `localhost:50051` |
| `RTC_CLIENT_SERVER_TLS_ENABLED`                   | Abilita TLS per connessione gRPC    | `false`           |
| `RTC_CLIENT_SERVER_TLS_INSECURE_SKIP_VERIFY`      | Salta verifica certificato          | `true`            |
| `RTC_CLIENT_SERVER_TLS_CA_CERT_FILE`              | Percorso del file del certificato CA | `""`              |
| `RTC_CLIENT_MINING_GPU_ENABLED`                   | Abilita mining GPU                  | `true`            |
| `RTC_CLIENT_MINING_HYBRID_MODE`                   | Abilita mining simultaneo CPU+GPU   | `false`           |
| `RTC_CLIENT_MINING_AUTO_DELETE`                   | Eliminazione automatica allo spegnimento | `true`        |
| `RTC_CLIENT_GPU_NONCE_RANGE`                      | Intervallo nonce per batch GPU      | `500000000`       |
| `RTC_CLIENT_GPU_CPU_START_NONCE`                  | Nonce di avvio CPU (evita sovrapposizione GPU) | `5000000000` |
| `RTC_CLIENT_NETWORK_HEARTBEAT_INTERVAL`           | Intervallo aggiornamento stato      | `30s`             |
| `RTC_CLIENT_NETWORK_RETRY_INTERVAL`               | Ritardo tentativo riconnessione     | `10s`             |
| `RTC_CLIENT_NETWORK_MAX_RETRY_TIME`               | Durata massima tentativi            | `5m`              |
| `RTC_CLIENT_BEHAVIOR_WORKER_UPDATE_INTERVAL`      | Intervallo rapporto progresso worker | `100000`          |
| `POOL_SERVER` *(legacy)*                          | Indirizzo server remoto             | `localhost:50051` |
| `GPU_MINING` *(legacy)*                           | Abilita/disabilita mining GPU       | Rilevamento automatico |
| `HYBRID_MINING` *(legacy)*                        | Abilita mining CPU+GPU              | `false`           |

### Esempi di file di configurazione

**Configurazione server** (`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

Configurazione client (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:~
### Autenticazione

Tutti gli endpoint API (eccetto la dashboard homepage) richiedono l'autenticazione tramite Bearer token.

**Token generato automaticamente:**
Il server genera un token sicuro all'avvio e lo visualizza nella console.

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

Prestazioni

I tempi di mining previsti variano in base alle prestazioni della CPU e alla fortuna:

  • Difficoltà 4: ~1-10 secondi/blocco (singola CPU)
  • Difficoltà 5: ~10-60 secondi/blocco
  • Difficoltà 6: ~1-10 minuti/blocco

Configurazione 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:~
Vedi [docs/TLS_SETUP.md](https://github.com/xyplex3/redteamcoin/blob/main/docs/TLS_SETUP.md) per la configurazione TLS dettagliata.

## Riferimento API

### Endpoint REST API

**Endpoint pubblici:**

- `GET /` - Dashboard web (HTML)
- `GET /blocks` - Pagina di visualizzazione di tutti i blocchi (HTML)

**Endpoint autenticati:**

- `GET /api/stats` - Statistiche del pool (JSON)
- `GET /api/miners` - Elenco di tutti i miner (JSON)
- `GET /api/blockchain` - Blockchain completa (JSON)
- `GET /api/blocks/{index}` - Dettagli di un blocco specifico (JSON)
- `GET /api/validate` - Convalida dell'integrità della blockchain (JSON)
- `GET /api/cpu` - Statistiche di utilizzo CPU e GPU (JSON)
- `POST /api/miner/pause` - Pausa mining per un miner specifico
- `POST /api/miner/resume` - Riprendi mining per un miner specifico
- `POST /api/miner/delete` - Elimina un miner (auto-terminazione e auto-eliminazione)
- `POST /api/miner/throttle` - Imposta percentuale di limitazione CPU (0-100%)

### Esempi di Autenticazione

**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())

Servizi gRPC```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:~
## Architettura

### Stack Tecnologico

- **Linguaggio**: Go 1.21+
- **Framework RPC**: gRPC with Protocol Buffers
- **Server Web**: Go net/http standard library
- **Dipendenze**: google.golang.org/protobuf, google.golang.org/grpc

## Sviluppo

### Comandi di Compilazione```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

Testing

RedTeamCoin include test unitari completi per i componenti server e client.

Esegui tutti i test:```bash make test # Run all tests (server + client)

root@kitploit:~
**Esegui suite di test specifiche:**```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

Copertura dei test:

  • Server: 76 test, 66.3% coverage

    • blockchain_test.go: 15 test - Validazione della blockchain, calcolo degli hash, accesso concorrente
    • pool_test.go: 26 test - Gestione dei miner, distribuzione del lavoro, statistiche
    • grpc_server_test.go: 17 test - Endpoint gRPC, controllo dei miner, heartbeat
    • api_test.go: 18 test - API REST, autenticazione, operazioni sui miner
  • Client: 41 test, 16.2% coverage

    • main_test.go: 24 test - Logica di mining, calcolo degli hash, gestione dello stato
    • gpu_test.go: 18 test - Rilevamento GPU, gestione dei dispositivi, statistiche

Totale: 117 unit test che coprono le funzionalità principali

Cosa viene testato:

  • Validazione e integrità della blockchain
  • Mining di blocchi e proof-of-work
  • Distribuzione del lavoro del mining pool
  • Registrazione e gestione dei miner
  • Controllo del miner lato server (pausa/ripresa/eliminazione/limitazione)
  • Protocolli di comunicazione gRPC
  • Endpoint REST API e autenticazione
  • Rilevamento e inizializzazione dei dispositivi GPU
  • Calcolo dell'hash rate e statistiche
  • Operazioni concorrenti e sicurezza dei thread
  • Gestione degli errori e casi limite

Test CI/CD:

Tutti i test vengono eseguiti automaticamente su:

  • Pull request
  • Commit sul branch principale
  • Build di rilascio

Vedi .github/workflows/build-verification.yaml per la configurazione CI.

Cross-compilazione

Windows (solo CPU):```bash make build-windows

root@kitploit:~
Crea `bin/client.exe`

**Windows con OpenCL (supporto GPU):**```bash
# Requires MinGW-w64 and Windows OpenCL SDK
make build-windows-opencl

Crea bin/client-windows-opencl.exe

Consulta docs/WINDOWS_BUILD.md per le istruzioni complete di build su Windows, inclusi:

  • Build native su Windows con supporto GPU
  • Configurazione di cross-compilazione da Linux
  • Configurazione del token di autenticazione
  • Guida alla risoluzione dei problemi

Piattaforme Multiple:```bash make build-all-platforms

root@kitploit:~
Creates:

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

**Nota:** I binari cross-compilati sono solo CPU (CGO disabilitato) a meno di usare `build-windows-opencl`.

### Strumenti di Analisi

Genera report di valutazione dei danni per l'analisi dell'impatto del mining:```bash
make build-tools
./bin/generate_report -log pool_log.json

Report include:

  • Analisi del consumo di risorse
  • Valutazione dell'impatto sulle prestazioni
  • Danni all'infrastruttura
  • Implicazioni per la sicurezza
  • Riepilogo dell'impatto finanziario
  • Analisi sistema per sistema
  • Raccomandazioni per la correzione

Ipotesi di costo:

ParametroPredefinitoNote
Potenza CPU150WCarico massimo
Potenza GPU250WCarico massimo
Elettricità$0,12/kWhRegolare in base alla regione
Riduzione durata20-40%Da mining sostenuto

Conversione dei report:```bash

PDF

pandoc Report_Miner_Activity_from_to.md -o report.pdf

HTML

pandoc Report_Miner_Activity_from_to.md -o report.html

DOCX

pandoc Report_Miner_Activity_from_to.md -o report.docx

root@kitploit:~
**Casi d'uso:**

- Analisi post-incidente
- Briefing esecutivi
- Giustificazione finanziaria
- Documentazione di conformità
- Richieste di risarcimento assicurativo
- Prove legali

Vedi [tools/README.md](https://github.com/xyplex3/redteamcoin/blob/main/tools/README.md) per la documentazione completa.

## Risoluzione dei problemi

### Problemi di connessione remota

**Test di connettività:**```bash
# Test connection
ping <server_ip>
nc -zv <server_ip> 50051

# Check server (on server side)
lsof -i :50051
ss -an | grep 50051

Problemi comuni:

  • Verifica indirizzo e porta del server
  • Assicurati che il server sia in esecuzione
  • Controlla le regole del firewall (client e server)
  • Conferma la connettività di rete
  • Verifica che la porta 50051 sia in ascolto

Problemi di mining GPU

ProblemaSoluzione
"cannot find -lcuda"export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
"nvcc not found"sudo apt install cuda-toolkit
"No OpenCL device"sudo apt install ocl-icd-opencl-dev
GPU lentoexport RTC_CLIENT_MINING_GPU_ENABLED=true
Errore di build CGosudo apt install build-essential

Problemi Generali

Errori di build:

  • Assicurati che Go 1.21+ sia installato
  • Esegui make deps per installare le dipendenze
  • Esegui make install-tools per gli strumenti protoc

Connessione rifiutata:

  • Controlla che il server sia in esecuzione
  • Verifica che la porta non sia in uso: lsof -i :50051
  • Controlla le impostazioni del firewall

Errori di autenticazione:

  • Verifica che il token corrisponda all'output del server
  • Controlla il formato dell'intestazione Authorization: Bearer TOKEN
  • Assicurati che il token sia incluso nell'URL o nelle intestazioni

Documentazione

Guide per l'utente

  • docs/GPU_MINING.md - Mining GPU con CUDA e OpenCL
  • docs/WINDOWS_BUILD.md - Guida alla build su Windows (nativa e cross-compilazione)
  • docs/TLS_SETUP.md - Configurazione HTTPS/TLS
  • java-client/README.md - Client gRPC Java (miner headless)
  • tools/README.md - Strumenti di analisi e report dei danni

Riferimenti tecnici

  • docs/WORKFLOWS.md - Flussi di lavoro CI/CD e processi di sviluppo

Esempi

  • docs/examples/ - Report di esempio ed esempi di utilizzo

Contribuire

Accogliamo con favore i contributi! Ecco come iniziare:

  1. Fai il fork del repository
  2. Crea un branch di feature: git checkout -b feature/amazing-feature
  3. Apporta le tue modifiche e aggiungi test
  4. Esegui la suite di test: make test
  5. Esegui il commit delle modifiche: git commit -m 'Add amazing feature'
  6. Esegui il push sul branch: git push origin feature/amazing-feature
  7. Apri una Pull Request

Development Setup```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

root@kitploit:~
### Linee guida per il codice

- Segui la formattazione standard di Go (`gofmt`)
- Aggiungi test unitari per nuove funzionalità
- Aggiorna la documentazione per modifiche visibili all'utente
- Assicurati che tutti i controlli CI siano superati prima di inviare una PR

## Nota sulla sicurezza

Questo è un **progetto dimostrativo/educativo** per test di sicurezza autorizzati
e operazioni red team. È pensato per:

- Impegni di penetration testing autorizzati
- Validazione dei controlli di sicurezza
- Valutazione delle capacità di rilevamento
- Scopi educativi e di formazione

Questo strumento non è destinato all'uso in produzione come criptovaluta reale e
manca di molte funzionalità richieste per un sistema di produzione (firme crittografiche,
portafogli, validazione delle transazioni, consenso di rete, ecc.).

**Utilizzare solo con autorizzazione esplicita su sistemi di tua proprietà o per i quali hai
il permesso di testare.**

## Licenza

Questo progetto è concesso in licenza secondo la GNU General Public License v3.0 - consulta il
file [LICENSE](https://github.com/xyplex3/redteamcoin/blob/main/LICENSE) per i dettagli.

## Riconoscimenti

**Creato da:**

- Peter Greko ([@Xyplex02](https://github.com/Xyplex02))
- Luciano Krigun ([@klucho](https://github.com/klucho))
- Jayson Grace ([@l50](https://github.com/l50))