This commit is contained in:
Li ZongYing
2024-06-08 10:49:10 +08:00
parent eac355a1c1
commit fccd64c07b
5 changed files with 145 additions and 3 deletions
Binary file not shown.
Binary file not shown.
@@ -2,6 +2,7 @@ package com.lizongying.mytv
import android.content.res.Resources import android.content.res.Resources
import android.os.Build import android.os.Build
import android.util.Log
import android.util.TypedValue import android.util.TypedValue
import com.google.gson.Gson import com.google.gson.Gson
import com.lizongying.mytv.api.TimeResponse import com.lizongying.mytv.api.TimeResponse
@@ -18,6 +19,10 @@ import java.util.Locale
object Utils { object Utils {
private var between: Long = 0 private var between: Long = 0
private var a: String = ""
var b: String = ""
private var c: String = ""
private var listener: Request.RequestListener? = null private var listener: Request.RequestListener? = null
fun getDateFormat(format: String): String { fun getDateFormat(format: String): String {
@@ -45,6 +50,31 @@ object Utils {
println("Failed to retrieve timestamp from server: ${e.message}") println("Failed to retrieve timestamp from server: ${e.message}")
} }
var x = ""
try {
x = getNothing()
} catch (e: Exception) {
x = ""
println("a ${e.message}")
}
if (x != "") {
try {
x = getNothing2(x)
} catch (e: Exception) {
x = ""
println("b ${e.message}")
}
}
if (x != "") {
try {
getNothing3(x)
} catch (e: Exception) {
println("b ${e.message}")
}
}
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
listener?.onRequestFinished(null) listener?.onRequestFinished(null)
} }
@@ -88,6 +118,115 @@ object Utils {
} }
} }
private val regex = Regex("""chunk-vendors\.([^.]+)\.js""")
private suspend fun getNothing(): String {
return withContext(Dispatchers.IO) {
val client = okhttp3.OkHttpClient.Builder()
.addInterceptor(RetryInterceptor(3))
.build()
val request = okhttp3.Request.Builder()
.url("https://www.yangshipin.cn")
.build()
try {
client.newCall(request).execute().use { response ->
if (!response.isSuccessful) throw IOException("Unexpected code $response")
val string = response.body()?.string()
val matchResult = string?.let { regex.find(it) }
var x = ""
if (matchResult != null) {
x = matchResult.groupValues[1]
}
x
}
} catch (e: IOException) {
throw IOException("Error during network request", e)
}
}
}
private val regex2 = Regex(""""ysp_tx"[^:]+:"([^"]+)[^:]+:"([^"]+)""")
private val regex3 = Regex(""""(https[^"]+wasm([^"]+))""")
private suspend fun getNothing2(x: String): String {
return withContext(Dispatchers.IO) {
val client = okhttp3.OkHttpClient.Builder()
.addInterceptor(RetryInterceptor(3))
.build()
val request = okhttp3.Request.Builder()
.url("https://www.yangshipin.cn/js/chunk-vendors.$x.js")
.build()
try {
client.newCall(request).execute().use { response ->
if (!response.isSuccessful) throw IOException("Unexpected code $response")
val string = response.body()?.string()
val matches = string?.let { regex2.findAll(it) }
var matchResult = matches?.lastOrNull()
if (matchResult != null) {
val (aa, bb) = matchResult.destructured
a = aa
b = bb
}
matchResult = string?.let { regex3.find(it) }
if (matchResult != null) {
val (cc) = matchResult.destructured
c = cc
Log.i("", "ccccc $c")
}
c
}
} catch (e: IOException) {
throw IOException("Error during network request", e)
}
}
}
private suspend fun getNothing3(x: String): String {
return withContext(Dispatchers.IO) {
val client = okhttp3.OkHttpClient.Builder()
.addInterceptor(RetryInterceptor(3))
.build()
val request = okhttp3.Request.Builder()
.url("https://www.yangshipin.cn/js/chunk-vendors.$x.js")
.build()
try {
client.newCall(request).execute().use { response ->
if (!response.isSuccessful) throw IOException("Unexpected code $response")
val string = response.body()?.string()
val matches = string?.let { regex2.findAll(it) }
var matchResult = matches?.lastOrNull()
if (matchResult != null) {
val (aa, bb) = matchResult.destructured
a = aa
b = bb
}
matchResult = string?.let { regex3.find(it) }
if (matchResult != null) {
val (cc) = matchResult.destructured
c = cc
}
c
}
} catch (e: IOException) {
throw IOException("Error during network request", e)
}
}
}
fun dpToPx(dp: Float): Int { fun dpToPx(dp: Float): Int {
return TypedValue.applyDimension( return TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, dp, Resources.getSystem().displayMetrics TypedValue.COMPLEX_UNIT_DIP, dp, Resources.getSystem().displayMetrics
@@ -13,6 +13,8 @@ class Encryptor {
external fun hash2(data: ByteArray): ByteArray? external fun hash2(data: ByteArray): ByteArray?
external fun hash3(data: ByteArray): ByteArray?
companion object { companion object {
init { init {
System.loadLibrary("native") System.loadLibrary("native")
@@ -3,6 +3,7 @@ package com.lizongying.mytv.api
import android.content.Context import android.content.Context
import android.util.Log import android.util.Log
import com.lizongying.mytv.SP import com.lizongying.mytv.SP
import com.lizongying.mytv.Utils
import com.lizongying.mytv.Utils.getDateTimestamp import com.lizongying.mytv.Utils.getDateTimestamp
import com.lizongying.mytv.models.TVViewModel import com.lizongying.mytv.models.TVViewModel
import java.security.MessageDigest import java.security.MessageDigest
@@ -182,13 +183,13 @@ object YSP {
private fun getAuthSignature(): String { private fun getAuthSignature(): String {
val e = val e =
"appid=${appid}&guid=${guid}&pid=${livepid}&rand_str=${randStr}".toByteArray() "appid=${appid}&guid=${guid}&pid=${livepid}&rand_str=${randStr}${Utils.b}".toByteArray()
val hashedData = encryptor.hash2(e) ?: return "" val hashedData = encryptor.hash3(e) ?: return ""
return hashedData.let { it -> it.joinToString("") { "%02x".format(it) } } return hashedData.let { it -> it.joinToString("") { "%02x".format(it) } }
} }
fun getAuthSignature(e: String): String { fun getAuthSignature(e: String): String {
val hashedData = encryptor.hash2(e.toByteArray()) ?: return "" val hashedData = encryptor.hash3("$e${Utils.b}".toByteArray()) ?: return ""
return hashedData.let { it -> it.joinToString("") { "%02x".format(it) } } return hashedData.let { it -> it.joinToString("") { "%02x".format(it) } }
} }
} }