Facebook
From H.P., 5 Months ago, written in Bash.
Embed
Download Paste or View Raw
Hits: 137
  1. #!/bin/bash
  2.  
  3. #=======================================================================
  4.  
  5. for cmd in vboxmanage od sed bc head tr awk; do
  6.   if ! [ -x "$(command -v "$cmd")" ]; then
  7.     echo "Executável ${cmd} não encontrado."
  8.     exit 1
  9.   fi
  10. done
  11.  
  12. #=======================================================================
  13.  
  14. vboxmanage list vms
  15. echo "Digite o nome ou a UUID da máquina virtual a anonimizar:"
  16. read vm
  17.   if [ ! "$(vboxmanage list vms | grep "${vm}")" ]; then
  18.     echo "Esta máquina virtual não existe"
  19.     exit 1
  20.   fi
  21.  
  22. #=======================================================================
  23.  
  24. echo "Escolha o fabricante de sua CPU ( intel | amd ):"
  25. read vendor
  26.   case ${vendor} in
  27.               intel)
  28.                 vendor='GenuineIntel'
  29.                 brand="            13th Gen Intel(R) Core(TM) i3-13100"
  30.                 eax1="000B06F5"
  31.                 shift
  32.               ;;
  33.               amd)
  34.                 vendor='AuthenticAMD'
  35.                 brand="            AMD Ryzen 9 7950X 16-Core Processor"
  36.                 eax1="00A60F12"
  37.                 shift
  38.               ;;
  39.               *)
  40.                 echo "Fabricante desconhecido."
  41.                 exit 1
  42.               ;;
  43.   esac
  44.  
  45. #=======================================================================
  46.  
  47. ascii2hex() { echo -n 0x; od -A n --endian little -t x4 | sed 's/ //g'; }
  48.  
  49. registers=(ebx edx ecx)
  50. for (( i=0; i<${#vendor}; i+=4 )); do
  51.     register=${registers[$(($i/4))]}
  52.     value=`echo -n "${vendor:$i:4}" | ascii2hex`
  53.     for eax in 00000000 80000000; do
  54.         key=VBoxInternal/CPUM/HostCPUID/${eax}/${register}
  55.         vboxmanage setextradata "$vm" $key $value
  56.     done
  57. done
  58.  
  59. #=======================================================================
  60.  
  61.  
  62.  
  63. ascii2hex() { echo -n 0x; od -A n --endian little -t x4 | sed 's/ //g'; }
  64. ascii2bin() {
  65.     HEX=$(od -A n --endian little -t x4 | sed 's/ //g' | tr 'a-f' 'A-F')
  66.     echo "obase=2; ibase=16; $HEX" | BC_LINE_LENGTH=9999 bc | awk '{
  67.        s="00000000000000000000000000000000"$0;
  68.        t = substr( s, length(s) - 31, length(s));
  69.        gsub(/..../,"&:",t);
  70.        printf("%s",substr(t, 1, length(t)-1));
  71.    }'
  72. }
  73.  
  74. eax_values=(80000002 80000003 80000004)
  75. registers=(eax ebx ecx edx)
  76. for (( i=0; i<${#brand}; i+=4 )); do
  77.     eax=${eax_values[$((${i} / 4 / 4))]}
  78.     register=${registers[$((${i} / 4 % 4 ))]}
  79.     key=VBoxInternal/CPUM/HostCPUID/${eax}/${register}
  80.     value=`echo -n "${brand:$i:4}" | ascii2hex`
  81.     vboxmanage setextradata "$vm" $key $value
  82. done
  83.  
  84. #=======================================================================
  85.  
  86. vboxmanage setextradata "${vm}" VBoxInternal/CPUM/HostCPUID/00000001/eax 0x${eax1}
  87. vboxmanage setextradata "${vm}" VBoxInternal/CPUM/HostCPUID/80000001/eax 0x${eax1}
  88.  
  89. #=======================================================================
  90.  
  91. echo "Máquina virtual anonimizada com sucesso!"
  92.