====== Wireless-Analyse mit dem Apple iPhone/iPad und iOS 13 ====== Ob nun iOS 13 oder iPadOS, es gibt verschiedene Wege um weitere Informationen zum WLAN zu erhalten. Die einfachsten Möglichkeiten sind natürlich über **Einstellungen -> WLAN**, aber die Informationen gehen schwerlich über die IP-Adresse hinaus. In diesem Artikel wird dargestellt, wie das iPhone die Verbindung zu einem [[https://www.al-enterprise.com/en/products/wlan#Stellar80211axWi-Fi6|Alcatel-Lucent Enterprise Stellar Wireless Access Point]] sieht/analysiert. Dieser Artikel enthält Wissen das ich mir durch diesen tollen [[http://www.my80211.com/home/2019/10/5/ios-13-and-ipados-wi-fi-diagnostics.html|Blog Artikel]] angeeignet habe. ===== Einfache Analyse ===== Der erste Weg zu detaillierteren Informationen führt über **Einstellungen -> Datenschutz -> Analyse -> Analysedaten -> WiFiConnectionQuality-xxxx-xx-xx-xxxxxx.ips** In diesem Report sind auch Geo-Daten über das WLAN hinterlegt, wenn man diese weiterleitet sollte dies bekannt sein / berücksichtigt werden. Für diese Analyseart sind keine weiteren Erweiterungen/Profile o.ä. notwendig. ===== Erweiterte Analyse ===== Eine erweiterte Analyse ist über das Hinzufügen eines von Apple für diese Art der Analyse bereitgestellten Profils möglich. Dieses Profil kann über diese [[https://developer.apple.com/bug-reporting/profiles-and-logs/?name=WiFi&platform=ios|Apple-Webseite]] über die Angabe der eigenen Apple-ID und Akzeptanz der "Developer"-Lizenzbedingungen installiert werden. Durch dieses Profil werden neue Diagnosefunktionen unter **Einstellungen -> WLAN -> Diagnosemodus** und **Einstellungen -> WLAN -> (eigenes WLAN) -> Diagnostics** zugänglich. ==== Wireless Diagnostics ==== {{ :img_5106.png?direct&600 |}} === BSSID === * Gibt an mit welchem Access Point das iPhone derzeit verbunden ist === Channel === * Auf welchem Kanal der Access Point arbeitet und mit welcher Kanalbreite (z.B. 80 MHz) === Signal Strength === * Signalstärke (RSSI in dBm) mit farblicher Indikation und als Wort (z.B. Strong, Moderate, Weak) * Direkt darunter wird angegeben, wie stark die Kanalnutzung ist (Channel utilization) === Security === * Angabe des Zugangsverfahren zum Netzwerk z.B. "WPA3 Personal" === Captive === * Information ob das Netzwerk ein Captive Portal nutzt === Deployment === * Information ob das Wireless LAN mit mehreren Access Points arbeitet (Multi AP) oder einem einzelnen AP (Single AP) === Motion === * Stationary (das Gerät wurde z.B. auf dem Tisch abgelegt) * Moving (das Gerät wird in der Hand gehalten) * Walking (das Gerät bewegt sich, der Nutzer bewegt sich in Schrittgeschwindigkeit) * Running (das Gerät bewergt sich, der Nutzer läuft/joggt) ==== Connectivity ==== === Gateway === * Gibt an wie viel Zeit benötigt wird um das Gateway zu erreichen === Internet === * Gibt an wie viel Zeit benötigt wird um das Internet zu erreichen ==== Coexistence ==== === AWDL Mode === * AWDL steht für "Apple Wireless Direct Link" und wird für AirDrop verwendet * Active oder Inactive === Bluetooth === * Idle === Scan === * Active oder Inactive * Direkt darunter eine Information durch welche Applikation (z.B. locationd) und wann Datum/Uhrzeit der letzte Scan durchgeführt wurde ===== Manuell erzeugte Logs aus "Diagnosemodus" ===== {{ ::img_afeb6606546b-1.jpeg?direct&600 |}} Die durch die oben gezeigte Funktion erzeugten Logs befinden sich nach einem Sync mit iTunes (**Sync**, nicht Backup!) im Verzeichnis **/Users//Library/Logs/CrashReporter/MobileDevice//CoreCapture/**. Der Name des Verzeichnisses beinhaltet den Kommentar der eingetippt wird und zusätzlich den Zeitstempel der Aufzeichnung z.B. **[2019-10-19_13,57,04.553800]=bedroom**. Besonders spannend fand ich die Aufzeichnungen aus den DriverLogs (**./Data/com.apple.driver.AppleBCMWLANCoreV3.0/DriverLogs**) mit Dateinamen z.B. **[2019-10-19_13,54,22.346852]-AppleBCMWLAN_Logs-001.txt**. Aus dieser Datei geht hervor, welche Access Points das iPhone/iPad in die Nachbarschaftstabelle (Roaming-Kandidaten) aufnimmt und mit welcher Signalstärke diese gesehen werden. Oct 19 13:56:33.810924 +0200 066100.605500 wlan0[62189] constructNeighborCacheFromBeaconCache@6430:Roam candidate# 0 DC:08:56:00:1B:D9 on channel 100 RSSI: -65 Oct 19 13:56:33.810933 +0200 066100.605509 wlan0[62190] constructNeighborCacheFromBeaconCache@6430:Roam candidate# 1 DC:08:56:00:29:11 on channel 11 RSSI: -68 Oct 19 13:56:33.810940 +0200 066100.605516 wlan0[62191] constructNeighborCacheFromBeaconCache@6430:Roam candidate# 2 DC:08:56:00:29:21 on channel 116 RSSI: -69 Oct 19 13:56:33.810946 +0200 066100.605522 wlan0[62192] constructNeighborCacheFromBeaconCache@6430:Roam candidate# 3 DC:08:56:00:29:19 on channel 36 RSSI: -75 Oct 19 13:56:33.810951 +0200 066100.605527 wlan0[62193] constructNeighborCacheFromBeaconCache@6430:Roam candidate# 4 DC:08:56:00:1B:D1 on channel 11 RSSI: -76 Oct 19 13:56:33.810956 +0200 066100.605532 wlan0[62194] dumpNeighborCache@6609:Neihgbor Cache Channels 100 Oct 19 13:56:33.810960 +0200 066100.605536 wlan0[62195] dumpNeighborCache@6609:Neihgbor Cache Channels 11 Oct 19 13:56:33.810963 +0200 066100.605539 wlan0[62196] dumpNeighborCache@6609:Neihgbor Cache Channels 116 Oct 19 13:56:33.810966 +0200 066100.605542 wlan0[62197] dumpNeighborCache@6609:Neihgbor Cache Channels 36 Eine weitere spannende Datei ist ConfigManagerState.txt aus folgendem Verzeichnis: **/Users//Library/Logs/CrashReporter/MobileDevice//CoreCapture/WiFi/[2019-10-19_13,57,04.553800]=bedroom/Data/com.apple.driver.AppleBCMWLANCoreV3.0/StateSnapshots/ConfigManagerState.txt** Hier lassen sich u.a. die Rahmenparameter für die Aufnahme von Access Points in die Liste der Roaming-Kandidaten und Schwellwerte für Roaming ableiten. Prefer 5GHz threshold parameters from device tree: rssiThreshold = -65 rssiAdjustment = 30 default roam params from device tree: flags = 0x0001 fullRoamScanPeriod = 90 partialRoamScanPeriod = 30 roamResetRSSIDelta = 7 fullRoamScanCount = 2 txFailTrigger = 0 2.4 GHz: rssiTrigger = -75 rssiQualDelta = 20 5 GHz: rssiTrigger = -75 rssiQualDelta = 10 Enterprise roam params from device tree: flags = 0x0001 fullRoamScanPeriod = 90 partialRoamScanPeriod = 30 roamResetRSSIDelta = 7 fullRoamScanCount = 2 txFailTrigger = 0 2.4 GHz: rssiTrigger = -70 rssiQualDelta = 12 5 GHz: rssiTrigger = -70 rssiQualDelta = 12 2.4GHz Roam profile[0]: RSSI:[-10,-75], Flag:0xc, ScanParams:(2,3000,180,2,1200), Candidate:(20,-65,50) 2.4GHz Roam profile[0]: RSSI:[-75,-128], Flag:0x10, ScanParams:(2,90,30,2,180), Candidate:(12,-65,50) 5GHz Roam profile[0]: RSSI:[-75,-128], Flag:0x10, ScanParams:(2,90,30,2,180), Candidate:(12,-128,10) 2.4GHz Roam profile[1]: RSSI:[-75,-128], Flag:0x14, ScanParams:(2,90,30,2,180), Candidate:(12,-65,50) 5GHz Roam profile[1]: RSSI:[-75,-128], Flag:0x14, ScanParams:(2,90,30,2,180), Candidate:(12,-128,10) 2.4GHz Roam profile[2]: RSSI:[-10,-75], Flag:0xc, ScanParams:(2,3000,180,2,1200), Candidate:(20,-65,50) 2.4GHz Roam profile[2]: RSSI:[-75,-128], Flag:0x14, ScanParams:(2,90,30,2,180), Candidate:(12,-65,50) 5GHz Roam profile[2]: RSSI:[-75,-128], Flag:0x10, ScanParams:(2,90,30,2,180), Candidate:(12,-128,10) 2.4GHz Roam profile[3]: RSSI:[-10,-50], Flag:0xc, ScanParams:(2,1200,180,2,600), Candidate:(20,-65,50) 2.4GHz Roam profile[3]: RSSI:[-50,-70], Flag:0xc, ScanParams:(2,1200,180,2,360), Candidate:(15,-65,50) 2.4GHz Roam profile[3]: RSSI:[-70,-128], Flag:0x10, ScanParams:(2,90,30,1,30), Candidate:(12,-65,50) 5GHz Roam profile[3]: RSSI:[-70,-75], Flag:0x0, ScanParams:(2,90,30,1,30), Candidate:(12,-128,0) 5GHz Roam profile[3]: RSSI:[-75,-128], Flag:0x10, ScanParams:(2,90,2,2,30), Candidate:(12,-128,10) AWDL Always ON: N/A Priv Elect: N/A Restricted to infra channel: N/A Restricted Feature Set: N/A Elect Metric: 0 DFS Proxy Support Enabled:YES Motion Profile States from device tree: frozen = 0 Moving = 16 walking = 32 driving = 48 ===== Manuell erzeugte Logs aus "sysdiagnose" ===== Durch gleichzeitiges drücken (und halten) der Tasten "Lautstärke lauter", "Lautstärke leiser" und des "Aufwachen/Siri"-Knopfes bis das iPhone die Aktion mit einer kurzen Vibration bestätigt, wird ein (sehr umfangreicher) Systemdiagnosemodus gestartet. Die Ausgabe dieser Analyse befindet sich nach dem iTunes-Sync im Verzeichnis **/Users//Library/Logs/CrashReporter/MobileDevice//DiagnosticLogs/sysdiagnose** und muss erst entpackt werden **sysdiagnose_2019.10.20_15-44-29+0200_iPhone-OS_iPhone_17A878.tar.gz**. Das Verzeichnis "WiFi" enthält dabei sehr interessante Ausgaben zum (verbundenen) Netzwerk und anderen Rahmenparametern. Hier als Beispiel mal die Ausgabe in der Datei **diagnostics-environment.txt** # --- Diagnostics ———————————————————————————————————————————————————————————————————————————————————————————————————————— Timestamp Name Duration Result Description ———————————————————————————————————————————————————————————————————————————————————————————————————————— Congested Wi-Fi Channel CCA 0.394 No 15:45:03.122 Current channel (100) is NOT congested (CCA = 0.0% congested) Recommended 2.4GHz — 6 Recommended 5GHz — 165 HT40 2.4GHz Networks 0.011 No 15:45:03.517 Did not find HT40 network(s) in 2.4GHz Conflicting Wi-Fi CC 0.002 Yes 15:45:03.529 Found conflicting country code(s) (de) 'Vodafone-79AC' — 88:71:b1:a4:12:6a (EU) 'Vodafone-79AC' — 88:71:b1:a4:12:6b (EU) Hidden Wi-Fi Scan Results 0.000 No 15:45:03.531 Did not find any hidden networks No Scan Results 0.000 No 15:45:03.532 Wi-Fi networks are visible Conflicting PHY Mode 11ac 0.006 No 15:45:03.532 0 PNL networks have conflicting PHY modes (802.11ac). Conflicting PHY Mode 11n 0.007 No 15:45:03.539 0 PNL networks have conflicting PHY modes (802.11n). Die Datei "wifi_scan_cache.txt" beinhaltet die Sicht des iPhones auf alle SSIDs in der Umgebung und die verwendeten Sicherheitsverfahren / Signalstärken.