iOS_sysdiagnose_forensic_scripts
以下のサイトで iOS のフォレンジックに関するスクリプト群が公開されていました。
- cheeky4n6monkey/iOS_sysdiagnose_forensic_scripts: Scripts to parse various iOS sysdiagnose logs. Based upon the forensic research of Mattia Epifani, Heather Mahalik and Cheeky4n6monkey.
バグレポート向けに備えてある iOS の正規機能(脱獄不要)から出力可能な sysdiagnose というログに関する記事で、ログから本体の基礎情報、実行中のプロセス一覧、ネットワークの接続記録など様々な情報を取得できるというものです。これについては sysdiagnose ログをフォレンジック観点で調査した詳細なレポートが掲載されていました。
- Using Apple “Bug Reporting” for forensic purposes
https://www.for585.com/sysdiagnose
ここでは紹介されていたスクリプトを中心に、実際にどのようなデータが sysdiagnose ログから取得できるのか確認してみました。以下、結果については一部(年月日やIDなど)をマスク(yyyy-mm-dd や xxxxx など)しています。
iOS_sysdiagnose_forensic_scripts 一覧
Name | Description | Usage Example |
---|---|---|
sysdiagnose-sys.py | OS情報を抽出します。 | python3 sysdiagnose-sys.py -i SystemVersion.plist |
sysdiagnose-networkprefs.py | ホスト名を抽出します。 | python3 sysdiagnose-networkprefs.py -i preferences.plist |
sysdiagnose-networkinterfaces.py | ネットワーク構成情報を抽出します。 | python3 sysdiagnose-networkinterfaces.py -i NetworkInterfaces.plist |
sysdiagnose-mobilecontainermanager.py | アンインストール情報を抽出します | python3 sysdiagnose-mobilecontainermanager.py -i containermanagerd.log.0 |
sysdiagnose-mobilebackup.py | バックアップ情報を抽出します。 | python3 sysdiagnose-mobilebackup.py -i com.apple.MobileBackup.plist |
sysdiagnose-mobileactivation.py | モバイル起動およびアップグレード情報。 | python3 sysdiagnose-mobileactivation.py -i mobileactivation.log |
sysdiagnose-wifi-plist.py | Wi-Fiネットワークに関する項目を抽出します。TSVファイルを出力するには -v オプションを使用してください。 | python3 sysdiagnose-wifi-plist.py -i com.apple.wifi.plist -t |
sysdiagnose-wifi-icloud.py | Wi-Fiネットワークに関する項目(iCloud)を抽出します。TSVファイルを出力するには -v オプションを使用してください。 | python3 sysdiagnose-wifi-icloud.py -i ICLOUD.apple.wifid.plist -t |
sysdiagnose-wifi-net.py | TSVファイルにWi-Fiネットワーク名を抽出します。 | python3 sysdiagnose-wifi-net.py -i wifi-buf.log |
sysdiagnose-wifi-kml.py | Wi-Fiジオロケーション値を抽出し、KML形式ファイルを作成します。 | python3 sysdiagnose-wifi-kml.py -i wifi-buf.log |
sysdiagnose-uuid2path.py | GUIDとパス情報を抽出します。 | python3 sysdiagnose-uuid2path.py -i UUIDToBinaryLocations |
sysdiagnose-net-ext-cache.py | アプリケーション名とGUID情報を抽出します。GUID情報を出力するには -v オプションを使用してください。 | python3 sysdiagnose-net-ext-cache.py -i com.apple.networkextension.cache.plist -v |
sysdiagnose-appconduit.py | 接続情報を抽出します。 | python3 sysdiagnose-appconduit.py -i AppConduit.log |
- 目次
- iOS_sysdiagnose_forensic_scripts
- iOS_sysdiagnose_forensic_scripts 一覧
- sysdiagnose ログの取得方法
- スクリプトの実行結果
- sysdiagnose-sys.py:OS情報
- sysdiagnose-networkprefs.py:ホスト名
- sysdiagnose-networkinterfaces.py:ネットワーク構成情報
- sysdiagnose-mobilecontainermanager.py:アンインストール情報
- sysdiagnose-mobilebackup.py:バックアップ情報
- sysdiagnose-mobileactivation.py:モバイル起動およびアップグレード情報
- sysdiagnose-wifi-plist.py:Wi-Fiネットワーク値
- sysdiagnose-wifi-icloud.py:Wi-Fiネットワーク値(ICLOUD 関連ファイルから抽出)
- sysdiagnose-wifi-net.py:Wi-Fiネットワーク名
- sysdiagnose-wifi-kml.py:Wi-Fiジオロケーション値からKMLを作成
- sysdiagnose-uuid2path.py:GUIDとパス情報
- sysdiagnose-net-ext-cache.py:アプリケーション名とGUID情報
- sysdiagnose-appconduit.py:接続情報
- スクリプト不要で確認できる情報
- 出力ファイル名に日時を追加して重複を防ぐ
- 参考文献
- 更新履歴
sysdiagnose ログの取得方法
- ログ取得方法:
- iOS11以上であれば「音量ボタン2つと電源ボタンを同時押し」で取得できます。
- 取得に成功すると端末が震えますが、特にポップアップ表示などはされません。
- ログの出力先:
- 設定 > プライバシー > 解析 > 解析データ > sysdiagnose からファイルを取得できます。
- 圧縮されており、iOS 上ではログ内容は確認できません。ログを表示した画面の右上にあるボタンからパソコンなどに転送します。
- 今回取得したログの場合、圧縮された状態で 200MB 超、展開すると 400MB 超のファイルサイズでした。
- ログ出力名:
- 「sysdiagnose_yyyy.mm.dd_hh-mm-ss+0900_iPhone_OS_iPhone_16F156」といった形で出力されます。
- 末尾の英数字は ProductBuildVersion のようです。
重複ファイルについて
- 今回はファイルの展開時に重複ファイルの処理が聞かれました。以降は自動でリネームを選択した結果に基づいて記載しています。
- パース対象とされているファイル名は複数存在している場合がありました。以下では処理結果がエラーにならなかったファイルのパスのみを記載しています。
スクリプトの実行結果
sysdiagnose-sys.py:OS情報
- OS情報を抽出します。
## file path ## \logs\SystemVersion\SystemVersion.plist python3 sysdiagnose-sys.py -i SystemVersion.plist
- 結果例
Running sysdiagnose-sys.py v2019-05-10 Version 1.0 ProductName = iPhone OS ProductVersion = 12.3 ProductBuildVersion = 16F156
sysdiagnose-networkprefs.py:ホスト名
- ホスト名を抽出します。
## file path ## \logs\Networking\PaxHeader\preferences.plist python3 sysdiagnose-networkprefs.py -i preferences.plist
- 結果例
Running sysdiagnose-networkprefs.py v2019-05-10 Version 1.0 Network LocalHostName = YouriPhone-Name System ComputerName = YouriPhone_Name System HostName = YouriPhone-Name
sysdiagnose-networkinterfaces.py:ネットワーク構成情報
- ネットワーク構成情報を抽出します。
- 結果を Google などで検索すると機種名と紐づいたので、機種の特定にも利用できるかもしれません。
## file path ## \logs\Networking\PaxHeader\NetworkInterfaces.plist python3 sysdiagnose-networkinterfaces.py -i NetworkInterfaces.plist
- 結果例
Running sysdiagnose-networkinterfaces.py v2019-05-10 Version 1.0 ================================== BSD Name = en0 Active = True IOMACAddress = xxxxxxxxxxxxx IOPathMatch = IOService:/AppleARMPE/arm-io@2240000/AppleS8000IO/uart4@A0D0000/AppleSamsungSerial/wlan/AppleBCMWLANBusInterfacePCIe/AppleBCMWLANCore/en0 UserDefinedName = Wi-Fi ================================== BSD Name = en1 Active = True IOMACAddress = xxxxxxxxxxxxx IOPathMatch = IOService:/AppleARMPE/arm-io@2240000/AppleS8000IO/usb-complex@C900000/AppleS5L8960XUSBArbitrator/usb-device@100000/iPhone@0/AppleUSBEthernet@5/AppleUSBEthernetDevice/en1 UserDefinedName = Ethernet Adaptor (en1) ================================== BSD Name = en2 Active = True IOMACAddress = xxxxxxxxxxxxx IOPathMatch = IOService:/AppleARMPE/arm-io@2240000/AppleS8000IO/usb-complex@C900000/AppleS5L8960XUSBArbitrator/usb-device@100000/iPhone@0/AppleUSBNCMData@c/AppleUSBDeviceNCMData/en2 UserDefinedName = Ethernet Adaptor (en2) ================================== BSD Name = pdp_ip0 Active = True IOPathMatch = IOService:/AppleARMPE/arm-io@2240000/AppleS8000IO/usb-complex@C900000/AppleS5L8960XUSBArbitrator/usb-ehci1@03000000/AppleS5L8960XUSBEHCI@03000000/hsic-baseband@03100000/hsic-baseband/pdp_ip0/pdp_ip0 UserDefinedName = Cellular (pdp_ip0) ================================== BSD Name = pdp_ip1 Active = True IOPathMatch = IOService:/AppleARMPE/arm-io@2240000/AppleS8000IO/usb-complex@C900000/AppleS5L8960XUSBArbitrator/usb-ehci1@03000000/AppleS5L8960XUSBEHCI@03000000/hsic-baseband@03100000/hsic-baseband/pdp_ip1/pdp_ip1 UserDefinedName = Cellular (pdp_ip1) ================================== BSD Name = pdp_ip2 Active = True IOPathMatch = IOService:/AppleARMPE/arm-io@2240000/AppleS8000IO/usb-complex@C900000/AppleS5L8960XUSBArbitrator/usb-ehci1@03000000/AppleS5L8960XUSBEHCI@03000000/hsic-baseband@03100000/hsic-baseband/pdp_ip2/pdp_ip2 UserDefinedName = Cellular (pdp_ip2) ================================== BSD Name = pdp_ip3 Active = True IOPathMatch = IOService:/AppleARMPE/arm-io@2240000/AppleS8000IO/usb-complex@C900000/AppleS5L8960XUSBArbitrator/usb-ehci1@03000000/AppleS5L8960XUSBEHCI@03000000/hsic-baseband@03100000/hsic-baseband/pdp_ip3/pdp_ip3 UserDefinedName = Cellular (pdp_ip3) ================================== BSD Name = pdp_ip4 Active = True IOPathMatch = IOService:/AppleARMPE/arm-io@2240000/AppleS8000IO/usb-complex@C900000/AppleS5L8960XUSBArbitrator/usb-ehci1@03000000/AppleS5L8960XUSBEHCI@03000000/hsic-baseband@03100000/hsic-baseband/pdp_ip4/pdp_ip4 UserDefinedName = Cellular (pdp_ip4)
sysdiagnose-mobilecontainermanager.py:アンインストール情報
- アンインストール情報を抽出します。
- 半年程度前の情報が抽出されているのが分かります。
- 半年の間に削除したアプリが本当に4つ程度だったかどうかは確認できませんでした。
## file path ## \logs\MobileContainerManager\PaxHeader\containermanagerd.log.0 python3 sysdiagnose-mobilecontainermanager.py -i containermanagerd.log.0
- 結果例
Running sysdiagnose-mobilecontainermanager.py v2019-05-10 Version 1.0 7 Nov 2018 02:07:10 Removed group.com.xxx.xxx.xxx.xxx.xxxxxx [line 116] 12 Nov 2018 23:47:48 Removed group.com.xxx.xxx.xxx.xxx.xxxxxx [line 121] 19 Nov 2018 19:38:55 Removed group.com.google.YouTube [line 122] 4 Jan 2019 09:06:21 Removed group.xxx [line 150] Found 4 group removal entries
sysdiagnose-mobilebackup.py:バックアップ情報
- バックアップ情報を抽出します。
## file path ## \logs\MobileBackup\PaxHeader\com.apple.MobileBackup.plist python3 sysdiagnose-mobilebackup.py -i com.apple.MobileBackup.plist
- 結果例
Running sysdiagnose-mobilebackup.py v2019-05-10 Version 1.0 BackupStateInfo isCloud = True BackupStateInfo Date = yyyy-mm-dd 17:37:18.428752 RestoreInfo Date = yyyy-mm-dd 13:43:12 RestoreInfo DeviceBuildVersion = 16xxxx RestoreInfo BackupBuildVersion = 16xxxx RestoreInfo WasCloudRestore = False
sysdiagnose-mobileactivation.py:モバイル起動およびアップグレード情報
- モバイル起動およびアップグレード情報を抽出します。
- 1ファイルあたり約30日分が格納されており、約5ヶ月分のデータが取得可能でした。
- 今回の結果からはCPUがサムスン製らしいことも分かります(Hardware Model = N69uAP より)。
## file path ## \logs\MobileActivation\PaxHeader\mobileactivationd.log.0 ## \logs\MobileActivation\PaxHeader\mobileactivationd.log.1 ## \logs\MobileActivation\PaxHeader\mobileactivationd.log.2 ## \logs\MobileActivation\PaxHeader\mobileactivationd.log.3 ## \logs\MobileActivation\PaxHeader\mobileactivationd.log.4 python3 sysdiagnose-mobileactivation.py -i mobileactivation.log
- 結果例
Running sysdiagnose-mobileactivation.py v2019-05-10 Version 1.0 25 Apr 2019 03:54:24 Mobile Activation Hardware Model = N69uAP 25 Apr 2019 03:54:24 Mobile Activation Product Type = iPhone8,4 25 Apr 2019 03:54:24 Mobile Activation Device Class = iPhone 26 Apr 2019 01:17:14 Mobile Activation Startup [line 13] 26 Apr 2019 01:17:14 Mobile Activation Build Version = 16E227 26 Apr 2019 01:17:14 Mobile Activation Hardware Model = N69uAP 26 Apr 2019 01:17:14 Mobile Activation Product Type = iPhone8,4 26 Apr 2019 01:17:14 Mobile Activation Device Class = iPhone (snip) 14 May 2019 07:49:00 Mobile Activation Startup [line 322] 14 May 2019 07:49:00 Mobile Activation Build Version = 16F156 14 May 2019 07:49:00 Mobile Activation Hardware Model = N69uAP 14 May 2019 07:49:00 Mobile Activation Product Type = iPhone8,4 14 May 2019 07:49:00 Mobile Activation Device Class = iPhone 14 May 2019 07:49:00 Upgraded from 16E227 to 16F156 [line 336] 15 May 2019 19:49:32 Mobile Activation Startup [line 340] 15 May 2019 19:49:32 Mobile Activation Build Version = 16F156 15 May 2019 19:49:32 Mobile Activation Hardware Model = N69uAP 15 May 2019 19:49:32 Mobile Activation Product Type = iPhone8,4 15 May 2019 19:49:32 Mobile Activation Device Class = iPhone (snip) Found 1 Upgrade entries Found 35 Mobile Activation Startup entries
sysdiagnose-wifi-plist.py:Wi-Fiネットワーク値
- Wi-Fiネットワーク値を抽出します。
- 数年前にアクセスしたらしい宝塚市や京都市のWifiなども残っていましたが、接続日時などは抽出されませんでした。
- 唯一、東急電鉄車内WiFiサービスについては数年前にも関わらず接続日時が抽出されていました。
- 一部はデバイスの型番(IE_KEY_WPS_DEV_NAME)や製造メーカー名(IE_KEY_WPS_MANUFACTURER)なども抽出されていました。
- 実行時に -t オプションを使うと結果を「sysdiagnose-wifi-plist-output.TSV」というタブ区切りのファイルでも出力できます。
- なおファイル中に \00 が含まれる場合があるようで、そのままエクセルに読み込もうとすると取り込めないデータができてしまいます。バイナリエディタ等でスペース(\20)にすることで読み込めるようになります。
## file path ## \WiFi\PaxHeader\com.apple.wifi.plist python3 sysdiagnose-wifi-plist.py -i com.apple.wifi.plist -t
- 結果例
Running sysdiagnose-wifi-plist.py v2019-05-10 Version 1.0 ============================= SSID_STR = XXXXXX-XXX-XXX BSSID = xx:xx:xx:xx:xx:xx networkUsage = 9999.999999 IE_KEY_80211D_COUNTRY_CODE = JP IE_KEY_WPS_SERIAL_NUM = IE_KEY_WPS_MODEL_NAME = IE_KEY_WPS_MANUFACTURER = XXXX, Ltd. IE_KEY_WPS_DEV_NAME = XXXXXX lastJoined = yyyy-mm-dd 10:28:50.624990 lastAutoJoined = yyyy-mm-dd 08:28:47.797165 enabled = True ============================= (snip) ============================= SSID_STR = Takarazuka_City_Wi-Fi BSSID = xx:xx:xx:xx:xx:xx enabled = True ============================= (snip) ============================= SSID_STR = KYOTO Wi-Fi BSSID = xx:xx:xx:xx:xx:xx enabled = True ============================= (snip) ============================= SSID_STR = Tokyu_Wi-Fi_Train BSSID = xx:xx:xx:xx:xx:xx networkUsage = 9999.999999 IE_KEY_80211D_COUNTRY_CODE = JP lastAutoJoined = yyyy-mm-dd 11:12:44.426722 enabled = False ============================= (snip) Also outputted to sysdiagnose-wifi-plist-output.TSV
sysdiagnose-wifi-icloud.py:Wi-Fiネットワーク値(ICLOUD 関連ファイルから抽出)
- ICLOUD 関連のファイルからWi-Fiネットワーク値を抽出します。
- 先程のとは情報量が異なるようで、宝塚や京都市の追加日時も抽出されていました。
- ただ、2つの日時がまったく同じだったので、あくまでiCloudに設定が追加された日時のようです。
- こちらも -t オプションを使うことで「sysdiagnose-wifi-icloud-output.TSV」というタブ区切りのファイルに出力できます。
## file path ## \WiFi\PaxHeader\ICLOUD_com.apple.wifid.plist python3 sysdiagnose-wifi-icloud.py -i ICLOUD.apple.wifid.plist -t
- 結果例
Running sysdiagnose-wifi-icloud.py v2019-05-10 Version 1.0 ================================== Name = Takarazuka_City_Wi-Fi added_by = xxxxxxxxxxxx SSID_STR = Takarazuka_City_Wi-Fi enabled = True added_at = mmm dd yyyy 16:12:27 BSSID = xx:xx:xx:xx:xx:xx timestamp = 999999999 ================================== (snip) ================================== Name = Tokyu_Wi-Fi_Train added_by = xxxxxxxxxxxx SSID_STR = Tokyu_Wi-Fi_Train enabled = True added_at = mmm dd yyyy 16:12:27 BSSID = xx:xx:xx:xx:xx:xx timestamp = 999999999 ================================== (snip) ================================== Name = XXXXXX-XXX-XXX added_by = xxxxxxxxxxxx SSID_STR = XXXXXX-XXX-XXX enabled = True added_at = mmm dd yyyy 18:41:30 BSSID = xx:xx:xx:xx:xx:xx timestamp = 999999999 ================================== (snip) Retrieved 41 wifi entries Also outputted to sysdiagnose-wifi-icloud-output.TSV
sysdiagnose-wifi-net.py:Wi-Fiネットワーク名
- Wi-Fiネットワーク名を抽出します。
- ログファイルが圧縮されているので、パースするためには .log の形に解凍する必要があります。
- コマンドの実行結果は件数のみで、詳細情報は output file と出ているファイルに記載されています。
- ログは1ファイルにせいぜい1日分程度で、3月、4月、5月のファイルが合計6個。
- どういう単位でログが残されているのか不明でした。
## file path ## \WiFi\wifi-buf-mm-dd-yyyy__hh_mm_ss.sss.log.tgz python3 sysdiagnose-wifi-net.py -i wifi-buf.log
- 結果例
Running sysdiagnose-wifi-net.py v2019-05-10 Version 1.0 ===================================================== Found 2 filtered network messages in log/vwifi-buf-04-17-2019__03_02_11.589.log Found 0 found channel messages in log/vwifi-buf-04-17-2019__03_02_11.589.log Found 0 background scan channel messages in log/vwifi-buf-04-17-2019__03_02_11.589.log Found 0 MRU network messages in log/vwifi-buf-04-17-2019__03_02_11.589.log Found 0 PPM attached still connected messages in log/vwifi-buf-04-17-2019__03_02_11.589.log Found 117 already attached still connected messages in log/vwifi-buf-04-17-2019__03_02_11.589.log ===================================================== Logged 10 FilteredNetworks to wifi-buf-net_filtered.TSV output file Logged 117 AlreadyAttached to wifi-buf-net_alreadyattached.TSV output file ===================================================== Ignored 0 malformed entries Exiting ...
sysdiagnose-wifi-kml.py:Wi-Fiジオロケーション値からKMLを作成
- Wi-Fiジオロケーション値を抽出しKMLを作成します。
- ログファイルが圧縮されているので、パースするためには .log の形に解凍する必要があります。
- コマンドの実行結果は件数のみで、詳細情報は wifi-buf-locations.kml というファイルに出力されます。
- そのまま座標を読むこともできますが、 Google Eearth に読み込ませることで地点をプロットできます。
- あくまで WiFi から取得するので WiFi を使っていない場所にはプロットされていないように見えました。
## file path ## \WiFi\wifi-buf-mm-dd-yyyy__hh_mm_ss.sss.log.tgz python3 sysdiagnose-wifi-kml.py -i wifi-buf.log
- 結果例
Running sysdiagnose-wifi-kml.py v2019-05-10 Version 1.0 ===================================================== Found 9 valid didUpdateLocation instances in log/wwifi-buf-04-17-2019__17_01_09.397.log Found 1 valid __WiFiManagerGeoTagNetwork instances in log/wwifi-buf-04-17-2019__17_01_09.397.log Found 1 valid __WiFiManagerLocationManagerCallback instances in log/wwifi-buf-04-17-2019__17_01_09.397.log Found 0 valid __WiFiLocaleManagerLocationManagerCallback instances in log/wwifi-buf-04-17-2019__17_01_09.397.log Found 0 valid WiFiLocaleManagerCheckLocale instances in log/wwifi-buf-04-17-2019__17_01_09.397.log Found 1 valid __WiFiDeviceManagerAttemptNetworkTransition instances in log/wwifi-buf-04-17-2019__17_01_09.397.log Found 2 valid __WiFiDeviceManagerScanPreviousNetworkChannel instances in log/wwifi-buf-04-17-2019__17_01_09.397.log Found 0 valid WiFiManagerCopyCurrentLocation instances in log/wwifi-buf-04-17-2019__17_01_09.397.log ===================================================== Logged 14 locations to wifi-buf-locations.kml output file Ignored 0 malformed log entries
Google Earth で表示した結果。
sysdiagnose-uuid2path.py:GUIDとパス情報
- GUIDとパス情報を抽出します。
- 大量に抽出されていました。Slack アプリのGUIDなどが確認できました。
## file path ## \logs\tailspindb\PaxHeader\UUIDToBinaryLocations python3 sysdiagnose-uuid2path.py -i UUIDToBinaryLocations
- 結果例
Running sysdiagnose-uuid2path.py v2019-05-10 Version 1.0 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx, /private/var/containers/Bundle/Application/xxx-xxx-xxx-xxxx-xxxxxx/Slack.app/Frameworks/TSFKit.framework/TSFKit (snip) 550 GUIDs found
sysdiagnose-net-ext-cache.py:アプリケーション名とGUID情報
- アプリケーション名とGUID情報を抽出します。
- GUID情報を出力するには-vオプションを使用してください。
- 今回は何も抽出されませんでした。
## file path ## \logs\Networking\PaxHeader\com.apple.networkextension.cache.plist python3 sysdiagnose-net-ext-cache.py -i com.apple.networkextension.cache.plist -v
- 結果例
Running sysdiagnose-net-ext-cache.py v2019-05-10 Version 1.0 0 cache entries retrieved
sysdiagnose-appconduit.py:接続情報
- 接続情報を抽出します。
## file path ## \summaries\PaxHeader\AppConduit.log ## \logs\AppConduit\PaxHeader\AppConduit.log.0 python3 sysdiagnose-appconduit.py -i AppConduit.log
- 結果例(summaries 配下)
Running sysdiagnose-appconduit.py v2019-05-10 Version 1.0 25 May 2019 18:52:39 - device:XXXXXX-XXXXXX-XXXXX-XXXXX-XXXXXXXX Disconnected [line 48] 25 May 2019 18:52:39 - device:XXXXXX-XXXXXX-XXXXX-XXXXX-XXXXXXXX Suspending [line 49] 25 May 2019 18:52:44 - deviceXXXXXX-XXXXXX-XXXXX-XXXXX-XXXXXXXX Now Connected [line 50] 25 May 2019 18:52:44 - device:XXXXXX-XXXXXX-XXXXX-XXXXX-XXXXXXXX Resuming [line 51] 25 May 2019 18:52:44 - device:XXXXXX-XXXXXX-XXXXX-XXXXX-XXXXXXXX Starting Reunion Sync [line 52] Found 1 Now Connected entries Found 1 Resuming entries Found 1 Starting Reunion Sync entries Found 1 Disconnected entries Found 1 Suspending entries
- 結果例(logs 配下)
Running sysdiagnose-appconduit.py v2019-05-10 Version 1.0 15 May 2019 21:41:15 - device:XXXXXX-XXXXXX-XXXXX-XXXXX-XXXXXXXX Disconnected [line 46] 15 May 2019 21:41:15 - device:XXXXXX-XXXXXX-XXXXX-XXXXX-XXXXXXXX Suspending [line 47] 15 May 2019 21:41:20 - device:XXXXXX-XXXXXX-XXXXX-XXXXX-XXXXXXXX Now Connected [line 48] 15 May 2019 21:41:20 - device:XXXXXX-XXXXXX-XXXXX-XXXXX-XXXXXXXX Resuming [line 49] (snip) 24 May 2019 22:43:46 - device:XXXXXX-XXXXXX-XXXXX-XXXXX-XXXXXXXX Resuming [line 1348] 24 May 2019 22:43:46 - device:XXXXXX-XXXXXX-XXXXX-XXXXX-XXXXXXXX Starting Reunion Sync [line 1349] 25 May 2019 14:34:50 - device:XXXXXX-XXXXXX-XXXXX-XXXXX-XXXXXXXX Suspending [line 1430] 25 May 2019 14:34:50 - device:XXXXXX-XXXXXX-XXXXX-XXXXX-XXXXXXXX Disconnected [line 1431] 25 May 2019 14:34:51 - device:XXXXXX-XXXXXX-XXXXX-XXXXX-XXXXXXXX Resuming [line 1432] 25 May 2019 14:34:51 - device:XXXXXX-XXXXXX-XXXXX-XXXXX-XXXXXXXX Starting Reunion Sync [line 1433] 25 May 2019 14:34:51 - device:XXXXXX-XXXXXX-XXXXX-XXXXX-XXXXXXXX Now Connected [line 1434] Found 16 Now Connected entries Found 16 Resuming entries Found 16 Starting Reunion Sync entries Found 16 Disconnected entries Found 16 Suspending entries
スクリプト不要で確認できる情報
Path | 説明 |
---|---|
ps.txt | コマンド「/bin/ps axwww -o user,uid,pid,ppid,%cpu,%mem,pri,ni,vsz,rss,wchan,tt,stat,start,time,command」を実行して得られる情報。 |
WiFi\ipconfig.txt | このファイルには、IP設定とデバイスのホスト名が含まれています。 |
WiFi\network_status.txt | このファイルには、ネットワークの状態に関する情報が含まれています(IPアドレス、DNSサーバなど)。 |
WiFi\wifi_status.txt | このファイルには、現在接続されているWi-FiネットワークのSSID、セキュリティプロトコル、チャネル、IPアドレス、ルーターアドレス、DNSアドレスなどが含まれています。 |
ps.txt
USER UID PID PPID %CPU %MEM PRI NI VSZ RSS WCHAN TT STAT STARTED TIME COMMAND root 0 1 0 0.0 0.5 37 0 4228400 10176 - ?? Ss 14May19 7:49.60 /sbin/launchd root 0 21 1 0.0 0.0 4 0 4218656 464 - ?? Ss 14May19 0:20.03 /usr/sbin/syslogd root 0 22 1 0.0 0.5 31 0 4257264 9424 - ?? Ss 14May19 30:00.62 /usr/libexec/UserEventAgent (System) (snip)
WiFi\ipconfig.txt
op = BOOTREPLY htype = 1 flags = 8000 hlen = 6 hops = 0 xid = 0xXXXXXXXX secs = 0 ciaddr = 192.168.xxx.xxx yiaddr = 192.168.xxx.xxx siaddr = 0.0.0.0 giaddr = 0.0.0.0 chaddr = xx:xx:xx:xx:xx:xx sname = file = options: Options count is 9 dhcp_message_type (uint8): ACK 0x5 server_identifier (ip): 192.168.xxx.xxx lease_time (uint32): 0xXXXXX subnet_mask (ip): 255.255.255.0 router (ip_mult): {192.168.xxx.xxx} domain_name_server (ip_mult): {192.168.xxx.xxx} renewal_t1_time_value (uint32): 0xXXXXX rebinding_t2_time_value (uint32): 0xXXXXX end (none):
WiFi\wifi_status.txt
## --- Network Status Primary IPv4 : en0 (Wi-Fi / XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) : 192.168.xxx.xxx Primary IPv6 : None DNS Addresses : 192.168.xxx.xxx Apple : Reachable
WiFi\network_status.txt
## --- Wi-Fi Status MAC Address : xx:xx:xx:xx:xx:xx Interface Name : en0 Power : On [On] Op Mode : STA SSID : xxxxxxxxxxxxxxx BSSID : xx:xx:xx:xx:xx:xx RSSI : -55 dBm Noise : -90 dBm Tx Rate : 390.0 Mbps Security : WPA2 Personal PHY Mode : 11ac MCS Index : 0 Guard Interval : 0 NSS : 0 Channel : 36 (80 MHz, Active) Country Code : JP NetworkServiceID : XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX IPv4 Config Method : DHCP IPv4 Address : 192.168.xxx.xxx IPv4 Router : 192.168.xxx.xxx IPv6 Config Method : Automatic IPv6 Address : None IPv6 Router : None DNS : 192.168.xxx.xxx BTC Mode : Unavailable Desense : Unavailable Chain Ack : Unavailable
出力ファイル名に日時を追加して重複を防ぐ
スクリプトの中にはいくつかTSVファイルを出力するものがありますが、出力ファイル名が固定であるためパース対象のログが複数ある場合にはファイルを上書きしてしまいます。出力ファイル名に時刻情報を追加することで上書きを避けることができます。
スクリプトによって修正位置が多少異なりますが、基本的には以下のような修正を加えることで時刻(yyyymmdd-hhmmss)がファイル名に追加されます。
import datetime (snip) now = datetime.datetime.now() time_str = "{0:%Y%m%d-%H%M%S}".format(now) (snip) f_filtered = open("wifi-buf-net_filtered_" + time_str + ".TSV", "w") (snip) print("Logged "+ str(len(filterednetworks)) + " FilteredNetworks to wifi-buf-net_filtered_" + time_str + ".TSV output file\n")
以上
参考文献
cheeky4n6monkey/iOS_sysdiagnose_forensic_scripts: Scripts to parse various iOS sysdiagnose logs. Based upon the forensic research of Mattia Epifani, Heather Mahalik and Cheeky4n6monkey.
https://github.com/cheeky4n6monkey/iOS_sysdiagnose_forensic_scriptsiPhoneのsysdiagnoseの取得方法 - Qiita
https://qiita.com/HirotoshiKawauchi/items/d7952ab834d7376d7903Python テキストファイルの名前に日付を入れたい - スタック・オーバーフロー
https://ja.stackoverflow.com/questions/19552/python-%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%90%8D%E5%89%8D%E3%81%AB%E6%97%A5%E4%BB%98%E3%82%92%E5%85%A5%E3%82%8C%E3%81%9F%E3%81%84
更新履歴
- 2019/05/28 新規作成
- 2019/05/29 「出力ファイル名に日時を追加して重複を防ぐ」を追加。Google Earth に位置情報を取り込んだ画像を追加。
- 2019/08/20 スクリプトの章タイトルに抽出される情報を追記。