
UDPack é um ofuscador genérico e extensível de pacotes UDP.
UDPack é um obfuscardor genérico e extensível de pacotes UDP. O objetivo desta aplicação é se posicionar no caminho de um fluxo de dados UDP e ofuscar, desofuscar ou modificar os pacotes.
Python 3.4 ou superior é necessário, já que este script usa a biblioteca asyncio. Usar a versão mais recente do Python é sempre fortemente recomendado. As funcionalidades básicas não requerem dependências de terceiros, mas XChaCha20Poly1305Packer requer PyNaCl.
Aviso: Deve ser enfatizado que o objetivo desta aplicação é ofuscação, não criptografia. Muitas decisões de design foram (e serão) deliberadamente tomadas contra as melhores práticas em criptografia, então, com toda probabilidade, os métodos de ofuscação não resistirão à análise criptográfica. NÃO confie na ofuscação para a confidencialidade dos seus dados!!!
A versão atual separa a parte de rede em uma classe Manager separada e mantém a ofuscação nos packers, e usa funções de fábrica de classes em vez de mixins para produzir packers derivados. Isso facilita o encadeamento de packers, como demonstrado no novo PipelineManager.
Estes packers estão disponíveis:
NoOpPacker, CallSoonPacker: na verdade não ofuscam nada.
ConstDelayPacker, DelayPacker: atrasa cada datagrama por um período fixo / variável de tempo.
RandomDropPacker: descarta pacotes aleatoriamente.
ShufflePacker: embaralha a ordem dos bytes de dados deterministicamente, usando a semente aleatória como chave.
XorMaskPacker, ReverseOnePlusPacker, XorPtrPosPacker: inspirados pelo "XOR Patch" para OpenVPN, estes 3 packers quando combinados podem emular qualquer método de ofuscação nesse patch.
Novo: XChaCha20Poly1305Packer: Criptografa cada datagrama usando XChaCha20Poly1305, tornando o conteúdo indistinguível de bytes aleatórios. 40 bytes de overhead para cada datagrama. Disponível se PyNaCl estiver instalado.
Um "packer" é uma implementação particular de método de ofuscação, ofuscando pacotes que viajam upstream e desofuscando pacotes que viajam downstream. Um "unpacker" é a mesma coisa, implementado na direção oposta.
Tipicamente, um unpacker é configurado próximo ao servidor, com seu remote_addr apontando para o address:port de escuta do servidor. Um ou mais packers são configurados próximo ao(s) cliente(s), apontando para o addr:port de escuta do unpacker. Todos os packers e unpackers devem ter configurações correspondentes. Finalmente, os clientes se conectam ao addr:port de escuta do packer. O packer ofusca qualquer tráfego que recebe e o envia para o unpacker, que desofusca e encaminha para o servidor.
raw data obfuscated data raw data
UDP Client ---------- Packer =============== Unpacker ---------- UDP server
upstream ==> <== downstream
Para este: escreva código, não configuração. Simplesmente construa seu pipeline desejado a partir dos packers disponíveis e instancie seu packer. Veja script.py para um exemplo.