Netcat com travessia NAT automatizada, P2P seguro e recursos avançados para acesso a shell, transferência de arquivos e proxy de rede.
gonc é uma ferramenta netcat baseada em Golang, projetada para facilitar a comunicação ponto a ponto. Suas principais características incluem:
🔁 NAT Traversal Automatizado: Configuração zero. Ambos os lados só precisam concordar com uma passphrase. Ao usar o parâmetro -p2p, os pares podem descobrir automaticamente os endereços de rede uns dos outros e estabelecer uma conexão ponto a ponto através de NAT traversal, aproveitando serviços públicos de STUN e MQTT para troca de endereços.
🔒 Criptografia Ponta a Ponta com Autenticação Mútua: Suporta TLS para TCP e DTLS para transmissão criptografada UDP, com autenticação mútua de identidade baseada em passphrase.
🧩 Configuração Flexível de Serviços: Com o parâmetro -e, você pode configurar flexivelmente a aplicação para servir cada conexão. Por exemplo, -e /bin/sh pode fornecer um shell cmd remoto. Você também pode usar comandos virtuais integrados para serviço SOCKS5 conveniente, serviço de arquivos HTTP e encaminhamento de tráfego.
Download da versão mais recente
gonc: conexão direta P2P conveniente entre dispositivos e redes, e transferência segura de arquivos. Basta compartilhar uma passphrase (ou escanear um QR code); nenhuma linha de comando é necessária.Use como o nc:
gonc www.baidu.com 80
gonc -tls www.baidu.com 443
só pode estabelecer conexões ponto a ponto baseadas em IP e porta.
Agora, você também pode estabelecer conexões ponto a ponto baseadas em uma passphrase compartilhada, com NAT traversal automatizado.
O diagrama a seguir mostra o processo do gonc estabelecendo uma conexão P2P entre uma rede de banda larga residencial (hard NAT) e um par em uma rede móvel (symmetric NAT). Como ambos os lados possuem IPv6, a opção -4 é usada em ambas as extremidades para forçar IPv4, a fim de demonstrar o NAT traversal.

Ambos os lados concordam com a mesma passphrase. No lado do remetente, inicie um servidor de arquivos HTTP para expor os arquivos ou diretórios a serem compartilhados. A opção -httpserver aceita múltiplos caminhos, cada um podendo ser um único arquivo ou um diretório:
gonc -p2p <passphrase> -httpserver c:/RootDir1 c:/RootDir2
No lado receptor, há duas opções:
Baixar automaticamente o diretório inteiro
Após executar o comando a seguir, todos os arquivos serão baixados recursivamente para a máquina local. Se o processo for interrompido, executar o comando novamente retomará automaticamente de onde parou:
gonc -p2p <passphrase> -download c:/SavePath
Navegar e baixar seletivamente via navegador
Esta opção não inicia o download automaticamente. Em vez disso, você precisa abrir manualmente um navegador e visitar http://127.0.0.1:9999 para visualizar a lista de arquivos do par e baixar arquivos conforme necessário:
gonc -p2p <passphrase> -httplocal-port 9999
Se você precisar baixar um subdiretório específico, o navegador se torna inconveniente, mas você pode fazer assim:
gonc -http-download c:/SavePath http://127.0.0.1:9999/subdir
Estabeleça comunicação P2P criptografada segura entre duas redes diferentes concordando com uma passphrase (use gonc -psk . para gerar uma passphrase de alta entropia para substituir passphrase). Esta passphrase é usada para descoberta mútua e derivação de certificado, garantindo a segurança da comunicação com TLS 1.3.
gonc -p2p passphrase
No outro lado, use os mesmos parâmetros (o programa tentará automaticamente comunicação TCP ou UDP (TCP preferido), negociará papéis (cliente/servidor TLS) e completará o protocolo TLS):
gonc -p2p passphrase
Observe que, se o outro lado atrasar o tempo de execução, ele sairá se não conseguir encontrar o outro lado para interagir informações dentro de cerca de meio minuto. Portanto, também suporta um mecanismo de espera baseado em assinatura de mensagens MQTT, usando -mqtt-wait e -mqtt-hello para sincronizar o momento de ambas as partes iniciarem o P2P. Por exemplo, o seguinte usa -mqtt-wait para esperar continuamente,
gonc -p2p passphrase -mqtt-wait
No outro lado,
gonc -p2p passphrase -mqtt-hello
Verifique seu tipo de NAT
gonc -nat-checker
Isso verificará seus endereços NAT IPv6 e IPv4 TCP e UDP e analisará as mudanças de porta após o NAT. Se nenhum endereço TCP6 ou UDP6 estiver listado, significa que você não tem IPv6. Cada endereço de protocolo termina com "(easy)", indicando a maior taxa de sucesso para hole punching; "(hard)" indica uma taxa de sucesso maior; e "(symm)" é o mais difícil. Symm requer que o outro lado seja "easy" ou "hard" para que o P2P funcione.
-keep-open, aceita apenas uma conexão; sem autenticação com -psk):
gonc -tls -exec ":sh /bin/bash" -l 1234
gonc -tls -pty x.x.x.x 1234
passphrase é usada para autenticação, garantindo comunicação segura com TLS 1.3):
gonc -exec ":sh /bin/bash" -p2p passphrase
No outro lado:
gonc -pty -p2p passphrase
/dev/zero e /dev/urandom integrados):
gonc.exe -send /dev/zero -P x.x.x.x 1234
Exemplo de saída:
IN: 76.8 MiB (80543744 bytes), 3.3 MiB/s | OUT: 0.0 B (0 bytes), 0.0 B/s | 00:00:23
No lado receptor:
gonc -P -l 1234 > NUL
Aguarde o túnel ser estabelecido:
gonc -p2p passphrase -linkagent
No outro lado, inicie um serviço de proxy SOCKS5 / HTTP local na porta 3080 para acessar a rede remota:
# The link option controls how the local and remote proxy endpoints are created.
# Use none to indicate that no listening port is opened on that side:
gonc -p2p passphrase -link "3080;none"
Em seguida, por exemplo, se você quiser se conectar a 10.0.0.1:3389 na rede remota, basta inserir o seguinte endereço no seu cliente de Área de Trabalho Remota local:
10.0.0.1-3389.gonc.cc:3080
Este domínio será resolvido para um IP na forma 127.b.c.d. Como resultado, o cliente de Área de Trabalho Remota se conectará ao proxy SOCKS5 local na porta 3080, e então o gonc fará a análise reversa do endereço 127.b.c.d para extrair a informação 10.0.0.1-3389 do nome de domínio.
Formato de Configuração do link
# Based on the established tunnel, both local and remote sides listen on port 1080.
# The proxy supports both HTTP and SOCKS5 protocols, with transparent proxy capability enabled.
gonc -p2p <passphrase> -link "1080;1080"