ios能获取wifi信息

优质回答与知识(10)

在ios扫描公共区域内wifi信息中,写了实现wifi扫描的一种方法,但是那种方法扫描出来的wifi信息不全,下面是扫描全部wifi信息的实现方法:#import<CoreFoundation/CoreFoundation.h>#import<Foundation/NSTimer.h>#import<Foundation/Foundation.h>#include<dlfcn.h>#include<ifaddrs.h>#include<arpa/inet.h>@interfaceMSNetworksManager:NSObject{NSMutableDictionary*networks;NSArray*types;intautoScanInterval;boolscanning;boolautoScanning;void*libHandle;void*airportHandle;int(*open)(void*);int(*bind)(void*,NSString*);int(*close)(void*);int(*associate)(void*,NSDictionary*,NSString*);int(*scan)(void*,NSArray**,void*);//int(*open)(void*);//int(*bind)(void*,NSString*);//int(*close)(void*);//int(*scan)(void*,NSArray**,void*);//int(*associate)(void*,NSDictionary*,NSString*);int(*getpower)(void*,char*);int(*setpower)(void*,char*);}+(MSNetworksManager*)sharedNetworksManager;+(NSNumber*)numberFromBSSID:(NSString*)bssid;-(NSMutableDictionary*)networks;-(NSDictionary*)networks:(int)type;-(NSDictionary*)network:(NSString*)aNetwork;-(id)init;-(void)dealloc;-(int)numberOfNetworks;-(int)numberOfNetworks:(int)type;-(int)autoScanInterval;-(void)scan;-(void)removeNetwork:(NSString*)aNetwork;-(void)removeAllNetworks;-(void)removeAllNetworks:(int)type;-(void)autoScan:(bool)scan;-(bool)autoScan;-(void)scanSelector:(id)param;-(void)setAutoScanInterval:(int)scanInterval;-(int)associateNetwork:(NSDictionary*)bss:(NSString*)password;-(int)getPower:(char*)power;-(int)setPower:(char*)power;-(NSString*)localIPAddress;@end.m文件:#import"MSNetworksManager.h"staticMSNetworksManager*NetworksManager;@implementationMSNetworksManager+(MSNetworksManager*)sharedNetworksManager{if(!NetworksManager)NetworksManager=[[MSNetworksManageralloc]init];returnNetworksManager;}+(NSNumber*)numberFromBSSID:(NSString*)bssid{intx=0;uint64_tlongmac;intMAC_LEN=6;shortunsignedint*bs_in=malloc(sizeof(shortunsignedint)*MAC_LEN);if(sscanf([bssidcStringUsingEncoding:[NSStringdefaultCStringEncoding]],"%hX:%hX:%hX:%hX:%hX:%hX",&bs_in[0],&bs_in[1],&bs_in[2],&bs_in[3],&bs_in[4],&bs_in[5])==MAC_LEN){for(x=0;x<MAC_LEN;x++)longmac|=(uint64_t)bs_in[x]<<((MAC_LEN–x–1)*8);}else{NSLog(@"WARN:invalidmacaddress!%@",self);}free(bs_in);return[NSNumbernumberWithUnsignedLongLong:longmac];}-(NSDictionary*)networks{//TODO:Implementjoiningofnetworktypesreturnnetworks;}-(NSDictionary*)networks:(int)type{//TODO:Implementselectingofnetworktypesif(type!=0)NSLog(@"WARN:Non80211networksarenotsupported.%@",self);returnnetworks;}-(NSDictionary*)network:(NSString*)aNetwork{return[networksobjectForKey:aNetwork];}-(id)init{self=[superinit];NetworksManager=self;networks=[[NSMutableDictionaryalloc]init];types=[NSArrayarrayWithObjects:@"80211",@"Bluetooth",@"GSM",nil];[typesretain];autoScanInterval=5;//seconds//ForiPhone2.0//libHandle=dlopen("/System/Library/PrivateFrameworks/Apple80211.framework/Apple80211",RTLD_LAZY);//ForiPhone3.0libHandle=dlopen("/System/Library/SystemConfiguration/WiFiManager.bundle/WiFiManager",RTLD_LAZY);open=dlsym(libHandle,"Apple80211Open");bind=dlsym(libHandle,"Apple80211BindToInterface");close=dlsym(libHandle,"Apple80211Close");scan=dlsym(libHandle,"Apple80211Scan");associate=dlsym(libHandle,"Apple80211Associate");getpower=dlsym(libHandle,"Apple80211GetPower");setpower=dlsym(libHandle,"Apple80211SetPower");open(&airportHandle);bind(airportHandle,@"en0");returnself;}-(void)dealloc{close(&airportHandle);[superdealloc];}-(int)numberOfNetworks{return[networkscount];}-(int)numberOfNetworks:(int)type{//TODO:Implementselectingofnetworktypesif(type!=0)NSLog(@"WARN:Non80211networksarenotsupported.%@",self);return[networkscount];}-(int)autoScanInterval{returnautoScanInterval;}-(void)scan{//NSLog(@"Scanning…");scanning=true;[[NSNotificationCenterdefaultCenter]postNotificationName:@"startedScanning"object:self];NSArray*scan_networks;NSMutableDictionary*parameters=[[NSMutableDictionaryalloc]init];[parameterssetObject:@"YES"forKey:@"SCAN_MERGE"];scan(airportHandle,&scan_networks,parameters);inti;//boolchanged;[networksremoveAllObjects];for(i=0;i<[scan_networkscount];i++){[networkssetObject:[[scan_networksobjectAtIndex:i]objectForKey:@"BSSID"]forKey:[[scan_networksobjectAtIndex:i]objectForKey:@"RSSI"]];}NSLog(@"ScanFinished…");}-(void)removeNetwork:(NSString*)aNetwork{[networksremoveObjectForKey:aNetwork];}-(void)removeAllNetworks{[networksremoveAllObjects];}-(void)removeAllNetworks:(int)type{if(type!=0)NSLog(@"WARN:Non80211networksarenotsupported.%@",self);[networksremoveAllObjects];}-(void)autoScan:(bool)bScan{autoScanning=bScan;if(bScan){[selfscan];[NSTimerscheduledTimerWithTimeInterval:autoScanIntervaltarget:selfselector:@selector(scanSelector:)userInfo:nilrepeats:NO];}NSLog(@"WARN:Automaticscanningnotfullysupportedyet.%@",self);}-(bool)autoScan{returnautoScanning;}-(void)scanSelector:(id)param{if(autoScanning){[selfscan];[NSTimerscheduledTimerWithTimeInterval:autoScanIntervaltarget:selfselector:@selector(scanSelector:)userInfo:nilrepeats:NO];}}-(void)setAutoScanInterval:(int)scanInterval{autoScanInterval=scanInterval;}-(int)associateNetwork:(NSDictionary*)bss:(NSString*)password{if(bss!=nil){NSLog(@"associateNetwork");intret=associate(airportHandle,bss,password);returnret;}elsereturn-1;}-(int)getPower:(char*)power{returngetpower(airportHandle,power);}-(int)setPower:(char*)power{returnsetpower(airportHandle,power);}-(NSString*)localIPAddress{NSString*address=@"error";structifaddrs*interfaces=NULL;structifaddrs*temp_addr=NULL;intsuccess=0;//retrievethecurrentinterfaces–returns0onsuccesssuccess=getifaddrs(&interfaces);if(success==0){//Loopthroughlinkedlistofinterfacestemp_addr=interfaces;while(temp_addr!=NULL){if(temp_addr->ifa_addr->sa_family==AF_INET){//Checkifinterfaceisen0whichisthewificonnectionontheiPhoneif([[NSStringstringWithUTF8String:temp_addr->ifa_name]isEqualToString:@"en0"]){//GetNSStringfromCStringaddress=[NSStringstringWithUTF8String:inet_ntoa(((structsockaddr_in*)temp_addr->ifa_addr)->sin_addr)];}}temp_addr=temp_addr->ifa_next;}}//Freememoryfreeifaddrs(interfaces);returnaddress;}@end添加到项目中即可。本回答被提问者和网友采纳

