Descrição
Why is the sky blue?
Solução
Extraindo o arquivo temos um .pcap, que nos dá a entender que é um arquivo de transmissão de rede, meu wireshark estava desatualizado e não consegui abrir o arquivo nele. Analisando o arquivo com cat ou strings é possível perceber facilmente que se trata de um log ou sniff de comunicação por bluetooth entre dois dispositivos:
|
|
Usando binwalk é possível encontrar um header de png dentro do pcap:
|
|
Extraindo esse arquivo ele retorna a seguinte imagem, que visivelmente é a flag porém está corrompida:
Novamente analisando o arquivo gerado, foi possível que os logs das intruções bluetooth estavam no meio do arquivo. Então chegou a hora de colocar a mão na massa, criar um script que deveria identificar e remover tudo que não fosse parte da imagem, para conseguir visualizar o conteúdo completo.
Resolvi fazer o script em node que é a linguagem que mais tenho familiaridade (indo em contramão ao python). E o que ele deveria fazer?
- Identificar o inicio da imagem;
- Identificar o fim da imagem;
- Separar o conteúdo;
Esses três primeiros passos foram feitos pois usei o pcap inteiro como input e não apenas a imagem extraida com binwalk, a segunda parte deveria:
- Identificar o inicio da operação bluetooth;
- Identificar o fim da operação bluetooth;
- Remover os bytes desse intervalo;
- Repetir esses passos até o fim do arquivo.
O notepad abaixo mostra o código funcional:
https://tonicdev.com/brunoventura/57d6ce33ff903b130003a04e
E o resultado “final”:
OBS: O ultimo chunk do png ficou quebrado pois a última instrução não seguia o padrão das anteriores, porém como ctf também depende de tempo, resolvi não resolver até o final, já que com a imagem obtida era possível extrair a flag :)