#!/bin/zsh
export name=$1
if [ -z $name ];then
export name=sec_jtr
fi
export cores=$2
if [ -z $cores ];then
export cores=1
fi
export ram=$3
if [ -z $ram ];then
export ram=1024
fi
export size=$4
if [ -z $size ];then
export size=16G
fi
export iso=$5
if [ -z $iso ];then
export iso=$PWD/jenux.iso
fi
export unattend=$6
if [ -z $unattend ];then
export unattend="/unattends/jenux/base-vda-unencrypted-erase"
fi
if [ -e $iso ];then
echo using iso file: $iso
else
echo no or nonexistant jenux iso supplied for $name installation, downloading and verifying
export date=`lynx -listonly -nonumbers --dump https://nashcentral.duckdns.org/projects.html|grep Jenux|grep -w iso|head -n 1|sed "s|https:\/\/nashcentral.duckdns.org\/projects\/||g;s|Jenux-||g;s|-dual.iso||g"`
export filename=Jenux-$date"-dual.iso"
export url=https://nashcentral.duckdns.org/projects/$filename
while true;do
if curl -C - -LO $url;curl -C - -LO $url".sha512";sha512sum -c $filename".sha512";then
mv $filename $iso
mv $filename".sha512" $iso".sha512"
break
else
continue
fi
done
fi
if which vm;then
sleep .01
else
echo downloading vm script
if [ -e ~/bin ];then
sleep .01
else
mkdir ~/bin
fi
curl -Lo ~/bin/vm https://nashcentral.duckdns.org/projects/vm
chmod 700 ~/bin/vm
export PATH=~/bin:$PATH
fi
if noweb=1 nowin=1 nostartupsnap=1 noshutdownsnap=1 vm init $name $cores $ram $size $PWD/$iso localhost 1024 $name;then
sleep .01
else
exit
fi
vm shutdown $name
export loopdev=`udisksctl loop-setup -f $iso|cut -f 5 -d \  |cut -f 1 -d .`
export mnt=`udisksctl mount -b $loopdev"p3"|cut -f 4 -d \  `
if [ -e $mnt/vm-disks$unattend".vmdk"  ];then
qemu-img convert -f vmdk -O raw $mnt/vm-disks$unattend".vmdk" $name/unattend.img
else
qemu-img create -f raw $name/unattend.img 4M
sgdisk -o -n 1:0:-0s:8300 -U 4A656E6E694F53526F636B7321444A4E $name/unattend.img 
fi
if [ -e $unattend ];then
cp $unattend $name/autoinstall
else
cp $mnt/$unattend $name/autoinstall
fi
sed -i "s|export completeaction=\"reboot\"|export completeaction=\"poweroff\"|g" $name/autoinstall
umount $mnt
udisksctl loop-delete -b $loopdev
export start=`sfdisk -l --bytes $name/unattend.img -o start,end|tail -n 1|awk '{print $1}'`
export startsect=$(($start*512))
export end=`sfdisk -l --bytes $name/unattend.img -o start,end|tail -n 1|awk '{print $2}'`
export endsect=$(($end*512))
mkfs.ext4 -b 1K -E offset=$startsect,root_owner=`id -u`:`id -g` -L autoinstall $name/unattend.img $((($endsect-$startsect)/1024))
export loopdev=`udisksctl loop-setup -f $name/unattend.img|cut -f 5 -d \  |cut -f 1 -d .`
export mnt=`udisksctl mount -b $loopdev"p1"|cut -f 4 -d \  `
cat > $mnt/rootpasswd<<EOF
nospeech=1
lowram=1
nochecksum=1
kernelopts=console=ttyS0,115200
postscriptdev=/dev/disk/by-label/autoinstall
postscript=/jtrinstall
unattenddev=/dev/disk/by-label/autoinstall
unattend=/autoinstall
host=online-john-the-ripper
name=Online_John_the_Ripper
user=john
pass=john
EOF
cat > $mnt/jtrinstall<<EOF
mount -t proc /proc /proc
mount -t devtmpfs /dev /dev
mount -t sysfs /sys /sys
echo nameserver 1.1.1.1 > /etc/resolv.conf
echo|zsh ~/.zshrc.local
deluser john
rm -rf /home/john
useradd -m -s /bin/zsh john
usermod -a -G speech john
mkdir -p /home/john/bin
base64 -d > /home/john/bin/jtrtest<<EOF
d2hpbGUgdHJ1ZTtkbwplY2hvIHdlbGNvbWUgdG8gb25saW5lIEpvaG4gdGhlIFJpcHBlciEgRm9y
IHNwb2tlbiBhbmQgdGV4dCBvdXRwdXQsIHR5cGUgcyBhbmQgcHJlc3MgZW50ZXIuIEZvciBUZXh0
IG9ubHksIHR5cGUgdCBhbmQgcHJlc3MgZW50ZXIKcmVhZCBvdXR0eXBlCmNhc2UgIiRvdXR0eXBl
IiBpbgpzKQpicmVhawo7Owp0KQpzdWRvIHNwZWVjaGN0bCBzdG9wCmJyZWFrCjs7CiopCmNvbnRp
bnVlCjs7CmVzYWMKZG9uZQplY2hvIGNvbmdyYXR1bGF0aW9uc1whIFlvdSBoYXZlIHN1Y2Nlc3Nm
dWxseSBjcmFja2VkIHRoZSBwYXNzd29yZCB0byB0aGlzIHppcCBmaWxlXCEgUHJlc3MgZW50ZXIg
dG8gY29udGludWUgPiBkYXRhCmVjaG8gcGxlYXNlIGVudGVyIGFuZCBjb25maXJtIGEgcGFzc3dv
cmQgdG8gY3JhY2sKd2hpbGUgdHJ1ZTtkbwppZiB6aXAgLXEgLS1lbmNyeXB0IGRhdGEuemlwIGRh
dGE7dGhlbgpicmVhawplbHNlCmNvbnRpbnVlCmZpCmRvbmUKcm0gZGF0YQp6aXAyam9obiBkYXRh
LnppcCA+IHBhc3MgMj4vZGV2L251bGwKam9obiBwYXNzJgpzbGVlcCAxCndoaWxlIHRydWU7ZG8K
ZXhwb3J0IHBpZD1gcGlkb2Ygam9obmAKaWYgWyAteiAkcGlkIF07dGhlbgpicmVhawplbHNlCmtp
bGwgLXMgVVNSMSAkcGlkCnNsZWVwIDEKY29udGludWUKZmkKZG9uZQpleHBvcnQgcGFzcz1gam9o
biAtLXNob3cgcGFzc3xjdXQgLWYgMiAtZCA6fGhlYWQgLW4gMWAKZWNobyBwYXNzd29yZCBpcyAk
cGFzcwp1bnppcCAtUCAkcGFzcyBkYXRhLnppcCA+IC9kZXYvbnVsbCAyPi9kZXYvbnVsbApybSBk
YXRhLnppcApjYXQgZGF0YQpyZWFkIHZhcgpybSAtcmYgfi8uam9obiB+L2RhdGEuemlwIH4vcGFz
cyB+L2RhdGEK
_EOF_
echo clear >> /home/john/.zshrc.local
echo sudo speechctl start >> /home/john/.zshrc.local
echo \~/bin/jtrtest >> /home/john/.zshrc.local
echo logout >> /home/john/.zshrc.local
chown -R john:john /home/john
chmod -R 700 /home/john
mkdir -p /etc/systemd/system/getty@tty1.service.d
echo \[Service\] > /etc/systemd/system/getty@tty1.service.d/firstboot.conf
echo ExecStart=-/sbin/agetty -a john --noclear --nohostname --nonewline %I \\\$TERM >> /etc/systemd/system/getty@tty1.service.d/firstboot.conf
cp /lib/systemd/system/getty@.service /lib/systemd/system/getty@.service.sys
sed -i /ExecStart/d /lib/systemd/system/getty@.service
sed -i /play/d /boot/grub/grub.cfg
sed -i /play/d /bin/bootcrypt
bootcrypt
rm /var/lib/alsa/asound.state
while true;do
if pacman --noconfirm -S john zip cuda;then
break
else
continue
fi
done
while true;do
if curl "https://gitlab.com/kalilinux/packages/wordlists/-/raw/kali/master/rockyou.txt.gz?inline=false"|gunzip > /usr/share/john/password.lst;then
break
else
continue
fi
done
systemctl disable NetworkManager avahi-daemon bluetooth swap ntpd wifiinit
echo insmod part_gpt > /boot/grub/grub.cfg
echo insmod ext2 >> /boot/grub/grub.cfg
echo insmod fat >> /boot/grub/grub.cfg
echo insmod search_fs_file >> /boot/grub/grub.cfg
echo insmod linux >> /boot/grub/grub.cfg
echo insmod gzio >> /boot/grub/grub.cfg
echo insmod all_video >> /boot/grub/grub.cfg
echo insmod efi_gop >> /boot/grub/grub.cfg
echo insmod efi_uga >> /boot/grub/grub.cfg
echo search.file /boot/vmlinuz-linux root >> /boot/grub/grub.cfg
echo echo loading >> /boot/grub/grub.cfg
echo linux /boot/vmlinuz-linux root=/dev/disk/by-partlabel/linux rw quiet systemd.show_status=0 >> /boot/grub/grub.cfg
echo initrd /boot/initramfs-linux.img >> /boot/grub/grub.cfg
echo boot >> /boot/grub/grub.cfg
EOF
sed -i "s|_EOF_|EOF|g" $mnt/jtrinstall
mv $name/autoinstall $mnt
umount $mnt
udisksctl loop-delete -b $loopdev
sed -i "/tpm-tis/d;/qxl/d;/usb-redir/d;/usbredir/d;/virtserialport/d;/virtio-serial/d;/usb-ccid/d;/ccid-card/d;/virtio-balloon/d;/virtio-rng/d;/acpitable/d;/chardev spice/d;/monitor/d;/smbios/d;/-pidfile/d;/-daemonize/d;/-object/d;/-spice/d;s|-audiodev driver=spice,id=audio \\\|-audiodev driver=pa,id=audio \\\|g;s|-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \\\|-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \\\\\n--nographic|g;s|hda-duplex,audiodev=audio|virtio-blk,drive=unattend|g;s|-global driver=cfi.pflash01,property=secure,value=on|-drive file=unattend.img,format=raw,id=unattend,if=none|g" $name/$name.vars
vm start $name
cd $name
mv $name".qcow2" $name".orig.qcow2"
qemu-img create -b $name".orig.qcow2" -F qcow2 -f qcow2 $name".qcow2"
cd ..
sed -i "s|virtio-blk,drive=unattend|hda-duplex,audiodev=audio|g;/unattend/d;/iso=/d;/ide-cd/d;/installer/d;s|ide-hd|virtio-blk|g;s|-nographic|-display gtk,gl=on\&|g" $name/$name.vars
cp /usr/share/ovmf/x64/OVMF_VARS.fd $name/$name.nvram
