這題應該是分析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有很大差異。