
PacketSender v8.11.1
Utilitário de rede para enviar / receber TCP, UDP, SSL, HTTP
Introdução

https://packetsender.com
Leia isto em outras línguas: English, Español, Deutsch, Français, italiano 简体中文.
O Packet Sender é um utilitário de código aberto que permite enviar e receber pacotes TCP, UDP e SSL (TCP criptografado), bem como requisições HTTP/HTTPS e geração de painéis. O branch principal suporta oficialmente Windows, Mac e Linux Desktop (com Qt). Outros lugares podem recompilar e redistribuir o Packet Sender. O Packet Sender é gratuito e licenciado sob GPL v2 ou posterior. Pode ser usado tanto para fins comerciais quanto pessoais. Se você achar o aplicativo útil, considere doar/patrocinar para que o desenvolvimento possa continuar.
Índice
- Patrocinadores
- Visite IWL.com
- Visite NagleCode.com
- Visite Eletiope.com
- Visite John Huntington
- Interface Gráfica
- Gerador de Tráfego Intenso (GUI)
- Rede
- Downloads
- Aplicativo Móvel iOS
- Suporte
- Calculadora de Sub-rede IPv4
- Wake-On-LAN / Magic Packet
- Packet Sender Cloud
- Modo Portátil
- Macros e Respostas Inteligentes
- TCP e SSL Persistentes
- Requisições HTTP/HTTPS
- Gerador de Painéis
- Interface de Linha de Comando
- Gerador de Tráfego Intenso (CLI)
- Compilando o Packet Sender
Patrocinadores
O Packet Sender gostaria de agradecer aos seguintes patrocinadores.
A IWL é uma empresa da Califórnia que cria produtos de rede de computadores.
A NagleCode é uma editora de software e estúdio de desenvolvimento.
A Eletiope instala iluminação, recursos audiovisuais e salas imersivas para exposições e museus, e para showrooms corporativos.
John Huntington
Autor, consultor, educador, engenheiro de som, fotógrafo premiado e caçador de tempestades.
Gostaria que seu nome/logo aparecesse aqui?
Suporte
- Twitter/X: @NagleCode
- Fóruns em: Discussões no GitHub.
- Email: Contato Packet Sender
- Conecte-se comigo no LinkedIn
NOTA: Tente (temporariamente) desabilitar seu firewall se estiver tendo problemas no Windows.
Downloads
Download para Desktop
Lançamentos oficiais do Packet Sender podem ser baixados em PacketSender.com. Alguns lugares redistribuem o Packet Sender.

Aplicativo Móvel iOS
O Packet Sender para iOS é totalmente nativo, contém permissões mínimas e não coleta dados. Este é um software que respeita você. Obrigado por apoiar este esforço.
A versão iOS está na Apple App Store
GUI
O Packet Sender é idêntico para todas as versões desktop. A única diferença é seu tema para combinar com o sistema operacional.

- Um pacote tem um nome, endereço de destino (nomes de domínio são resolvidos por padrão pouco antes do envio), porta e dados associados a ele.
- Na tabela, há uma lista de pacotes salvos. Você pode clicar duas vezes para editar diretamente os campos nesta tabela.
- No canto inferior direito, há os status e portas dos servidores UDP, TCP e SSL. Clicar neles ativará ou desativará o protocolo. O Packet Sender suporta vinculação a qualquer número de portas.
- Há também um botão de alternância de IP. Clicar nele altera para IPv4 (padrão), IPv6 ou IP personalizado.
Notas Gerais
- Um valor de reenvio de "0" significa que é um pacote de disparo único.
- Durante o reenvio de pacotes, haverá um botão para cancelar todos os reenvios.
- Verifique seu firewall. O Windows bloqueia agressivamente servidores baseados em TCP. O Packet Sender ainda funcionará se o firewall o bloquear, mas não poderá receber pacotes TCP não solicitados.
- Uma resposta opcional pode ser enviada. A mesma resposta é usada para TCP, UDP e SSL.
- Para envio IPv6, você também precisará do ID de escopo.
- O Packet Sender suporta notação mista ASCII e HEX:
- Clique duas vezes em qualquer campo para abrir o editor multilinha
- \XX é traduzido para XX em hexadecimal
- \n, \r, \t serão traduzidos para 0A, 0D e 09
- Números HEX são delimitados por espaço
- O campo HEX tentará interpretar outros delimitadores comuns (como vírgulas, dois pontos (Wireshark), ponto e vírgula, "0x", etc) e autocorrigir. É muito tolerante a falhas.
- Um único fluxo de HEX também é suportado. Se o número de bytes for ímpar, o Packet Sender assumirá que o byte da frente precisa de um zero e então autocorrigirá.
- Exemplo ASCII: hello world\r
- Exemplo HEX: 68 65 6c 6c 6f 20 77 6f 72 6c 64 0d
- Você pode salvar um pacote diretamente do log de tráfego. Será solicitado um nome, e o endereço de origem e porta serão trocados para sua conveniência.
- Você também pode carregar um arquivo diretamente no campo HEX. O campo HEX suporta o envio de até 10.922 bytes. O limite teórico para envio via linha de comando é de 200 MB.
Teclas de Atalho
Os campos no topo podem ser navegados usando CTRL+1, CTRL+2, etc, até CTRL+8 (botão enviar). No Mac, a tecla de atalho é Command.
As teclas de atalho e campos são:
- CTRL + 1 = Nome
- CTRL + 2 = ASCII
- CTRL + 3 = HEX
- CTRL + 4 = Endereço
- CTRL + 5 = Porta
- CTRL + 6 = Atraso de Reenvio
- CTRL + 7 = Seleção de Protocolo
- CTRL + 8 = Enviar (executa)
Algumas notas:
- Os campos estão vinculados à tecla de atalho correspondente independentemente da seleção do protocolo.
- Ao navegar para a opção TCP/UDP/SSL, você pode usar as teclas para cima/baixo ou t/u/s/h para fazer uma seleção.
- Se você for automatizar com teclas de atalho (usando ferramentas como AutoHotKey), talvez queira desativar "Restaurar sessão anterior".
Recursos de Rede
Configurações Básicas
Por padrão, o Packet Sender inicia com servidores UDP, TCP e SSL habilitados em portas aleatórias (mostradas como botões no canto inferior direito). Você pode vincular a qualquer número de portas (se o SO permitir), usando números de porta separados por vírgula. Por exemplo, 0, 1000, 2000 vinculará a "aleatório" e às portas 1000, 2000.

