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"
|
applicationId "com.offsec.nhterm"
|
||||||
minSdkVersion rootProject.ext.android.MIN_SDK_VERSION
|
minSdkVersion rootProject.ext.android.MIN_SDK_VERSION
|
||||||
targetSdkVersion rootProject.ext.android.TARGET_SDK_VERSION
|
targetSdkVersion rootProject.ext.android.TARGET_SDK_VERSION
|
||||||
versionCode 20231
|
versionCode 20232
|
||||||
versionName "2023.1-dev"
|
versionName "2023.2-dev"
|
||||||
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
||||||
resConfigs 'zh-rCN', 'zh-rTW'
|
resConfigs 'zh-rCN', 'zh-rTW'
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
|
@ -51,7 +51,6 @@
|
|||||||
android:exported="true">
|
android:exported="true">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
<action android:name="android.intent.action.MAIN"/>
|
||||||
|
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
<category android:name="android.intent.category.LAUNCHER"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
|
@ -13,12 +13,20 @@ import androidx.core.app.NotificationCompat
|
|||||||
import com.offsec.nhterm.R
|
import com.offsec.nhterm.R
|
||||||
import com.offsec.nhterm.backend.EmulatorDebug
|
import com.offsec.nhterm.backend.EmulatorDebug
|
||||||
import com.offsec.nhterm.backend.TerminalSession
|
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.ShellParameter
|
||||||
import com.offsec.nhterm.component.session.XParameter
|
import com.offsec.nhterm.component.session.XParameter
|
||||||
import com.offsec.nhterm.component.session.XSession
|
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.ui.term.NeoTermActivity
|
||||||
import com.offsec.nhterm.utils.NLog
|
import com.offsec.nhterm.utils.NLog
|
||||||
import com.offsec.nhterm.utils.Terminals
|
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.Executors
|
||||||
import java.util.concurrent.ScheduledExecutorService
|
import java.util.concurrent.ScheduledExecutorService
|
||||||
|
|
||||||
@ -40,6 +48,14 @@ class NeoTermService : Service() {
|
|||||||
|
|
||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
super.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()
|
createNotificationChannel()
|
||||||
startForeground(NOTIFICATION_ID, createNotification())
|
startForeground(NOTIFICATION_ID, createNotification())
|
||||||
}
|
}
|
||||||
@ -48,6 +64,39 @@ class NeoTermService : Service() {
|
|||||||
return serviceBinder
|
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 {
|
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
|
||||||
val action = intent.action
|
val action = intent.action
|
||||||
when (action) {
|
when (action) {
|
||||||
|
@ -181,7 +181,7 @@ class AboutActivity : AppCompatActivity() {
|
|||||||
.show()
|
.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun resetApp() {
|
fun resetApp() {
|
||||||
// Manual way of resetting required assets
|
// Manual way of resetting required assets
|
||||||
Runtime.getRuntime().exec("mkdir -p "+" "+"/data/data/com.offsec.nhterm/files/usr/").waitFor()
|
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")
|
Executer("/system/bin/rm -rf /data/data/com.offsec.nhterm/files/usr/bin")
|
||||||
|
@ -60,6 +60,9 @@
|
|||||||
android:paddingLeft="16dp"
|
android:paddingLeft="16dp"
|
||||||
android:paddingRight="16dp"
|
android:paddingRight="16dp"
|
||||||
android:text="@string/app_name"
|
android:text="@string/app_name"
|
||||||
|
android:textSize="22sp"
|
||||||
|
android:autoSizeMaxTextSize="22sp"
|
||||||
|
android:autoSizeMinTextSize="18sp"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Headline"/>
|
android:textAppearance="@style/TextAppearance.AppCompat.Headline"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user