2020-08-29 22:37:59

一, 手机能搜到 wifi 但是连不是 wifi 。解决方法:1,如果同环境下,别人能连上,你连不上。请检查手机- 设置-WLAN 是否处于开启状态。检查 wifi 密码是否正确。然后把WLAN 关闭,再打开。。若仍连不上,就重启手机。在 wifi 密码正确并且重启 WLAN和手机都无效的情况下,应该是手机欠修理了。2,如果同环境下,别人的手机也连不上 wifi .那就是无线路由器的设置问题。某些质量差的无线路由器在正常使用的过程中,就算没有人为的改动,也可能出现偶尔的罢工,连不上 wifi 。只要重新设置路由器。或把路由器恢复出厂后再重新设置基本都能解决问题。具体设置方法后面会讲到。 二,手机能连上 wifi ,但是显示无法连接服务器。无法上网。 解决方法。一个正常使用的无线路由器只要处于开机状态,那手机就可以连上 wifi 信号,但这不等于就能上网。因为无线路由器和互联网之间还有一段连接。先用电脑通过无线路由器看能否上网,若能上网,请检查路由器上的无线设置。若不能上网,请检查路由器与猫的连接是否正确,看对应的提示灯是否亮起。若没问题,就把猫出来的网线直接连电脑上。若电脑能上网,就是路由器损坏,或设置错误。只要重新设置即可。若不能上网,请与宽带运营商联系。 当然,也有例外,比如如果是只是某一个软件无法上网, 那可能是这个软件的服务商网络故障,或者手机的设置里没给它使用网络的权限 。或者软件需要更新版本。三,手机能用 wifi 上网,但网速慢。 问题点,1 ,在同环境下,别人手机上网快,你的慢。就要考虑从优化手机开始。在手机的设置-应用程序管理,查看手机已安装的所有软件。把自己不用的都卸载。。游戏类和视频类的较占用资源,影响手机速度。另外,手机助手类的软件本来是为了优化手机而设计的,但实际却是最浪费时间和资源的软件,优先卸载。另外,当手机内存不足时,加载的速度就会变慢,甚至无法显示网上的图片。这时可以进入手机的文件管理中,查看手机内存上的文件夹。先备份重要的各人资料。一般用户手机上较重要的数据基本就是手机通讯录和保存的照片。平时存电话号码时首选存储位置最好是手机的SIM卡上,而不是手机上。这样就算手机坏了,大量的电话号码也不会丢。 个人拍的照片和视频一般保存在内存卡上的 DCIM 文件夹或 Camera 文件夹内。在微信里保存的照片 在 tencent 文件夹下的 MicroMsg 文件夹下的 WeiXin 文件夹内。下载的文件在 Download  文件夹内。 这些地方的文件保留,其他的都可以删除了。这样就可以迅速释放手机内存空间。因为所有手机软件都会不断的产生垃圾文件。只要把没用的软件的垃圾清理了。那手机上网自然更流畅。 关于如何简单快速的清理手机内存空间,可以查看我的另一个百度经验。提示手机内存不足怎么办,简单一招清理!3提示手机内存不足怎么办,简单一招清理!2,对于手机内不能卸载的软件,有些是默认设置的 wifi 下自动备份或自动升级更新。都会占用 wifi 下的网速,可以在该软件的设置里,关掉不必要的功能。还有一种情况,某些软件,比如视频类的,看的时候发现画面总卡,这一般都是那个软件所属的公司的服务器带宽紧张造成的用户观看不流畅。可以在不看手机的时候,把自己喜欢的节目提前缓存下来,这样再看时就不受网速影响了。3。如果是 wifi 本身速度就慢,那考虑是否有蹭网的,修改密码,或直接用电脑对无线路由器和猫分别测网速,看能否达到运营商所提供的带宽。四,手机搜索不到 wifi 信号。 1,同环境下,别人能搜索到,你搜索不到。可以通过在“设置里重启 WLAN 或重启手机。这两个方法若无效,就是手机的事。也可以换个 wifi 环境测试。2。同环境下的手机都搜索不到 wifi 。请检查无线路由器。某些型号的无线路由器在外部会有一个 wifi 信号的开关,若不小心碰到,可能会关掉 wifi 。重新按一下那个开关,等待数秒后用手机重新搜索。若还是搜索不到 wifi 。请用电脑登陆无线路由器查看无线网络是否处于开启状态。若都没问题,却仍搜索不到 wifi 信号。那个人用户能对无线路由器的最终极修理方法就是将路由器恢复出厂设置。然后重新设置。在没有硬伤的情况下,这个方法几乎能解决路由器的所有问题。当然,这样做之前先提前用本子把宽带用户名和密码正确记录好。五,电脑无法登陆路由器进行设置。路由器是需要用电脑浏览器打开设置页面进行操作的。过程和打开一个普通网页一样。只要在浏览器的地址栏里正确输入路由器背面标签上的网址就能打开。有时显示网页无法打开。请检查自己输入的是否与路由器背面标明的一样。并且确定电脑不是连在了路由器的第一个 WAN 接口。而应该插在其他的 LAN 接口。以及路由器是否通电开启。还可以通过查看电脑屏幕右下角的网络连接图标是否正常。若是红X或圈圈。那就是电脑与路由器之间根本没连上。更换个网线重插。若都不行。最后只能把路由器恢复出厂设置。六,  最后讲一下 家庭无线路由器的设置方法及经验。 学会了自己就方便了。所谓难者不会,会者不难。因为每个型号的路由器的设置页面都会有所不同。所以我只把基本原理简单一说,那不管遇到什么样的家用无线路由器都能很容易弄明白了。 无线路由器的作用就是将一根网线上的信号分享给其他多台有线和无线设备使用。整个过程就基本分三步。一,进入路由器设置。二,填写宽带用户名和密码。三,开启 wifi 信号。 现在的很多新式无线路由器已经在设置里直接分成这三个版块了。一,先把能上网的那根网线插到路由器上的第一个 WAN 插口上。然后其他 LAN 插口出来的线连电脑上。打开电脑的浏览器。用路由器背面标签的地址,用户名密码来登陆路由器。没有密码的,第一次登陆时自己设置一个就行。忘了密码的,可以把路由器恢复出厂设置。自己再设置一个新密码。也有的新式路由器根本不用密码。二,填写宽带运营商提供的上网账号和密码。新式路由器可以自动检测网络环境后直接填写。老式路由器在联网类型下选择 PPPOE拨号。然后再填写。  若是小区提供的宽带,可以选择 自动获取(DHCP)三,开启无线功能。(wifi) 。可以选择加密或不加密。然后点保存设置。好的路由器是设置完就可以直接能正常上使用了。而某些旧型号的无线路由器设置完以后,虽然能用手机连上wifi。但却无法上网。这时只要把无线路由器的电源断开,再重开机。之前的设置就生效了。就能正常上网了。本回答被网友采纳

