#!/usr/bin/bash

#*********************************************************************************************************
#*   __     __               __     ______                __   __                      _______ _______   *
#*  |  |--.|  |.---.-..----.|  |--.|   __ \.---.-..-----.|  |_|  |--..-----..----.    |       |     __|  *
#*  |  _  ||  ||  _  ||  __||    < |    __/|  _  ||     ||   _|     ||  -__||   _|    |   -   |__     |  *
#*  |_____||__||___._||____||__|__||___|   |___._||__|__||____|__|__||_____||__|      |_______|_______|  *
#* http://www.blackpantheros.eu | http://www.blackpanther.hu - kbarcza[]blackpanther.hu * Charles Barcza *
#*************************************************************************************(c)2002-2020********
# Generate privacy information for HW-Probe

if [ "$1" = "-insecure" ];then
    perl /usr/share/hw-probe/hw-probe.pl $(echo "$@"| sed 's|-insecure||')
    exit
elif [ "$1" = "-h" ];then
    perl /usr/share/hw-probe/hw-probe.pl -h
    echo
    echo "Extra option for disable privacy parsing: -insecure"
    echo
    exit
else
    perl /usr/share/hw-probe/hw-probe.pl -all
fi

dbg()
{
    	  if [ -n "$DEBUG" ]; then
       	echo
       	$SETCOLOR_FAIL
       	echo -e "DBG >> ${@}"
       	$SETCOLOR_NORMAL
    	  fi
}

NEWADDR=$(od -tx -An -N14 /dev/random|tr '[a-z]' '[A-Z]' | sed 's| ||g')

dbg "Clean mounted devices..."
DATA_PATH="$HOME/HW_PROBE/LATEST/hw.info"

dbg "Find archived logs..."
for i in $(seq 1 9) ;do
find "$DATA_PATH" -type f -name "*.$i" | xargs rm -f 2>/dev/null
done

dbg "Remove RPMS info..."
echo "This is privacy information in future!" > $DATA_PATH/logs/rpms 2>/dev/null
for RPMS in '^kernel-' '^locales' '^glibc' '^gcc';do
rpm -qa | grep $RPMS >> $DATA_PATH/logs/rpms 2>/dev/null
done
echo "This is privacy information in future!" >> $DATA_PATH/logs/rpms 2>/dev/null
dbg "Clean Storag IDS..."
sed -i "s|/dev/disk/.*|/dev/blackPantherStorage_hidden_uuid|g" $DATA_PATH/logs/boot.log* 2>/dev/null
dbg "Clean Cpu Bugs for security..."
sed -i "s|bugs.*|bugs		: privacy_info|g" $DATA_PATH/logs/cpuinfo* 2>/dev/null
dbg "Clean DMI ID..."
sed -i "s|board_name:.*||g" $DATA_PATH/logs/dmi_id 2>/dev/null
dbg "Clean serial numbers" 
sed -i "s|Serial Number:.*||" $DATA_PATH/logs/dmidecode 2>/dev/null
sed -i "s|POWER_SUPPLY_SERIAL_NUMBER=.*|POWER_SUPPLY_SERIAL_NUMBER=PrivacyInfo|" $DATA_PATH/logs/power_supply 2>/dev/null
sed -i "s|Serial Number.*|Serial Number: Pricacy Info|" $DATA_PATH/logs/smartctl 2>/dev/null

for ADDR in $(cat $DATA_PATH/logs/ethtool_p | grep '=>' | awk -F\> '{print $2}') ; do 
sed -i "s|${ADDR}|${NEWADDR}|" "$DATA_PATH/logs/ethtool_p" 2>/dev/null
dbg "Clean Ether..."
sed -i "s|${ADDR}|${NEWADDR}|" "$DATA_PATH/logs/ifconfig" 2>/dev/null
NEWADDR=$(od -tx -An -N14 /dev/random|tr '[a-z]' '[A-Z]' | sed 's| ||g')
done
dbg "Clean mount info..."
sed -i "/\/mnt\/.*/d" "$DATA_PATH/logs/findmnt" 2>/dev/null
sed -i "/\/media\/.*/d" "$DATA_PATH/logs/findmnt" 2>/dev/null
sed -i "/\/\/.*/d" "$DATA_PATH/logs/findmnt" 2>/dev/null
sed -i "/.*shfs.*/d" "$DATA_PATH/logs/findmnt" 2>/dev/null
sed -i "/ \/.*/d" "$DATA_PATH/logs/lsblk" 2>/dev/null
sed -i "/\/\/.*/d" "$DATA_PATH/logs/fstab" 2>/dev/null
sed -i -e "s|.*auth.*||" -e "s|.*secur.*||" -e "s|.*pass.*||" "$DATA_PATH/logs/fstab" 2>/dev/null

dbg "Clean Storage Serials.."
sed -i "s|Serial Number.*|Serial Number : Hidden privacy information|" $DATA_PATH/logs/hdparm 2>/dev/null
dbg "Clean Monitor Serials.."
sed -i "s|Serial ID.*|Serial ID: Hidden privacy information|" $DATA_PATH/logs/hdparm 2>/dev/null
sed -i "s|Serial ID.*|Serial ID: Hidden privacy information|" $DATA_PATH/logs/hwinfo 2>/dev/null
dbg "Clean inxi"
sed -i "s|Serial.*||g" > $DATA_PATH/logs/inxi 2>/dev/null

dbg "Modify HW addr..."
HWADDR=$(cat $DATA_PATH/logs/ethtool_p | grep '=>' | head -n 1 |sed 's|.*=>||' 2>/dev/null)
sed -i "s|hwaddr:.*|hwaddr:${HWADDR}|" "$DATA_PATH/host" 2>/dev/null

dbg "Clean unknown"
rm -f '$DATA_PATH/logs/{'* 2>/dev/null

perl /usr/share/hw-probe/hw-probe.pl -upload