O botão UDP agora mostra 3 portas vinculadas. 1 delas é aleatória.

A outra configuração é responder a todas as requisições com uma resposta. Você também pode fazer com que esta resposta seja uma macro. Há um campo para digitar a resposta (ou carregar um pacote salvo).
Configurações Adicionais UDP/TCP/SSL
Por padrão, o Packet Sender vincula a qualquer endereço IPv4. Nesta área das configurações, você pode fazê-lo vincular a qualquer IPv6 ou a um endereço IP específico.
Vincular a um endereço específico é muito útil quando há várias placas de rede e você deseja forçar a comunicação (como pacotes de broadcast) através de uma específica.

Alguns protocolos esperam que o servidor envie dados antes do cliente enviar (como muitos serviços telnet). Este fluxo de trabalho pode ser ativado com "Receber Antes de Enviar".
Se você tiver um dispositivo lento (como um servidor embarcado com processador fraco), pode ativar "Atraso de 500 ms após conectar". Isso dará tempo ao servidor lento para iniciar seu manipulador.
IPv4, IPv6, IP Personalizado
Os servidores internos do Packet Sender são configurados para suportar IPv4 ou IPv6, mas não ambos ao mesmo tempo. Para clientes, a GUI e CLI do Packet Sender alternarão perfeitamente entre os dois modos ao enviar (pode ser necessário o ID de escopo para IPv6). Clique no alternador IPv4 / IPv6 no canto inferior direito para alternar entre os dois.
Dentro das configurações, você também pode forçar os servidores do Packet Sender a vincular a um endereço IP personalizado. Isso pode ser muito útil para sistemas com várias placas de rede ou configurações IP complicadas. O Packet Sender disparará um erro se for instruído a vincular a um endereço que não existe.

Calculadora de Sub-rede IPv4
O Packet Sender possui uma calculadora de sub-rede embutida. Ela está no menu Ferramentas.

- A janela de log (seção inferior) exibirá endereços IPv4 e IPv6 não-loopback encontrados no seu computador.
- No lado esquerdo, insira o endereço IPv4 no campo IP.
- No lado esquerdo, insira a sub-rede na notação X.X.X. ou /XX.
- Os resultados do cálculo estão à direita.
- O campo abaixo é uma verificação rápida para ver se um IPv4 está dentro de uma de suas sub-redes.
Wake-On-LAN / Magic Packet
Wake-On-LAN (ou WOL) é um protocolo que instrui computadores a acordarem do modo de suspensão. É acionado por um pacote de broadcast com dados especiais baseados no endereço MAC do alvo. Para mais informações, dê uma olhada na Wikipedia.
O Packet Sender possui um gerador WOL embutido. Ele está no menu Ferramentas.

Preencha as opções, e a GUI principal será preenchida com os dados corretos para o formato WOL.

