【MISC】想蹭网先解开密码——Wifi无线攻击

1、题目信息

2、解题思路

3、解题过程

4、思路总结

 

1、题目信息

这题应该是分析pcap流量包的,先看题目:

想蹭网先解开密码
描  述: flag格式:flag{你破解的WiFi密码} tips:密码为手机号,为了不为难你,大佬特地让我悄悄地把前七位告诉你 1391040** Goodluck!! 作者@NewBee

分析题目应该是要破解wifi密码,猜测应该就是kali无线攻击了。下载下来附件发现是pcap网络包。再看描述里,密码是11位纯数字,还告诉了前七位,那就只剩下后面四位纯数字了,一猜就是爆破跑字典了。

下载附件:wifi.cap

看流量包都是802.11协议无线数据包,那么思路就明确了

 

 

 

2、解题思路

按照之前的分析,这个网络数据包中应该包含了WPA的安全认证交互信息;同时密码是11位纯数字并且已知前7位。

那么就需要生成后四位遍历的爆破字典,然后放到kali中用aircrack跑一下试试就行。

字典可以用crunch等工具,但是为了熟悉代码脚本编写,我决定手写个代码生成脚本来直接拼接一下。

 

3、解题过程

首先,先生成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!

搞定收工!

 

4、思路总结

这个题提示非常明确,就是考验wifi密码破解的。但是从这个题目中也是补充了wifi无线安全的一些知识:

WEP的破解为利用加密体制缺陷,通过收集足够的数据包,使用分析密算法还原出密码。 
WPA目前没有加密体制的缺陷可被利用,破解WPA密码使用的是常规的字典攻击法。 
所以在破解方式上WEP和WPA有很大差异。 

posted @ 2021-08-13 16:37  XuepengZ  阅读(847)  评论(0编辑  收藏  举报