NP (Network Pipe) - Conectando Máquinas de Forma Simples
NP é uma ferramenta de linha de comando que permite criar pipes de rede bidirecionais entre máquinas de forma intuitiva e eficiente. Funciona como uma alternativa moderna ao netcat, oferecendo recursos avançados como detecção de serviços e um protocolo simples de autenticação que garante comunicações mais confiáveis.
🔗 Acesse o projeto: https://github.com/lsferreira42/np
Por que criei este projeto?
Ao trabalhar com sistemas distribuídos, frequentemente nos deparamos com a necessidade de transferir dados rapidamente entre máquinas ou conectar a saída de um processo em uma máquina à entrada de outro processo em outra máquina. As ferramentas tradicionais como o netcat, embora poderosas, carecem de alguns recursos modernos que facilitariam este trabalho.
O NP nasceu da necessidade de ter uma ferramenta simples, intuitiva e moderna para comunicação entre máquinas que pudesse ser facilmente integrada com o fluxo de trabalho de desenvolvedores e administradores de sistemas.
O que você pode fazer com o NP
- Transferir arquivos rapidamente entre máquinas sem configurações complexas
- Criar chats simples para comunicação em tempo real
- Conectar comandos em diferentes máquinas através de pipes
- Depurar conexões de rede de forma intuitiva
- Transmitir logs ou saídas de comandos remotos em tempo real
- Monitorar conexões através de uma interface web integrada
- Descobrir serviços automaticamente via mDNS
- Gerenciar múltiplas conexões com o modo multiplex
- Comprimir dados em tempo real com diferentes algoritmos
Como funciona por dentro
O NP é estruturado em torno de dois modos principais:
- Modo receptor (servidor): escuta por conexões de entrada
- Modo emissor (cliente): conecta-se a um receptor
A ferramenta utiliza um protocolo simples para autenticação que garante que apenas instâncias do NP se comuniquem entre si, evitando confusões com outros serviços de rede.
Tecnicamente, o NP oferece:
- Suporte a protocolos UDP e TCP
- Interface web integrada para monitoramento em tempo real
- Descoberta automática via mDNS (Bonjour/Avahi)
- Suporte a múltiplas conexões simultâneas
- Compressão de dados com algoritmos como gzip, zlib e zstd
- Código leve escrito em Go, compatível com múltiplas plataformas
Como usar
A utilização do NP é extremamente simples. Para iniciar um receptor (servidor):
np --receiver
Para se conectar a um receptor como emissor (cliente):
np --sender -H 192.168.1.100
Para ativar a interface web de monitoramento:
np --receiver --web-ui
A ferramenta se integra perfeitamente com pipes Unix, permitindo usos criativos como:
# Na máquina A (receptor)
ls -la | np --receiver
# Na máquina B (emissor)
np --sender -H [IP-da-máquina-A] | grep "arquivo-importante"
Planos futuros
O desenvolvimento do NP continua ativo, com diversos recursos planejados:
- Implementação de criptografia end-to-end para comunicações seguras
- Aprimoramento do modo relay para NAT traversal
- Expansão das capacidades de compressão de dados
- Melhoria da interface web com mais recursos de monitoramento
- Implementação de plug-ins para funcionalidades específicas
Instalação
Você pode instalar o NP facilmente usando o Go:
go install github.com/lsferreira42/np@latest
Ou compilar a partir do código fonte:
git clone https://github.com/lsferreira42/np.git
cd np
go build