使用Wireshark打开文件
分析能分析的流,这里直接选择UDP流
分别有两段流,内容都是关于物理的
和flag没啥关系,只能从别的方面下手
分析:整个数据包,全部由UDP协议组成
其中发送IP和接收IP固定不变,数据长度也不变固定23
数据包中唯一在变动的数据,就只有发送端的端口
也就是Src Port:
只有0和1的变化,很有可能是二进制转ASCII
这里直接使用wireshark的CLI版本:tshark辅助提取数据
tshark -r 8868f595665740159650d6e654aadc93.pcap -T fields -e udp.srcport > data.txt
-r:输入文件
-T fields:只输出我们指定的字段内容
-e:指定字段,这里的形式就是<协议>.<端口类型>
协议只有两种:tcp、udp
端口类型也是两种发出端和接收端:srcport、dstport
最后的 ‘>’ 则是将打印的数据保存到data.txt这个空白文档中
这样就可以把udp协议的所有srcport内容保存下来了
但是这里还有一个问题,我们只需要用到端口的最后一位,也就是
3401
3400
而且,这里每个数据都有一个换行,所以还需要对data.txt的数据处理一下
cat data.txt | cut -c 4 > data.txt
使用cut命令,以字符串为单位将第四个字符截取出来
并重新覆盖回data.txt文件中,效果如下:
接下来,使用tr命令将文档中所有换行符删去
cat data.txt | tr -d '\n' > data.txt
再次查看data.txt内容
最终获得的字符串:
10110111100110101001011010001100100110101001000110011101100110101000110110011000
但是这串字符,直接拿出来二进制转ASCII是乱码
考虑是01反转,写个程序把0和1换一下
#include <stdio.h>
int main(){
char *str="10110111100110101001011010001100100110101001000110011101100110101000110110011000";
for(int i=0;str[i]!=0;i++){
if(str[i]=='1')
printf("0");
else
printf("1");
}
return 0;
}
获得反转过后的字符:
01001000011001010110100101110011011001010110111001100010011001010111001001100111
随波逐流工具启动!
直接将上列反转过后的二进制代码放进来
选择二进制转ASCII