【MISC】想蹭网先解开密码——Wifi无线攻击
这题应该是分析pcap流量包的,先看题目:
想蹭网先解开密码
描 述: flag格式:flag{你破解的WiFi密码} tips:密码为手机号,为了不为难你,大佬特地让我悄悄地把前七位告诉你 1391040** Goodluck!! 作者@NewBee
分析题目应该是要破解wifi密码,猜测应该就是kali无线攻击了。下载下来附件发现是pcap网络包。再看描述里,密码是11位纯数字,还告诉了前七位,那就只剩下后面四位纯数字了,一猜就是爆破跑字典了。
下载附件:wifi.cap
看流量包都是802.11协议无线数据包,那么思路就明确了
按照之前的分析,这个网络数据包中应该包含了WPA的安全认证交互信息;同时密码是11位纯数字并且已知前7位。
那么就需要生成后四位遍历的爆破字典,然后放到kali中用aircrack跑一下试试就行。
字典可以用crunch等工具,但是为了熟悉代码脚本编写,我决定手写个代码生成脚本来直接拼接一下。
首先,先生成4位数纯数字的所有排列,并且把前缀拼接上,生成一个txt字典:
1 import java.io.File; 2 import java.io.FileOutputStream; 3 import java.io.OutputStreamWriter; 4 5 public class test { 6 public static void main(String[] Args) throws Exception { 7 8 File file = new File("D:\\dictionary.txt"); 9 FileOutputStream fos = null; 10 OutputStreamWriter osw = null; 11 12 if (!file.exists()) { 13 boolean hasFile = file.createNewFile(); 14 if (hasFile) { 15 System.out.println("file not exists, create new file"); 16 } 17 fos = new FileOutputStream(file); 18 } else { 19 System.out.println("file exists"); 20 fos = new FileOutputStream(file, true); 21 } 22 23 osw = new OutputStreamWriter(fos, "utf-8"); 24 25 String str = null; 26 for (int i = 0; i < 10000; i++) { 27 str = i + ""; 28 while (str.length() < 4) { 29 str = "0" + str; 30 } 31 osw.write("1391040" + str); // 写入内容 32 osw.write("\r\n"); // 换行 33 } 34 osw.close(); 35 36 } 37 38 }
手工javac编译运行一下,搞出字典后放进kali,试试爆破一下:
OK。key found!
搞定收工!
这个题提示非常明确,就是考验wifi密码破解的。但是从这个题目中也是补充了wifi无线安全的一些知识:
WEP的破解为利用加密体制缺陷,通过收集足够的数据包,使用分析密算法还原出密码。
WPA目前没有加密体制的缺陷可被利用,破解WPA密码使用的是常规的字典攻击法。
所以在破解方式上WEP和WPA有很大差异。