2020-08-29 22:05:46

We123456

2020-08-30 17:06:38

用wifi万能钥匙,直接连接,

2020-08-30 18:22:42

这个貌似不能的。。

2020-08-29 20:24:35

用交换机前置行不行

2020-08-29 22:16:32

Iso是查看不了密码的,不过你可以借别人的小米或者红米手机,小米红米可以把无线网密码传唤成二维码用微信一扫描就出来了

2020-08-31 11:45:58

手机怎么查看已经记住的WiFi密码: 方法一:分享密码二维码查看法(此方法只针对MIUI用户) 这个方法很简单.只要你是小米或者是MIUI用户都可以。 1、首先你进入手机的设置界面,打开你的WLAN设置; 2、再点已经连上的WIFI名,名称后面的圆圈进入到下面一个网络详情界面; 3、就能看到所连接的WIFI的信息了,下面有一个分享密码给朋友的功能,点击进入; 4、然后手机就自动生成一个二维码,如果您的别的朋友的手机也是小米或者是MIUI.直接可以拿照相机对着二维码,会提示发现WLAN二维码,点击查看详情,就能看到WIFI密码了。如果没有别的小米手机或MIUI,只是想自己查看密码,就先把刚才的二维码用手机截图工具截下来,进入微信里面的扫一扫工具,点击右上方的三个小点,选择从相册选取二维码,选择你刚才截取的二维码图片,就可以查看到WIFI密码了。 方法二:系统直接查看 1、手机必须取得root权限,没有root的朋友先用root大师一键root。然后让RE管理器或者es文件浏览器也取得最高权限。这里以RE为例,点击下载RE管理器.apk。 2、用RE管理器或es文件浏览器进入data/misc/wifi。 3、找到wpa_supplicant.conf文件,用文本查看器打开,所有记住的Wi-Fi密码都显示在这里了。显示代码的意思: ssid=后面跟着的就是你保存过的Wi-Fi网络名称; psk=后面跟着的就是此Wi-Fi网络的密码; key_mgmt=后面跟着的是这个Wi-Fi网络的加密类型。 方法三:软件一步搞定 1、使用下面这个软件(wifi连接管理器(WiFi Connection Manager) 1.5.2.4 安卓免费版),WiFi连接管理器,点击下载Wifi连接管理器; 2、打开之后往下拉,你就能发现你以前记住过的Wi-Fi选项了。 3、这时我们点击想要查看的WiFi名称,就能发现有“显示密码”这个选项,但是需要root。没有root权限先用root大师一键root,root之后就能查看了。

2020-08-31 10:08:21

你好,打开手机wlan,先扫描一下周围的热点数量,一般是数量越多能破解的相对就越多(个人经验,不一定对,哈哈), 打开我们需要用到的破解密码的东东,wifi万能钥匙。需要注意的是wifi万能钥匙的工作原理是利用庞大的共享数据库来连接wifi,一般安装是如果你选择了共享wifi密码,你能连上的热点密码就都被共享了。 手机的数据连接一定要打开,要不然没法下载数据。点一键获取,后面有钥匙图标的就是共享的热点,如果有连不上的就说明人家可能已经改了密码了,那就换个试试,我这个是可以连上的。 连上后就可以退出了,有请下一位登场:幻影wifi,它是一款功能强大的wifi软件,可以在手机上破解wifi密码(真正的破解,就是利用字典猜解),不过我还没成功过,汗... 点密码查看,需要注意的是手机一定要获取root权限,使用幻影读密码的时候一定要允许root权限。 现在看到的就是列表,可以保存为txt文件,我们找到刚才的那个路由,后面显示的就是它的密码了 希望能帮助到你,谢谢!

2020-08-31 11:25:31

首先要保证路由器职称Telnet服务开始——运行——输入”Telnet +路由器的ip地址“回车如果返回Password:证明路由器支持telnet功能,输入密码回车就进入配置了如果返回下图所示:证明路由器不支持telnet配置进入配置后,输入命令获取配置,具体命令按照路由器的品牌上官网查询即可

2020-08-29 19:57:44

相关问题