Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/sbin/sh
- ui_print "##################################################"
- ui_print "## ##"
- ui_print "## 88 a8P db 88 88 ##"
- ui_print "## 88 .88' d88b 88 88 ##"
- ui_print "## 88 88' d8''8b 88 88 ##"
- ui_print "## 88 d88 d8' '8b 88 88 ##"
- ui_print "## 8888'88. d8YaaaaY8b 88 88 ##"
- ui_print "## 88P Y8b d8''''''''8b 88 88 ##"
- ui_print "## 88 '88. d8' '8b 88 88 ##"
- ui_print "## 88 Y8b d8' '8b 888888888 88 ##"
- ui_print "## ##"
- ui_print "################### NetHunter ####################"
- OUTFD=/proc/self/fd/$2;
- ZIPFILE="$3";
- # embedded mode support
- readlink /proc/$$/fd/$2 2>/dev/null | grep /tmp >/dev/null;
- if [ "$?" -eq "0" ]; then
- # rerouted to log file, so suppress recovery ui commands
- OUTFD=/proc/self/fd/0;
- # try to find the actual fd (pipe with parent updater likely started as 'update-binary 3 fd zipfile')
- for FD in `ls /proc/$$/fd`; do
- readlink /proc/$$/fd/$FD 2>/dev/null | grep pipe >/dev/null;
- if [ "$?" -eq "0" ]; then
- ps | grep " 3 $FD " | grep -v grep >/dev/null;
- if [ "$?" -eq "0" ]; then
- OUTFD=/proc/self/fd/$FD;
- break;
- fi;
- fi;
- done;
- fi;
- # Magisk boot mode support
- test -e /data/adb/magisk && adb=adb;
- ps | grep zygote | grep -v grep >/dev/null && BOOTMODE=true || BOOTMODE=false;
- $BOOTMODE || ps -A 2>/dev/null | grep zygote | grep -v grep >/dev/null && BOOTMODE=true;
- if $BOOTMODE; then
- OUTFD=/proc/self/fd/0;
- dev=/dev;
- devtmp=/dev/tmp;
- if [ ! -f /data/$adb/magisk_merge.img ]; then
- (/system/bin/make_ext4fs -b 4096 -l 64M /data/$adb/magisk_merge.img || /system/bin/mke2fs -b 4096 -t ext4 /data/$adb/magisk_merge.img 64M) >/dev/null;
- fi;
- fi;
- ui_print() { $BOOTMODE && echo "$1" || echo -e "ui_print $1\nui_print" >> $OUTFD; }
- show_progress() { echo "progress $1 $2" >> $OUTFD; }
- set_progress() { echo "set_progress $1" >> $OUTFD; }
- file_getprop() { grep "^$2" "$1" | head -n1 | cut -d= -f2; }
- abort() {
- ui_print " ";
- ui_print "Your system has not been changed.";
- ui_print " ";
- ui_print "Script will now exit...";
- ui_print " ";
- umount $mnt;
- umount /system;
- umount /data;
- umount /cache;
- exit 1;
- }
- ui_print " ";
- ui_print "Installing Kali Linux Busybox";
- modname=KaliNethunter;
- show_progress 1.34 0;
- ui_print " ";
- ui_print "Mounting...";
- mount -o ro /system;
- mount /data;
- mount /cache;
- set_progress 0.2;
- case $(basename "$ZIPFILE") in
- *uninstall*|*Uninstall*) action=uninstallation;;
- *) action=installation;;
- esac;
- case $(basename "$ZIPFILE") in
- *system*) system=1; ui_print " "; ui_print "Warning: Forcing a system $action!";;
- esac;
- if [ "$action" == "installation" ]; then
- ui_print " ";
- ui_print "Extracting files...";
- mkdir -p $dev/tmp/$modname;
- cd $dev/tmp/$modname;
- unzip -o "$ZIPFILE";
- set_progress 0.3;
- ui_print " ";
- ui_print "Installing...";
- rm -rf /system/xbin/busybox_nh
- abi=`getprop ro.product.cpu.abi`;
- case $abi in
- arm64*) arch=arm64;;
- arm*) arch=arm;;
- *) ui_print "Unknown architecture: $abi"; abort;;
- esac;
- ui_print "Using architecture: $arch";
- else
- ui_print " ";
- ui_print "Uninstalling...";
- fi;
- # Magisk clean flash support
- if [ -e /data/$adb/magisk -a ! -e /data/$adb/magisk.img ]; then
- /system/bin/make_ext4fs -b 4096 -l 64M /data/$adb/magisk.img || /system/bin/mke2fs -b 4096 -t ext4 /data/$adb/magisk.img 64M;
- fi;
- # allow forcing a system installation regardless of su.img/magisk.img detection
- if [ ! "$system" ]; then
- suimg=$(ls /data/$adb/magisk_merge.img || ls /data/su.img || ls /cache/su.img || ls /data/$adb/magisk.img || ls /cache/magisk.img) 2>/dev/null;
- mnt=$devtmp/$(basename $suimg .img);
- fi;
- if [ "$suimg" ]; then
- umount $mnt;
- test ! -e $mnt && mkdir -p $mnt;
- mount -t ext4 -o rw,noatime $suimg $mnt;
- for i in 0 1 2 3 4 5 6 7; do
- test "$(mount | grep " $mnt ")" && break;
- loop=/dev/block/loop$i;
- if [ ! -f "$loop" -o ! -b "$loop" ]; then
- mknod $loop b 7 $i;
- fi;
- losetup $loop $suimg && mount -t ext4 -o loop,noatime $loop $mnt;
- done;
- case $mnt in
- */magisk*) magisk=/$modname/system;;
- esac;
- if [ -d "$mnt$magisk/xbin" -o "$magisk" -a -d "$root/system/xbin" ]; then
- target=$mnt$magisk/xbin;
- else
- target=$mnt$magisk/bin;
- fi;
- else
- # SuperSU BINDSBIN support
- mnt=$(dirname `find /data -name supersu_is_here | head -n1`);
- if [ -e "$mnt" -a ! "$system" ]; then
- target=$mnt/xbin;
- else
- mount -o rw,remount /system;
- mount /system;
- if -d [ "$root/system/xbin" ]; then
- target=$root/system/xbin;
- else
- target=$root/system/bin;
- fi;
- fi;
- fi;
- ui_print "Using path: $target";
- if [ "$action" == "uninstallation" ]; then
- if [ ! -f "$target/busybox" ]; then
- ui_print " ";
- ui_print "No busybox installation found!";
- abort;
- fi;
- else
- mkdir -p $target;
- cp -f busybox-$arch $target/busybox;
- chown 0:0 "$target/busybox";
- chmod 755 "$target/busybox";
- if [ "$magisk" ]; then
- cp -f module.prop $mnt/$modname/;
- touch $mnt/$modname/auto_mount;
- if $BOOTMODE; then
- test -e /magisk && imgmnt=/magisk || imgmnt=/sbin/.core/img;
- if [ "$suimg" == "/data/$adb/magisk_merge.img" ]; then
- mkdir -p "$imgmnt/$modname";
- touch "$imgmnt/$modname/update";
- cp -f module.prop "$imgmnt/$modname/";
- fi;
- fi;
- fi;
- set_progress 0.8;
- ui_print " ";
- ui_print "Cleaning...";
- fi;
- cleanup="$target";
- if [ "$target" == "$mnt$magisk/xbin" -a -f "$mnt$magisk/bin/busybox" ]; then
- $target/busybox rm -f $mnt$magisk/bin/busybox;
- cleanup="$mnt$magisk/bin $target";
- fi;
- for dir in $cleanup; do
- cd $dir;
- for i in $(ls -al `find -type l` | $target/busybox awk '{ print $(NF-2) ":" $NF }'); do
- case $(echo $i | $target/busybox cut -d: -f2) in
- *busybox) list="$list $dir/$(echo $i | $target/busybox cut -d: -f1)";;
- esac;
- done;
- done;
- test "$action" == "uninstallation" && list="$list busybox";
- $target/busybox rm -f $list;
- if [ "$action" == "installation" ]; then
- ui_print " ";
- ui_print "Creating symlinks...";
- sysbin="$(ls $root/system/bin)";
- test $BOOTMODE && existbin="$(ls $imgmnt/$modname/system/bin 2>/dev/null)";
- for applet in `$target/busybox --list`; do
- case $target in
- */bin)
- if [ "$(echo "$sysbin" | grep "^$applet$")" ]; then
- if $BOOTMODE && [ "$(echo "$existbin" | grep "^$applet$")" ]; then
- $target/busybox ln -sf busybox $applet;
- fi;
- else
- $target/busybox ln -sf busybox $applet;
- fi;
- ;;
- *) $target/busybox ln -sf busybox $applet;;
- esac;
- done;
- test "$magisk" && chcon -hR 'u:object_r:system_file:s0' "$mnt/$modname";
- else
- test "$magisk" && rm -rf /magisk/$modname /sbin/.core/img/$modname;
- fi;
- print "Symlinking..."
- ln -s /system/xbin/busybox /system/xbin/busybox_nh
- pm install $dev/tmp/$modname/apps/BlueNMEA.apk
- pm install $dev/tmp/$modname/apps/cSploit-release.apk
- pm install $dev/tmp/$modname/apps/Drivedroid.apk
- pm install $dev/tmp/$modname/apps/Hackerskeyboard.apk
- pm install $dev/tmp/$modname/apps/nethunter.apk
- pm install $dev/tmp/$modname/apps/OpenVPN.apk
- pm install $dev/tmp/$modname/apps/RFAnalyzer.apk
- pm install $dev/tmp/$modname/apps/RouterKeygen.apk
- pm install $dev/tmp/$modname/apps/Shodan.apk
- pm install $dev/tmp/$modname/apps/Term-nh.apk
- pm install $dev/tmp/$modname/apps/USBKeyboard.apk
- pm install $dev/tmp/$modname/apps/VNC-nh.apk
- set_progress 1.0;
- ui_print " ";
- ui_print "Unmounting...";
- cd /;
- test "$suimg" && umount $mnt;
- test "$loop" && losetup -d $loop;
- umount /system;
- umount /data;
- umount /cache;
- set_progress 1.2;
- rm -rf /tmp/$modname /dev/tmp;
- ui_print " ";
- ui_print "Done!";
- set_progress 1.34;
- exit 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement