Wifi断网自动重连(二)
来源:互联网 发布:淘宝 瞄准镜 编辑:程序博客网 时间:2024/05/17 01:40
作者:faaronzheng 转载请注明出处!
题外话:其实没有打算继续把这个程序写下去的,不过前几天闲的无聊,就稍微改了一改,并且加了一个搞笑版的暴力破解。ps.我并没有看过暴力破解的相关知识。完全是凭着自己的理解闭门造车。我比较喜欢先自己写,然后再参考别人的。
改动一:自动重连这个部分与之前的差别不大,主要改了一下连接指定wifi的函数
#region 连接到指定的SSID public Boolean ConnectToSSID() { try { int Desc = 0; String profileXml = String.Format("<?xml version=\"1.0\" encoding=\"US-ASCII\"?> <WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>{0}</name><SSIDConfig><SSID><name>{0}</name></SSID></SSIDConfig> <connectionType>ESS</connectionType><connectionMode>auto</connectionMode><autoSwitch>false</autoSwitch><MSM><security><authEncryption><authentication>{1}</authentication><encryption>{2}</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>passPhrase</keyType><protected>false</protected><keyMaterial>{3}</keyMaterial></sharedKey></security></MSM></WLANProfile>", targetSSID.SSID, authen, encry, pswd); targetSSID.wlanInterface.SetProfile(Wlan.WlanProfileFlags.AllUser, profileXml, true); targetSSID.wlanInterface.Connect(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, targetSSID.SSID); Thread.Sleep(2000); if (InternetGetConnectedState(out Desc, 0)) //有网络连接 { XmlDocument doc = new XmlDocument(); doc.Load("setting.xml"); XmlNodeList nodeList = doc.SelectSingleNode("setting").ChildNodes; foreach (XmlNode xn in nodeList) { XmlElement xe = (XmlElement)xn; if (xe.GetAttribute("ssid").Equals(targetSSID.SSID)) { isAdded = true; } } if (!isAdded) { XmlOP xml = new XmlOP(); xml.addXml(targetSSID.SSID, pswd); } return true; } } catch (Exception err) { return false; } return false; } #endregion
改动二:添加了娱乐向的暴力破解功能,纯闭门造车。
我主要是创建了两个线程,一个用来生成密码组合,一个用来尝试破解。这两个线程共享一个变量,同时只有一个在运行,另一个在等待。
private String[] allCombo=new String[1000]; //用来存放密码组合
这个数组用来存放密码组合,刚开始时生成密码的线程产生密码并添加的数组中而尝试破解的线程在等待。当数组添加满后他会停止产生新的密码进入等待,并记录洗一次要产生密码的位置。接下来尝试破解的线程会从这个数组中取出密码并且一个一个尝试,当线程把数组中所有数据尝试完后并且没有成功的话就停止尝试,交换由生成密码的线程产生新的密码。成功破解的话就返回。以此类推知道把所有的密码序列尝试完毕或找到正确的密码。
下面是用于产生所有密码组合的函数
public void AllCombo() //用于产生所有密码组合 { double i = 0; while(i<allComboNumber) { if (avaliable) //数组中有可用空间 { for (int j = 0; j < 1000; j++) { if (startNumber < Math.Pow(10, passwordNumber - 1)) //为密码补0 { String str =(startNumber + j).ToString(); String addStr = null; if (str.Length < passwordNumber) { for (int k = 0; k < passwordNumber - str.Length; k++) { addStr += zero; } allCombo[j] = addStr + str; } } else { allCombo[j] = (startNumber + j).ToString(); ; } } avaliable = false; i = i + 1000; //记录已产生密码数 startNumber = startNumber + 1000; //记录下一轮密码起始位置 } } }
下面试用于尝试破解的函数
public void Cracking() //暴力破解密码 { wifi = new Wifi(SSID, null, authen, encry); while (true) { if(!avaliable) //数组已满 { for (int i = 0; i < 1000; i++) { wifi.pswd = allCombo[i]; Boolean result=wifi.ConnectToSSID(); crackingNumber++; if (result==true) //有网络连接 { password = allCombo[i]; return; } } avaliable = true; } } }
其实这个暴力破解效率低的最大问题就是在连接指定wifi的函数中有一个
Thread.Sleep(2000);
这也是没有办法,应为这个方法连接wifi本身需要时间。如果你不等待,那么即使连接上了wifi函数也会返回连接失败。目前我还没有想到更好的解决办法!至于我自己写的暴力破解过程是好是坏,等我参考了其他人的做法后在做评价。不过有一点,我这里面密码组合是动态产生的,应该也可以提前产生好在读取。
源代码下载:http://download.csdn.net/detail/faaronzheng/7769719
GitHub地址:https://github.com/faaronzheng/Wifi-Reconnection
发现bug或有好的改进请告诉我,大家共同学习。
1 0
- Wifi断网自动重连(二)
- Wifi断网自动重连
- python 自动重连wifi windows
- Python 实现断网自动重连
- Python 实现断网自动重连
- 树莓派WiFi重连
- 【转载】Python实现树莓派WiFi断线自动重连
- 关于修改当前WiFi的账号和密码之后自动重连问题(不用在输入密码),重连时间过长问题的解决办法
- Python--校园网开机登陆+断网检测+自动重连
- 用 SSHFS 绑定远端目录(断网自动重连)
- androidM wifi重连分析
- (六)、ZooKeeper自动重连
- 自动重连
- asmack自动重连
- mysql 自动重连
- 数据库自动重连
- TCP自动重连
- Android 如何修改wifi连接失败后自动重连次数?
- cf459E Pashmak and Graph
- 在cocos2d-x-3.0alpha1安卓环境下cocostudio/CocoStudio.h: No such file or directory
- REXX 清晰明了的程序结构模版
- poj2482
- LeetCode | Insertion Sort List(插入法排序链表)
- Wifi断网自动重连(二)
- 排查那些长期占用锁的sql(测试)
- java_file之查询file类查后缀名跟删除
- C++模拟Event和Delegate
- Android利用布局来制作一个简易计算器
- C++ 宏 为什么建议 do while (0) 的写法
- Git学习笔记
- SAP中权限设置于管理【小基础】
- 1.1--暴力破解法