|
|
@@ -174,74 +174,74 @@ class SpoofedSimInfoRepo private constructor(private val context: Context) {
|
|
|
PACKAGE_GMS.kill(),
|
|
|
PACKAGE_MESSAGING.kill()
|
|
|
)
|
|
|
- }
|
|
|
|
|
|
- val plmn = spoofedSimInfo.mcc + spoofedSimInfo.mnc
|
|
|
- val plmnHex = SimEncoder.encPLMN(spoofedSimInfo.mcc + spoofedSimInfo.mnc)
|
|
|
- val plmnwactHex = SimEncoder.encPLMNwAcT("$plmn:4000,$plmn:8000,$plmn:0080")
|
|
|
- val fplmn =
|
|
|
- SimEncoder.encPLMN("46000,46001,46002,46006,46007,46011,46012,46015,46020")
|
|
|
- val telephonyManager =
|
|
|
- context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
|
|
|
- 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.select(SIMView.FID_MF)
|
|
|
- apduChannel.select(SIMView.FID_DF_TELECOM)
|
|
|
- apduChannel.select(SIMView.FID_EF_MSISDN)
|
|
|
- apduChannel.writeRecord(
|
|
|
- 1, SimEncoder.encMSISDN(spoofedSimInfo.number)
|
|
|
- .padStart(56, 'F')
|
|
|
- )
|
|
|
+ val plmn = spoofedSimInfo.mcc + spoofedSimInfo.mnc
|
|
|
+ val plmnHex = SimEncoder.encPLMN(spoofedSimInfo.mcc + spoofedSimInfo.mnc)
|
|
|
+ val plmnwactHex = SimEncoder.encPLMNwAcT("$plmn:4000,$plmn:8000,$plmn:0080")
|
|
|
+ val fplmn =
|
|
|
+ SimEncoder.encPLMN("46000,46001,46002,46006,46007,46011,46012,46015,46020")
|
|
|
+ val telephonyManager =
|
|
|
+ context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
|
|
|
+ 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.select(SIMView.FID_MF)
|
|
|
+ apduChannel.select(SIMView.FID_DF_TELECOM)
|
|
|
+ apduChannel.select(SIMView.FID_EF_MSISDN)
|
|
|
+ apduChannel.writeRecord(
|
|
|
+ 1, SimEncoder.encMSISDN(spoofedSimInfo.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.select(SIMView.FID_MF)
|
|
|
+ apduChannel.select(SIMView.FID_DF_GSM)
|
|
|
+ apduChannel.select(SIMView.FID_EF_IMSI)
|
|
|
+ apduChannel.writeBinary(SimEncoder.encIMSI(spoofedSimInfo.imsi))
|
|
|
|
|
|
- apduChannel.select(SIMView.FID_EF_PLMNSEL)
|
|
|
- apduChannel.writeBinary(plmnHex.padEnd(120, 'f'))
|
|
|
+ apduChannel.select(SIMView.FID_EF_PLMNSEL)
|
|
|
+ apduChannel.writeBinary(plmnHex.padEnd(120, 'f'))
|
|
|
|
|
|
- apduChannel.select(SIMView.FID_EF_EHPLMN)
|
|
|
- apduChannel.writeBinary(plmnHex.padEnd(24, 'f'))
|
|
|
+ apduChannel.select(SIMView.FID_EF_EHPLMN)
|
|
|
+ apduChannel.writeBinary(plmnHex.padEnd(24, 'f'))
|
|
|
|
|
|
- apduChannel.select(SIMView.FID_EF_PLMNWACT)
|
|
|
- apduChannel.writeBinary(plmnwactHex.padEnd(240, 'f'))
|
|
|
+ apduChannel.select(SIMView.FID_EF_PLMNWACT)
|
|
|
+ apduChannel.writeBinary(plmnwactHex.padEnd(240, 'f'))
|
|
|
|
|
|
- apduChannel.select(SIMView.FID_EF_OPLMNWACT)
|
|
|
- apduChannel.writeBinary(plmnwactHex.padEnd(120, 'f'))
|
|
|
+ apduChannel.select(SIMView.FID_EF_OPLMNWACT)
|
|
|
+ apduChannel.writeBinary(plmnwactHex.padEnd(120, 'f'))
|
|
|
|
|
|
- apduChannel.select(SIMView.FID_EF_HPLMNWACT)
|
|
|
- apduChannel.writeBinary(plmnwactHex.padEnd(40, 'f'))
|
|
|
+ apduChannel.select(SIMView.FID_EF_HPLMNWACT)
|
|
|
+ apduChannel.writeBinary(plmnwactHex.padEnd(40, 'f'))
|
|
|
|
|
|
- apduChannel.select(SIMView.FID_EF_FPLMN)
|
|
|
- apduChannel.writeBinary(fplmn.padEnd(60, 'f'))
|
|
|
+ apduChannel.select(SIMView.FID_EF_FPLMN)
|
|
|
+ apduChannel.writeBinary(fplmn.padEnd(60, 'f'))
|
|
|
|
|
|
- if (plmn.isNotEmpty()) {
|
|
|
- if (plmn.length == 5) {
|
|
|
- apduChannel.select(SIMView.FID_EF_AD)
|
|
|
- apduChannel.writeBinary("00000102")
|
|
|
- } else if (plmn.length == 6) {
|
|
|
- apduChannel.select(SIMView.FID_EF_AD)
|
|
|
- apduChannel.writeBinary("00000103")
|
|
|
+ if (plmn.isNotEmpty()) {
|
|
|
+ if (plmn.length == 5) {
|
|
|
+ apduChannel.select(SIMView.FID_EF_AD)
|
|
|
+ apduChannel.writeBinary("00000102")
|
|
|
+ } else if (plmn.length == 6) {
|
|
|
+ apduChannel.select(SIMView.FID_EF_AD)
|
|
|
+ apduChannel.writeBinary("00000103")
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- apduChannel.close()
|
|
|
+ apduChannel.close()
|
|
|
|
|
|
- val apduChannel1 = ApduChannel(telephonyManager, SIMView.AID_USIM)
|
|
|
- apduChannel1.writeMSISDN_USIM(spoofedSimInfo.number)
|
|
|
- apduChannel.close()
|
|
|
+ val apduChannel1 = ApduChannel(telephonyManager, SIMView.AID_USIM)
|
|
|
+ apduChannel1.writeMSISDN_USIM(spoofedSimInfo.number)
|
|
|
+ apduChannel.close()
|
|
|
|
|
|
- telephonyManager.rebootModem()
|
|
|
- delay(5000)
|
|
|
+ telephonyManager.rebootModem()
|
|
|
+ delay(5000)
|
|
|
|
|
|
- if (suspend == true) {
|
|
|
shellRun(
|
|
|
PACKAGE_GMS.kill(),
|
|
|
PACKAGE_MESSAGING.kill()
|
|
|
)
|
|
|
+ delay(1000)
|
|
|
resumePackage(PACKAGE_GMS, PACKAGE_MESSAGING)
|
|
|
}
|
|
|
}
|