Skip to content

Commit b8c9ced

Browse files
committed
[SQUASHED] Checker: I dunno what did I just write lol
Signed-off-by: Akane Beneckendorff <akane@akanework.org>
1 parent 4aa4eab commit b8c9ced

File tree

6 files changed

+183
-57
lines changed

6 files changed

+183
-57
lines changed

app/build.gradle.kts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,16 @@ android {
88
compileSdk = 34
99
android.buildFeatures.buildConfig = true
1010

11+
androidResources {
12+
generateLocaleConfig = true
13+
}
14+
1115
defaultConfig {
1216
applicationId = "org.akanework.checker"
1317
minSdk = 24
1418
targetSdk = 34
15-
versionCode = 4
16-
versionName = "1.0.3"
19+
versionCode = 5
20+
versionName = "1.0.4"
1721
}
1822

1923
buildTypes {
@@ -26,6 +30,7 @@ android {
2630
)
2731
}
2832
}
33+
2934
compileOptions {
3035
sourceCompatibility = JavaVersion.VERSION_1_8
3136
targetCompatibility = JavaVersion.VERSION_1_8
@@ -36,5 +41,5 @@ android {
3641
}
3742

3843
dependencies {
39-
implementation("com.google.android.material:material:1.10.0")
44+
implementation("com.google.android.material:material:1.11.0-beta01")
4045
}

app/src/main/java/org/akanework/checker/MainActivity.kt

Lines changed: 51 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -37,34 +37,6 @@ class MainActivity : Activity() {
3737

3838
companion object {
3939
val WIDEVINE_UUID = UUID(-0x121074568629b532L, -0x5c37d8232ae2de13L)
40-
val TESTKEY =
41-
"-----BEGIN CERTIFICATE-----\n" +
42-
"MIIEqDCCA5CgAwIBAgIJAJNurL4H8gHfMA0GCSqGSIb3DQEBBQUAMIGUMQswCQYD\n" +
43-
"VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4g\n" +
44-
"VmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UE\n" +
45-
"AxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAe\n" +
46-
"Fw0wODAyMjkwMTMzNDZaFw0zNTA3MTcwMTMzNDZaMIGUMQswCQYDVQQGEwJVUzET\n" +
47-
"MBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4G\n" +
48-
"A1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9p\n" +
49-
"ZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZI\n" +
50-
"hvcNAQEBBQADggENADCCAQgCggEBANaTGQTexgskse3HYuDZ2CU+Ps1s6x3i/waM\n" +
51-
"qOi8qM1r03hupwqnbOYOuw+ZNVn/2T53qUPn6D1LZLjk/qLT5lbx4meoG7+yMLV4\n" +
52-
"wgRDvkxyGLhG9SEVhvA4oU6Jwr44f46+z4/Kw9oe4zDJ6pPQp8PcSvNQIg1QCAcy\n" +
53-
"4ICXF+5qBTNZ5qaU7Cyz8oSgpGbIepTYOzEJOmc3Li9kEsBubULxWBjf/gOBzAzU\n" +
54-
"RNps3cO4JFgZSAGzJWQTT7/emMkod0jb9WdqVA2BVMi7yge54kdVMxHEa5r3b97s\n" +
55-
"zI5p58ii0I54JiCUP5lyfTwE/nKZHZnfm644oLIXf6MdW2r+6R8CAQOjgfwwgfkw\n" +
56-
"HQYDVR0OBBYEFEhZAFY9JyxGrhGGBaR0GawJyowRMIHJBgNVHSMEgcEwgb6AFEhZ\n" +
57-
"AFY9JyxGrhGGBaR0GawJyowRoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UE\n" +
58-
"CBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMH\n" +
59-
"QW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAG\n" +
60-
"CSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJAJNurL4H8gHfMAwGA1Ud\n" +
61-
"EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHqvlozrUMRBBVEY0NqrrwFbinZa\n" +
62-
"J6cVosK0TyIUFf/azgMJWr+kLfcHCHJsIGnlw27drgQAvilFLAhLwn62oX6snb4Y\n" +
63-
"LCBOsVMR9FXYJLZW2+TcIkCRLXWG/oiVHQGo/rWuWkJgU134NDEFJCJGjDbiLCpe\n" +
64-
"+ZTWHdcwauTJ9pUbo8EvHRkU3cYfGmLaLfgn9gP+pWA7LFQNvXwBnDa6sppCccEX\n" +
65-
"31I828XzgXpJ4O+mDL1/dBd+ek8ZPUP0IgdyZm5MTYPhvVqGCHzzTy3sIeJFymwr\n" +
66-
"sBbmg2OAUNLEMO6nwmocSdN2ClirfxqCzJOLSDE4QyS9BAH6EhY6UFcOaE0=\n" +
67-
"-----END CERTIFICATE-----"
6840
}
6941

7042
private lateinit var titleTextView: TextView
@@ -144,9 +116,6 @@ class MainActivity : Activity() {
144116
if (Build.VERSION.SDK_INT >= 30) {
145117
window.setDecorFitsSystemWindows(false)
146118
}
147-
if (Build.VERSION.SDK_INT >= 26) {
148-
window.colorMode = COLOR_MODE_WIDE_COLOR_GAMUT
149-
}
150119
setContentView(R.layout.activity_main)
151120

152121
val topAppBar = findViewById<MaterialToolbar>(R.id.topAppBar)
@@ -196,6 +165,10 @@ class MainActivity : Activity() {
196165
val securityVerifiedBootStateTextView = findViewById<TextView>(R.id.security_verified_boot_state)
197166
val securityAndroidSignatureTextView = findViewById<TextView>(R.id.security_system_signature)
198167

168+
val universalityTrebleTextView = findViewById<TextView>(R.id.universality_treble_support)
169+
val universalityGSITextView = findViewById<TextView>(R.id.universality_gsi_support)
170+
val universalityDSUTextView = findViewById<TextView>(R.id.universality_dsu_support)
171+
199172
val abnormalitiesFrame = findViewById<MaterialCardView>(R.id.abnormal_frame)
200173
val abnormalitiesRecyclerView = findViewById<RecyclerView>(R.id.abnormal_recyclerview)
201174
abnormalitiesRecyclerView.layoutManager = LinearLayoutManager(this@MainActivity)
@@ -240,18 +213,30 @@ class MainActivity : Activity() {
240213
"${getString(R.string.basic_build_fingerprint)} - $basicFingerprint"
241214

242215
// Set up widevine info
243-
val widevineKeyDrm = MediaDrm(WIDEVINE_UUID)
244-
val drmLevel = widevineKeyDrm.getPropertyString("securityLevel")
245-
val drmVersion = widevineKeyDrm.getPropertyString(PROPERTY_VERSION)
246-
val drmVendorLevel = widevineKeyDrm.getPropertyString(PROPERTY_VENDOR)
247-
val drmDesc = widevineKeyDrm.getPropertyString(PROPERTY_DESCRIPTION)
248-
val drmAlgo = widevineKeyDrm.getPropertyString(PROPERTY_ALGORITHMS)
249-
250-
widevineLevelTextView.text = "${getString(R.string.drm_security_level)} - $drmLevel"
251-
widevineVersionLevelTextView.text = "${getString(R.string.drm_version)} - $drmVersion"
252-
widevineVendorLevelTextView.text = "${getString(R.string.drm_vendor)} - $drmVendorLevel"
253-
widevineDescTextView.text = "${getString(R.string.drm_desc)} - $drmDesc"
254-
widevineAlgoTextView.text = "${getString(R.string.drm_algo)} - $drmAlgo"
216+
val widevineVersionQueryJob = CoroutineScope(Dispatchers.Default).async {
217+
val widevineKeyDrm = MediaDrm(WIDEVINE_UUID)
218+
val drmLevel = widevineKeyDrm.getPropertyString("securityLevel")
219+
val drmVersion = widevineKeyDrm.getPropertyString(PROPERTY_VERSION)
220+
val drmVendorLevel = widevineKeyDrm.getPropertyString(PROPERTY_VENDOR)
221+
val drmDesc = widevineKeyDrm.getPropertyString(PROPERTY_DESCRIPTION)
222+
val drmAlgo = widevineKeyDrm.getPropertyString(PROPERTY_ALGORITHMS)
223+
224+
val isDrmPassing =
225+
if (drmLevel == "L1") 0 else if (drmLevel == "L2") 1 else if (drmLevel == "L3") 2 else 3
226+
227+
if (isDrmPassing != 0) {
228+
abnormalitiesList.add(getString(R.string.abnormalities_widevine))
229+
if (securityLevel == 0) securityLevel = 1
230+
}
231+
232+
withContext(Dispatchers.Main) {
233+
widevineLevelTextView.text = "${getString(R.string.drm_security_level)} - $drmLevel"
234+
widevineVersionLevelTextView.text = "${getString(R.string.drm_version)} - $drmVersion"
235+
widevineVendorLevelTextView.text = "${getString(R.string.drm_vendor)} - $drmVendorLevel"
236+
widevineDescTextView.text = "${getString(R.string.drm_desc)} - $drmDesc"
237+
widevineAlgoTextView.text = "${getString(R.string.drm_algo)} - $drmAlgo"
238+
}
239+
}
255240

256241
// Set up radio info
257242
val connectivityRadioVersion = Build.getRadioVersion().substringAfterLast(',')
@@ -366,7 +351,7 @@ class MainActivity : Activity() {
366351
}
367352
}
368353
val securityAndroidSigningKeyQueryJob = CoroutineScope(Dispatchers.Default).async {
369-
val buildTags = SystemProperties.get("ro.build.tags", "undefined")
354+
val buildTags = SystemProperties.get("ro.system.build.fingerprint", "undefined")
370355
var keyType: Int
371356

372357
var signingkey = "undefined"
@@ -395,14 +380,26 @@ class MainActivity : Activity() {
395380
}
396381
}
397382

398-
// Get abnormalities
399-
val isDrmPassing =
400-
if (drmLevel == "L1") 0 else if (drmLevel == "L2") 1 else if (drmLevel == "L3") 2 else 3
401-
402-
if (isDrmPassing != 0) {
403-
abnormalitiesList.add(getString(R.string.abnormalities_widevine))
404-
if (securityLevel == 0) securityLevel = 1
383+
// Set up universality info
384+
val universalityTrebleQueryJob = CoroutineScope(Dispatchers.Default).async {
385+
val isTrebleSupported = SystemProperties.get("ro.treble.enabled", "false")
386+
withContext(Dispatchers.Main) {
387+
universalityTrebleTextView.text =
388+
"${getString(R.string.universality_treble_support)} - $isTrebleSupported"
389+
universalityGSITextView.text =
390+
if (isTrebleSupported == "true")
391+
"${getString(R.string.universality_gsi_compatibility)} - ${getString(R.string.available)} (Treble)"
392+
else
393+
"${getString(R.string.universality_gsi_compatibility)} - ${getString(R.string.unavailable)}"
394+
}
405395
}
396+
universalityDSUTextView.text =
397+
if (Build.VERSION.SDK_INT >= 31)
398+
"${getString(R.string.universality_dsu_status)} - ${getString(R.string.available)}"
399+
else
400+
"${getString(R.string.universality_dsu_status)} - ${getString(R.string.unavailable)}"
401+
402+
// Get abnormalities
406403
if (connectivityRadioVersion == "unknown") {
407404
abnormalitiesList.add(getString(R.string.abnormalities_baseband_broken))
408405
securityLevel = 2
@@ -413,7 +410,9 @@ class MainActivity : Activity() {
413410
connectivityGNSSQueryJob,
414411
securitySELinuxQueryJob,
415412
securityVerifiedBootStateQueryJob,
416-
securityAndroidSigningKeyQueryJob
413+
securityAndroidSigningKeyQueryJob,
414+
universalityTrebleQueryJob,
415+
widevineVersionQueryJob
417416
)
418417
withContext(Dispatchers.Main) {
419418
changeTitleStatus(securityLevel)

app/src/main/res/layout/main_content.xml

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,61 @@
379379

380380
</com.google.android.material.card.MaterialCardView>
381381

382+
<com.google.android.material.card.MaterialCardView
383+
android:layout_width="match_parent"
384+
android:layout_height="wrap_content"
385+
android:layout_marginStart="12dp"
386+
android:layout_marginEnd="12dp"
387+
android:layout_marginBottom="22dp"
388+
app:cardCornerRadius="8dp">
389+
390+
<LinearLayout
391+
android:layout_width="match_parent"
392+
android:layout_height="wrap_content"
393+
android:orientation="vertical"
394+
android:paddingStart="18dp"
395+
android:paddingTop="18dp"
396+
android:paddingEnd="18dp"
397+
android:paddingBottom="24dp">
398+
399+
<org.akanework.checker.ui.TrimmedTextView
400+
android:layout_width="wrap_content"
401+
android:layout_height="wrap_content"
402+
android:layout_marginBottom="12dp"
403+
android:text="@string/universality"
404+
android:textColor="?attr/colorOnSurface"
405+
android:textFontWeight="600"
406+
android:textSize="20sp" />
407+
408+
<org.akanework.checker.ui.TrimmedTextView
409+
android:id="@+id/universality_treble_support"
410+
android:layout_width="wrap_content"
411+
android:layout_height="wrap_content"
412+
android:textColor="?attr/colorOnSurface"
413+
android:textSize="16sp"
414+
android:textFontWeight="500"
415+
tools:text="@string/connectivity_radio" />
416+
417+
<org.akanework.checker.ui.TrimmedTextView
418+
android:id="@+id/universality_gsi_support"
419+
android:layout_width="wrap_content"
420+
android:layout_height="wrap_content"
421+
android:textColor="?attr/colorOnSurface"
422+
android:textSize="16sp"
423+
tools:text="@string/connectivity_radio" />
424+
425+
<org.akanework.checker.ui.TrimmedTextView
426+
android:id="@+id/universality_dsu_support"
427+
android:layout_width="wrap_content"
428+
android:layout_height="wrap_content"
429+
android:textColor="?attr/colorOnSurface"
430+
android:textSize="16sp"
431+
tools:text="@string/connectivity_radio" />
432+
433+
</LinearLayout>
434+
435+
</com.google.android.material.card.MaterialCardView>
436+
382437
<com.google.android.material.card.MaterialCardView
383438
android:layout_width="match_parent"
384439
android:layout_height="wrap_content"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
unqualifiedResLocale=en-US
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<resources>
2+
<string name="app_name">校验者</string>
3+
<string name="more">更多</string>
4+
<string name="widevine">Widevine</string>
5+
<string name="drm_security_level">安全等級</string>
6+
<string name="drm_version">版本</string>
7+
<string name="drm_vendor">供应商</string>
8+
<string name="drm_desc">描述</string>
9+
<string name="drm_algo">算法</string>
10+
<string name="basic">基本信息</string>
11+
<string name="basic_android_version">安卓版本</string>
12+
<string name="basic_android_sdk">SDK 等级</string>
13+
<string name="basic_android_id">安卓 ID</string>
14+
<string name="basic_brand">品牌</string>
15+
<string name="basic_model">型号</string>
16+
<string name="basic_model_sku">SKU</string>
17+
<string name="basic_build_type">构建种类</string>
18+
<string name="basic_build_fingerprint">构建指纹</string>
19+
<string name="connectivity">连通</string>
20+
<string name="connectivity_radio">基带版本</string>
21+
<string name="connectivity_gnss">GNSS HAL 列表</string>
22+
<string name="connectivity_gnss_not_found">未找到 GNSS HIDL HAL!!</string>
23+
<string name="media">媒体</string>
24+
<string name="media_supported_hdr_types">支持的 HDR 种类</string>
25+
<string name="media_wide_color_gamut">广色宽支持</string>
26+
<string name="abnormalities">异常</string>
27+
<string name="abnormalities_widevine">Widevine 保护是基于软件的.</string>
28+
<string name="abnormalities_verified_boot_stat">认证的启动状态异常.</string>
29+
<string name="abnormalities_baseband_broken">基带损坏.</string>
30+
<string name="abnormalities_gnss_hal_broken">GNSS Hal损坏.</string>
31+
<string name="abnormalities_selinux_not_enforcing">SELinux 没有在强制模式下运行.</string>
32+
<string name="abnormalities_signed_using_a_publickey">系统是用公钥签名的.</string>
33+
<string name="abnormalities_undefined_signing_key">构建标记中不存在签名密钥标记.</string>
34+
<string name="abnormalities_environment_broken">系统环境损坏.</string>
35+
<string name="github">基于 GPL-3.0 证书开源.\n版权所有 © AkaneTan 2023</string>
36+
<string name="normal_title">未找到异常.</string>
37+
<string name="normal_summary">你的系统是正常的.</string>
38+
<string name="notice_title">找到可疑的痕迹.</string>
39+
<string name="notice_summary">可能不是问题, 但是会影响系统的稳定性.</string>
40+
<string name="critical_title">找到异常.</string>
41+
<string name="critical_summary">尝试重新设置设备树和构建源码.</string>
42+
<string name="security">安全</string>
43+
<string name="security_selinux_state">SELinux 状态</string>
44+
<string name="media_not_granted">未授予</string>
45+
<string name="media_granted">已授予</string>
46+
<string name="media_window_available">窗口状态可用</string>
47+
<string name="media_window_unavailable">窗口状态不可用</string>
48+
<string name="security_verified_boot_state">验证启动状态</string>
49+
<string name="security_signing_key">签名密钥</string>
50+
<string name="architecture">架构</string>
51+
<string name="architecture_soc_model">芯片组型号</string>
52+
<string name="architecture_failed_to_retrieve_soc">无法获取芯片组型号!</string>
53+
<string name="architecture_supported_abi">支持的应用二进制接口</string>
54+
<string name="universality">通用性</string>
55+
<string name="universality_treble_support">Treble 支持</string>
56+
<string name="universality_gsi_compatibility">GSI 兼容性</string>
57+
<string name="universality_dsu_status">DSU 状态</string>
58+
<string name="available">可用</string>
59+
<string name="unavailable">不可用</string>
60+
</resources>

app/src/main/res/values/strings.xml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
<string name="media_wide_color_gamut">Wide color gamut</string>
2626
<string name="abnormalities">Abnormalities</string>
2727
<string name="abnormalities_widevine">Widevine protection is software based.</string>
28-
<string name="abnormalities_verified_boot_stat">Abnormalities found in Verified boot state.</string>
28+
<string name="abnormalities_verified_boot_stat">Abnormalities found in verified boot state.</string>
2929
<string name="abnormalities_baseband_broken">Baseband is broken.</string>
30-
<string name="abnormalities_gnss_hal_broken">GNSS Hal is broken.</string>
30+
<string name="abnormalities_gnss_hal_broken">GNSS HAL is broken.</string>
3131
<string name="abnormalities_selinux_not_enforcing">SELinux is not enforcing.</string>
3232
<string name="abnormalities_signed_using_a_publickey">Your build is signed using a public key.</string>
3333
<string name="abnormalities_undefined_signing_key">Your build tag doesn\'t contain a signing key.</string>
@@ -51,4 +51,10 @@
5151
<string name="architecture_soc_model">SoC model</string>
5252
<string name="architecture_failed_to_retrieve_soc">Failed to retrieve SoC model!</string>
5353
<string name="architecture_supported_abi">Supported ABIs</string>
54+
<string name="universality">Universality</string>
55+
<string name="universality_treble_support">Treble status</string>
56+
<string name="universality_gsi_compatibility">GSI Compatibility</string>
57+
<string name="available">Available</string>
58+
<string name="unavailable">Unavailable</string>
59+
<string name="universality_dsu_status">DSU Status</string>
5460
</resources>

0 commit comments

Comments
 (0)