情報を取得するiOSアプリケーション情報、モバイルデバイス情報、ネットワーク情報、権利情報、GPS、ネットワーク情報、店舗情報、画面情報、センサー情報、携帯電話のカード情報やその他のツール

JSAnalysis

この記事では、唯一のGitHubでのプロジェクトのソースコードを記述し、以下のリンク

JSAnalysisプロジェクトのgithubのリンク

プロジェクト

JSAnalysisツールは沈黙によって得られたアップルのデバイス情報です。ユーザーが簡単にユーザーのためのより良い体験を提供するために、開発者を有効にする、など多くのデバイスに情報を知覚しない場合にはそれを得ることができます。このツールは、共有に学ぶための技術に限定されています。

デザインのポイント

  • AES256を使用して、機密情報の暗号化署名を追加する。耐タンパ性、抗ハイジャック。
  • アプリケーション、ユーザー知るためにインスピレーションをもたらし、システムを更新するために統一された権限がない場合には、クラッシュを防ぐために、「NONE」を@に設定値に対応する情報を取得します。
  • メインスレッドの事業への影響を回避するために追加しましたキャッシュ機構、子スレッドの非同期取得、

情報の詳細へのアクセス

iOSのSDK情報取得装置は、情報のリストを取得することができます
特記事項:以下のセクションでは、おそらく空であるキー値、すべてのNULL値が存在しているSDKは、特定された文字列NONEです
(A)appInfo-アプリケーション情報
いいえ。 アプリケーション情報名 パラメータ名 フィージビリティ 実現可能性の説明 特別な注意
1 アプリケーション名 appNameの イルカ船長
2 アプリケーション固有の識別 appBundle 手紙プラット・アンド・ホイットニーやYOUXINの友達
3 アプリケーションのバージョン appversion 2.0.1 clientVersion
4 行動データ収集SDKバージョン sdkVersion 1.0.1
5 アプリの起動時間 launchTime 4.32
6 このアプリケーション・ユーザーID ユーザーID 1002231 SDKの開発者は、アクセスの初期化@property(アトミック、コピー)GetUserIdBlock userIdBlockを必要とします。
(B)clientInfo-クライアント情報
いいえ。 基本情報名 パラメータ名 リマーク フィージビリティ 実現可能性の説明 特別な注意
7 デバイス名 装置名 取得デバイスドライバ名 hwG750-T01 Y / N 私は、そのニックネーム機器は、それは自分自身にエイリアス電話設定を与えることであることを理解します
8 デバイス・モデル デバイスモデル 携帯電話の機種 HUAWEI G750-T01 デバイスモデル:iPhone X
9 機器のブランド ブランド 機器のブランド Huawei社
10 システム名 OSNAME システム名 アンドロイド プラットフォーム:iOSの
11 システムバージョン OSVERSION 取得システムのバージョン文字列 4.4.4 deviceOs:iOS12.1
12 システムSDKのバージョン osSDK 例えばiOS11.2ようなシステムのSDKバージョン iOS11.2
13 メーカー メーカー 機器メーカー HUAWEI
14 デフォルトの言語 initialLanguage デフォルトの言語 ZH デフォルトの言語は、同じ結果を得るために変更することができます15
15 設定タイムゾーン タイムゾーン 設定タイムゾーン 北京
16 残りのパワー ダンプ・エネルギー 残りのパワー 0.15 シミュレータ取得-1.00
17 充電するかどうか 充電 充電するかどうか 0,1 0手段ない表し、充電しない充電
18 バッテリーの状態 batteryState 不明:不明な状態アンプラグド:アンプラグド充電:フル充電:充電/とで満たされました 充電
19 UUID UUID IOSデバイス固有の識別子 XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX ロゴが今終わりが実際にIMEIある単語を渡し、アプリケーションのアンインストール後に変更されます
20 IDFA IDFA デバイスに関連付けられた固有の識別子が異なるアプリケーション間で広告を開くために使用することができます 1E2DFA89-496A-47FD-9941-DF1FC4E6484A
21 かどうか脱獄 ジェイルブレイク かどうか脱獄 はい、いいえ、NONEません シミュレータNONEを取得
22 シミュレータかどうか シミュレーター シミュレータかどうか 1,0 1はい、0ではないため
23 携帯電話のCPU使用率 CPU使用率 CPU使用率 12.91
24 アプリのCPU使用率 appCpuUsage アプリは、CPUによって占有しました 1.23
25 システム起動時間 ブートタイム グリニッジ標準時 1549851830
26 合計実行時間システム 稼働時間 最初から今までの時間(秒)の合計の長さを実行します 1233360
27 カーネルのバージョン KERNELVERSION カーネルのバージョン ダーウィンカーネルバージョン18.2.0:月11月12日20時24分31秒PST 2018; ルート:XNU-4903.231.4〜1 / RELEASE_X86_64
28 今の時間 今時 グリニッジ標準時 1551085190
(C)netInfo-ネットワーク情報
いいえ。 ネットワーク情報名 パラメータ名 リマーク フィージビリティ 実現可能性の説明 特別な注意
29 ネットワークの種類 ネットワークタイプ WIFI、WWAN、NONE WIFI Y
30 网络名称 SSID 网络名/wifi名/ YOUXIN_WIFI/NONE Y 模拟器获取为NONE iOS13后值固定为“WLAN”
31 mac地址 mac 无线局域网mac地址 00:08:02:a4:fb N 如果没有连接到WiFi,获取到固定值0x020000000000 模拟器获取为NONE
32 路由器地址 routerAddress 无线路由器地址 192.168.1.1 Y
33 路由器mac routerMac wifi的mac地址 10:76:93:2c:a0 Y bssid/ ssid 模拟器获取为NONE
34 网速 link_speed 网速 135mbps Y 目前有这个功能,但是都没有获取
35 cell_ip cellIp 蜂窝网络ip 192.168.1.105 Y 模拟器获取为NONE
36 wifi_ip wifiIp 无线局域网ip 192.168.1.12 Y
37 代理ip proxyIp 代理ip Y
38 蓝牙名称 bluetoothName 蓝牙名称 HUAWEI TAG-TL00 Y 和iPhone本身的别名相同
39 VOIP状态 voipStatus 0、1 Y
40 网络制式 radioType 移动网络制式 LET Y
41 路由广播地址 routerDstaddr 10.255.17.255 Y
42 路由网关 routerGateway 160.197.64.113 Y
43 路由名称 routerName 112.50.112.48 Y
44 路由子网掩码 routerNetmask 255.255.254.0 Y
(四)phoneCardInfo-手机卡信息
序号 手机卡信息名称 参数名称 备注 示例 可行性 可行性描述 特别说明
45 手机卡国家 simCountryIso 手机卡国家iso代码 cn Y 模拟器获取为NONE
46 运营商名字 simOperatorName 运营商名字 中国联通 Y 模拟器获取为NONE
47 运营商id simOperator 运营商id 46001 Y/N 能获取国家代码和网络代码,运营商id,没有直接获取的api 模拟器获取为NONE
48 手机卡状态 simState SIM_STATE_UNKNO UNKNOW、INSTALL、NONE Y/N 只能获取到是否插入sim卡
49 移动国家代码 mobileCountryCode 移动国家代码 NONE,1 Y
(五)screenInfo-屏幕信息
序号 屏幕信息名称 参数名称 备注 示例 可行性 可行性描述 特别说明
50 屏幕高度 screenWidth 屏幕高度 4.960638 Y
51 屏幕宽度 screenHeight 屏幕宽度 2.795277 Y
52 屏幕密度 density 屏幕密度 2 Y
53 屏幕亮度值 screenBrightness 屏幕亮度值 0--255 Y Y 模拟器获取为0
(六)sensorInfo-传感器信息
序号 传感信息名称 参数名称 备注 示例 可行性 可行性描述 特别说明
54 定位经度 gpsLongitude 定位经度 Y 需要用户授权位置权限 在没有权限的情况下为NONE
55 定位纬度 gpsLatitude 定位纬度 Y 需要用户授权位置权限
56 GPS认证状态 gpsStatus GPS认证状态 NotDetermined、Restricted、Denied、Always、WhenInUse、NONE Y
57 GPS开关 gpsSwitch gps开关是否打开 0、1 Y
(七)storageInfo-存储/内存信息
序号 存储信息名称 参数名称 备注 示例 可行性 可行性描述 特别说明
58 内存总大小 totalMemory bytes为单位 8589934592 Y
59 内部存储 totalSpace bytes为单位 501580873728 Y
60 物理内存当前占用 usedMemory bytes为单位 14700544 Y
61 app占用内存 appUsedMemory bytes为单位 48287744 Y
62 空闲的总内存 freeSpace bytes为单位 18707865600 Y

