Usual changes, see desc
* Add function to extract initial boot scripts when app is freshly opened or */usr dir is missing * Change versioning to 2023.2-dev * Slight change to About section so title of app name is shown correctly
This commit is contained in:
parent
9ea12d5765
commit
ae50f60f1e
@ -8,8 +8,8 @@ android {
|
||||
applicationId "com.offsec.nhterm"
|
||||
minSdkVersion rootProject.ext.android.MIN_SDK_VERSION
|
||||
targetSdkVersion rootProject.ext.android.TARGET_SDK_VERSION
|
||||
versionCode 20231
|
||||
versionName "2023.1-dev"
|
||||
versionCode 20232
|
||||
versionName "2023.2-dev"
|
||||
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
||||
resConfigs 'zh-rCN', 'zh-rTW'
|
||||
externalNativeBuild {
|
||||
|
@ -51,7 +51,6 @@
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
|
@ -13,12 +13,20 @@ import androidx.core.app.NotificationCompat
|
||||
import com.offsec.nhterm.R
|
||||
import com.offsec.nhterm.backend.EmulatorDebug
|
||||
import com.offsec.nhterm.backend.TerminalSession
|
||||
import com.offsec.nhterm.component.config.NeoTermPath
|
||||
import com.offsec.nhterm.component.session.ShellParameter
|
||||
import com.offsec.nhterm.component.session.XParameter
|
||||
import com.offsec.nhterm.component.session.XSession
|
||||
import com.offsec.nhterm.setup.SetupHelper
|
||||
import com.offsec.nhterm.ui.other.AboutActivity
|
||||
import com.offsec.nhterm.ui.term.NeoTermActivity
|
||||
import com.offsec.nhterm.utils.NLog
|
||||
import com.offsec.nhterm.utils.Terminals
|
||||
import com.offsec.nhterm.utils.extractAssetsDir
|
||||
import java.io.BufferedReader
|
||||
import java.io.File
|
||||
import java.io.InputStreamReader
|
||||
import java.lang.Process
|
||||
import java.util.concurrent.Executors
|
||||
import java.util.concurrent.ScheduledExecutorService
|
||||
|
||||
@ -40,6 +48,14 @@ class NeoTermService : Service() {
|
||||
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
|
||||
// Check whather we need to populate initial boot scripts or not
|
||||
// By simply checking */usr folder of ours
|
||||
if (!checkPrefix()) {
|
||||
resetApp()
|
||||
return
|
||||
}
|
||||
|
||||
createNotificationChannel()
|
||||
startForeground(NOTIFICATION_ID, createNotification())
|
||||
}
|
||||
@ -48,6 +64,39 @@ class NeoTermService : Service() {
|
||||
return serviceBinder
|
||||
}
|
||||
|
||||
fun resetApp() {
|
||||
// Manual way of resetting required assets
|
||||
Runtime.getRuntime().exec("mkdir -p "+" "+"/data/data/com.offsec.nhterm/files/usr/").waitFor()
|
||||
Executer("/system/bin/rm -rf /data/data/com.offsec.nhterm/files/usr/bin")
|
||||
Thread.sleep(1200)
|
||||
extractAssetsDir("bin", "/data/data/com.offsec.nhterm/files/usr/bin/")
|
||||
Thread.sleep(800)
|
||||
Executer("/system/bin/chmod +x /data/data/com.offsec.nhterm/files/usr/bin/bash") // Static bash for arm ( works for *64 too )
|
||||
Executer("/system/bin/chmod +x /data/data/com.offsec.nhterm/files/usr/bin/kali") // Kali chroot scriptlet
|
||||
Executer("/system/bin/chmod +x /data/data/com.offsec.nhterm/files/usr/bin/android-su") // Android su scriptlet
|
||||
}
|
||||
|
||||
fun Executer(command: String?): String? {
|
||||
val output = StringBuilder()
|
||||
val p: Process
|
||||
try {
|
||||
p = Runtime.getRuntime().exec(command)
|
||||
p.waitFor()
|
||||
val reader = BufferedReader(InputStreamReader(p.inputStream))
|
||||
var line: String?
|
||||
while (reader.readLine().also { line = it } != null) {
|
||||
output.append(line).append('\n')
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
return output.toString()
|
||||
}
|
||||
fun checkPrefix(): Boolean {
|
||||
val PREFIX_FILE = File(NeoTermPath.USR_PATH)
|
||||
return !PREFIX_FILE.isDirectory
|
||||
}
|
||||
|
||||
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
|
||||
val action = intent.action
|
||||
when (action) {
|
||||
|
@ -181,7 +181,7 @@ class AboutActivity : AppCompatActivity() {
|
||||
.show()
|
||||
}
|
||||
|
||||
private fun resetApp() {
|
||||
fun resetApp() {
|
||||
// Manual way of resetting required assets
|
||||
Runtime.getRuntime().exec("mkdir -p "+" "+"/data/data/com.offsec.nhterm/files/usr/").waitFor()
|
||||
Executer("/system/bin/rm -rf /data/data/com.offsec.nhterm/files/usr/bin")
|
||||
|
@ -60,6 +60,9 @@
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:text="@string/app_name"
|
||||
android:textSize="22sp"
|
||||
android:autoSizeMaxTextSize="22sp"
|
||||
android:autoSizeMinTextSize="18sp"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Headline"/>
|
||||
</LinearLayout>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user