82 lines
2.3 KiB
Bash
Executable File
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 /dev/sdd 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 |