blob: 36767b31ea1627398db82eafd46e731f867bd9c2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#!/bin/bash
if [ "`id -u`" != "0" ]; then
echo "Must be run as root"
exit 1
fi
if [[ ! -e /etc/bocaip ]] ; then
BOCASERVER=50.116.19.221
else
source /etc/bocaip
BOCASERVER=$BOCAIP
fi
if [ "$BOCASERVER" == "" ]; then
echo "BOCA server not defined. Aborting"
exit 1
fi
for zcount in 1 2 3 4 5 6 7 8 9 10 11 12; do
grep -e sudo -e "password:session" /var/log/auth.log | tail -n 100 > /root/.logsession.tmp
[ -f /root/.logsession ] || touch /root/.logsession
diff /root/.logsession /root/.logsession.tmp > /root/.logsession.diff 2>/dev/null
res=$?
journalctl | grep -i mount | grep -i -e "filesystem" -e "file system" | tail -n 100 > /root/.logfs.tmp
[ -f /root/.logfs ] || touch /root/.logfs
diff /root/.logfs /root/.logfs.tmp > /root/.logfs.diff 2>/dev/null
resfs=$?
grep -i mount /var/log/kern.log | grep -i -e "filesystem" -e "file system" | tail -n 100 > /root/.logkfs.tmp
[ -f /root/.logkfs ] || touch /root/.logkfs
diff /root/.logkfs /root/.logkfs.tmp > /root/.logkfs.diff 2>/dev/null
reskfs=$?
if [ "$zcount" == "1" ]; then
tail -n 1000 /var/log/logkeys.log > /root/.logkeys.tmp
[ -f /root/.logkeys ] || touch /root/.logkeys
diff /root/.logkeys /root/.logkeys.tmp > /root/.logkeys.diff 2>/dev/null
reskeys=$?
else
echo "" > /root/.logkeys.diff
reskeys=0
fi
if [ "$res" != "0" -o "$resfs" != "0" -o "$reskfs" != "0" -o "$reskey" != "0" ]; then
for i in uuencode wget tr perl sha256sum cut; do
p=`which $i`
if [ -x "$p" ]; then
echo -n ""
else
echo "$i" not found
exit 1
fi
done
temp=/root/.temp.`date +%s%N`.txt
md=`wget -4 --no-check-certificate -t 2 -T 5 -S https://$BOCASERVER/boca/logexternal.php -O /dev/null --save-cookies ${temp}.cookie.txt --keep-session-cookies 2>&1 | grep PHPSESS | tail -n1`
echo "$md" | grep -q PHPSESS
if [ "$?" == "0" ]; then
md=`echo $md | cut -f2 -d'=' | cut -f1 -d';'`
res=`cat /root/submissions/code 2>/dev/null`
res=`echo -n "${res}${md}" | sha256sum - | cut -f1 -d' '`
echo -n "comp=`cat /root/submissions/comp`" > $temp
echo -n "&code=$res" >> $temp
echo -n "&logsession=" >> $temp
grep "^>" /root/.logsession.diff | uuencode -m zzzzzzzzzz | grep -v "begin-base64.*zzzzzzzzzz" | perl -MURI::Escape -lne 'print uri_escape($_)' >> $temp
echo -n "&logfs=" >> $temp
grep "^>" /root/.logfs.diff | uuencode -m zzzzzzzzzz | grep -v "begin-base64.*zzzzzzzzzz" | perl -MURI::Escape -lne 'print uri_escape($_)' >> $temp
echo -n "&logkfs=" >> $temp
grep "^>" /root/.logkfs.diff | uuencode -m zzzzzzzzzz | grep -v "begin-base64.*zzzzzzzzzz" | perl -MURI::Escape -lne 'print uri_escape($_)' >> $temp
echo -n "&logkeys=" >> $temp
grep "^>" /root/.logkeys.diff | uuencode -m zzzzzzzzzz | grep -v "begin-base64.*zzzzzzzzzz" | perl -MURI::Escape -lne 'print uri_escape($_)' >> $temp
wget -4 --no-check-certificate -t 2 -T 5 "https://$BOCASERVER/boca/logexternal.php" --load-cookies ${temp}.cookie.txt --keep-session-cookies --save-cookies ${temp}.cookie.txt -O ${temp}.out --post-file=$temp >/dev/null 2>/dev/null
rm -f $temp
rm -f ${temp}.cookie.txt
grep -qi incorrect ${temp}.out
res=$?
rm ${temp}.out
if [ "$res" == "0" ]; then
echo "$BOCASERVER: User or password incorrect"
exit 3
fi
else
echo "$BOCASERVER: connection failed"
exit 2
fi
fi
[ -f /root/.logsession.tmp ] && mv /root/.logsession.tmp /root/.logsession
[ -f /root/.logkeys.tmp ] && mv /root/.logkeys.tmp /root/.logkeys
[ -f /root/.logfs.tmp ] && mv /root/.logfs.tmp /root/.logfs
[ -f /root/.logkfs.tmp ] && mv /root/.logkfs.tmp /root/.logkfs
[ "$zcount" == "12" ] || sleep 10
done
exit 0
|