xiongzhu преди 10 месеца
родител
ревизия
b8d4a0b99b

+ 4 - 1
app/src/main/java/com/example/modifier/model/SpoofedSimInfo.kt → app/src/main/java/com/example/modifier/model/SpoofedInfo.kt

@@ -3,7 +3,7 @@ package com.example.modifier.model
 import kotlinx.serialization.Serializable
 
 @Serializable
-data class SpoofedSimInfo(
+data class SpoofedInfo(
     var numberId: Int,
     var number: String,
     var mcc: String,
@@ -21,4 +21,7 @@ data class SpoofedSimInfo(
     val bssid: String,
     val btMac: String,
     val ethMac: String,
+    val androidId: String,
+    val gmsAid: String,
+    val rootAid: String,
 )

+ 9 - 5
app/src/main/java/com/example/modifier/repo/BackupRepository.kt

@@ -19,10 +19,11 @@ import com.example.modifier.extension.disable
 import com.example.modifier.extension.enable
 import com.example.modifier.extension.kill
 import com.example.modifier.http.api.RcsNumberApi
-import com.example.modifier.model.SpoofedSimInfo
+import com.example.modifier.model.SpoofedInfo
 import com.example.modifier.service.ModifierService
 import com.example.modifier.utils.ROOT_ACCESS
 import com.example.modifier.utils.clearConv
+import com.example.modifier.utils.genAndroidId
 import com.example.modifier.utils.genMacAddress
 import com.example.modifier.utils.genSerialNo
 import com.example.modifier.utils.getContext
@@ -90,7 +91,7 @@ class BackupRepository(
 
         shellRun(*cmds.toTypedArray())
 
-        val spoofedSimInfo = spoofedInfoRepo.spoofedSimInfo.value
+        val spoofedSimInfo = spoofedInfoRepo.spoofedInfo.value
         val backup = BackupItem(
             createdAt = Date().time,
             numberId = spoofedSimInfo.numberId,
@@ -126,7 +127,7 @@ class BackupRepository(
     @SuppressLint("SdCardPath")
     suspend fun restore(backup: BackupItem): Boolean {
         val spoofedInfoRepo = SpoofedInfoRepo.instance
-        val simInfo = SpoofedSimInfo(
+        val simInfo = SpoofedInfo(
             numberId = backup.numberId,
             number = backup.number,
             mcc = backup.mcc,
@@ -143,9 +144,12 @@ class BackupRepository(
             wifiMac = genMacAddress(),
             bssid = genMacAddress(),
             btMac = genMacAddress(),
-            ethMac = genMacAddress()
+            ethMac = genMacAddress(),
+            androidId = genAndroidId(),
+            gmsAid = genAndroidId(),
+            rootAid = genAndroidId()
         )
-        spoofedInfoRepo.updateSpoofedSimInfo(spoofedSimInfo = simInfo, suspend = false)
+        spoofedInfoRepo.updateSpoofedSimInfo(spoofedInfo = simInfo, suspend = false)
         val packages = mutableListOf(
             PACKAGE_MESSAGING,
             PACKAGE_GMS,

+ 1 - 1
app/src/main/java/com/example/modifier/repo/SimInfoProvider.kt

@@ -51,7 +51,7 @@ class SimInfoProvider : ContentProvider() {
             )
         );
         runBlocking {
-            val simInfo = SpoofedInfoRepo.instance.spoofedSimInfo.value
+            val simInfo = SpoofedInfoRepo.instance.spoofedInfo.value
             if (simInfo != null) {
                 matrixCursor.addRow(
                     arrayOf(

+ 58 - 40
app/src/main/java/com/example/modifier/repo/SpoofedInfoRepo.kt

@@ -2,7 +2,6 @@ package com.example.modifier.repo
 
 import android.annotation.SuppressLint
 import android.content.Context
-import android.os.Build
 import android.telephony.SubscriptionManager
 import android.telephony.TelephonyManager
 import android.util.Log
@@ -18,9 +17,10 @@ import com.example.modifier.constants.PACKAGE_MESSAGING
 import com.example.modifier.constants.PACKAGE_PLAY
 import com.example.modifier.constants.SIMView
 import com.example.modifier.extension.kill
-import com.example.modifier.model.SpoofedSimInfo
+import com.example.modifier.model.SpoofedInfo
 import com.example.modifier.utils.ApduChannel
 import com.example.modifier.utils.SimEncoder
+import com.example.modifier.utils.genAndroidId
 import com.example.modifier.utils.genICCID
 import com.example.modifier.utils.genIMEI
 import com.example.modifier.utils.genIMSI
@@ -67,6 +67,9 @@ class SpoofedInfoRepo private constructor(private val context: Context) {
         val BSSID = stringPreferencesKey("bssid")
         val BT_MAC = stringPreferencesKey("bt_mac")
         val ETH_MAC = stringPreferencesKey("eth_mac")
+        val ANDROID_ID = stringPreferencesKey("android_id")
+        val GMS_AID = stringPreferencesKey("gms_aid")
+        val ROOT_AID = stringPreferencesKey("root_aid")
     }
 
     private val simInfoFlow = context.simInfoDataStore.data.map {
@@ -87,7 +90,10 @@ class SpoofedInfoRepo private constructor(private val context: Context) {
         val bssid = it[PreferencesKeys.BSSID] ?: ""
         val btMac = it[PreferencesKeys.BT_MAC] ?: ""
         val ethMac = it[PreferencesKeys.ETH_MAC] ?: ""
-        SpoofedSimInfo(
+        val androidId = it[PreferencesKeys.ANDROID_ID] ?: ""
+        val gmsAid = it[PreferencesKeys.GMS_AID] ?: ""
+        val rootAid = it[PreferencesKeys.ROOT_AID] ?: ""
+        SpoofedInfo(
             numberId = numberId,
             number = number,
             mcc = mcc,
@@ -104,12 +110,15 @@ class SpoofedInfoRepo private constructor(private val context: Context) {
             wifiMac = wifiMac,
             bssid = bssid,
             btMac = btMac,
-            ethMac = ethMac
+            ethMac = ethMac,
+            androidId = androidId,
+            gmsAid = gmsAid,
+            rootAid = rootAid
         )
     }
 
-    val spoofedSimInfo = MutableStateFlow(
-        SpoofedSimInfo(
+    val spoofedInfo = MutableStateFlow(
+        SpoofedInfo(
             numberId = 0,
             number = "",
             mcc = "",
@@ -126,42 +135,45 @@ class SpoofedInfoRepo private constructor(private val context: Context) {
             wifiMac = "",
             bssid = "",
             btMac = "",
-            ethMac = ""
+            ethMac = "",
+            androidId = "",
+            gmsAid = "",
+            rootAid = ""
         )
     )
 
     init {
         CoroutineScope(Dispatchers.IO).launch {
             simInfoFlow.collect {
-                spoofedSimInfo.emit(it)
+                spoofedInfo.emit(it)
             }
         }
     }
 
     @SuppressLint("MissingPermission")
-    suspend fun updateSpoofedSimInfo(spoofedSimInfo: SpoofedSimInfo, suspend: Boolean? = true) {
+    suspend fun updateSpoofedSimInfo(spoofedInfo: SpoofedInfo, suspend: Boolean? = true) {
         context.getSharedPreferences("share_sim_info", Context.MODE_PRIVATE)
             ?.edit()
-            ?.putString("imei", spoofedSimInfo.imei)
+            ?.putString("imei", spoofedInfo.imei)
             ?.apply()
         context.simInfoDataStore.edit {
-            it[PreferencesKeys.NUMBER_ID] = spoofedSimInfo.numberId
-            it[PreferencesKeys.NUMBER] = spoofedSimInfo.number
-            it[PreferencesKeys.MCC] = spoofedSimInfo.mcc
-            it[PreferencesKeys.MNC] = spoofedSimInfo.mnc
-            it[PreferencesKeys.ICCID] = spoofedSimInfo.iccid
-            it[PreferencesKeys.IMSI] = spoofedSimInfo.imsi
-            it[PreferencesKeys.IMEI] = spoofedSimInfo.imei
-            it[PreferencesKeys.COUNTRY] = spoofedSimInfo.country
-            it[PreferencesKeys.AREA_CODE] = spoofedSimInfo.areaCode
-            it[PreferencesKeys.AVAILABLE] = spoofedSimInfo.available
-            it[PreferencesKeys.CARRIER_ID] = spoofedSimInfo.carrierId
-            it[PreferencesKeys.CARRIER_NAME] = spoofedSimInfo.carrierName
-            it[PreferencesKeys.SERIAL_NO] = spoofedSimInfo.serialNo
-            it[PreferencesKeys.WIFI_MAC] = spoofedSimInfo.wifiMac
-            it[PreferencesKeys.BSSID] = spoofedSimInfo.bssid
-            it[PreferencesKeys.BT_MAC] = spoofedSimInfo.btMac
-            it[PreferencesKeys.ETH_MAC] = spoofedSimInfo.ethMac
+            it[PreferencesKeys.NUMBER_ID] = spoofedInfo.numberId
+            it[PreferencesKeys.NUMBER] = spoofedInfo.number
+            it[PreferencesKeys.MCC] = spoofedInfo.mcc
+            it[PreferencesKeys.MNC] = spoofedInfo.mnc
+            it[PreferencesKeys.ICCID] = spoofedInfo.iccid
+            it[PreferencesKeys.IMSI] = spoofedInfo.imsi
+            it[PreferencesKeys.IMEI] = spoofedInfo.imei
+            it[PreferencesKeys.COUNTRY] = spoofedInfo.country
+            it[PreferencesKeys.AREA_CODE] = spoofedInfo.areaCode
+            it[PreferencesKeys.AVAILABLE] = spoofedInfo.available
+            it[PreferencesKeys.CARRIER_ID] = spoofedInfo.carrierId
+            it[PreferencesKeys.CARRIER_NAME] = spoofedInfo.carrierName
+            it[PreferencesKeys.SERIAL_NO] = spoofedInfo.serialNo
+            it[PreferencesKeys.WIFI_MAC] = spoofedInfo.wifiMac
+            it[PreferencesKeys.BSSID] = spoofedInfo.bssid
+            it[PreferencesKeys.BT_MAC] = spoofedInfo.btMac
+            it[PreferencesKeys.ETH_MAC] = spoofedInfo.ethMac
         }
         try {
             runCatching {
@@ -170,7 +182,7 @@ class SpoofedInfoRepo private constructor(private val context: Context) {
                 )
                 FileUtils.writeStringToFile(
                     jsonFile,
-                    Json.encodeToString(spoofedSimInfo),
+                    Json.encodeToString(spoofedInfo),
                     Charsets.UTF_8
                 )
                 shellRun(
@@ -190,8 +202,8 @@ class SpoofedInfoRepo private constructor(private val context: Context) {
             val context = getContext()
 
             runCatching {
-                val plmn = spoofedSimInfo.mcc + spoofedSimInfo.mnc
-                val plmnHex = SimEncoder.encPLMN(spoofedSimInfo.mcc + spoofedSimInfo.mnc)
+                val plmn = spoofedInfo.mcc + spoofedInfo.mnc
+                val plmnHex = SimEncoder.encPLMN(spoofedInfo.mcc + spoofedInfo.mnc)
                 val plmnwactHex = SimEncoder.encPLMNwAcT("$plmn:4000,$plmn:8000,$plmn:0080")
                 val fplmn =
                     SimEncoder.encPLMN("46000,46001,46002,46006,46007,46011,46012,46015,46020")
@@ -200,20 +212,20 @@ class SpoofedInfoRepo private constructor(private val context: Context) {
                 val apduChannel = ApduChannel(telephonyManager, SIMView.AID_CUSTOM)
                 apduChannel.select(SIMView.FID_MF)
                 apduChannel.select(SIMView.FID_EF_ICCID)
-                apduChannel.writeBinary(SimEncoder.encICCID(spoofedSimInfo.iccid))
+                apduChannel.writeBinary(SimEncoder.encICCID(spoofedInfo.iccid))
 
                 apduChannel.select(SIMView.FID_MF)
                 apduChannel.select(SIMView.FID_DF_TELECOM)
                 apduChannel.select(SIMView.FID_EF_MSISDN)
                 apduChannel.writeRecord(
-                    1, SimEncoder.encMSISDN(spoofedSimInfo.number)
+                    1, SimEncoder.encMSISDN(spoofedInfo.number)
                         .padStart(56, 'F')
                 )
 
                 apduChannel.select(SIMView.FID_MF)
                 apduChannel.select(SIMView.FID_DF_GSM)
                 apduChannel.select(SIMView.FID_EF_IMSI)
-                apduChannel.writeBinary(SimEncoder.encIMSI(spoofedSimInfo.imsi))
+                apduChannel.writeBinary(SimEncoder.encIMSI(spoofedInfo.imsi))
 
                 apduChannel.select(SIMView.FID_EF_PLMNSEL)
                 apduChannel.writeBinary(plmnHex.padEnd(120, 'f'))
@@ -248,7 +260,7 @@ class SpoofedInfoRepo private constructor(private val context: Context) {
                 apduChannel.close()
 
                 val apduChannel1 = ApduChannel(telephonyManager, SIMView.AID_USIM)
-                apduChannel1.writeMSISDN_USIM(spoofedSimInfo.number)
+                apduChannel1.writeMSISDN_USIM(spoofedInfo.number)
                 apduChannel.close()
 
                 runCatching {
@@ -272,8 +284,8 @@ class SpoofedInfoRepo private constructor(private val context: Context) {
                             val activeSubscriptionInfoList =
                                 subscriptionManager.activeSubscriptionInfoList
                             activeSubscriptionInfoList?.forEach {
-                                Log.i(TAG, "iccid:${it.iccId} target:${spoofedSimInfo.iccid}")
-                                if (it.iccId == spoofedSimInfo.iccid) {
+                                Log.i(TAG, "iccid:${it.iccId} target:${spoofedInfo.iccid}")
+                                if (it.iccId == spoofedInfo.iccid) {
                                     Log.i(TAG, "rebootModem: success")
                                     return@rebootModem
                                 }
@@ -328,7 +340,7 @@ class SpoofedInfoRepo private constructor(private val context: Context) {
                 .firstOrNull()
                 ?.let {
                     updateSpoofedSimInfo(
-                        SpoofedSimInfo(
+                        SpoofedInfo(
                             numberId = 0,
                             number = it,
                             mcc = "310",
@@ -345,7 +357,10 @@ class SpoofedInfoRepo private constructor(private val context: Context) {
                             wifiMac = genMacAddress(),
                             bssid = genMacAddress(),
                             btMac = genMacAddress(),
-                            ethMac = genMacAddress()
+                            ethMac = genMacAddress(),
+                            androidId = genAndroidId(),
+                            gmsAid = genAndroidId(),
+                            rootAid = genAndroidId()
                         ),
                         suspend = false
                     )
@@ -360,7 +375,7 @@ class SpoofedInfoRepo private constructor(private val context: Context) {
                 .firstOrNull()
                 ?.let {
                     updateSpoofedSimInfo(
-                        SpoofedSimInfo(
+                        SpoofedInfo(
                             numberId = 0,
                             number = it,
                             mcc = "310",
@@ -377,7 +392,10 @@ class SpoofedInfoRepo private constructor(private val context: Context) {
                             wifiMac = genMacAddress(),
                             bssid = genMacAddress(),
                             btMac = genMacAddress(),
-                            ethMac = genMacAddress()
+                            ethMac = genMacAddress(),
+                            androidId = genAndroidId(),
+                            gmsAid = genAndroidId(),
+                            rootAid = genAndroidId()
                         )
                     )
                 }

+ 1 - 1
app/src/main/java/com/example/modifier/service/ModifierService.kt

@@ -200,7 +200,7 @@ class ModifierService : AccessibilityService() {
                 }
             }
             launch {
-                spoofedInfoRepo.spoofedSimInfo.collect {
+                spoofedInfoRepo.spoofedInfo.collect {
                     withContext(Dispatchers.Main) {
                         binding.tvCountry.text = it.country
                     }

+ 1 - 1
app/src/main/java/com/example/modifier/service/SocketClient.kt

@@ -290,7 +290,7 @@ class SocketClient(
             val dataObj = JSONObject()
             dataObj.put("canSend", AppStateRepo.instance.appState.value.send)
             dataObj.put("busy", AppStateRepo.instance.appState.value.busy)
-            dataObj.put("currentCountry", SpoofedInfoRepo.instance.spoofedSimInfo.value.country)
+            dataObj.put("currentCountry", SpoofedInfoRepo.instance.spoofedInfo.value.country)
             dataObj.put("ip", getIPAddress().joinToString(","))
             dataObj.put(
                 "requesting",

+ 17 - 13
app/src/main/java/com/example/modifier/service/TaskRunner.kt

@@ -30,7 +30,7 @@ import com.example.modifier.http.ktorClient
 import com.example.modifier.http.response.SysConfigResponse
 import com.example.modifier.model.InstallApkAction
 import com.example.modifier.model.RunScriptAction
-import com.example.modifier.model.SpoofedSimInfo
+import com.example.modifier.model.SpoofedInfo
 import com.example.modifier.model.TaskAction
 import com.example.modifier.model.TaskConfig
 import com.example.modifier.model.TaskExecutionResult
@@ -41,6 +41,7 @@ import com.example.modifier.repo.BackupRepository
 import com.example.modifier.repo.GmsgStateRepo
 import com.example.modifier.repo.SpoofedInfoRepo
 import com.example.modifier.utils.clearConv
+import com.example.modifier.utils.genAndroidId
 import com.example.modifier.utils.genICCID
 import com.example.modifier.utils.genIMSI
 import com.example.modifier.utils.genMacAddress
@@ -194,11 +195,11 @@ class TaskRunner(
             currentTaskId = taskAction.data.taskId
             requestMode = if (taskAction.data.config.useBackup) 2 else 1
 
-            if (!spoofedInfoRepo.spoofedSimInfo.value.available ||
+            if (!spoofedInfoRepo.spoofedInfo.value.available ||
                 (taskAction.data.config.checkConnection && appStateRepo.appState.value.executedNum == 0)
             ) {
                 appStateRepo.updateRuntimeFlags(checkingConnection = true)
-                if (!spoofedInfoRepo.spoofedSimInfo.value.available || !checkRcsA10y()) {
+                if (!spoofedInfoRepo.spoofedInfo.value.available || !checkRcsA10y()) {
                     onError(Exception("RCS not available"))
                     requestNumberOnTask()
                     appStateRepo.updateRuntimeFlags(checkingConnection = false)
@@ -213,7 +214,7 @@ class TaskRunner(
                 val taskItem = taskAction.data.tasks[i]
                 val result = TaskExecutionResult(
                     id = taskItem.id,
-                    numberId = spoofedInfoRepo.spoofedSimInfo.value.numberId
+                    numberId = spoofedInfoRepo.spoofedInfo.value.numberId
                 )
                 results.add(result)
                 try {
@@ -411,24 +412,27 @@ class TaskRunner(
         appStateRepo.updateRuntimeFlags(reqState = ReqState.OTP_1)
 
         spoofedInfoRepo.updateSpoofedSimInfo(
-            SpoofedSimInfo(
+            SpoofedInfo(
                 numberId = rcsNumber.id,
                 number = rcsNumber.number,
                 mcc = rcsNumber.mcc,
                 mnc = rcsNumber.mnc,
                 iccid = genICCID(rcsNumber.mnc, rcsNumber.areaCode),
                 imsi = genIMSI(rcsNumber.mcc + rcsNumber.mnc),
-                imei = spoofedInfoRepo.spoofedSimInfo.value.imei,
+                imei = spoofedInfoRepo.spoofedInfo.value.imei,
                 country = rcsNumber.country,
                 areaCode = rcsNumber.areaCode,
                 available = false,
                 carrierId = rcsNumber.carrierId,
                 carrierName = rcsNumber.carrierName,
-                serialNo = spoofedInfoRepo.spoofedSimInfo.value.serialNo,
+                serialNo = spoofedInfoRepo.spoofedInfo.value.serialNo,
                 wifiMac = genMacAddress(),
                 bssid = genMacAddress(),
                 btMac = genMacAddress(),
                 ethMac = genMacAddress(),
+                androidId = genAndroidId(),
+                gmsAid = genAndroidId(),
+                rootAid = genAndroidId(),
             )
         )
 
@@ -540,7 +544,7 @@ class TaskRunner(
         }
         appStateRepo.updateRuntimeFlags(reqState = ReqState.CLEAN)
         clearConv()
-        if (spoofedInfoRepo.spoofedSimInfo.value.available) {
+        if (spoofedInfoRepo.spoofedInfo.value.available) {
             backupRepository.backup(
                 type = "auto",
                 sendCount = appStateRepo.appState.value.successNum
@@ -554,7 +558,7 @@ class TaskRunner(
                 try {
                     if (requestMode == 2 && !noBackup) {
                         val backup = backupRepository.findBackupForRestore(
-                            spoofedInfoRepo.spoofedSimInfo.value.number
+                            spoofedInfoRepo.spoofedInfo.value.number
                         )
                         if (backup != null) {
                             AppStateRepo.instance.updateRuntimeFlags(reqState = ReqState.RESTORE)
@@ -567,7 +571,7 @@ class TaskRunner(
                     }
 
                     needRest = needRest || appStateRepo.appState.value.requestedNum >= 3
-                            || spoofedInfoRepo.spoofedSimInfo.value.available
+                            || spoofedInfoRepo.spoofedInfo.value.available
                     if (needRest && !appPrefsRepo.appPrefs.value.preventReset) {
                         reset()
                         needRest = false
@@ -664,7 +668,7 @@ class TaskRunner(
             false
         }
         if (!availability) {
-            RcsNumberApi.notifyWasted(spoofedInfoRepo.spoofedSimInfo.value.numberId)
+            RcsNumberApi.notifyWasted(spoofedInfoRepo.spoofedInfo.value.numberId)
         }
         return availability
     }
@@ -767,7 +771,7 @@ class TaskRunner(
         storeNumberJob = CoroutineScope(coroutineContext).launch {
             try {
                 appStateRepo.updateRuntimeFlags(storing = true)
-                if (spoofedInfoRepo.spoofedSimInfo.value.available && appStateRepo.appState.value.successNum <= 5) {
+                if (spoofedInfoRepo.spoofedInfo.value.available && appStateRepo.appState.value.successNum <= 5) {
                     screenController.toggleRcsSwitch(false)
                     backupRepository.backup(
                         type = "auto",
@@ -794,7 +798,7 @@ class TaskRunner(
                         screenController.toggleRcsSwitch(false)
                         backupRepository.backup(type = "auto", sendCount = 0, stock = 1)
                         RcsNumberApi.updateStockFlag(
-                            id = spoofedInfoRepo.spoofedSimInfo.value.numberId,
+                            id = spoofedInfoRepo.spoofedInfo.value.numberId,
                             flag = 1
                         )
                         success = true

+ 13 - 6
app/src/main/java/com/example/modifier/ui/settings/SettingsFragment.kt

@@ -34,9 +34,10 @@ import com.example.modifier.http.api.RcsNumberApi
 import com.example.modifier.http.ktorClient
 import com.example.modifier.http.request.RcsNumberRequest
 import com.example.modifier.http.response.RcsNumberResponse
-import com.example.modifier.model.SpoofedSimInfo
+import com.example.modifier.model.SpoofedInfo
 import com.example.modifier.repo.AppPrefsRepo
 import com.example.modifier.repo.SpoofedInfoRepo
+import com.example.modifier.utils.genAndroidId
 import com.example.modifier.utils.genICCID
 import com.example.modifier.utils.genIMEI
 import com.example.modifier.utils.genIMSI
@@ -191,7 +192,7 @@ class SettingsFragment : Fragment() {
                         Log.i(TAG, "response: ${response.bodyAsText()}")
                         val res = response.body<RcsNumberResponse>()
                         spoofedInfoRepo.updateSpoofedSimInfo(
-                            SpoofedSimInfo(
+                            SpoofedInfo(
                                 numberId = res.id,
                                 number = res.number,
                                 mcc = res.mcc,
@@ -208,7 +209,10 @@ class SettingsFragment : Fragment() {
                                 wifiMac = genMacAddress(),
                                 bssid = genMacAddress(),
                                 btMac = genMacAddress(),
-                                ethMac = genMacAddress()
+                                ethMac = genMacAddress(),
+                                androidId = genAndroidId(),
+                                gmsAid = genAndroidId(),
+                                rootAid = genAndroidId()
                             )
                         )
                     }
@@ -362,7 +366,7 @@ class SettingsFragment : Fragment() {
                 }
             }
             launch {
-                spoofedInfoRepo.spoofedSimInfo.collect {
+                spoofedInfoRepo.spoofedInfo.collect {
                     binding.etNumber.setText(it.number)
                     binding.etMcc.setText(it.mcc)
                     binding.etMnc.setText(it.mnc)
@@ -386,7 +390,7 @@ class SettingsFragment : Fragment() {
         lifecycleScope.launch {
             withContext(Dispatchers.IO) {
                 spoofedInfoRepo.updateSpoofedSimInfo(
-                    spoofedSimInfo = SpoofedSimInfo(
+                    spoofedInfo = SpoofedInfo(
                         0,
                         binding.etNumber.text.toString(),
                         binding.etMcc.text.toString(),
@@ -403,7 +407,10 @@ class SettingsFragment : Fragment() {
                         genMacAddress(),
                         genMacAddress(),
                         genMacAddress(),
-                        genMacAddress()
+                        genMacAddress(),
+                        genAndroidId(),
+                        genAndroidId(),
+                        genAndroidId()
                     ),
                     suspend = true
                 )