Há também opções de CLI para ajudar a gerar e enviar pacotes WOL```text packetsender --wol f8:23:66:30:e5:30 Sending broadcast Wake-On-LAN to target: F8:23:66:30:E5:30 on port 7 UDP (60360)://255.255.255.255:7 ff ff ff ff ff ff f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30
## Cliente e Servidor SSL
O Packet Sender suporta estabelecer conexões criptografadas via SSL.
Isso é suportado na GUI e na linha de comando.
O Packet Sender inclui o OpenSSL para uso no Windows. No Mac e Linux, o Packet Sender usará as bibliotecas SSL nativas.

Notas sobre SSL:
* A negociação do certificado é tratada imediatamente durante a conexão.
* Por padrão, o Packet Sender ignora todos os erros SSL (certificado expirado, nome de host errado, autoassinado, etc).
* O Packet Sender exibe o progresso da negociação do certificado no log de tráfego.
* O Packet Sender exibe o algoritmo de criptografia usado no log de tráfego (como AES 128).
O Packet Sender inclui um certificado interno "Snake Oil" para uso como servidor no Windows. O certificado e a chave estão no mesmo local que os pacotes e configurações.
_Nota: Substituir os locais do certificado nas Configurações também substitui o certificado snake-oil._
Se houver um erro SSL, o Packet Sender o exibirá no log de tráfego. Se a configuração for para continuar de qualquer forma (padrão), ele continuará a negociar a criptografia. Caso contrário, a conexão termina com falha ao conectar.

## Multicast (Experimental)
O suporte a multicast do Packet Sender é acionado ao tentar enviar para um endereço multicast IPv4 ou a partir do submenu multicast. O recurso é atualmente experimental e tem estes problemas conhecidos.
* O Packet Sender abandona o suporte a IPv6 ao ingressar em multicast.
* E permanece abandonado até que você revise as configurações ou tente enviar para IPv6
* No wifi, às vezes leva 20 segundos para a adesão ao multicast realmente fazer efeito.
* O Packet Sender não tem lógica para reingressar em um grupo multicast se o switch reiniciar ou algum outro erro comum.
Não há suporte a multicast IPv6, embora esteja no roadmap. Patrocinadores que desejam suporte a multicast IPv6 são bem-vindos para entrar em contato comigo.
<a id="udptraffic"></a>
## Gerador de Tráfego UDP (Experimental)
Para quando o sistema normal de envio não é suficiente, você pode bombardear um IP alvo com pacotes para ver se seu dispositivo consegue lidar com isso. Isso pode ser encontrado na barra de ferramentas da GUI em _Ferramentas -> Gerador de Tráfego Intenso_
Por favor, note que este recurso é experimental e as métricas exibidas não foram totalmente testadas. Para um teste mais preciso, você pode querer ver a versão CLI desta ferramenta.

# Recursos do Packet Sender
<a id="cloud"></a>
## Nuvem do Packet Sender
Conjuntos de pacotes podem ser rapidamente salvos/recuperados/compartilhados usando o serviço gratuito [Packet Sender Cloud](https://cloud.packetsender.com/). A nuvem também pode ser usada para exibir e distribuir publicamente seus pacotes (via URL) para colaboração, tutoriais, usuários finais, etc. O Packet Sender pode importar conjuntos de pacotes públicos com URL pública.
Existem várias razões para fazer isso:
* Manter todos os seus pacotes prontos para que você possa recuperá-los rapidamente ao instalar um Packet Sender novo
* Trocar rapidamente entre conjuntos de pacotes ao trabalhar em diferentes projetos.
* Compartilhar um login (é permitido) para geração colaborativa de conjuntos de pacotes
* Ter uma página pública de seus conjuntos de pacotes para que outros possam encontrar e importar rapidamente

Se você está publicando uma API de rede, manter uma página pública na nuvem é significativamente mais fácil do que detalhar minuciosamente (IP, porta, tipo, etc) os pacotes para seus usuários. Além disso, atualizar essa página é fácil.
Mais informações podem ser encontradas em
https://cloud.packetsender.com/help
<a id="portable"></a>
## Modo Portátil
O Packet Sender tem um modo "portátil". Na inicialização, ele procura por `portablemode.txt` e preenche quaisquer arquivos de configuração ausentes nesse diretório de tempo de execução. Esses arquivos são `packets.ini`, `ps_settings.ini`, `ps.key` e `ps.pem`.
Você também pode ter alguns arquivos portáteis e outros em seu local padrão removendo portablemode.txt.
### DLLs que podem ser removidas no Modo Portátil somente Console
Se você não precisar da GUI, pode remover estas DLLs
- Qt6Svg.dll
- Qt6Widgets.dll
- Qt6Gui.dll
- opengl32sw.dll
- D3Dcompiler_47.dll
- iconengines directory
- imageformats directory
- styles directory
Note que DLLs com caracteres `+` em seus nomes podem causar problemas com a cópia da linha de comando do Windows se você não as envolver com `"` .
### DLLs que podem ser removidas se você não precisar de conexões seguras
Se você não precisar de SSL, pode remover estas DLLs
- libcrypto-1_1-x64.dll
- libssl-1_1-x64.dll
O diretório de tempo de execução para usuários do Windows é o mesmo local que o .exe.
Para usuários MAC, este diretório de tempo de execução fica em `PacketSender.app/Contents/MacOS`.
Se arquivos INI forem encontrados, ele os usará em vez de `%APPDATA%` ou `Library/Application Support`.
<a id="smartresponses"></a>
## Respostas Inteligentes
O Packet Sender suporta até 5 respostas inteligentes.
Para habilitar este recurso, vá em _Arquivo -> Configurações_ na barra de ferramentas da GUI. Vá para a aba _Respostas Inteligentes_ e marque a caixa de seleção **Enviar uma Resposta Inteligente**.

* O Packet Sender comparará o pacote dentro da codificação que você escolher.
* O Packet Sender traduz a codificação antes de enviar a resposta.
* As codificações disponíveis são:
* ASCII Misto -- A forma padrão do Packet Sender de codificar ASCII junto com caracteres não imprimíveis
* HEX -- A codificação HEX normal do Packet Sender
## Macros
O Packet Sender suporta estas macros ao enviar respostas:
* {{DATE}} -- Envia a data atual no formato "yyy-mm-dd".
* {{TIME}} -- Envia a hora atual no formato "hh:mm:ss ap".
* {{UNIXTIME}} -- Envia o timestamp epoch atual.
* {{COUNTER}} -- Envia um contador incremental para cada pacote que o usa. Começa em 1 na inicialização.
* {{RANDOM}} -- Envia um número aleatório variando de 0 a 32767 ou 2147483647, dependendo de 32 bits ou 64 bits (o instalador padrão para Windows é 32 bits. Mac é 64 bits).
* {{UNIQUE}} -- Envia uma string aleatória. Usa um UUID interno para gerá-la.
O Packet Sender substituirá a macro por valores reais antes de enviar.
<a id="persistent"></a>
## TCP e SSL Persistentes
O Packet Sender suporta conexões TCP e SSL persistentes através de uma janela GUI separada. É habilitado por uma caixa de seleção na janela principal ou através da janela de Configurações.

### Notas sobre TCP e SSL Persistentes:
* Qualquer número de conexões persistentes pode ser criado.
* Pacotes salvos anteriormente podem ser carregados no menu suspenso.
* Há uma visualização "Bruta" e uma visualização "ASCII". A visualização ASCII é útil para solucionar dados que não são impressos pela visualização bruta.
* O tráfego também é salvo no log de tráfego da janela principal.
* Um arquivo pode ser enviado para a conexão persistente. Você pode desejar desligar o registro se usar isso.
* O cronômetro no canto inferior esquerdo inicia assim que um pacote de dados válido é enviado/recebido. Ele para quando a conexão é fechada.
* Você pode opcionalmente anexar um retorno de carro ao enviar rapidamente pressionando a tecla Enter. Isso é útil para menus de prompt de comando em conexões TCP/SSL. O Packet Sender lembra do estado anterior da caixa de seleção \r.
* Conexões persistentes recebidas para o servidor abrirão a janela GUI separada.
* Durante o reenvio, o pacote de conexão persistente é transferido para a nova janela GUI. Clicar em "Reenviando(1)" irá cancelá-lo.
Conexões persistentes não são suportadas via linha de comando.
<a id="http"></a>
# HTTP/HTTPS POST e GET
O Packet Sender suporta o envio de requisições POST/GET via HTTP e HTTPS.
O menu suspenso de protocolo inclui as seguintes opções: HTTP GET, HTTP POST, HTTPS GET, HTTPS POST. Ao selecionar HTTP(S), os campos de entrada serão atualizados para: Nome, Requisição, Endereço, Dados (quando POST é selecionado), botão Gerar Dados (quando POST é selecionado), Carregar Arquivo (quando POST é selecionado).
## Enviando Requisições GET/POST HTTP/HTTPS

* Selecione HTTP(S) GET ou POST no menu suspenso de protocolo
* No campo *Endereço* insira o domínio ou IP
* No campo *Requisição* adicione o caminho da URL, se necessário
* No campo *Porta*, o padrão para HTTP é 80 e para HTTPS é 443
* Marque *TCP Persistente* para ver os dados do servidor mais claramente (cabeçalhos HTTP são removidos automaticamente).
**Você também pode colar uma URL completa no campo Requisição e o Packet Sender irá analisar e preencher automaticamente os outros campos.**
### Para Requisições POST:
* Você pode adicionar manualmente os dados no campo *Dados*.
* O formato seria: chave=valor
* Para múltiplos parâmetros: chave=valor&chave=valor&chave=valor
* Ou você pode clicar no botão *Gerar Dados*
<img src="https://assets.kitploit.com/production/public/readmes/4523/10d31cc53bcf0ba4d4a60d38c83a08231617142f8eec6b3cdb68f83964c3da06.png" width="400" height="284">
* Para adicionar dados, insira os parâmetros Chave e Valor. Clique no botão **+**.
* Pode adicionar múltiplos parâmetros com o botão +.
* Remova parâmetros clicando no botão X ao lado do parâmetro
* Uma vez que os parâmetros são adicionados, clique em OK e os dados serão gerados no campo Dados.
### Para adicionar credenciais de Autenticação:
<img src="https://assets.kitploit.com/production/public/readmes/4523/0592ee55242fa40c5eeb6dd0bd87956167c1461a7b224259a81ac065c055b9a0.png" width="800" height="339">
* Vá em Arquivo -> Configurações -> HTTP
* Marque *Gerar Cabeçalho de Autenticação*
* Insira o *Host*, *ID do Usuário/Cliente* e *Senha/Acesso*
* Clique em *Cabeçalho de Autenticação HTTP* para gerar o cabeçalho de autenticação
<a id="panelgen"></a>
# Gerador de Painel
O Packet Sender suporta a geração de painéis de controle. Os painéis consistem em botões com scripts (pacotes) atribuídos a eles. Clicar no botão executará o(s) pacote(s) referenciado(s) naquele botão.
<img src="https://assets.kitploit.com/production/public/readmes/4523/933ef79915bb7e6ced4a6fff3b2bb9b98ef19619b5096476cb8d5496c487e3dd.png" width="400" height="358">
## Carregando um Painel
Os painéis podem ser criados de duas maneiras:
* Clicando em **Painéis** na barra de ferramentas e selecionando Carregar Painel Inicial ou Projeto de Painel Vazio
* Carregar Painel Inicial carregará o painel designado como inicial. Se nenhum painel for definido como inicial, um projeto de painel vazio será aberto.
* Selecionando 2 ou mais pacotes salvos e clicando no botão **Gerar Painel** (o botão Gerar Painel aparece apenas quando vários pacotes são selecionados)
O Packet Sender suporta iniciar no modo apenas painel com o painel inicial usando a opção de linha de comando `--starterpanel`

## Script de um Painel
Para começar a programar os botões do seu painel, você precisará abrir um painel e ir para a tela de Edição. Uma vez que um projeto de painel é aberto, verifique o botão no canto inferior direito. Se este botão disser "Visualizando", você está na tela de Visualização. Clique no botão para mover o painel para a tela de Edição.
Uma vez na tela de Edição, botões e scripts podem ser adicionados ao painel.
### Script de Botão
Os scripts de botão conterão o nome do pacote a ser enviado.
<img src="https://assets.kitploit.com/production/public/readmes/4523/a34e6ec6f371b15c13f41bf577df02c57b2fb3e695d88f572d90b96377d0c92e.png" width="400" height="360">
Múltiplos pacotes podem ser atribuídos a um botão adicionando cada nome em uma nova linha.
<img src="https://assets.kitploit.com/production/public/readmes/4523/8bdccde0bc587dbd0d2a64f5126f1de47cdbd5a7ea0fb518122fb17bd876163a.png" width="400" height="358">
O Gerador de Painel suporta adicionar um atraso entre múltiplos pacotes adicionando "delay:_# de segundos_" entre os pacotes.
<img src="https://assets.kitploit.com/production/public/readmes/4523/c9399a2ba90d0a747c851d15d8a7674eac530c5cb6f65b4182bb532872dbfbbb.png" width="400" height="359">
O Gerador de Painel suporta adicionar um script para carregar um novo painel adicionando "panel:_id do painel #_". Assim que todos os scripts anteriores no botão forem executados, o Painel fará a transição para o próximo painel.
<img src="https://assets.kitploit.com/production/public/readmes/4523/0b8c538ddacba7c2e1ebe089491b555d63875f425aa25bd3ebd693467c0c5aa2.png" width="400" height="358">
### Adicionando Arquivos/URLs
O Gerador de Painel suporta adicionar botões que linkam para arquivos armazenados localmente ou URLs.
Botões de Arquivo/URL podem ser adicionados enquanto estiver na tela de Edição clicando no *+* no canto inferior direito.
* Para arquivos: Vá para o arquivo no PC, clique com o botão direito no arquivo e selecione Copiar. Cole isso na caixa de texto _URL ou Arquivo_ no Packet Sender
* Para URLs: Copie a URL na caixa de texto _URL ou Arquivo_ no Packet Sender
* As URLs devem começar com http:// ou https://

Assim que o arquivo ou URL for copiado, você será solicitado a inserir um nome para o botão. Os botões serão preenchidos na parte inferior do painel.
Enquanto estiver na tela de Edição, clicar nesses botões permitirá que você edite o link do arquivo/URL e o nome do botão. Você também pode deletar o botão clicando no **X** no popup.

Quando estiver na tela de Visualização, clicar nesses botões abrirá a URL no navegador padrão ou abrirá o arquivo (com o programa padrão para o tipo de arquivo).

### Edição/Salvamento de Painel
Enquanto estiver na tela de Edição de um Painel, haverá uma barra de ferramentas com menus Arquivo, Exportar, Configurações, Ajuda. Você pode salvar, exportar, importar, carregar projetos de painel e editar o projeto de painel atual a partir desta barra de ferramentas.
Em Configurações, você pode fazer o seguinte:
* Definir Nome do Painel - selecione isso para renomear o projeto de painel atual
* Definir ID do Painel - selecione isso para alterar o ID associado ao projeto de painel atual
_Nota: Definir um ID em uso substituirá aquele painel_
* Painel Inicial - selecione isso para definir o projeto de painel atual como o painel inicial.
* Deletar Painel - Isso abrirá um menu dos projetos de painel atuais. Selecione um projeto de painel para deletá-lo. _Nota: Botões e scripts serão mantidos na tela de Edição até que o Painel seja fechado_
# DTLS
Por enquanto, DTLS é suportado apenas na GUI com Windows. Outros sistemas operacionais podem habilitar DTLS compilando a partir do código-fonte usando Qt6.
## Visão Geral
Este repositório contém um recurso de protocolo DTLS (Datagram Transport Layer Security). Este recurso adicionou uma interface gráfica para configurar e gerenciar conexões DTLS, incluindo verificação de servidor e opções de persistência de sessão.
## Funcionalidades
### Janela Principal

- **Suites de Cifras**: Menu suspenso para selecionar a suite de cifras desejada para comunicação DTLS.
- **Nome Comum do Servidor**: Campo para inserir o nome comum do servidor para verificação do lado do cliente.
- **Sessão Persistente**: Opção para salvar a chave de sessão após o primeiro handshake, habilitando a caixa de seleção persistente.
- **Verificação Opcional do Servidor**: Uma opção para habilitar verificação bidirecional durante o handshake.
- **Porta do Servidor DTLS**: Botão para definir a porta do servidor DTLS para a conexão.
#### Imagens Adicionais:

- Uma visualização detalhada do menu suspenso de seleção de suite de cifras.

- Janela de conexão persistente durante DTLS.

- Botão para ativar ou desativar o servidor DTLS.
### Janela de Configurações
#### Aba de Rede

- **Enviar Reconhecimento Simples**: Caixa de seleção para habilitar o envio de um reconhecimento simples.
- **Habilitar Servidor DTLS**: Opção para habilitar o servidor DTLS e selecionar uma porta.
- **Certificados e Chaves**: Certificados e chaves podem ser carregados de forma similar à configuração SSL.
#### Aba de Respostas Inteligentes

- **Respostas Inteligentes**: O recurso de respostas inteligentes funciona sobre o protocolo DTLS.
## Integração com Wireshark
Captura pelo Wireshark:
### Conexão Normal

- Exemplo de uma conexão DTLS normal capturada pelo Wireshark.
### Conexão Persistente

- Exemplo de uma conexão DTLS persistente capturada pelo Wireshark.
<a id="cli"></a>
# Linha de Comando
O Packet Sender pode ser usado a partir da linha de comando no seu computador.
Para Windows, use a extensão .com (`packetsender.com`) para usar a interface de linha de comando. Opcionalmente, você também pode usar `packetsender` sem extensão. Usar a extensão .exe iniciará a GUI.

