Created
July 28, 2020 14:06
-
-
Save ZVNexus/3ea9b894f5d1b1967f595da3accdc553 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.android.carrierconfig; | |
import android.os.Build; | |
import android.os.PersistableBundle; | |
import android.service.carrier.CarrierIdentifier; | |
import android.service.carrier.CarrierService; | |
import android.text.TextUtils; | |
import android.util.Log; | |
import java.io.IOException; | |
import java.util.regex.Pattern; | |
import org.xmlpull.v1.XmlPullParser; | |
import org.xmlpull.v1.XmlPullParserException; | |
import org.xmlpull.v1.XmlPullParserFactory; | |
public class DefaultCarrierConfigService extends CarrierService { | |
private XmlPullParserFactory mFactory; | |
public DefaultCarrierConfigService() { | |
Log.d("DefaultCarrierConfigService", "Service created"); | |
this.mFactory = null; | |
} | |
private static boolean carrierCheckGid1PrefixBytes(String var0, String var1) { | |
StringBuilder var2 = new StringBuilder(); | |
var2.append("carrierCheckGid1StartBytes() currMcc = "); | |
var2.append(var0); | |
var2.append(", currMnc = "); | |
var2.append(var1); | |
Log.d("DefaultCarrierConfigService", var2.toString()); | |
if (var0 != null && var1 != null && var0.equals("234") && var1.equals("10")) { | |
Log.d("DefaultCarrierConfigService", "carrierCheckGid1StartBytes() return true"); | |
return true; | |
} else { | |
Log.d("DefaultCarrierConfigService", "carrierCheckGid1StartBytes() return false"); | |
return false; | |
} | |
} | |
static boolean checkFilters(XmlPullParser var0, CarrierIdentifier var1) { | |
String var2 = null; | |
String var3 = var2; | |
int var4 = 0; | |
boolean var5; | |
String var11; | |
for(var5 = true; var4 < var0.getAttributeCount(); var3 = var11) { | |
String var6 = var0.getAttributeName(var4); | |
String var7 = var0.getAttributeValue(var4); | |
byte var8 = -1; | |
switch(var6.hashCode()) { | |
case -1335157162: | |
if (var6.equals("device")) { | |
var8 = 6; | |
} | |
break; | |
case 98494: | |
if (var6.equals("cid")) { | |
var8 = 8; | |
} | |
break; | |
case 107917: | |
if (var6.equals("mcc")) { | |
var8 = 0; | |
} | |
break; | |
case 108258: | |
if (var6.equals("mnc")) { | |
var8 = 1; | |
} | |
break; | |
case 114097: | |
if (var6.equals("spn")) { | |
var8 = 4; | |
} | |
break; | |
case 3172527: | |
if (var6.equals("gid1")) { | |
var8 = 2; | |
} | |
break; | |
case 3172528: | |
if (var6.equals("gid2")) { | |
var8 = 3; | |
} | |
break; | |
case 3236474: | |
if (var6.equals("imsi")) { | |
var8 = 5; | |
} | |
break; | |
case 3373707: | |
if (var6.equals("name")) { | |
var8 = 9; | |
} | |
break; | |
case 100017508: | |
if (var6.equals("iccid")) { | |
var8 = 7; | |
} | |
} | |
boolean var9; | |
String var10; | |
label141: { | |
label140: { | |
var9 = var5; | |
var10 = var2; | |
var11 = var3; | |
StringBuilder var12; | |
switch(var8) { | |
case 0: | |
if (var5 && var7.equals(var1.getMcc())) { | |
var9 = true; | |
} else { | |
var9 = false; | |
} | |
var11 = var3; | |
var10 = var7; | |
break label141; | |
case 1: | |
if (var5 && var7.equals(var1.getMnc())) { | |
var9 = true; | |
} else { | |
var9 = false; | |
} | |
var10 = var2; | |
var11 = var7; | |
break label141; | |
case 2: | |
label95: { | |
label94: { | |
var12 = new StringBuilder(); | |
var12.append("checkFilters() check gid1 = "); | |
var12.append(var7); | |
var12.append(", result = "); | |
var12.append(var5); | |
Log.d("DefaultCarrierConfigService", var12.toString()); | |
if (carrierCheckGid1PrefixBytes(var2, var3)) { | |
if (var5 && startsWithIgnoreCase(var1.getGid1(), var7)) { | |
break label94; | |
} | |
} else if (var5 && var7.equalsIgnoreCase(var1.getGid1())) { | |
break label94; | |
} | |
var9 = false; | |
break label95; | |
} | |
var9 = true; | |
} | |
var12 = new StringBuilder(); | |
var12.append("checkFilters() exit gid1 = "); | |
var12.append(var7); | |
var12.append(", result = "); | |
var12.append(var9); | |
Log.d("DefaultCarrierConfigService", var12.toString()); | |
var10 = var2; | |
var11 = var3; | |
break label141; | |
case 3: | |
if (!var5 || !var7.equalsIgnoreCase(var1.getGid2())) { | |
break label140; | |
} | |
break; | |
case 4: | |
if (!var5 || !matchOnSP(var7, var1)) { | |
break label140; | |
} | |
break; | |
case 5: | |
if (!var5 || !matchOnImsi(var7, var1)) { | |
break label140; | |
} | |
break; | |
case 6: | |
if (!var5 || !var7.equalsIgnoreCase(Build.DEVICE)) { | |
break label140; | |
} | |
break; | |
case 7: | |
if (!var5 || !matchOnIccid(var7, var1)) { | |
break label140; | |
} | |
break; | |
case 8: | |
if (!var5 || !var7.equals(var1.getCarrierId()) && !var7.equals(var1.getSpecificCarrierId())) { | |
break label140; | |
} | |
break; | |
case 9: | |
break label141; | |
default: | |
var12 = new StringBuilder(); | |
var12.append("Unknown attribute "); | |
var12.append(var6); | |
var12.append("="); | |
var12.append(var7); | |
Log.e("DefaultCarrierConfigService", var12.toString()); | |
break label140; | |
} | |
var9 = true; | |
var10 = var2; | |
var11 = var3; | |
break label141; | |
} | |
var9 = false; | |
var10 = var2; | |
var11 = var3; | |
} | |
++var4; | |
var5 = var9; | |
var2 = var10; | |
} | |
return var5; | |
} | |
static boolean matchOnIccid(String var0, CarrierIdentifier var1) { | |
String var7 = var1.getIccid(); | |
boolean var2 = "null".equalsIgnoreCase(var0); | |
boolean var3 = true; | |
if (var2) { | |
if (TextUtils.isEmpty(var7)) { | |
return var3; | |
} | |
} else if (var7 != null) { | |
String[] var6 = var0.split(","); | |
int var4 = var6.length; | |
for(int var5 = 0; var5 < var4; ++var5) { | |
if (var7.startsWith(var6[var5])) { | |
return var3; | |
} | |
} | |
} | |
var3 = false; | |
return var3; | |
} | |
static boolean matchOnImsi(String var0, CarrierIdentifier var1) { | |
String var3 = var1.getImsi(); | |
boolean var2; | |
if (var3 != null) { | |
var2 = Pattern.compile(var0, 2).matcher(var3).matches(); | |
} else { | |
var2 = false; | |
} | |
return var2; | |
} | |
static boolean matchOnSP(String var0, CarrierIdentifier var1) { | |
String var3 = var1.getSpn(); | |
boolean var2; | |
if ("null".equalsIgnoreCase(var0)) { | |
if (TextUtils.isEmpty(var3)) { | |
var2 = true; | |
return var2; | |
} | |
} else if (var3 != null) { | |
var2 = Pattern.compile(var0, 2).matcher(var3).matches(); | |
return var2; | |
} | |
var2 = false; | |
return var2; | |
} | |
static PersistableBundle readConfigFromXml(XmlPullParser var0, CarrierIdentifier var1) throws IOException, XmlPullParserException { | |
PersistableBundle var2 = new PersistableBundle(); | |
if (var0 == null) { | |
return var2; | |
} else { | |
while(true) { | |
do { | |
int var3; | |
do { | |
do { | |
var3 = var0.next(); | |
if (var3 == 1) { | |
return var2; | |
} | |
} while(var3 != 2); | |
} while(!"carrier_config".equals(var0.getName())); | |
} while(var1 != null && !checkFilters(var0, var1)); | |
var2.putAll(PersistableBundle.restoreFromXml(var0)); | |
} | |
} | |
} | |
private static boolean startsWithIgnoreCase(String var0, String var1) { | |
return var0 != null && var1 != null && var0.length() >= var1.length() && var1.equalsIgnoreCase(var0.substring(0, var1.length())); | |
} | |
public PersistableBundle onLoadConfig(CarrierIdentifier param1) { | |
// $FF: Couldn't be decompiled | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment