Android扫描中文SSID的隐藏热点

一、Android支持的中文编码

1.UTF-8

 

2.Gbk

 

二、Android系统隐藏热点的扫描

1.HIDDEN字段:注意,改字段决定是否加密

2.隐藏热点扫描,一般先进行save动作

注意:热点名称相同,但加密方式不同的网络;系统认为是两个热点

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一般来说明明无线网络存在但是我们却无法顺利搜索到这种情况都是由于对方隐藏SSID广播信息的缘故。正如这位网友所说发现其他人可以通过无线网络连接外网,但是自己用XP系统自带的无线信号搜索工具却发现不了这个无线网络。因此我们就可以将网友遇到的问题转换为如何连接隐藏SSID信息广播的无线网络。下面笔者来谈谈自己的看法并且从实际出发为各位IT168读者举一个连接和扫描隐藏SSID信息无线网络的实际例子。   第一步:首先我们进入到无线路由器中,进入到无线网络设置界面,在这里我们取消SSID的广播功能,即将broadcast后的对勾去掉。这里我们的无线网络SSID信息为softer。保存设置后退出。(如图1) 第二步:隐藏SSID信息的无线网络我们通过XP系统自带的无线信号扫描工具是找不到的。(如图2) 第三步:这时我们可以通过专业的无线网络信号与无线网络扫描工具来针对当前环境进行扫描,我们会看到扫描到的各种无线网络都罗列在主窗口列表中。笔者使用的是名为wirelessmon专业版的工具。在扫描到的无线网络中我们可以看到只有网络信息而没有SSID名称的无线信号,同时该无线信号使用的波段,是否加密,RSSI信号强度以及支持的速度,MAC地址等信息全都显示出来。这个无线网络就是我们扫描到的隐藏SSID信息的网络,由于SSID信息是隐藏的,所以通过专业的无线信号扫描工具我们是看不到SSID名称的,只能够看到该无线路由器的MAC地址信息。(如图3) 第四步:接下来我们记录扫描到的隐藏SSID信息网络的基本参数,包括使用的频段,MAC地址信息等,然后通过专门的无线数据包监控及扫描工具来完成二次扫描工作。笔者使用的是commview for wifi这个软件,启动该软件后直接点scanner对当前环境无线信号进行扫描。(如图4) 第五步:由于无线频道涉及数量比较多,所以我们没有必要从1开始依次扫描,之前已经记录了隐藏SSID信息的无线网络所使用的频段为3,所以我们直接在commview for wifi的scanner扫描窗口中点options标签,然后通过下面的频道选择选项进行筛选,例如笔者只勾选频段3。(如图5) 第六步:接下来我们返回到scanning标签,在这里点scan按钮即可,之后我们的commview for wifi将针对频段3的无线信号进行扫描。等待一段时间后我们就能够看到扫描出来的无线路由器以及正与他通讯的无线网卡的MAC地址后几位了,同时隐藏SSID信息的无线网络的真实SSID也被我们顺利获取,SSID名称softer被顺利显示出来。(如图6) 第七步:拥有了SSID信息后我们就可以使用XP系统自带的无线网络连接工具或者其他第三方无线工具来访问该无线网络了。当然由于无线监控软件commview for wifi以及wirelessmon专业版会占据无线网卡的控制权,所以最好在破解完毕后执行一下无线网卡的禁用和启用工作,这样才能够顺利释放无线网卡的控制权。(如图7) 第八步:获取了SSID信息后如果目的无线网络没有开启任何诸如WEP,WPA等加密手段的话,我们就可以顺利的连接到该网络。如果该网络有加密的话我们还需要进一步破解,不过这部分内容已经不是本文探讨的话题。(如图8) 最后笔者需要额外补充一点,那就是通过本文介绍的方法我们可以获取到隐藏SSID广播的无线网络真实SSID信息,不过破解的前提是该无线网络有客户端在连接并传输数据,如果该无线网络没有任何客户端连接的话我们也无法顺利破解出。笔者将SSID信息进行更改,设置为it168,同样取消SSID广播。(如图9) 之后再按照本文介绍的方法破解时会发现commview for wifi只能扫描到无线路由器的名称以及MAC地址,而对于SSID一项却无法顺利找出。这就是因为该网络当时没有无线客户端进行连接并传输数据造成的。(如图10)
Android 手机可以使用 `WifiManager` 类来进行扫描周边的 WiFi 热点。用户可以通过调用 `startScan()` 方法来触发扫描操作。下面是一个简单的示例代码,展示了如何使用 Android 扫描周边的 WiFi 热点: ```java // 获取 WifiManager 实例 WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); // 判断 WiFi 是否已经开启,如果未开启,则先开启 WiFi if (!wifiManager.isWifiEnabled()) { wifiManager.setWifiEnabled(true); } // 开始扫描 WiFi 热点 wifiManager.startScan(); // 获取扫描结果 List<ScanResult> scanResults = wifiManager.getScanResults(); // 遍历扫描结果,取得周围的 WiFi 信息 for (ScanResult scanResult : scanResults) { String ssid = scanResult.SSID; // WiFi 名称 String bssid = scanResult.BSSID; // WiFi 地址 int level = scanResult.level; // WiFi 信号强度 // 其他相关字段,如加密类型等,可以通过 ScanResult 类提供的方法获取 // 进行你想要的处理,比如打印或者保存信息 Log.d("ScanResult", "SSID: " + ssid + ", BSSID: " + bssid + ", Level: " + level); } ``` 上述代码中,我们首先获取了 `WifiManager` 实例,然后检查 WiFi 是否开启。如果没有开启,则调用 `setWifiEnabled(true)` 方法来开启。接下来,我们调用 `startScan()` 方法来触发扫描。最后,通过调用 `getScanResults()` 方法来获取扫描结果,然后遍历结果进行处理。 需要注意的是,为了使用 WiFi 功能,必须在 AndroidManifest.xml 文件中添加以下权限: ```xml <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> ``` 另外,还需要在 Android 6.0 及以上的版本中请求运行时权限来访问位置信息: ```java // 检查是否获取了位置权限 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // 请求位置权限 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1); } ``` 以上是一个简单的 Android 扫描周边 WiFi 热点的方法。根据你的需求,你可以进一步处理扫描结果,比如筛选特定的 WiFi 热点或者显示在用户界面上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值