Não é possível conectar-se à Internet após alterar o endereço MAC

Não é possível conectar-se à Internet após alterar o endereço MAC

Estou criando um script BASh que altera seu endereço MAC para qualquer fabricante de sua escolha em uma lista. Na última parte do script executada, ele para antes de terminar. Aqui está o código dessa parte:

function spoofUseMAC() {

  echo
  read -p "[*] $($stopAllFX; $bgBlack; $white)Enter the number code for manufacturer: >>> " num
  echo "[-] Generating MAC Address"
  num=$( expr $num - 1 )
  declare -a array
  while read -r; do
    array+=( "$REPLY" )
  done < addr.txt
  end=$( for i in {1..6} ; do echo -n ${hexchars:$(( $RANDOM % 16 )):1} ; done | sed -e 's/\(..\)/:\1/g' )
  macAddress=${array[$num]}$end
  echo "[-] MAC Address generated !"
  echo "[-] Using address: $macAddress"

  $skyBlue; $bold; echo
  ifconfig
  $white
  read -p "[*] $($stopAllFX; $bgBlack; $white)Select an interface: >>> " iface
  $yellow; echo "[-] $iface selected !"
  $white; echo  "[-] Disabling $iface ..."
  ifconfig $iface down
  ifconfig '$iface' hw ether '$macAddress'
  echo "[-] MAC Address spoofed !"
  sleep 1
  echo "[-] Enabling $iface ..."
  ifconfig '$iface' up
  echo "[-] $iface enabled !"
  echo "[-] Using address: $macAddress"
  exit

}

function spoofSearchAgainOrNot() {

  $bold; $white; echo
  echo "[*] $($stopAllFX; $bgBlack; $white)Please select an option from the list below:"
  $yellow; $bold; echo "        [$($white)0$($yellow)] $($stopAllFX; $bgBlack; $white)Search again"
  $yellow; $bold; echo "        [$($white)1$($yellow)] $($stopAllFX; $bgBlack; $white)Use one of these"
  read -p ">>> " searchAgainOrNot
  if [[ "$searchAgainOrNot" == "0" ]]; then
    spoofSearch
  elif [[ "$searchAgainOrNot" == "1" ]]; then
    spoofUseMAC
  else
    spoofSearchAgainOrNot
  fi

}

# Spoof, search option selected
function spoofSearch() {

  $bold; echo
  read -p "[*] $($stopAllFX; $bgBlack; $white)Search for a manufacturer: >>> " search
  $blue; awk -F '#' '{printf("%10d %s\n", NR, ":" $1 )}' /usr/bin/oui.txt | grep -i $search

  spoofSearchAgainOrNot

}

# Spoof
function spoof() {

  echo; $white
  echo "[*] $($stopAllFX; $bgBlack; $white)Please select an option from the list below:"
  $yellow; $bold; echo "        [$($white)0$($yellow)] $($stopAllFX; $bgBlack; $white)Search for a manufacturer"
  $yellow; $bold; echo "        [$($white)1$($yellow)] $($stopAllFX; $bgBlack; $white)Browse for a manufacturer through $($bold)long $($stopAllFX; $bgBlack; $white)list"
  read -p ">>> " searchOrBrowse
  if [[ $searchOrBrowse == "0" ]]; then
    spoofSearch
  elif [[ $searchOrBrowse == "1" ]]; then
    spoofBrowse
  else
    spoof
  fi

}

Por que não consigo usar a internet ( git clonediz could not resolve hostname: github.com) depois de executar este script? E por que não está terminando?

EDIT: Isso deve funcionar em MacOS e Linux. No MacOS, não há ip routecomando, mas no Linux ip routeresulta em:

192.168.0.0/24 dev wlp1s0  proto kernel scope link  src 192.168.0.18 
192.168.0.0/24 dev wlp1s0  proto kernel scope link  src 192.168.0.18  metric 600

Responder1

Algumas placas são um pouco meticulosas em alterar/falsificar o endereço MAC.

No OSX a mudança do endereço MAC da interface, em particular da interface wifi, tem que ser feita várias vezes até acertar, por exemplo, muitas vezes em loop, porque deve ser feita em um determinado tempo, eu suspeito; muitas vezes não é assumido à primeira vista com as versões mais recentes do OSX/MacOS.

Notavelmente no OSX, a interface/drivers parecem ficar confusos por alguns segundos após o MAC, mas eles se recuperam.

Marcas raras não vão gostar, em algumas marcas não é aconselhável alterar os 3 primeiros octetos (os primeiros 6 dígitos, menos ":"), que são o id do fabricante.

Muitas vezes você perde sua rota padrão ou o roteador/AP pode perder a noção de quem você é; embora o processo deva ser quase sempre automático, em alguns casos, no Linux, pode ser necessário reiniciar o serviço DHCP após alterar o endereço MAC.

Responder2

Eu encontrei o problema: um dos $ifaces tinha aspas quando não deveria.

informação relacionada