shell-scripting/kali/make_kali-usb-stick_persistent

82 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# Usage: ./make_kali-usb-stick_persistent [ kali.iso ]
# or
# bash make_kali-usb-stick_persistent [ kali.iso ]
# Description: Writes a kali.iso to an usb stick (optional) and
# adds persistence to it step by step.
# Author: Patrick Neumann (patrick@neumannsland.de)
# Platform: Kali Linux (tested: 2018.2) or
# Debian GNU/Linux (tested: 9.5)
# Version: 1.0
# Date: 24.08.2018
# License: GPL3
# Warranty: This program is distributed WITHOUT ANY WARRANTY
# check for root
if [[ 0 -ne "$( /usr/bin/id --user )" ]] ; then
printf "you need to be root - EXIT!\n"
exit 2
fi
# usage function
usage () {
printf "Usage:\n"
printf " $0 [ <kali-linux-*.iso ]\n"
printf " (If an iso file is given it will be written to the usb stick first.)\n"
exit 1
}
# onle zero or one args are supported
if [ "${#}" -gt 1 ]; then
usage
fi
# select usb stick
printf "Please select an usb stick:\n"
select USBSTICK in $( ls -l /sys/dev/block | grep -E ".*usb.*[^[:digit:]]$" | awk -F "/" '{ print $NF; }' ) ; do
if [ -n "${USBSTICK}" ] ; then break ; fi
done
# all block devices should be writable by root!?
USBSTICK="/dev/${USBSTICK}"
# if iso file is given
if [ "${#}" -eq 1 ]; then
if ! [ -e "${1}" ] ; then
printf "iso file does not exist - EXIT!\n"
exit 3
fi
if ! [ -f "${1}" ] ; then
printf "iso file is not a regular file - EXIT!\n"
exit 4
fi
# all files are readable by root!?
ISOFILE="${1}"
dd if="${ISOFILE}" of="${USBSTICK}" bs=512k
fi
#check if persistence is already there.
if blkid "${USBSTICK}"3 | grep -F persistence &> /dev/null ; then
printf "There is already a persistence on the choosen usb stick - EXIT!\n"
exit 5
fi
# add 3rd partition to the end of the usb stick
FREE="$( parted -m "${USBSTICK}" print free | grep -F free | tail -n 1 )"
START="$( printf "${FREE}" | awk -F ":" '{ print $2; }' )"
END="$( printf "${FREE}" | awk -F ":" '{ print $3; }' )"
parted "${USBSTICK}" mkpart primary "${START}" "${END}"
# format 3rd partition with ext3 and label "persistence"
mkfs.ext3 -L persistence "${USBSTICK}"3
# place "config" in filesystem of 3rd partition
mkdir -p /mnt/persistence
mount "${USBSTICK}"3 /mnt/persistence
echo "/ union" > /mnt/persistence/persistence.conf
umount "${USBSTICK}"3
rmdir /mnt/persistence
exit 0