Para Linux, o sistema de linha de comando no Packet Sender segue o mesmo padrão de outros utilitários Linux. Ele tem um nome longo (como --version) e um nome curto (como -v). Essas opções podem ser organizadas em qualquer ordem e o Packet Sender as analisará corretamente. As últimas 3 opções são posicionais e devem aparecer por último. São IP, porta e dados. Estas últimas opções são opcionais se estiver usando um pacote armazenado.```text
packetsender --help
Usage: C:\Program Files\PacketSender\packetsender.com [options] address port data
Packet Sender is a Network UDP/TCP/SSL/HTTP Test Utility by NagleCode
See https://PacketSender.com/ for more information.
Options:
-h, --help Displays help on commandline options.
--help-all Displays help including Qt specific options.
-v, --version Displays version information.
-q, --quiet Quiet mode. Only output received data.
-x, --hex Parse data-to-send as hex (default for
TCP/UDP/SSL).
-a, --ascii Parse data-to-send as mixed-ascii (default for http
and GUI).
-A, --ASCII Parse data-to-send as pure ascii (no \xx
translation).
-l, --listen Listen instead of send. Use bind options to specify
port/IP. Otherwise, dynamic/All.
-r, --response <ascii> Server mode response data in mixed-ascii. Macro
supported.
-w, --wait <ms> Wait up to <milliseconds> for a response after
sending. Zero means do not wait (Default).
-f, --file <path> Send contents of specified path. Max 10 MiB for
UDP, 100 MiB for TCP/SSL.
-b, --bind <port> Bind port. Default is 0 (dynamic).
-6, --ipv6 Force IPv6. Same as -B "::". Default is IP:Any.
-4, --ipv4 Force IPv4. Same as -B "0.0.0.0". Default is
IP:Any.
-B, --bindip <IP> Bind custom IP. Default is IP:Any.
-t, --tcp Send TCP (default).
-s, --ssl Send SSL and ignore errors.
-S, --SSL Send SSL and stop for errors.
-u, --udp Send UDP.
--http <http> Send HTTP. Allowed values are GET (default) and
POST
-n, --name <name> Send previously saved packet named <name>. Other
options overrides saved packet parameters.
--wol <mac> Send Wake-On-LAN / Magic Packet to <mac> and
(optional) <port>.
--bps <bps> Intense traffic. Calculate rate based on value of
bits per second.
--num <number> Intense traffic. Number of packets to send. Default
unlimited.
--rate <Hertz> Intense traffic. Rate. Ignored in bps option.
--usdelay <microseconds> Intense traffic. Resend delay. Used if rate is 0.
Ignored in bps option.
--max Intense traffic. Run as fast as possible.
Arguments:
address Destination address/URL. Optional for saved packet.
port Destination port/POST data. Optional for saved
packet.
data Data to send. Optional for saved packet.
Exemplo de CLI
A CLI segue o mesmo formato entre Windows, Linux e MAC.
O formato é: `packetsender [options] address port data````text packetsender -taw 500 mirrors.xmission.com 21 "USER anonymous\r\nPASS [email protected]\r\n" TCP (65505)://mirrors.xmission.com:21 55 53 45 52 20 61 6e 6f 6e 79 6d 6f 75 73 0d 0a 50 41 53 53 20 63 68 72 6f 6d 65 40 65 78 61 6d 70 6c 65 2e 63 6f 6d 0d 0a Response Time:5:51:37.042 pm Response HEX:32 32 30 2D 57 65 6C 63 6F 6D 65 20... Response ASCII:220-Welcome to XMission Internet...
## Exemplo de CLI para escutar pacotes (Modo Servidor)
Use as opções de bind existentes para configurar o servidor.
- -b para porta
- -B para IP
- -t/-u/-s para TCP, UDP ou SSL
- -r para enviar uma resposta (ASCII com suporte a macro)
Vinculação a porta dinâmica usando TCP```text
packetsender -l
TCP Server started on 0.0.0.0:52567
Use ctrl+c to exit server.
From: 127.0.0.1, Port:52568
Response Time:2024-06-04 19:01:53.198
Response HEX:48 65 6C 6C 6F
Response ASCII:Hello
From: 127.0.0.1, Port:52569
Response Time:2024-06-04 19:02:24.063
Response HEX:57 6F 72 6C 64
Response ASCII:World
Vinculando à porta 8080 usando UDP```text packetsender -l -u -b 8080 UDP Server started on 0.0.0.0:8080 Use ctrl+c to exit server.
From: ::ffff:127.0.0.1, Port:49500 Response Time:2024-06-04 19:04:28.890 Response HEX:48 65 6C 6C 6F 20 55 44 50 20 50 61 63 6B 65 74 Response ASCII:Hello UDP Packet
Vinculando à porta 8080 usando UDP com resposta de hora atual```text
packetsender -l -u -b 8080 -r "{{TIME}}"
Loading response packet.
UDP Server started on 0.0.0.0:8080
Use ctrl+c to exit.
From: ::ffff:127.0.0.1, Port:59594
Response Time:2024-06-05 20:48:18.180
Response HEX:68 65 6C 6C 6F 20 70 61 63 6B 65 74 20 73 65 6E 64 65 72
Response ASCII:hello packet sender
From: You (Response), Port:59594
Response Time:2024-06-05 20:48:18.182
Response HEX:30 38 3a 34 38 3a 31 38 20 70 6d
Response ASCII:08:48:18 pm
Vinculando ao IP 192.168.86.26, porta 54321 usando SSL```text packetsender -l -s -B 192.168.86.26 -b 54321 Binding to custom IP 192.168.86.26 Listening for SSL packets in server mode. SSL Server started on 192.168.86.26:54321 Use ctrl+c to exit server.
From: 192.168.86.26, Port:52588 Response Time:2024-06-04 19:11:30.726 Error/Info:Encrypted with AESGCM(256)
From: 192.168.86.26, Port:52588 Response Time:2024-06-04 19:11:30.726 Error/Info:Authenticated with RSA
From: 192.168.86.26, Port:52588 Response Time:2024-06-04 19:11:30.726 Error/Info:Peer cert issued by
From: 192.168.86.26, Port:52588 Response Time:2024-06-04 19:11:30.726 Error/Info:Our Cert issued by SnakeOil
From: 192.168.86.26, Port:52588 Response Time:2024-06-04 19:11:30.747 Response HEX:43 6F 6F 6C 20 53 53 4C Response ASCII:Cool SSL
## Exemplos de vinculação a porta e IP personalizado, IPv4 ou IPv6
A linha de comando do Packet Sender pode vincular a portas personalizadas para forçar modos IPv4/6 ou várias NICs usando a opção -B.```text
packetsender -taw 3000 fe80::c07b:d517:e339:5a08 5005 "Hello\r"
packetsender -taw 3000 192.168.0.201 5005 "Hello\r"
packetsender -B 192.168.0.200 -taw 3000 192.168.0.201 5005 "Hello\r"
packetsender -B fe80::a437:399a:3091:266a%ethernet_32769 -taw 3000 fe80::c07b:d517:e339:5a08 5005 "Hello\r"
packetsender -B fe80::a437:399a:3091:266a -taw 3000 fe80::c07b:d517:e339:5a08 5005 "Hello\r"
Exemplo de CLI usando SSL e ignorando erros
A linha de comando tem a opção de ignorar ou abandonar em erros SSL. O padrão é ignorar.
- Use a opção -s para enviar SSL e ignorar erros.
- Use a opção -S para enviar SSL e parar para erros```text packetsender -saw 500 expired.packetsender.com 443 "GET / HTTP/1.0\r\n\r\n" SSL Error: The certificate has expired SSL (54202)://expired.packetsender.com:443 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 30 0d 0a 0d 0a Cipher: Encrypted with AES(128)
Response Time:3:24:55.695 pm Response HEX:48 54 54 50 2f 31 2e 31 20 34 32 31 20 0d 0a 53 65 72 76 65 72 3a 20 6e 67 69 6e 78 2f 31 2e 31 30 2e 30 20 28 55 62 75 6e 74 75 29 0d Response ASCII:HTTP/1.1 421 \r\nServer: nginx/1.10.0 (Ubuntu)\r
## Example CLI usando HTTP
Observe que isso usa os pacotes padrão integrados.```text
packetsender --name "HTTPS POST Params"
packetsender --http GET "https://httpbin.org/get"
packetsender --http POST "https://httpbin.org/post" "{}"
Exemplo usando o Gerador de Tráfego Intenso via CLI
O gerador de tráfego intenso via linha de comando funciona de maneira muito semelhante à versão GUI, mas é um pouco mais preciso, com mais opções de controle (e mais intensidade!).
Veja abaixo exemplos de como usá-lo. Observe que esses cálculos são de "Melhor Esforço". Ele funciona bem, mas picos de processador ou várias falhas de rede podem atrapalhar. O threading não é em tempo real e não é super inteligente em suas tentativas de compensação.
- Reenviar "Meu Pacote Incrível" a uma taxa de 20 Hz
- Reenviar "Meu Pacote Incrível" a um bps de 2000 baud
- Reenviar "Meu Pacote Incrível" o mais rápido possível
- Reenviar "Meu Pacote Incrível" com atraso de 2000000 microssegundos entre cada pacote
Nota: Para Windows, use a compilação ".com", então cada exemplo seria packetsender.com```text packetsender --rate 20 --name "My Awesome Packet" packetsender --bps 2000 --name "My Awesome Packet" packetsender --rate 0 --name "My Awesome Packet" packetsender --usdelay 2000000 --name "My Awesome Packet"
<a id="building"></a>
# Compilando o Packet Sender
A única dependência é o Qt SDK
## Compilando o Packet Sender para Windows/MAC
1. Baixe o instalador do Qt em https://www.qt.io/download-open-source/
1. Deixe-o instalar o MingGW se você não tiver um compilador.
1. Abra o projeto PacketSender.pro
1. Compile!
As versões para Windows e Mac foram compiladas usando Qt 5.12. O Packet Sender suporta Qt 6, porém não suporta cmake.
## Compilando o Packet Sender para Linux
Aqui está a sequência de comandos para Ubuntu 16.04. Por favor, adapte para sua plataforma Linux. O Packet Sender não requer bibliotecas adicionais além do Qt SDK padrão. Me disseram que há problemas de compilação com Fedora padrão. Se um especialista em Fedora tiver insights, por favor me avise, e adicionarei suas instruções.
Se você está se sentindo aventureiro, sinta-se à vontade para compilar a partir do branch master. Ele contém a compilação estável mais recente. O branch de desenvolvimento deve provavelmente ser evitado.```bash
sudo apt-get update
sudo apt-get install qt5-default build-essential
wget https://github.com/dannagle/PacketSender/archive/(Version).tar.gz
tar -xzvf (Version).tar.gz
cd PacketSender-(Version)/src
qmake PacketSender.pro
make
Para executar use:```text ./PacketSender
Se não funcionar, talvez seja necessário torná-lo executável```text
chmod a+x PacketSender
Melhorias/Solicitações
Falta algum recurso? Você pode me contratar para adicioná-lo ao Packet Sender.
Legal / Conformidade
Licença é GPL v2 ou posterior. Entre em contato se precisar de uma licença diferente. Algumas distribuições do Packet Sender podem usar OpenSSL. O VPAT mais atual pode ser encontrado neste repositório.
Direitos Autorais
Packet Sender foi escrito por Dan Nagle e é publicado por © NagleCode, LLC - @NagleCode - PacketSender.com
