Merge branch '2023.1-dev-martin-neoterm' into '2023.1-dev-martin-neoterm'

Usual changes, see desc

See merge request kalilinux/nethunter/apps/kali-nethunter-term!19
This commit is contained in:
yesimxev 2023-06-11 09:47:21 +00:00
commit 7ff28584c3
5 changed files with 54 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,13 @@ 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()
}
createNotificationChannel()
startForeground(NOTIFICATION_ID, createNotification())
}
@ -48,6 +63,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>