iOS Wifi獲取,填充密碼,破解Wifi(<NetworkExtension/NetworkExtension.h>)

<NetworkExtension/NetworkExtension.h>,這個(gè)框架在iOS9之前是不開(kāi)放的,而之后,在這里我驚奇的發(fā)現(xiàn)了這個(gè)

image.png

想想幾年前為了使用這個(gè)東西是要想蘋(píng)果大爺申請(qǐng)的。蘋(píng)果大爺從不放低姿態(tài),申請(qǐng)也是一波三折。NetworkExtension不僅涉及了WiFi這項(xiàng)功能,還包含了VPN在內(nèi),當(dāng)然國(guó)內(nèi)搞VPN是不太健康的行為。
然而很坑爹的是,我再次去使用這個(gè)框架去獲取WiFi的時(shí)候,用到了NEHotspotHelper,這時(shí)候發(fā)現(xiàn)蘋(píng)果大爺仍然要求使用NEHotspotHelper還得向他提出申請(qǐng)https://developer.apple.com/contact/request/network-extension/
我們跳過(guò)申請(qǐng),看看框架的使用。

引入框架<NetworkExtension/NetworkExtension.h>
#import <NetworkExtension/NetworkExtension.h>

使用NEHotspotHelper注冊(cè)
//returnType=yes注冊(cè)成功,否則反之
BOOL returnType = [NEHotspotHelper registerWithOptions:options queue:queue handler:^(NEHotspotHelperCommand * _Nonnull cmd) {

    }];

但是在注冊(cè)前,我們其實(shí)還需要添加一些設(shè)置。我們進(jìn)入registerWithOptions方法,查看說(shuō)明可以看到


image.png

沒(méi)錯(cuò),我們要開(kāi)啟一個(gè)后臺(tái)模式,而且還得添加network-authentication


image.png

之后再到Info.plist ----open As----source code文件找到UIBackgroundModes
<key>UIBackgroundModes</key>
    <array>
        <string>fetch</string>
        <string>remote-notification</string>
        <string>network-authentication</string>
    </array>

然后再回到代碼中來(lái)。

NSMutableDictionary* options = [[NSMutableDictionary alloc] init];
    [options setObject:@"??" forKey:kNEHotspotHelperOptionDisplayName];//在wifi列表上顯示的標(biāo)記,如萬(wàn)能鑰匙顯示在wifi列表上的??一樣。
    dispatch_queue_t queue = dispatch_queue_create("myWiFi", DISPATCH_QUEUE_CONCURRENT);
    
  BOOL returnType = [NEHotspotHelper registerWithOptions:options queue:queue handler:^(NEHotspotHelperCommand * _Nonnull cmd) {
         if (cmd.commandType == kNEHotspotHelperCommandTypeEvaluate || cmd.commandType ==kNEHotspotHelperCommandTypeFilterScanList) {
             NSLog(@"%@",cmd.networkList);
         }
        
    }];

如果申請(qǐng)NEHotspotHelper使用權(quán)通過(guò)了,那么這里注冊(cè)就會(huì)成功,至于commandType,可以自己到枚舉里面了解。在這里你是注冊(cè)成功了,但你還是無(wú)法獲取wifi列表,因?yàn)槟氵€需要前往手機(jī)系統(tǒng)wifi列表,每當(dāng)系統(tǒng)wifi列表刷新的時(shí)候,都會(huì)調(diào)用這里的代碼塊。

獲取當(dāng)前wifi信息

注冊(cè)成功后,使用這個(gè)方法,可以獲取當(dāng)前連接的wifi信息

NSArray *array = [NEHotspotHelper supportedNetworkInterfaces];
    NEHotspotNetwork *connectedNetwork = [array lastObject];

不管是當(dāng)前wifi還是獲取當(dāng)wifi列表,你都可以獲取到wifi信息。其中包括了最重要的SSID,BSSID。

填充密碼

在代碼塊里,遍歷wifi列表,找到你要要填充的wifi,比如像下面的。

for (NEHotspotNetwork* network  in cmd.networkList) {   
    if(network.secure == YES&&[network.BSSID containsString:@"09:08:07:06"]){  
          [network setConfidence:kNEHotspotHelperConfidenceHigh];
          [network setPassword:@"12345678"];
      }
}

  NEHotspotHelperResponse * response = [cmd createResponse:kNEHotspotHelperResultSuccess];
 // [response setNetworkList:@[network]];//填充多個(gè)wifi密碼
  [response setNetwork:network];
  [response deliver];

這里跑過(guò)后,再去系統(tǒng)的wifi列表中,點(diǎn)擊帶有??的wifi點(diǎn)擊,就會(huì)自動(dòng)連接無(wú)需手動(dòng)填入密碼。
重新連接新wifi,會(huì)有一個(gè)刷新,這時(shí)候你可以判斷是否連接OK

//=2連接成
        if (cmd.commandType == 2) {...}

結(jié)束
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,689評(píng)論 1 32
  • 相遇,相吸,相愛(ài),相親,嫌隙,抱怨,生恨,相離,重逢,相信,相依,相愛(ài)。兜兜轉(zhuǎn)轉(zhuǎn)一圈,經(jīng)歷愛(ài)恨別離,命運(yùn)讓我們又重...
    若素乎閱讀 360評(píng)論 0 1
  • 請(qǐng)您閉上眼睛……想象一下,2057年,您已經(jīng)六、七十歲了,坐在空無(wú)一人的房間,臃腫老態(tài),沒(méi)錢(qián)沒(méi)權(quán),生活不能自理。您...
    途游星球閱讀 601評(píng)論 0 0
  • 參考http://jingyan.baidu.com/article/ff411625b9011212e48237...
    xiangchengboy閱讀 518評(píng)論 0 0

友情鏈接更多精彩內(nèi)容