接入指南

1.接入代码

#import "JSAnalysis.h"

[JSAnalysis standardAnalysis].appKey = @"你的AppJKey";
//手动获取
[[JSAnalysis standardAnalysis] getAnalysisBoxWithOption:JSAnalysisGetAnalysisBoxOptionManual responseBlock:^(NSDictionary * _Nonnull analysisBoxInfo) {
    NSLog(@"%@",analysisBoxInfo);
}];

更改JSAnalysisGetAnalysisBoxOptionManual 为 JSAnalysisGetAnalysisBoxOptionIntelligentAuto 可以在特定的条件下自动上传到信息收集的服务器,用户可根据 jsBox去查询数据的解密结果。

- (void)getAnalysisBoxWithOption:(JSAnalysisGetAnalysisBoxOption)option responseBlock:(void(^)(NSDictionary *analysisBoxInfo))block API 每次被调用都会执行重新获取动作,如果需要重新获取,在每个合适的节点重新调用即可。

提供了设备信息的缓存:cacheBoxInfoJSAnalysis的单例对象中可获取。

** 如果需要不加密的数据可以参考 JSAnalysis.m 中的getAllInfo方法实现. **

成功获取数据示例:


{
    // app 标识
    "appBundle" = "com.analysisi.show";
    // 信息加密后的结果
    "jsBox" = "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";
    // 数据签名
    "sign" = 377dce9785fc41c5e502cefa3082531b;
    // 获取时间
    "timestamp" = 1551237554589;
    // 设备标识 IDFA
    clientId = "9047090B-1140-4A66-8503-A76B7698C113";
    // sdk版本
    sdkVersion = "1.0.0";
    // 签名
    sign = 84ec561739fe2ce531e3ce8c8cba427d;
    timestamp = 1552977734417;
}

