2018-02-18 16:39:49 +00:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
mount -t proc proc /proc
|
|
|
|
mount -t sysfs sysfs /sys
|
|
|
|
|
2023-02-20 19:03:49 +00:00
|
|
|
rm /dev/null; mknod -m 0666 /dev/null c 1 3
|
|
|
|
rm /dev/zero; mknod -m 0666 /dev/zero c 1 5
|
|
|
|
|
2022-03-01 22:35:24 +00:00
|
|
|
ln -sf ssmtp /usr/sbin/sendmail
|
2018-02-18 16:39:49 +00:00
|
|
|
|
|
|
|
mdev -s
|
|
|
|
|
|
|
|
# /proc/cmdline parser (from Gentoo Wiki)
|
|
|
|
cmdline() {
|
|
|
|
local value
|
|
|
|
value=" $(cat /proc/cmdline) "
|
|
|
|
value="${value##* $1=}"
|
|
|
|
value="${value%% *}"
|
|
|
|
[ "$value" != "" ] && echo "$value"
|
|
|
|
}
|
|
|
|
|
|
|
|
# Get some command line options
|
|
|
|
USER_LOGIN=$(cmdline adlin.login)
|
|
|
|
USER_PKEY=$(cmdline adlin.key)
|
2019-02-28 01:27:33 +00:00
|
|
|
USER_IP=$(cmdline adlin.ip)
|
2022-02-27 10:25:22 +00:00
|
|
|
ROOT_PASSWORD=$(cmdline adlin.rootpasswd)
|
|
|
|
|
|
|
|
[ -f /etc/shadow_ ] && mv /etc/shadow_ /etc/shadow
|
2019-02-28 01:27:33 +00:00
|
|
|
|
|
|
|
[ -n "${USER_IP}" ] && echo "${USER_IP}" > /root/my_ip
|
2022-02-27 10:25:22 +00:00
|
|
|
[ -n "${ROOT_PASSWORD}" ] && sed -i "/^root:/s@!@${ROOT_PASSWORD}@" /etc/shadow
|
|
|
|
|
|
|
|
# Handle extra user from /etc/shadow
|
|
|
|
sed -r 's/^([^:]+):.*$/\1/' /etc/shadow | while read u; do
|
|
|
|
grep -q "^$u" /etc/passwd || {
|
|
|
|
i=$(($(wc -l /etc/passwd | cut -d ' ' -f 1) + 988))
|
|
|
|
echo "$u:x:$i:$u" >> /etc/group
|
|
|
|
echo "$u:x:$i:$i:new user:/home:/bin/ash" >> /etc/passwd
|
|
|
|
}
|
|
|
|
done
|
2018-02-18 16:39:49 +00:00
|
|
|
|
|
|
|
# Define hostname
|
|
|
|
hostname adlin-${USER_LOGIN}
|
|
|
|
|
2022-02-27 19:45:29 +00:00
|
|
|
update-ca-certificates > /dev/null 2> /dev/null
|
|
|
|
|
2018-02-18 16:39:49 +00:00
|
|
|
# Launch some TTYs
|
2020-02-24 08:57:42 +00:00
|
|
|
for i in `seq 2 6`
|
2018-02-18 16:39:49 +00:00
|
|
|
do
|
|
|
|
while true
|
|
|
|
do
|
|
|
|
/usr/bin/setsid /sbin/agetty -l /sbin/fakelogin 38400 "tty${i}" linux
|
|
|
|
done &
|
|
|
|
done
|
|
|
|
|
|
|
|
# Hide us!
|
|
|
|
/bin/rm -f /init /linuxrc
|
|
|
|
|
|
|
|
# Randomize time at boot
|
2020-02-21 17:15:37 +00:00
|
|
|
/bin/date 0$((1 + $RANDOM % 9))0$((1 + $RANDOM % 9))0$((1 + $RANDOM % 9))$((0 + $RANDOM % 6))$((1 + $RANDOM % 9))$((70 + $RANDOM % 30)).$(($RANDOM % 6))$((1 + $RANDOM % 9)) > /dev/null
|
2020-02-21 13:32:12 +00:00
|
|
|
/sbin/sysctl -w kernel.panic_on_warn=1 > /dev/null
|
2018-02-18 16:39:49 +00:00
|
|
|
/sbin/sysctl -w net.ipv4.ip_default_ttl=4 > /dev/null
|
|
|
|
|
|
|
|
# Launch some daemons
|
2019-02-27 01:03:50 +00:00
|
|
|
#/usr/bin/setsid /usr/sbin/crond > /dev/null &
|
2022-02-27 11:06:56 +00:00
|
|
|
/usr/bin/setsid /bin/shadow-up > /dev/null 2> /var/log/sup.log &
|
2018-02-18 16:39:49 +00:00
|
|
|
|
2021-02-18 00:12:58 +00:00
|
|
|
# Prepare bonus 2
|
2018-02-20 17:11:22 +00:00
|
|
|
mkdir -p /mnt
|
|
|
|
|
2022-03-01 21:31:02 +00:00
|
|
|
/bin/dd if=/dev/zero of=/dev/blk count=1 bs=10240000 > /dev/null 2> /dev/null
|
2022-03-01 21:56:19 +00:00
|
|
|
cat <<EOF | fdisk /dev/blk > /dev/null 2> /dev/null
|
2022-03-01 21:31:02 +00:00
|
|
|
n
|
|
|
|
p
|
|
|
|
1
|
|
|
|
|
2022-03-01 21:56:19 +00:00
|
|
|
+5M
|
2022-03-01 21:31:02 +00:00
|
|
|
w
|
|
|
|
EOF
|
|
|
|
LOOPDEV=$(losetup -f)
|
2022-03-01 21:56:19 +00:00
|
|
|
losetup -P "${LOOPDEV}" /dev/blk > /dev/null 2> /dev/null
|
|
|
|
mdev -s
|
2022-03-01 21:31:02 +00:00
|
|
|
/sbin/mkfs.ext4 "${LOOPDEV}p1" > /dev/null 2> /dev/null
|
2022-03-01 21:56:19 +00:00
|
|
|
mount "${LOOPDEV}p1" /mnt > /dev/null 2> /dev/null
|
2022-03-01 23:40:35 +00:00
|
|
|
N1=$((29 - $RANDOM % 25))
|
|
|
|
N2=$((3 + $RANDOM % 25))
|
2018-02-20 17:11:22 +00:00
|
|
|
{
|
2023-02-21 00:46:54 +00:00
|
|
|
printf %02d $N1
|
|
|
|
printf %02d $N2
|
2018-02-21 00:51:06 +00:00
|
|
|
echo -n ${USER_PKEY:$N1:$N2} | sha512sum | cut -d " " -f 1
|
2018-02-20 17:11:22 +00:00
|
|
|
|
2021-02-18 00:12:58 +00:00
|
|
|
} > /mnt/bonus2
|
2018-02-20 17:11:22 +00:00
|
|
|
sync
|
2021-02-18 00:12:58 +00:00
|
|
|
rm /mnt/bonus2
|
2018-02-20 17:11:22 +00:00
|
|
|
sync
|
2022-03-01 21:56:19 +00:00
|
|
|
umount /mnt
|
2018-02-20 17:11:22 +00:00
|
|
|
|
|
|
|
|
2018-02-18 16:39:49 +00:00
|
|
|
# Launch requested init
|
|
|
|
if grep init= /proc/cmdline > /dev/null 2> /dev/null
|
|
|
|
then
|
|
|
|
INIT=$(cmdline init)
|
|
|
|
[ -z "${INIT}" ]
|
|
|
|
|
|
|
|
while true
|
|
|
|
do
|
|
|
|
sleep $((10 + $RANDOM % 49))
|
2022-02-27 10:25:03 +00:00
|
|
|
beep -f 1000 -r 2 -n -r 5 -l 10 -n
|
2018-02-18 16:39:49 +00:00
|
|
|
done &
|
|
|
|
|
2021-02-18 08:26:45 +00:00
|
|
|
grep console=ttyS0 /proc/cmdline > /dev/null 2> /dev/null && /usr/bin/setsid sh -c "exec '${INIT}' </dev/ttyS0 >/dev/ttyS0 2>&1"
|
2022-03-01 23:41:07 +00:00
|
|
|
exec /usr/bin/setsid sh -c "reset; exec '${INIT}' </dev/tty1 >/dev/tty1 2>&1"
|
2018-02-18 16:39:49 +00:00
|
|
|
else
|
2021-02-18 08:26:45 +00:00
|
|
|
grep console=ttyS0 /proc/cmdline > /dev/null 2> /dev/null && /usr/bin/setsid /sbin/agetty -l /sbin/fakelogin 38400 "ttyS0" linux
|
2018-02-18 16:39:49 +00:00
|
|
|
while true
|
|
|
|
do
|
|
|
|
/usr/bin/setsid /sbin/agetty -l /sbin/fakelogin 38400 tty1 linux
|
|
|
|
done
|
|
|
|
fi
|