bin bash cd tmp exit echo Compiling mangler cat mangle _EOF_ char buf

 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
#!/bin/bash
cd /tmp || exit 1
echo '[*] Compiling mangler...'
cat >mangle.c <<_EOF_
char buf[10240];
main() {
int i,x;
srand(time(0) ^ getpid());
while ( (i = read(0,buf,sizeof(buf))) > 0) {
x = rand() % (i/20);
while (x--) buf[rand() % i] = rand();
write(1,buf,i);
}
}
_EOF_
gcc -O3 mangle.c -o mangle || exit 1
rm -f mangle.c
echo '[*] Preparing ISO master (feel free to alter this code)...'
mkdir cd_dir || exit 1
cd cd_dir
CNT=0
while [ "$CNT" -lt "200" ]; do
mkdir A; cd A
CNT=$[CNT+1]
done
cd /tmp/cd_dir
A=`perl -e '{print "A"x255}' 2>/dev/null`
CNT=0
while [ "$CNT" -lt "3" ]; do
mkdir "$A"; cd "$A"
CNT=$[CNT+1]
done
cd /tmp
echo '[*] Creating image (alter filesystem or parameters as needed)...'
mkisofs -U -R -J -o cd.iso cd_dir 2>/dev/null || exit 1
rm -rf cd_dir
echo '[*] STRESS TEST PHASE...'
while :; do
DIR="/tmp/cdtest-$$-$RANDOM"
mkdir "$DIR"
dmesg -c 2>/dev/null
cat cd.iso | ./mangle >cd_mod.iso
mount -t iso9660 -o loop,ro /tmp/cd_mod.iso "$DIR" 2>/dev/null
# ls -lAR "$DIR" - Uncomment if you like when it HURTS...
umount "$DIR" 2>/dev/null
rm -rf "$DIR" 2>/dev/null
FAULT=`dmesg | grep -Ei 'oops|unable to handle'`
test "$FAULT" = "" || break
done
dmesg | tail -30
echo '[+] Something found (/tmp/cd-mod.iso)...'
rm -f cd.iso mangle
exit 0