Eu faço um monte de criação de fuzzers para o meu trabalho (enviando dados aleatórios para protocolos antigos frequentemente "desconhecidos"). Às vezes eu tenho que "bit bang" isso com um analisador saleae com um modelo de python que funciona para mim. Estou tentando obter um conhecimento mais profundo. Estou confortável em Bash e com o que faço tenho muita experiência em enviar informações diretamente através de um socket TCP
echo "whatever" > / dev / tcp / [ip] / [porta]
Tenho tocado com chamadas de shell reversas e algumas delas parecem chamar uma função de soquete de nível mais baixo diretamente e não sei como utilizar isso. Aqui está a minha pergunta:
Como faço para enviar dados binários diretamente de uma NIC? Não me importo se não estiver em um formato que seja reconhecível pelo tcp / ip ... Eu posso lidar com isso em scripts. Como faço para despejar binário direto do cartão? Alguém sabe?
Dumping binary no bash é um pouco complicado e está dificultando meu teste. Ele é freqüentemente "interpretado", de modo que os programas e a própria saída do shell lidam com tudo de maneira diferente. Eu posso fazer o hex dump ascii convertido em texto e o shell auto-converte de volta, o que pode ser confuso quando você está procurando informações de 1/0. (echo "hex" | xxd -r -p) tão próximo que eu posso chegar é:
Para criar o hexdump do tráfego de rede real:
tcpdump -nni eth0 -e -xx -XX > newfile
Este arquivo tem muitos "metadados", como uma descrição anterior ao hexadecimal, por exemplo:
20: 20: 16.122740 80: 2a: a8: 8e: c4: 56 > ff: ff: ff: ff: ff: ff, tipo ether de ARP (0x0806), comprimento 60: Request who-has 10.1.10.26 informa 10.1.10.1, comprimento 46
Em seguida, um teste de saída nic com wireshark em execução:
cat newfile | xxd -r -p > /dev/tcp/8.8.8.8/53
mas o wireshark faz coisas estranhas. Reconhece o pacote de transmissão ASCII, mas não o que eu posso ver nos dados "cat newfile | xxd -r -p" que o bash auto converte ...
Eu entendo que esse é um assunto bem grande.
Qualquer ajuda é apreciada! Para toda a clareza minha pergunta é "como posso despejar dados hex diretamente fora de um nic. De preferência como ao fazer" echo [whatever] > / dev / tcp / "
Tags networking linux shell