- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大家好,我需要在装有 iOS 12 和 SWIFT 的 iPhone 上获取 wifi 网络的 BSSID。我测试了这样的东西
func getWiFiSsid() -> String? {
if let interfaces = CNCopySupportedInterfaces() as NSArray? {
for interface in interfaces {
if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? {
ssid = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String
}
}
}
return ssid}
我启用了访问 WiFi 信息功能,但仍然得到 NIL
谢谢你的帮助
2018 年 11 月 26 日更新
这是我的 ViewController.swift
import UIKit
import SystemConfiguration.CaptiveNetwork
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
func getSSID() -> String? {
guard let interface = (CNCopySupportedInterfaces() as? [String])?.first,
let unsafeInterfaceData = CNCopyCurrentNetworkInfo(interface as CFString) as? [String: Any],
let ssid = unsafeInterfaceData["SSID"] as? String else{
return nil
}
return ssid
}
// Return IP address of WiFi interface (en0) as a String, or `nil`
func getWiFiAddress() -> String? {
var address : String?
// Get list of all interfaces on the local machine:
var ifaddr : UnsafeMutablePointer<ifaddrs>?
guard getifaddrs(&ifaddr) == 0 else { return nil }
guard let firstAddr = ifaddr else { return nil }
// For each interface ...
for ifptr in sequence(first: firstAddr, next: { $0.pointee.ifa_next }) {
let interface = ifptr.pointee
// Check for IPv4 or IPv6 interface:
let addrFamily = interface.ifa_addr.pointee.sa_family
if addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {
// Check interface name:
let name = String(cString: interface.ifa_name)
if name == "en0" {
// Convert interface address to a human readable string:
var hostname = [CChar](repeating: 0, count: Int(NI_MAXHOST))
getnameinfo(interface.ifa_addr, socklen_t(interface.ifa_addr.pointee.sa_len),
&hostname, socklen_t(hostname.count),
nil, socklen_t(0), NI_NUMERICHOST)
address = String(cString: hostname)
}
}
}
freeifaddrs(ifaddr)
return address
}
func getWiFiSsid() -> String? {
var ssid: String?
if let interfaces = CNCopySupportedInterfaces() as NSArray? {
for interface in interfaces {
if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? {
ssid = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String
}
}
}
return ssid
}
func getSSIDtwo() -> String? {
let interfaces = CNCopySupportedInterfaces()
if interfaces == nil {
//print("Not interfaces")
return nil
}
let interfacesArray = interfaces as! [String]
if interfacesArray.count <= 0 {
return nil
}
let interfaceName = interfacesArray[0] as String
let unsafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName as CFString)
if unsafeInterfaceData == nil {
return nil
}
let interfaceData = unsafeInterfaceData as! Dictionary <String,AnyObject>
return interfaceData["SSID"] as? String
}
@IBAction func onButtonClick(_ sender: Any) {
let one = getWiFiSsid();
let two = getSSIDtwo();
let three = getSSID();
print(one);
print(two);
print(three);
}}
最佳答案
这是我在打开 Access WiFi 时使用的代码。您会看到我将数组中的第一项获取到并从中获取 SSID。
func getSSID() -> String? {
let interfaces = CNCopySupportedInterfaces()
if interfaces == nil {
//print("Not interfaces")
return nil
}
let interfacesArray = interfaces as! [String]
if interfacesArray.count <= 0 {
return nil
}
let interfaceName = interfacesArray[0] as String
let unsafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName as CFString)
if unsafeInterfaceData == nil {
return nil
}
let interfaceData = unsafeInterfaceData as! Dictionary <String,AnyObject>
return interfaceData["SSID"] as? String
}
当我使用您的更小更简洁的代码时,它也适用于我。请注意,我确实对您的代码进行了两处更改:
func getWiFiSsid() -> String? {
if let interfaces = CNCopySupportedInterfaces() as NSArray? {
for interface in interfaces {
if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? {
// Changed line below from the "ssid =" to return the value directly.
return interfaceInfo[kCNNetworkInfoKeySSID as String] as? String
}
}
}
// Changed this to return nil
return nil
}
关于ios - 如何获取 iOS BSSID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53482261/
如何在不连接路由器的情况下获取路由器的 BSSID 以区分重复的 SSID? 路由器是否广播 BSSID? 最佳答案 应用命令 netsh wlan show all Windows 中的 将显示所有
我想知道如何使用wireshark捕获特定无线网络的数据包。 我已经能够在监控模式下捕获不同网络的所有数据包,但对于特定分析,我需要在捕获过程中丢弃与我的网络无关的所有数据包。 我知道存在显示过滤器可
我运行以下命令来检索 BSSID 列表: netsh wlan show networks mode=Bssid | findstr "SSID" 我得到了这个: SSID 1 : John
我使用了下面的代码,但它运行良好,但几个月后我得到的结果是 any 而不是 BSSID 值。这是我的代码。请指导我任何其他替代方式。 @SuppressLint("LongLogTag") publ
大家好,我需要在装有 iOS 12 和 SWIFT 的 iPhone 上获取 wifi 网络的 BSSID。我测试了这样的东西 func getWiFiSsid() -> String? { if l
如何从 Android/iOS 应用程序检索附近 WiFi 网络(不是本地设备)的 BSSID/mac 地址和强度?此应用程序是使用 Titanium 构建的。 Titanium.Platform 为
当我为 android 设备配置并充当热点(wifi 接入点)时,我如何获取当前 Activity 热点的其他设备看到的当前(可能为热点的每次激活生成和唯一)BSSID。不是 SSID,而是 BSSI
是否可以检测同一网络中具有相同 SSID 的 BSSID 变化?因此,当您的手机切换到另一个接入点时,它会触发一个广播接收器。 最佳答案 是的,这是可能的。 创建一个 BroadcastReceive
这个问题在这里已经有了答案: WiFiManager - stumbler (1 个回答) 关闭 7 年前。 我的 iPhone 通过 WiFi 连接到接入点。现在有人知道我如何使用 Objecti
我不明白 MAC 地址和 BSSID 的区别。 我知道 MAC 是本地网络的标识符,但是当我在 wiki 上搜索 BSSID 时,我得到了这个: In an infrastructure BSS, t
我正在创建一个 Android 应用程序,它允许您连接到具有特定 BSSID 的 WiFi。我已经实现了扫描所有 wifi 并根据 WiFi 网络安全类型进行 WiFi 配置的部分。我还使用特定的 B
攻击开始时在终端中写入此命令,但当我在脚本中写入相同的命令时,就会出错。 无效的 BSSID(AP MAC 地址)。 “aireplay-ng --help”寻求帮助。 def deauth(mac
当我使用 getConfiguredNetworks() 获取 BSSID 值时,它没有给我任何信息。我得到了除 BSSID 之外的所有其他值。谁能告诉我为什么会这样?是的,我收到的网络有各自的 BS
我需要获取我的iphone 应用程序的wifi 的bssid 以确定它是否已连接。我该怎么做? 需要一些关于如何操作的指导。 最佳答案 下面的答案是从这个 answer 复制的。 在 iOS 4.1+
如何使用 C# 获取我的系统连接到的无线接入点的 BSSID/MAC(媒体访问控制)地址? 请注意,我对 WAP 的 BSSID 很感兴趣。这与 WAP 网络部分的 MAC 地址不同。 最佳答案 以下
如何在 Android 和 iOS 手机上的 Unity 游戏应用程序中获取 BSSID(我正在连接的 wifi 路由器的 MAC 地址,而不是我的设备 MAC 地址)? 我试过这些方法,但都没有用。
我得到了这段代码,我想扫描网络,然后将其全部写入 ListView 。但问题是 ssid 和 bssid 不显示。显示其他所有内容,但不显示 ssid。 还有什么是每秒更新 ListView 以便您可
假设有人在咖啡店里无线连接到互联网,并向 johnsveryownserver.com 发送 HTTP 请求。服务器端,有什么方法可以确定它们所连接的无线接入点的 MAC 地址吗? (请注意,我对他们
我目前正在使用 kali Linux 2.0 开发 bash 脚本项目。我的脚本基本上扫描网络,当它找到一个网络时,它应该以某种方式将其 ESSID、BSSID 和 channel 存储在一起。然后它
使用 Getting essid via ioctl in ruby作为模板,我想获取 BSSID 而不是 ESSID。但是,不是 C 开发人员,有一些事情我不明白。 到目前为止,我所拥有的不有效:(
我是一名优秀的程序员,十分优秀!