OpenUDIDのテスト分析について(Demoを含む)

2912 ワード

以前OpenUDIDを研究して、最近資料を整理して、だからOpenUDIDについてのテスト分析の結果を貼ります
1、OpenUDIDのテスト結果
1)同じデバイスの下(黒いiPhone 4)
a、Demo 1 OfOpenUDID試験結果
ワイヤレスLAN:
137891ec369c899b01cc3df6cad90360514827e7
GPRS下:
137891ec369c899b01cc3df6cad90360514827e7
フライトモード:
137891ec369c899b01cc3df6cad90360514827e7
b、2番目のDemo 2 OfOpenUDIDを取り付ける試験結果【Demo 1が存在して削除されていない】
ワイヤレスLAN:
137891ec369c899b01cc3df6cad90360514827e7
GPRS下:
137891ec369c899b01cc3df6cad90360514827e7
フライトモード:
137891ec369c899b01cc3df6cad90360514827e7
c、Demo 1が存在し、Demo 2アプリケーションを削除して再ロードした後:
137891ec369c899b01cc3df6cad90360514827e7
d、LXF_を使用するOpenUDID方式のアプリケーションは全て削除【シャットダウンしてiPhoneを再起動し、Xcodeは完全にクリアして再起動する】Demo 2を再インストール
da0fd9abf16b6c8dade7e5228a6761b8adfc958b
2)異なる設備の下で
a、ブラックiPhone 4:
3be23eac6a6fc0721c184a0acfd5d54af4431bb7
b、ホワイトiPhone 4
b6d314050e29bf9dd12574320bec8f03354d8547
c、ブラックiPhone 4 S
965e60bd2a95e3c350066f56a44420d40822df96
(既存の3台の設備でそれぞれ交互にテストを繰り返す)
2、OpenUDIDテスト結果分析
1)メリット:
a、MACアドレスは使用されていません.MACアドレスはUDIDと同様にプライバシーに問題がある.今後MACアドレスが無効にならないことは保証できません.
b、異なる機器はそれぞれの一意の識別コードを取得することができ、一意性を保証し、従来のUDIDの関連用途に使用することができる.
c、コード分析OpenUDIDの取得から、識別コードの取得が便利で、保存が慎重である
OpenUDIDは一意の識別コードのコードを生成する:
unsigned char result[16];
        const char *cStr = [[[NSProcessInfo processInfo] globallyUniqueString] UTF8String];
        CC_MD5( cStr, strlen(cStr), result );
        _openUDID = [NSString stringWithFormat:
                     @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%08x",
                     result[0], result[1], result[2], result[3], 
                     result[4], result[5], result[6], result[7],
                     result[8], result[9], result[10], result[11],
                     result[12], result[13], result[14], result[15],
                     arc4random() % 4294967295]; 

OpenUDID方式を用いた最初のアプリケーションがデバイスに最初にデバッグされると、一意の識別コードが生成され、乱数40ビットを保持したUDIDが8つ追加され、NSUserDefaultsクラスを利用して識別コードが保存される.
しかし、削除が適用されると、UserDefaultsも同様に空になり、ユニークな識別コードの再生成を避けるために、このスキームはUIpasteboardクラス(デバイスクリップボード)にも使用され、識別コードをUIpasteboardに同時に保存する.
UIPasteboard* slotPB = [UIPasteboard pasteboardWithName:availableSlotPBid create:YES];
		[LXF_OpenUDID _setDict:localDict forPasteboard:slotPB];

d.OpenUDID方式を使用した2番目のアプリケーションがデバイスにインストールされると、UIcasteboardから一意の識別コードが取得され、ここでは、前の最初のアプリケーションがUIcasteboardに保存されている.【前提:機器にOpenUDIDを使用したアプリケーションが存在する】
2)欠点
a、デバイス上のOpenUDID方式を使用したすべてのアプリケーションを削除し、デバイスをシャットダウンして再起動すると、xcodeは完全にクリアして再起動し、アプリケーションを再インストールしてOpenUDIDを取得する.このとき、OpenUDIDは以前とは異なり、テスト結果から分かる.
b、欠点1から分析すると、すべてのOpenUDIDアプリケーションがアンインストールされた後、UIpasteboardによって保存されたデータがクリアされ、再ロードされたので新しいOpenUDIDが再取得される.
これにより、ユーザの介入や悪意のあるプログラムにより、UIpasteboardデータが消去され、OpenUDIDが削除され、リロードされても新しいOpenUDIDが取得される.
Demo参照