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:
Martinvlba 2023-04-08 22:19:58 +03:00
parent 9ea12d5765
commit ae50f60f1e
5 changed files with 55 additions and 4 deletions

View File

@ -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 {

View File

@ -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>

View File

@ -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) {

View File

@ -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")

View File

@ -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>