2,加解密过程

举例:
两个关键的key

  • AES256 key: 0f607264fc6318a92b9e13c65db7cd3c (用于AES256将敏感数据加密)
  • JSAnalysisEncryptionTool.mstatic const char JSEncryptionToolAES256Key[] = "xxxxxxxxxxxxxxxx";修改AES256的密钥
  • sign key : appkey_test (用于将加密后的数据做签名,防篡改)
  • 签名默认加密私钥使用的是JSAnalysis.h@property (nonatomic, copy, nonnull) NSString *appKey; 请自行更改.

加密过程:

jsBox:

  • 一个map,将其中的key:value对,按照key升序排列,如 app、baby、brand、cos、design…
  • 使用 AES256 key 以及 AES256加密方式对步骤1中的结果map进行加密。

sign:

  • map = { app_bundle : 当前应用标识,
    jsBox : 加密后的结果值,
    timestamp :当前时间的时间戳
    } (同样按key升序)

  • 以sign key为盐 做md5.

解密按照AES256

步骤1中的加密数据解密结果:

{
    appInfo = {
        appBundle = "com.ucredit.sales";
        appName = AnalysisDemo;
        appVersion = "1.0.0";
        launchTime = "0.51";
        sdkVersion = "1.0.0";
        userId = NONE;
    };
    clientInfo = {
        IDFA = "9047090B-1140-4A66-8503-A76B7698C113";
        UUID = "2F0CB187-60A6-48EE-8DAE-C8C97FC1B186";
        appCpuUsage = "61.80";
        batteryState = Unknown;
        bootTime = 1552914866;
        brand = Apple;
        charging = 0;
        cpuUsage = "16.50";
        deviceModel = "x86_64";
        deviceName = "iPhone XR";
        dumpEnergy = "-1.00";
        initialLanguage = en;
        jailbroken = NONE;
        kernelVersion = "Darwin Kernel Version 18.2.0: Mon Nov 12 20:24:31 PST 2018; root:xnu-4903.231.4~1/RELEASE_X86_64";
        manufacturer = Apple;
        nowTime = 1552977730;
        osName = iOS;
        osSDK = "12.1";
        osVersion = "12.1";
        simulator = 1;
        timeZone = "Asia/Shanghai (GMT+8d) offset 28800";
        upTime = 62864;
    };
    netInfo = {
        SSID = NONE;
        bluetoothName = "iPhone XR";
        cellIp = NONE;
        mac = NONE; 
        networkType = WiFi;
        proxyIp = NONE;
        radioType = NONE;
        routerAddress = "10.255.16.152";
        routerDstaddr = "10.255.17.255";
        routerGateway = "16.44.60.99";
        routerMac = NONE;
        routerName = "112.50.112.48";
        routerNetmask = "255.255.254.0";
        voipStatus = 0;
        wifiIp = "10.255.16.152";
    };
    phoneCardInfo = {
        mobileCountryCode = NONE;
        simCountryIso = NONE;
        simOperator = NONE;
        simOperatorName = NONE;
        simState = UNKNOW;
    };
    screenInfo = {
        density = 2;
        screenBrightness = 0;
        screenHeight = 480;
        screenWidth = 320;
    };
    sensorInfo = {
        gpsLatitude = "0.000000";
        gpsLongitude = "0.000000";
        gpsStatus = NotDetermined;
        gpsSwitch = 1;
    };
    storageInfo = {
        appUsedMemory = 48046080;
        freeSpace = 12156682240;
        totalMemory = 8589934592;
        totalSpace = 501580873728;
        usedMemory = "-147644416";
    };
}

发布了139 篇原创文章 · 获赞 35 · 访问量 41万+

おすすめ

転載: blog.csdn.net/wxs0124/article/details/104431316