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

View File

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

View File

@ -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,13 @@ 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()
}
createNotificationChannel() createNotificationChannel()
startForeground(NOTIFICATION_ID, createNotification()) startForeground(NOTIFICATION_ID, createNotification())
} }
@ -48,6 +63,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) {

View File

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

View File

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