رفتن به مطلب
  • 0

ایجاد یک شناسه خاص برای دستگاه (پرکاربرد برای تمام برنامه نویسان)


fun_code

سوال

سلام دوستان

شاید الان زمان این فرا رسیده که در مورد ایجاد یک شناسه خاص برای دستگاه هم فکری کنیم.

اکثر ماها برای مدیریت و یا محدود کردن ثبت نام یا مدیریت خریدها از سریال دستگاه IMEI استفاده میکنیم که براحتی قابل تغییر دادن هست و بدتر اینکه دسترسی بدی نیاز داره که کاربر رو میترسونه...

دسترسی به مخاطبین و لاگ تماس ها.

علاوه بر IMEI خیلی ها از AndroidID و یا MAC Address استفاده میکنن و نیاز به دسترسی خاصی نداره اما براحتی قابل تغییر هست.

حال چه کنیم که یک کد خاص و بدون تغییر رو ایجاد کنیم که نیاز به هیچ دسترسی هم نداشته باشه ؟

اگر وب سایت و سیستم پوشه رو بشناسید ، میاد زمان اولین اجرا یه شناسه خاص برای دستگاه ایجاد میکنه و احتمالا قابل تغییر هم نیست.

به نظرتون چطور این شناسه ایجاد میشه ؟ اگر هم خوب نیست و دسترسی خاصی رو میگیره چطور خودمون ایجاد کنیم ؟

پیشاپیش از همراهی شما عزیزان سپاسگزارم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

4 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

در 21 ساعت قبل، محمدرضا شاهپیری گفته است :

 

سلام استاد

بسیار متشکرم

البته برای تستش باید بدونیم چه فیلدهایی رو میگیره که سعی کنیم اونا رو تغییر بدیم و گوشی هم باید روت باشه ...

 

این کتابخانه رو قبلا ساختید یا چون نیاز مهمی است ایجادش کردید ؟

اگر درست کار کنه میتونیم بگیم در نوع خودش تکه چون در وب سایت رسمی هم در این مورد گیر کرده بودن و از مواردی استفاده میکردن که قابل تعویضه...

جسارتا به سیم کارت و ... محل قرار گیری یک سیم کارت (در دستگاه های دو سیم کارت) که ارتباطی نداره ؟

جسارتا

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خروجی کتابخانه شما چیزی شبیه به کد زیر هست که چند روز پیش در وب سایت رسمی پیدا کردم اما بهش اطمینان نکردم.

اما به کتابخانه شما اطمینان دارم :i_am_so_happy:

Sub Activity_Create(FirstTime As Boolean)
	Dim nativeMe As JavaObject
	nativeMe.InitializeContext
	Msgbox(nativeMe.RunMethod("getPsuedoUniqueID", Null),"")
End Sub

#if Java
import android.content.Context;
import android.os.Build;
import android.provider.Settings;
import java.io.IOException;
import java.util.UUID;
private String initialVal = "";
  public String getPsuedoUniqueID() {
    // If all else fails, if the user does have lower than API 9 (lower
    // than Gingerbread), has reset their phone or 'Secure.ANDROID_ID'
    // returns 'null', then simply the ID returned will be solely based
    // off their Android device information. This is where the collisions
    // can happen.
    // Try not to use DISPLAY, HOST or ID - these items could change.
    // If there are collisions, there will be overlapping data
    String devIDShort = "35" +
        (Build.BOARD.length() % 10) + (Build.BRAND.length() % 10);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
      devIDShort += (Build.SUPPORTED_ABIS[0].length() % 10);
    } else {
      devIDShort += (Build.CPU_ABI.length() % 10);
    }

    devIDShort +=
        (Build.DEVICE.length() % 10) + (Build.MANUFACTURER.length() % 10) + (Build.MODEL.length()
            % 10) + (Build.PRODUCT.length() % 10);

    // Only devices with API >= 9 have android.os.Build.SERIAL
    // http://developer.android.com/reference/android/os/Build.html#SERIAL
    // If a user upgrades software or roots their phone, there will be a duplicate entry
    String serial;
    try {
      serial = Build.class.getField("SERIAL").get(null).toString();

      // Go ahead and return the serial for api => 9
      return new UUID(devIDShort.hashCode(), serial.hashCode()).toString();
    } catch (Exception e) {
      // String needs to be initialized
      serial = "ESYDV000"; // some value
    }
    // Finally, combine the values we have found by using the UUID class to create a unique identifier
    return new UUID(devIDShort.hashCode(), serial.hashCode()).toString();
  }  
#End If

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 9 دقیقه قبل، fun_code گفته است :

خروجی کتابخانه شما چیزی شبیه به کد زیر هست که چند روز پیش در وب سایت رسمی پیدا کردم اما بهش اطمینان نکردم.

اما به کتابخانه شما اطمینان دارم :i_am_so_happy:

 

سلام دوست عزیز. این کد چندتا باگ داشت که به راحتی میشد با روت کردن و تغییر سریال تغییرش داد. باگاشو من تو کتابخونه برطرف کردم و دیگه به این راحتیا قابل تغییر نیست. ربطی به سیمکارت و سریال و imei و این چیزا نداره. تنها راه دور زدنش زدن رام کاستوم هست یعنی حتی با آپدیت به اندروید جدید (رسمی از خود شرکت سازنده گوشی) هم قابل تغییر نیست.

دوستان همه تست کنن ایشالا که موردی نباشه.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...