본문 바로가기

Android

Android unique ID for TIZZBIRD

안드로이드 유니크 아이디 알아내기...

1. IMEI : 전화가 있는 안드로이드 기기일 경우, 아닌 경우는 00000000 이거나 null 이거나... Tizz에선 null...

TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);

String m_szImei = TelephonyMgr.getDeviceId(); // Requires READ_PHONE_STATE


2. DEVICE ID : IMEI 처럼 만들기.. 대부분의 경우 유효

String m_szDevIDShort = "35" + //we make this look like a valid IMEI

        Build.BOARD.length()%10+ Build.BRAND.length()%10 + 

        Build.CPU_ABI.length()%10 + Build.DEVICE.length()%10 + 

        Build.DISPLAY.length()%10 + Build.HOST.length()%10 + 

        Build.ID.length()%10 + Build.MANUFACTURER.length()%10 + 

        Build.MODEL.length()%10 + Build.PRODUCT.length()%10 + 

        Build.TAGS.length()%10 + Build.TYPE.length()%10 + 

        Build.USER.length()%10 ; //13 digits


3.  Android ID : 신뢰할 수 없음

String m_szAndroidID = Secure.getString(getContentResolver(), Secure.ANDROID_ID);


4. MAC 주소 이용 : 에뮬레이터에선 null...

WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);

String m_szWLANMAC = wm.getConnectionInfo().getMacAddress();


5. Bluetooth MAC 주소 이용 : android.permission.ACCESS_WIFI_STATE 필요... 없으면 null

BluetoothAdapter m_BluetoothAdapter = null; // Local Bluetooth adapter

m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

String m_szBTMAC;

try  {

m_szBTMAC = m_BluetoothAdapter.getAddress();

} catch (Exception e)  {

m_szBTMAC = null;

}


6. 위의 것을 모두 합쳐 만든 ID : MD5 이용

String m_szLongID = m_szImei + m_szDevIDShort + m_szAndroidID+ m_szWLANMAC + m_szBTMAC;

MessageDigest m = null;

try {

m = MessageDigest.getInstance("MD5");

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

m.update(m_szLongID.getBytes(),0,m_szLongID.length());

byte p_md5Data[] = m.digest();

String m_szUniqueID = new String();

for (int i=0;i<p_md5Data.length;i++) {

int b =  (0xFF & p_md5Data[i]);

// if it is a single digit, make sure it have 0 in front (proper padding)

if (b <= 0xF) m_szUniqueID+="0";

// add number to string

m_szUniqueID+=Integer.toHexString(b); 

}

m_szUniqueID = m_szUniqueID.toUpperCase();


출처 : http://www.pocketmagic.net/?p=1662