Make challenge image
This commit is contained in:
parent
10fea52dfe
commit
43d1f56e71
|
@ -1 +1,4 @@
|
||||||
|
challenge-cmdline
|
||||||
|
challenge-initrd.img
|
||||||
|
challenge-kernel
|
||||||
tftp/initramfs-login.img
|
tftp/initramfs-login.img
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
init:
|
||||||
|
- nemunaire/challenge:712906291b27a2b2cde544e9bff4fe443c2058ab-dirty
|
|
@ -0,0 +1,43 @@
|
||||||
|
FROM alpine AS mirror
|
||||||
|
|
||||||
|
RUN mkdir -p /out/etc/apk/ && \
|
||||||
|
cp /etc/apk/repositories /out/etc/apk/ && \
|
||||||
|
cp -r /etc/apk/keys /out/etc/apk/keys
|
||||||
|
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
mdocml-apropos
|
||||||
|
|
||||||
|
RUN apk add --no-cache --initdb -p /out \
|
||||||
|
alpine-baselayout \
|
||||||
|
beep \
|
||||||
|
busybox \
|
||||||
|
ca-certificates \
|
||||||
|
curl \
|
||||||
|
curl-doc \
|
||||||
|
fbida-fbi \
|
||||||
|
fbida-doc \
|
||||||
|
htop \
|
||||||
|
htop-doc \
|
||||||
|
iproute2-doc \
|
||||||
|
man \
|
||||||
|
musl \
|
||||||
|
openssh-keygen \
|
||||||
|
poppler-utils \
|
||||||
|
ssmtp \
|
||||||
|
testdisk \
|
||||||
|
testdisk-doc \
|
||||||
|
tini \
|
||||||
|
util-linux \
|
||||||
|
util-linux-doc
|
||||||
|
|
||||||
|
RUN makewhatis /out/usr/share/man
|
||||||
|
|
||||||
|
RUN rm -rf /out/etc/inittab
|
||||||
|
|
||||||
|
|
||||||
|
FROM scratch
|
||||||
|
|
||||||
|
COPY --from=mirror /out/ /
|
||||||
|
COPY init /init
|
||||||
|
COPY etc/ /etc/
|
||||||
|
COPY lib/ /lib/
|
|
@ -0,0 +1 @@
|
||||||
|
image: challenge
|
|
@ -0,0 +1,10 @@
|
||||||
|
[0;32;40m .o. .o8 [0;36;40mooooo o8o
|
||||||
|
[0;32;40m .888. "888 [0;36;40m`888' `"'
|
||||||
|
[0;32;40m .8"888. .oooo888 [0;36;40m 888 oooo ooo. .oo.
|
||||||
|
[0;32;40m .8' `888. d88' `888 [0;36;40m 888 `888 `888P"Y88b
|
||||||
|
[0;32;40m .88ooo8888. 888 888 [0;36;40m 888 888 888 888
|
||||||
|
[0;32;40m .8' `888. 888 888 [0;36;40m 888 o 888 888 888
|
||||||
|
[0;32;40m o88o o8888o `Y8bod88P" [0;36;40mo888ooooood8 o888o o888o o888o
|
||||||
|
[0;37;40m
|
||||||
|
|
||||||
|
This is [01m\n.pie.epita.net[0m (\s \m) \t
|
|
@ -0,0 +1,11 @@
|
||||||
|
root:x:0:0:root:/root:/bin/bash
|
||||||
|
bin:x:1:1:bin:/bin:/bin/false
|
||||||
|
daemon:x:2:2:daemon:/sbin:/bin/false
|
||||||
|
adm:x:3:4:adm:/var/adm:/bin/false
|
||||||
|
lp:x:4:7:lp:/var/spool/lpd:/bin/false
|
||||||
|
sync:x:5:0:sync:/sbin:/bin/sync
|
||||||
|
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
|
||||||
|
halt:x:7:0:halt:/sbin:/sbin/halt
|
||||||
|
news:x:9:13:news:/var/spool/news:/bin/false
|
||||||
|
uucp:x:10:14:uucp:/var/spool/uucp:/bin/false
|
||||||
|
operator:x:11:0:operator:/root:/bin/bash
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
ping -c 1 192.168.23.1 && \
|
||||||
|
sleep 3 && \
|
||||||
|
reboot -f
|
|
@ -0,0 +1,65 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
mount -t proc proc /proc
|
||||||
|
mount -t sysfs sysfs /sys
|
||||||
|
|
||||||
|
/bin/busybox --install -s
|
||||||
|
|
||||||
|
mdev -s
|
||||||
|
|
||||||
|
modprobe snd-pcsp
|
||||||
|
|
||||||
|
# /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)
|
||||||
|
|
||||||
|
# Define hostname
|
||||||
|
hostname adlin-${USER_LOGIN}
|
||||||
|
|
||||||
|
# Launch some TTYs
|
||||||
|
for i in `seq 2 4`
|
||||||
|
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
|
||||||
|
/bin/date -s 197001010101 > /dev/null
|
||||||
|
/sbin/sysctl -w net.ipv4.ip_default_ttl=4 > /dev/null
|
||||||
|
|
||||||
|
# Launch some daemons
|
||||||
|
/usr/bin/setsid /usr/sbin/crond > /dev/null &
|
||||||
|
|
||||||
|
# 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))
|
||||||
|
beep -f 1000 -r 2 -n -r 5 -l 10 --new
|
||||||
|
done &
|
||||||
|
|
||||||
|
exec /usr/bin/setsid sh -c "exec '${INIT}' </dev/tty1 >/dev/tty1 2>&1"
|
||||||
|
else
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
/usr/bin/setsid /sbin/agetty -l /sbin/fakelogin 38400 tty1 linux
|
||||||
|
done
|
||||||
|
fi
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
[ "$2" = "root" ] &&
|
||||||
|
echo "[01mTip: vous souvenez-vous du mot de passe root ?[0m" ||
|
||||||
|
echo "[01mTip: cette machine n'est pas reliée au LDAP de l'école.[0m"
|
||||||
|
|
||||||
|
exec login $@
|
Reference in New Issue