美文网首页编程开发
iOS Wifi获取,填充密码,破解Wifi(

iOS Wifi获取,填充密码,破解Wifi(

作者: cyhai | 来源:发表于2019-08-16 16:11 被阅读0次

    <NetworkExtension/NetworkExtension.h>,这个框架在iOS9之前是不开放的,而之后,在这里我惊奇的发现了这个

    image.png
    想想几年前为了使用这个东西是要想苹果大爷申请的。苹果大爷从不放低姿态,申请也是一波三折。NetworkExtension不仅涉及了WiFi这项功能,还包含了VPN在内,当然国内搞VPN是不太健康的行为。
    然而很坑爹的是,我再次去使用这个框架去获取WiFi的时候,用到了NEHotspotHelper,这时候发现苹果大爷仍然要求使用NEHotspotHelper还得向他提出申请https://developer.apple.com/contact/request/network-extension/
    我们跳过申请,看看框架的使用。
    引入框架<NetworkExtension/NetworkExtension.h>
    #import <NetworkExtension/NetworkExtension.h>
    
    
    使用NEHotspotHelper注册
    //returnType=yes注册成功,否则反之
    BOOL returnType = [NEHotspotHelper registerWithOptions:options queue:queue handler:^(NEHotspotHelperCommand * _Nonnull cmd) {
    
        }];
    

    但是在注册前,我们其实还需要添加一些设置。我们进入registerWithOptions方法,查看说明可以看到


    image.png

    没错,我们要开启一个后台模式,而且还得添加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>
    

    然后再回到代码中来。

    NSMutableDictionary* options = [[NSMutableDictionary alloc] init];
        [options setObject:@"🗝" forKey:kNEHotspotHelperOptionDisplayName];//在wifi列表上显示的标记,如万能钥匙显示在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);
             }
            
        }];
    
    

    如果申请NEHotspotHelper使用权通过了,那么这里注册就会成功,至于commandType,可以自己到枚举里面了解。在这里你是注册成功了,但你还是无法获取wifi列表,因为你还需要前往手机系统wifi列表,每当系统wifi列表刷新的时候,都会调用这里的代码块。

    获取当前wifi信息

    注册成功后,使用这个方法,可以获取当前连接的wifi信息

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

    不管是当前wifi还是获取当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]];//填充多个wifi密码
      [response setNetwork:network];
      [response deliver];
    
    

    这里跑过后,再去系统的wifi列表中,点击带有🗝的wifi点击,就会自动连接无需手动填入密码。
    重新连接新wifi,会有一个刷新,这时候你可以判断是否连接OK

    //=2连接成
            if (cmd.commandType == 2) {...}
    
    
    结束

    相关文章

      网友评论

        本文标题:iOS Wifi获取,填充密码,破解Wifi(

        本文链接:https://www.haomeiwen.com/subject/eofqsctx.html