Skip to content

Instantly share code, notes, and snippets.

@ZVNexus
Created July 28, 2020 14:06
Show Gist options
  • Save ZVNexus/3ea9b894f5d1b1967f595da3accdc553 to your computer and use it in GitHub Desktop.
Save ZVNexus/3ea9b894f5d1b1967f595da3accdc553 to your computer and use it in GitHub Desktop.
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