
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 clone
diz 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 route
comando, mas no Linux ip route
resulta 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 $iface
s tinha aspas quando não deveria.