Seguridad Wireless - Wifi

Sistemas operativos => Zona GNU/Linux => Aplicaciones y diccionarios linux => Mensaje iniciado por: vk496 en 08-09-2013, 14:24 (Domingo)

Título: ChaMAC 0.9-5 : Cambia todas tus MAC
Publicado por: vk496 en 08-09-2013, 14:24 (Domingo)
Buenas a todos, estos ultimos dias, con mucho tiempo libre y poco que hacer, me decidí a hacer un pequeño script para seguridadwireless.net. Es muy simple, pero me ha llevado mchoco (muchisimo) tiempo hacerlo, pues no soy muy amigo de la programación y este ha sido mi primer script  ;D

Lo he hecho desde Ubuntu, no he podido llegar a probarlo sobre Wifislax (en estos dias lo hago)

El funcionamiento es muy simple: Cuando abramos el chamac , detectará todas nuestras interfaces, y les cambiará la MAC por una aleatoria. Después relanzará el cliente DHCP (o daemon) para volver a tener conexión a Internet (en el caso de que estuviésemos conectados)



#################################
#               Link Oficial del Proyecto (http://netenti.blogspot.com/2013/09/chamac.html)                   #
#################################



Aquí el script: (ultima modificación: 09-10-2013)

Código: [Seleccionar]
#!/bin/bash


########## Modo DEBUG ##########
##      ##
          CHAMAC_DEBUG=0
##      ##
################################

########## 08-09-2013 Chamac 0.1
##
## #Fecha de Salida
##
########## 10-09-2013 Chamac 0.2
##
## #Detección de clientes DHCP
## #Optimización del código
## #Detección de deaemons de red
## #Aviso de macchanger desactualizado
## #Comprobar permisos root
##
########## 11-09-2013 Chamac 0.3
##
## #Añadido menu de ayuda
## #Posibilidad de ejecutar script con el sistema
## #Eliminada dependencia macchanger, puede funcionar sin el
## #Añadidda posibilidad de usar macchanger si se quisiese
##
########## 12-09-2013 Chamac 0.4
##
## #Corregido bug cuando wicd esta off (gracias a @USUARIONUEVO)
## #Corregido fallo de colores cuando se pedia ser root
## #Añadido menu para restaurar las MAC
## #Añadido menu para ver las MAC actuales
## #Fixedo el archivo que se genera para --autoboot
## #Pequeñas mejoras en el codigo
##
########## 16-09-2013 Chamac 0.5
##
## Reducido información del script ( mas minimalista)
## Modificado representacion de las interfaces
## Añadidas varias rutas alternativas para MAC Permanente
## Corregido codigo de peticion de permisos Root
## Pequeños cambios en el codigo
##
########## 19-09-2013 Chamac 0.6
##
## Arreglado problema de cambios de MAC fallidos
## Añadido comprobador de ruta de chamac
## Optimizado deteccion de daemon
## Agregada salida DEBUG en consola
## Pequeñas optimizaciones en el codigo
## Bug interno de rutas en la opcion -r para autoejecutarse
##
########## 21-09-2013 Chamac 0.7
##
## Eliminadas rutas de /run/udev/data/nX para extraer la MAC Original
## Mejorada función --autostart para sistemas con SUDO
## Añadida opcion para MAC personalizada
## Optimizados mensajes informativos
##
########## 26-09-2013 Chamac 0.8
##
## Corregido bug que no eliminaba la entrada de /etc/sudoers
## Añadido OUI para mostrar el Vendor
## Añadida funcion --update para actualizar la base de deatos OUI
## Añadida database de OUI
## Optimizados mensajes informativos
## Estructurado codigo fuente para mejor comprension
##
########## 03-10-2013 Chamac 0.9
##
## Corregido bug "-i used with no filenames on the command line, reading from STDIN" (@USUARIONUEVO y @alister)
## Mejorado el parseo de datos
## Reducida información que se muestra sobre los Vendor (mas dinamica)
## Añadida opcion --list para mostrar todos los Vendor
## Añadida opcion --ending para mantener los bytes del Fabricante
## Añadida opcion --another para elegir otro Fabricante Aleatorio
## Reducida cantidad de repeticiones para el cambio de MAC de 6 a 3 (parece estable...)
##
########## 09-10-2013 Chamac 0.9-5
##
## Arreglado bug de duplicidad del comando -a
## Arreglado bug de variables en el parametro --another
##
##########


########## Agradecimientos
##
## Me gustaría dar las gracias al equipo de www.seguridadwireless.net por el maravilloso trabajo que estan haciendo.
## En especial, quiero dar las gracias a @USUARIONUEVO por sus inmediatos informes sorbre los bugs del script y consejos
## para el proyecto, a @warcry por el consejo de adaptar el script a mas distros linux, a @geminis_demon por sus ayudas con
## el bash y por ultimo a @alister, por mostrarme datos muy tecnicos de Linux (y necesarios) para desarrollar mi script y
## darme muy buenas ideas para que pueda seguir innovando
##
##########

ruta=$(which $0)
if [ $CHAMAC_DEBUG = 1 ]; then
    ## set to /dev/stdout when in developer/debugger mode
    export chamac_output_device=/dev/stdout
  else
    ## set to /dev/null when in production mode
    export chamac_output_device=/dev/null
fi

function conditional_clear() {
    if [[ "$chamac_output_device" != "/dev/stdout" ]]; then clear; fi
}

#Detectar interfaces
readarray -t interfaces < <(ip link | grep "<" | cut -d " " -f 2 | cut -d ":" -f 1 | grep -v lo)
#Comprobar estado del autoboot
anothermode=0
endingmode=0
macchangermode=0
custommacmode=0
if [ -f /etc/xdg/autostart/autochamac.desktop ]; then
    autoboot=1
  else
    autoboot=0
fi
#Dar colores al estado del autobbot
if [ $autoboot = 1 ]; then
    autobootstatus='\e[1;32mOn\e[0m'
  else
    autobootstatus='\e[1;31mOff\e[0m'
fi
#Detectar base de datos actual
if [ -f /usr/share/chamac/manuf ]; then
    OUIruta="/usr/share/chamac/manuf"
    dbMAC=$(cat /usr/share/chamac/manuf |grep ^[0-9A-F] | wc -l)
elif [ -f /etc/manuf ]; then
    OUIruta="/etc/manuf"
    dbMAC=$(cat /etc/manuf |grep ^[0-9A-F] | wc -l)
elif [ -f /usr/share/wireshark/manuf ]; then
    OUIruta="/usr/share/wireshark/manuf"
    dbMAC=$(cat /usr/share/wireshark/manuf |grep ^[0-9A-F] | wc -l)
  else
    OUIruta="N/A"
    dbMAC="N/A"
fi

#Menu de ayuda
if [ "$1" = "-v" -o "$1" = "--version" ]; then
    echo 0.9-5
    exit
elif [ "$1" = "-m" -o "$1" = "--macchanger" ]; then
    macchangermode=1
elif [ "$1" = "-e" -o "$1" = "--ending" ]; then
    endingmode=1
elif [ "$1" = "-A" -o "$1" = "--another" ]; then
    anothermode=1
elif [ "$1" = "-l" -o "$1" = "--list" ]; then
if [ ! $OUIruta = "N/A" ]; then
cat $OUIruta | awk '{ gsub("-", "", $1); gsub(":", "", $1); gsub("/[00-99]+$","",$1 ); gsub(/^ */,"- ", $2); print}' | sed -r 's/\s\S+\s#//' | grep ^[0-9A-F] |grep -n ""| awk '{ gsub(":", " - ", $1); print }'| perl -lane '$F[2] =~ s/(..)(?!$)/$1:/g; print qq|@F|'
else
echo -ne "Chamac Database---> "
echo -e "\e[1;33mNot installed\e[0m (use \e[1;31mchamac --update\e[0m)"
fi
exit
elif [ "$1" = "-u" -o "$1" = "--update" ]; then
if [ $(/usr/bin/id -u) != 0 ]; then
    echo -e "Privileges \e[0;31mroot\e[0m---> \e[1;31mError\e[0m"
    exit
fi

conditional_clear
echo -ne "Check Internet Connection---> "
if ping -c4 google.es&>$chamac_output_device; then
    echo -e "\e[1;32mOK!\e[0m"
    sleep 3
  if [ ! -d /usr/share/chamac/manuf ]; then
    mkdir /usr/share/chamac/ &>${chamac_output_device}
conditional_clear
   else
    rm -f /usr/share/chamac/manuf &>${chamac_output_device}
  fi
    wget -O /usr/share/chamac/manuf anonsvn.wireshark.org/wireshark/trunk/manuf |& grep "%"
conditional_clear
    $0 -h
  else
    echo -e "\e[1;31mError\e[0m"
fi
exit
elif [ "$1" = "-s" -o "$1" = "--show" ]; then
conditional_clear
for INTERFACE in ${interfaces[@]}; do
    rutasecundaria=$(cat /etc/udev/rules.d/70-persistent-net.rules | grep $INTERFACE | awk '{print $4}' | grep -o -P '(?<=").*(?=")')
  if [ $rutasecundaria ]; then
      MAC_ORIGINAL=$(cat /etc/udev/rules.d/70-persistent-net.rules | grep $INTERFACE | awk '{print $4}' | grep -o -P '(?<=").*(?=")')
    else
if [ -e /sys/class/net/$INTERFACE/phy80211/addresses ]; then
   MAC_ORIGINAL=$(cat /sys/class/net/$INTERFACE/phy80211/addresses)
 else
   rutaultima=$(ethtool -P $INTERFACE | grep Permanent)
     if [ "ethtool -P $INTERFACE | grep Permanent" ]; then
 MAC_ORIGINAL=$(ethtool -P $INTERFACE | grep Permanent | awk '{print $3}')
else
 MAC_ORIGINAL="??:??:??:??:??:??"
     fi
fi
  fi
    MAC_ACTUAL="$(cat /sys/class/net/$INTERFACE/address)"
   
if [ ! $OUIruta = "N/A" ]; then
    MAC_O="$(echo $MAC_ORIGINAL| tr -d : | tr '[:lower:]' '[:upper:]')"
    MAC_A="$(echo $MAC_ACTUAL| tr -d : | tr '[:lower:]' '[:upper:]')"
    MAClist=$(cat $OUIruta | awk '$3 == "#"{ gsub("-", "", $1); gsub(":", "", $1); gsub("/[00-99]+$","",$1 ); gsub(/^ */,"", $1); {t=$1; $1=$2=$3=""; sub(/^[[:space:]]+/, ""); $0=t" "$0}; print}')
    i=6

while [ $i -le 12 ]; do
      SEARCHING_RESULT_o=$(echo "$MAClist" |grep ^${MAC_O:0:i})
      SEARCHING_EXITCODE_o=$?
      lineas_o=$(echo "$SEARCHING_RESULT_o" | wc -l)
     if [ "$lineas_o" = 1 ]; then
if [ "$SEARCHING_EXITCODE_o" = 0 ]; then
   FABRICANTE_MAC_ORIGINAL=$(echo "$SEARCHING_RESULT_o"|cut -d " " -f 2-22)
fi
     fi

SEARCHING_RESULT=$(echo "$MAClist" |grep ^${MAC_A:0:i})
      SEARCHING_EXITCODE=$?
      lineas=$(echo "$SEARCHING_RESULT" | wc -l)
     if [ "$lineas" = 1 ]; then
if [ "$SEARCHING_EXITCODE" = 0 ]; then
FABRICANTE_MAC_FALSA="(\e[1;34m$(echo "$SEARCHING_RESULT"|cut -d " " -f 2-22)\e[0m)"
fi
break
     fi
     
     
    let i=i+1
done

  else
      FABRICANTE_MAC_ORIGINAL="\e[1;31mN/A\e[0m"
      FABRICANTE_MAC_ORIGINAL="\e[1;31mN/A\e[0m"
fi
if [ -z "$FABRICANTE_MAC_ORIGINAL" ]; then
  FABRICANTE_MAC_ORIGINAL="unknown"
fi

if [ "$FABRICANTE_MAC_FALSA" = "($FABRICANTE_MAC_ORIGINAL)" ]; then
    FABRICANTE_MAC_FALSA=""
fi


    echo "======================================================\\"
echo -e "   INTERFACE:\e[1;35m $INTERFACE \e[0m"
echo -e "  FABRICANTE: \e[1;34m$FABRICANTE_MAC_ORIGINAL\e[0m"
echo -e "MAC ORIGINAL: $MAC_ORIGINAL "
echo -e "  MAC ACTUAL: \e[1;31m$MAC_ACTUAL\e[0m $FABRICANTE_MAC_FALSA"
echo "======================================================/"
done
exit
elif [ "$1" = "-r" -o "$1" = "--restore" ]; then
if [ $(/usr/bin/id -u) != 0 ]; then
    echo -e "Privileges \e[0;31mroot\e[0m---> \e[1;31mError\e[0m"
    exit
fi
conditional_clear
#Definir clientes DHCP
if ps -A | grep dhcpcd &>${chamac_output_device}; then
    dhcpclientrestore=dhcpcd
fi

if ps -A | grep dhclient &>${chamac_output_device}; then
    dhcpclientrestore=dhclient
fi

if ps -A | grep pump &>${chamac_output_device}; then
    dhcpclientrestore=pump
fi

#Comprobar el daemon del sistema
readarray -t listadedaemons < <(echo "/etc/rc.d/rc.inet1
/etc/rc.d/wicd
/etc/rc.d/rc.wicd
/etc/rc.d/network-manager
/etc/rc.d/rc.network-manager
/etc/init.d/wicd
/etc/init.d/network-manager")

for comprobandodaemon in ${listadedaemons[@]}; do
if [ -e "$comprobandodaemon" ]; then
    chamac_detected_daemon="$comprobandodaemon"
    break
fi
done

if [[ "${chamac_detected_daemon}" != "" ]]; then
    "$chamac_detected_daemon" stop &>${chamac_output_device}
  else
    killall -9 wpa_supplicant &>$chamac_output_device
    killall -9 $dhcpclient &>$chamac_output_device
fi
#Comprobar las MAC


for INTERFACE in ${interfaces[@]}; do
    rutasecundaria=$(cat /etc/udev/rules.d/70-persistent-net.rules | grep $INTERFACE | awk '{print $4}' | grep -o -P '(?<=").*(?=")')
   if [ $rutasecundaria ]; then
   MAC_ORIGINAL=$(cat /etc/udev/rules.d/70-persistent-net.rules | grep $INTERFACE | awk '{print $4}' | grep -o -P '(?<=").*(?=")')
   else
   if [ -e /sys/class/net/$INTERFACE/phy80211/addresses ]; then
 MAC_ORIGINAL=$(cat /sys/class/net/$INTERFACE/phy80211/addresses)
   else
 rutaultima=$(ethtool -P $INTERFACE | grep Permanent)
   if [ "ethtool -P $INTERFACE | grep Permanent" ]; then
 MAC_ORIGINAL=$(ethtool -P $INTERFACE | grep Permanent | awk '{print $3}')
   else
 MAC_ORIGINAL="??:??:??:??:??:??"
   fi

   fi
    fi
   
    while [ "$MAC_ORIGINAL" != "$MAC_ACTUAL" ]; do
   ifconfig $INTERFACE down &>${chamac_output_device}
   ip link set $INTERFACE address $MAC_ORIGINAL &>${chamac_output_device}
   ifconfig $INTERFACE up &>${chamac_output_device}
   break && $0 -r
   conditional_clear
done
done
#Reiniciar las daemons
if [ "$chamac_detected_daemon" != "" ]; then
    "$chamac_detected_daemon" start &>${chamac_output_device}
  else
    #Reiniciar posible servicio DHCP
      if [ "$chamac_detected_daemon" == "" ]; then
 if [ $dhcpclient ]; then
     sleep 2
     $dhcpclient &>${chamac_output_device}
 fi
      fi
fi
$0 -s
exit
elif [ "$1" = "-a" -o "$1" = "--autostart" ]; then
    conditional_clear
    echo -ne "Privileges \e[0;31mroot\e[0m---> "
if [ $(/usr/bin/id -u) = 0 ]; then
    echo -e "\e[1;32mOK!\e[0m"
else
    echo -e "\e[1;31mError\e[0m"
    exit
fi
echo -ne "Chamac \e[0;31minstalldir\e[0m---> "
if [ $ruta = /usr/bin/chamac ]; then
    echo -e "\e[1;32mOK!\e[0m"
else
    echo -e "\e[1;31mError\e[0m"
    echo
    echo -e "Use \e[1;33mcp chamac /usr/bin/\e[0m"
    exit
fi
echo -ne "Does \e[0;31mSUDO\e[0m system exist? ---> "
if [ $autoboot = 1 ]; then
    rm -f /etc/xdg/autostart/autochamac.desktop
    sed -i '/\/usr\/bin\/chamac/d' /etc/sudoers
if [ -f /etc/sudoers ]; then
    echo -e "\e[1;32mYes\e[0m"
else
    echo -e "\e[1;31mNo\e[0m"
fi
elif [ $autoboot = 0 ]; then
    echo "[Desktop Entry]
    Exec=/usr/bin/chamac
    StartupNotify=true
    Terminal=false
    Type=Application
    X-GNOME-Autostart-enabled=true"> /etc/xdg/autostart/autochamac.desktop
if [ -f /etc/sudoers ]; then
  echo -e "\e[1;32mYes\e[0m"
echo "$(logname) ALL=(root) NOPASSWD: /usr/bin/chamac" >>/etc/sudoers
  perl -pi -e 's/\/usr\/bin\/chamac/sudo \/usr\/bin\/chamac/g' /etc/xdg/autostart/autochamac.desktop
else
  echo -e "\e[1;31mNo\e[0m"
fi
fi
echo
$0 -h
echo
echo -e "Ten en cuenta que tendras que dar los permisos necesarios para que el script se ejecute como \e[1;31mroot\e[0m junto con el sistema, sino, no tendra efecto"
exit
elif [ "$1" = "-M" -o "$1" = "--MAC" ]; then
echo -ne "Privileges \e[0;31mroot\e[0m---> "
if [ $(/usr/bin/id -u) = 0 ]; then
    echo -e "\e[1;32mOK!\e[0m"
else
    echo -e "\e[1;31mError\e[0m"
    exit
fi
custommac="$(echo $2 | grep -oiE '([0-9A-F]{2}:){5}[0-9A-F]{2}$')"
if [ $custommac ]; then
    custommacmode=1
elif [ -z $2 ]; then
    echo -e "No se ha especificado ninguna \e[1;31mMAC\e[0m"
    exit
  else
    echo -e "La MAC \e[1;31m$2\e[0m no es una \e[1;31mMAC\e[0m valida"
    exit
fi
elif [ "$1" = "-h" -o "$1" = "--help" ]; then
echo "Chamac v0.9-5 (Change all MAC)"
echo "Uso: chamac [options]"
echo
echo "  -a,  --autostart Inicia el script con el sistema"
echo -e " Estado actual: $autobootstatus"
echo "  -u,  --update Actualiza la Base de Datos MAC"
echo -e " Base Actual: \e[1;31m$dbMAC\e[0m"
echo "  -m,  --macchanger Usar macchanger para generar MAC"
echo "  -M,  --MAC XX:XX:XX:XX:XX:XX Usa la MAC XX:XX:XX:XX:XX:XX"
echo "  -e,  --ending Mantener bytes del fabricante"
echo "  -A,  --another Usar MAC de otro fabricante"
echo "  -r,  --restore Restaura las MAC Original"
echo "  -s,  --show Muestra todas las MAC"
echo "  -l,  --list Muestra todos los Fabricantes"
echo
echo "  -h,  --help Muestra la pantalla de ayuda"
echo "  -v,  --version Muestra la version de la herramienta"
echo
echo "Reporta los fallos a vk18496@gmail.com"
exit
fi
let totalmode=$anothermode+$endingmode+$macchangermode+$custommacmode
conditional_clear
echo -e "=========================================="
echo -e "|           \e[1;34mChaMAC\e[0m 0.9-5 by vk496        |"
echo -e "|                                        |"
echo -e "|          netenti.blogspot.com          |"
echo -e "|                                        |"
echo -e "|    Pequeño script para cambiar todas   |"
echo -e "|  las direcciones MAC de tu PC por unas |"
echo -e "|  aleatorias. Usa \e[1;32mchamac --help\e[0m para    |"
echo -e "|  mas info.                             |"
echo -e "|                                        |"
echo -e "|     Para \e[1;31mwww.seguridadwireless.net\e[0m     |"
echo -e "=========================================="
echo -e
echo
# Comprobar que macchanger esta actulizado
# 53 lineas = vieja
# 52 lineas = version Ubuntu
# 219 lineas =version 2013

echo -ne "Privileges \e[0;31mroot\e[0m---> "
if [ $(/usr/bin/id -u) = 0 ]; then
    echo -e "\e[1;32mOK!\e[0m"
else
    echo -e "\e[1;31mError\e[0m"
    exit
fi
echo -ne "Chamac \e[0;31minstalldir\e[0m---> "
if [ $ruta = /usr/bin/chamac ]; then
    echo -e "\e[1;32mOK!\e[0m"
else
    echo -e "\e[1;31mError\e[0m"
    echo
    echo -e "Use \e[1;33mcp chamac /usr/bin/\e[0m"
    exit
fi
echo -ne "Autoboot Status---> "
if [ $autoboot = 1 ]; then
    echo -e "$autobootstatus"
elif [ $autoboot = 0 ]; then
    echo -e "$autobootstatus"
fi

echo -ne "Chamac Database---> "
if [ $dbMAC = "N/A" ]; then
    echo -e "\e[1;33mNot installed\e[0m (use \e[1;31mchamac --update\e[0m)"
else
    echo -e "\e[1;32mOK!\e[0m"
    echo -e " Database: \e[1;31m$dbMAC\e[0m"
fi

echo -ne "Chamac Mode-------> "
if [ $macchangermode = 1 ]; then
    echo -e "\e[1;32mMacchanger\e[0m"
if type macchanger &>${chamac_output_device}; then
echo -ne "\e[0;31mmacchanger\e[0m Status-> "
if [ $(cat $(which macchanger) | wc -l) = 53 ]; then
    echo -e "\e[1;33mObsoleted\e[0m"
    macchangerviejo=1
  else
    echo -e "\e[1;32mOK!\e[0m"
    macchangerviejo=0
fi
else
    echo -e "\e[1;31mNot installed!\e[0m"
    exit
fi
elif [ $custommacmode = 1 ]; then
      echo -e "\e[1;32mCustom\e[0m"
elif [ $endingmode = 1 ]; then
      echo -e "\e[1;32mEnding\e[0m"
elif [ $anothermode = 1 ]; then
      echo -e "\e[1;32mAnother\e[0m"
if [ "$OUIruta" = "N/A" ]; then
 echo
          echo -e "\e[1;31mDatabase not installed!\e[0m"
 exit
fi
elif [ $totalmode = 0 ]; then
    echo -e "\e[1;32mNormal\e[0m"
    fi
#Buscar posibles clientes DHCP
clientesdhcp() {
if ps -A | grep dhcpcd &>${chamac_output_device}; then
    dhcpclient=dhcpcd
fi

if ps -A | grep dhclient &>${chamac_output_device}; then
    dhcpclient=dhclient
fi

if ps -A | grep pump &>${chamac_output_device}; then
    dhcpclient=pump
fi
}
#Comprobar el daemon del sistema
clientedaemon() {
readarray -t listadedaemons < <(echo "/etc/rc.d/rc.inet1
/etc/rc.d/wicd
/etc/rc.d/rc.wicd
/etc/rc.d/network-manager
/etc/rc.d/rc.network-manager
/etc/init.d/wicd
/etc/init.d/network-manager")

for comprobandodaemon in ${listadedaemons[@]}; do
if [ -e "$comprobandodaemon" ]; then
    chamac_detected_daemon="$comprobandodaemon"
    break
fi
done

if [[ "${chamac_detected_daemon}" != "" ]]; then
    "$chamac_detected_daemon" stop &>${chamac_output_device}
  else
    killall -9 wpa_supplicant &>$chamac_output_device
    killall -9 $dhcpclient &>$chamac_output_device
fi
detectarmac
}
detectarmac() {
lista=$(echo ${interfaces[@]} | wc -w)
echo
echo -e "Network inteface/s: \e[0;31m$lista\e[0m "
echo
echo -e "\e[1;31m${interfaces[@]}\e[0m"
echo
echo
sleep 3
cambiarmac
}
cambiarmac() {
mac() {
#Cambiar MAC con ifconfig
viaifconfig() {

for (( c=1; c<=3; c++ ))
do

for INTERFACE in ${interfaces[@]}; do
    MAC_ACTUAL="$(cat /sys/class/net/$INTERFACE/address)"
   
 until [ -N $MAC_ACTUAL ]; do
     ifconfig $INTERFACE down &>${chamac_output_device}
     ip link set $INTERFACE down &>${chamac_output_device}    
   if [ $endingmode = 1 ]; then
rutasecundaria=$(cat /etc/udev/rules.d/70-persistent-net.rules | grep $INTERFACE | awk '{print $4}' | grep -o -P '(?<=").*(?=")')
   if [ $rutasecundaria ]; then
MAC_ORIGINAL=$(cat /etc/udev/rules.d/70-persistent-net.rules | grep $INTERFACE | awk '{print $4}' | grep -o -P '(?<=").*(?=")')
     else
 if [ -e /sys/class/net/$INTERFACE/phy80211/addresses ]; then
     MAC_ORIGINAL=$(cat /sys/class/net/$INTERFACE/phy80211/addresses)
   else
     rutaultima=$(ethtool -P $INTERFACE | grep Permanent)
if [ "ethtool -P $INTERFACE | grep Permanent" ]; then
   MAC_ORIGINAL=$(ethtool -P $INTERFACE | grep Permanent | awk '{print $3}')
 else
   MAC_ORIGINAL="??:??:??:??:??:??"
fi
 fi
   fi
   
ip link set dev $INTERFACE address $(echo "$(echo $MAC_ORIGINAL| tr -d : |cut -c 1-6)$(openssl rand -hex 3)"| sed 's/\(..\)/\1:/g; s/.$//') &>${chamac_output_device}

   fi
   if [ $custommacmode = 1 ]; then
     ip link set dev $INTERFACE address $custommac &>${chamac_output_device}
     echo $custommac &>${chamac_output_device}
     fi
   if [ $anothermode = 1 ]; then
       listado=$(cat $OUIruta | awk '{ gsub("-", "", $1); gsub(":", "", $1); gsub("/[00-99]+$","",$1 ); print $1}' | grep ^[0-9A-F] | grep -v ^FFFFFFFFFFFF | shuf -n 1)
let anotherMACrandom=12-$(echo $listado | wc -L)
ip link set dev $INTERFACE address $(echo "$(echo $listado)$(echo $(< /dev/urandom tr -dc A-F0-9 | head -c$anotherMACrandom))"| sed 's/\(..\)/\1:/g; s/.$//') &>${chamac_output_device}
   fi
   if [ $totalmode = 0 ]; then
  ip link set dev $INTERFACE address $(openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//') &>${chamac_output_device}
 fi
 break
 conditional_clear
done
done

done

}

#Cmabar MAC con macchanger
viamacchanger() {
for interfaz in "${interfaces[@]}"; do
    ifconfig $interfaz down &>${chamac_output_device}
    ip link set $interfaz down &>${chamac_output_device}
    macchanger -r $interfaz &>${chamac_output_device}
done
}
if [ $macchangermode = 0 ]; then
    viaifconfig
elif [ $macchangermode = 1 ]; then
    viamacchanger
fi
conditional_clear
interfacesup
}
interfacesup() {
#Levantar interfaces
for curInterfaceup in "${interfaces[@]}"; do
    ifconfig $curInterfaceup up &>${chamac_output_device}
    ip link set $curInterfaceup up &>${chamac_output_device}
done
listo
}
mac
}
listo() {
for INTERFACE in ${interfaces[@]}; do
    rutasecundaria=$(cat /etc/udev/rules.d/70-persistent-net.rules | grep $INTERFACE | awk '{print $4}' | grep -o -P '(?<=").*(?=")')
  if [ $rutasecundaria ]; then
      MAC_ORIGINAL=$(cat /etc/udev/rules.d/70-persistent-net.rules | grep $INTERFACE | awk '{print $4}' | grep -o -P '(?<=").*(?=")')
    else
if [ -e /sys/class/net/$INTERFACE/phy80211/addresses ]; then
   MAC_ORIGINAL=$(cat /sys/class/net/$INTERFACE/phy80211/addresses)
 else
   rutaultima=$(ethtool -P $INTERFACE | grep Permanent)
     if [ "ethtool -P $INTERFACE | grep Permanent" ]; then
 MAC_ORIGINAL=$(ethtool -P $INTERFACE | grep Permanent | awk '{print $3}')
else
 MAC_ORIGINAL="??:??:??:??:??:??"
     fi
fi
  fi
    MAC_ACTUAL="$(cat /sys/class/net/$INTERFACE/address)"
   
if [ ! $OUIruta = "N/A" ]; then
    MAC_O="$(echo $MAC_ORIGINAL| tr -d : | tr '[:lower:]' '[:upper:]')"
    MAC_A="$(echo $MAC_ACTUAL| tr -d : | tr '[:lower:]' '[:upper:]')"
    MAClist=$(cat $OUIruta | awk '$3 == "#"{ gsub("-", "", $1); gsub(":", "", $1); gsub("/[00-99]+$","",$1 ); gsub(/^ */,"", $1); {t=$1; $1=$2=$3=""; sub(/^[[:space:]]+/, ""); $0=t" "$0}; print}')
    i=6

while [ $i -le 12 ]; do
      SEARCHING_RESULT_o=$(echo "$MAClist" |grep ^${MAC_O:0:i})
      SEARCHING_EXITCODE_o=$?
      lineas_o=$(echo "$SEARCHING_RESULT_o" | wc -l)
     if [ "$lineas_o" = 1 ]; then
if [ "$SEARCHING_EXITCODE_o" = 0 ]; then
   FABRICANTE_MAC_ORIGINAL=$(echo "$SEARCHING_RESULT_o"|cut -d " " -f 2-22)
fi
     fi

SEARCHING_RESULT=$(echo "$MAClist" |grep ^${MAC_A:0:i})
      SEARCHING_EXITCODE=$?
      lineas=$(echo "$SEARCHING_RESULT" | wc -l)
     if [ "$lineas" = 1 ]; then
if [ "$SEARCHING_EXITCODE" = 0 ]; then
FABRICANTE_MAC_FALSA="(\e[1;34m$(echo "$SEARCHING_RESULT"|cut -d " " -f 2-22)\e[0m)"
fi
break
     fi
     
     
    let i=i+1
done

  else
      FABRICANTE_MAC_ORIGINAL="\e[1;31mN/A\e[0m"
      FABRICANTE_MAC_ORIGINAL="\e[1;31mN/A\e[0m"
fi
if [ -z "$FABRICANTE_MAC_ORIGINAL" ]; then
  FABRICANTE_MAC_ORIGINAL="unknown"
fi

if [ "$FABRICANTE_MAC_FALSA" = "($FABRICANTE_MAC_ORIGINAL)" ]; then
    FABRICANTE_MAC_FALSA=""
fi


    echo "======================================================\\"
echo -e "   INTERFACE:\e[1;35m $INTERFACE \e[0m"
echo -e "  FABRICANTE: \e[1;34m$FABRICANTE_MAC_ORIGINAL\e[0m"
echo -e "MAC ORIGINAL: $MAC_ORIGINAL "
echo -e "  MAC ACTUAL: \e[1;31m$MAC_ACTUAL\e[0m $FABRICANTE_MAC_FALSA"
echo "======================================================/"
done
echo
if [ $custommacmode = 1 ]; then
echo -e "Nota: Hay direcciones \e[1;31mMAC\e[0m que \e[1;31mNO\e[0m se pueden usar (si eso pasa, prueba con otra \e[1;31mMAC\e[0m)"
fi
echo
echo -e "\e[1;36mReiniciando interfaces y DHCP\e[0m ... "
sleep 3
echo -e "Mediante \e[1;33mifconfig\e[0m podras comprobar que la mac realmente ha cambiado."

if [ "$chamac_detected_daemon" != "" ]; then
echo -e "Iniciando servcio \e[1;31m${chamac_detected_daemon}\e[0m"
"$chamac_detected_daemon" start &>${chamac_output_device}
else
    #Reiniciar posible servicio DHCP
if [ "$chamac_detected_daemon" == "" ]; then
  if [ $dhcpclient ]; then
    sleep 2
    $dhcpclient &>${chamac_output_device}
    echo -e "Cliente \e[1;31m$dhcpclient\e[0m reiniciado"
  fi

fi
fi
echo
echo -e "Recuerda revisar las demas opciones con \e[1;32mchamac --help\e[0m"
echo
echo -e "Tareas realizadas ... Hasta pronto :)"
exit
}
clientesdhcp && clientedaemon

Para instalarlo, tenemos que crear un archivo con el nombre chamac.
Después, darle permisos de ejecución:
Código: [Seleccionar]
chmod +x chamac
Y por ultimo, copiar el script a /usr/bin con:

Código: [Seleccionar]
cp chamac /usr/bin/
Espero que puedan apreciar la obra maestra de un novato  ;D ;D

Salu2
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: sanson en 08-09-2013, 19:23 (Domingo)
hola


gracias por compartir  ;)

saludos
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 08-09-2013, 21:14 (Domingo)
despues del  #!/bin/bash  la linea siguiente debe ser un espacio.


lo voy a probar a ver que tal.


gracias.


TEST DE 0.1

El script funciona , es decir hace su funcion , detecta todas las interfaces ( incluidas ethernet ) , y les cambia la mac.

Pone a todas LA MISMA MAC , ( no se si esto es asi a proposito.


El unico pero es este de la imagen ..creo que la idea era que mostrase la mac original y la nueva..pero no las muestra...no se muy bien el por que.

(http://imageshack.us/a/img837/7162/gmci.png)
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 08-09-2013, 21:25 (Domingo)
Repito que las funciones las hace todas bien , para el dhcp y lo reinicia y todo ok ...solo ese pequeño detalle de que no muestra las macs ..y que pone la misma mac a todas las interfaces  y no se si esta pensado asi a posta.


Por mi , lo unico , lo de mostrar la mac real ,y la que pondra nueva.
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: vk496 en 08-09-2013, 22:29 (Domingo)
Repito que las funciones las hace todas bien , para el dhcp y lo reinicia y todo ok ...solo ese pequeño detalle de que no muestra las macs ..y que pone la misma mac a todas las interfaces  y no se si esta pensado asi a posta.


Por mi , lo unico , lo de mostrar la mac real ,y la que pondra nueva.

Hola, gracias por comentar y el consejo de #!/bin/bash

Realmente el propósito era poner una MAC distinta y aleatoria de cada interfaz. Lo que comentas del listado final de MAC supuestamente han de hacer esa función (mostrarlos). De todas formas, en cuanto recupere mi USB donde tengo el Wifislax (lo tiene un amigo), haré los cambios necesarios para adaptarlo a Wifislax. Aquí dejo una captura de como me quedó a mi en Ubuntu:

(http://img841.imageshack.us/img841/8752/i0q.png)

Y una vez mas, gracias por pasarte y comprobar que funciona   ;D

Salu2
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 08-09-2013, 22:57 (Domingo)
De momento ya he hehco el modulo ,para que aparezca en los menus de xfce  y kde.


Te he modificado el final , por que creo asi es mas claro para el usuario , ademas de comentar que usando ifconfig pueden comprobar los cambios.


Código: [Seleccionar]
#!/bin/bash

clear
echo -e "=========================================="
echo -e "|           \e[1;34mChaMAC\e[0m 0.1 by vk496          |"
echo -e "|                                        |"
echo -e "|          netenti.blogspot.com          |"
echo -e "|                                        |"
echo -e "|    Pequeño script para cambiar todas   |"
echo -e "|  las direcciones MAC de tu PC por unas |"
echo -e "|  aleatorias. Dependencias: macchanger  |"
echo -e "|                                        |"
echo -e "|     Para \e[1;31mwww.seguridadwireless.net\e[0m     |"
echo -e "=========================================="
echo -e
echo -e Detectando Interfaces... Espera 1 momento...
sleep 3
readarray -t interfaces < <(ip link | grep "<" | cut -d " " -f 2 | cut -d ":" -f 1 | grep -v lo)
detectarmac() {
lista=$(echo ${interfaces[@]} | wc -w)
echo
echo Actualmente tienes estas tarjetas de red:
echo
echo -e "\e[1;31m${interfaces[@]}\e[0m"
echo
echo -e "Se va a cambiar la MAC de \e[0;31m$lista\e[0m interfaces"
sleep 5
interfacesdown
}
interfacesdown() {
for curInterfacedown in "${interfaces[@]}"; do
    ifconfig $curInterfacedown down
done
mac
}
mac() {
for mac in "${interfaces[@]}"; do
    macchanger -r $mac &>/dev/null
done
clear
interfacesup
}
interfacesup() {
for curInterfaceup in "${interfaces[@]}"; do
    ifconfig $curInterfaceup up
done
for mac in "${interfaces[@]}"; do
echo -e "============================================="
echo -e "| MAC \e[1;34mOriginal\e[0m de "$mac":\e[1;37m $(macchanger -s $mac | grep Permanent | cut -d " " -f 3)\e[0m   \\"
echo -e "| MAC \e[1;35mFalsa\e[0m de "$mac":\e[1;31m $(macchanger -s $mac | grep Current | cut -d " " -f 5)\e[0m      /"
echo -e "============================================="
done
echo
echo -e "\e[1;36mReiniciando interfaces y DHCP\e[0m ... "
sleep 3
echo -e "Mediante \e[1;33mifconfig\e[0m podras comprobar que la mac realmente a cambiado."
echo -e "Tareas realizadas ... Hasta pronto :)"
dhclient &>/dev/null
}
detectarmac


(http://img855.imageshack.us/img855/5040/v13z.png)


De momento , pues , eso ...misma mac a todas las tarjetas , y no muestra los cambios ..el lo importante es que funcionar funciona , cambia la mac a todas las interfaces y reinicia dhcp.
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: ferlan en 09-09-2013, 00:32 (Lunes)
Lo había probado esta tarde antes de irme a cenar. Como ya lo ha hecho USUARIONUEVO -y mejor que lo habría hecho yo-, sólo queda corroborar que mis resultados concuerdan punto por punto con los que él expone.
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: warcry en 09-09-2013, 00:39 (Lunes)
no me gusta el comando que utiliza el script para cambiar la mac, hay veces que el macchanger no hace lo que tiene que hacer y deja la mac original, y el usuario no se dara cuenta ya que la shell no arroja ningún error.

yo siempre recomiendo cambiar la mac con

Código: [Seleccionar]
ifconfig "interface" hw ether
ese no falla nunca.
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 09-09-2013, 01:09 (Lunes)
no me gusta el comando que utiliza el script para cambiar la mac, hay veces que el macchanger no hace lo que tiene que hacer y deja la mac original, y el usuario no se dara cuenta ya que la shell no arroja ningún error.

yo siempre recomiendo cambiar la mac con

Código: [Seleccionar]
ifconfig "interface" hw ether
ese no falla nunca.

cuando el script acabe de funcionar bien en wifislax, debe mostrar mac real , y mac despues del cambio ..

hay se dara cuenta, pero hasta que no lo revise el autor, estamos un pocoa ciegas.  ;D
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: vk496 en 09-09-2013, 14:37 (Lunes)
Ya está, lo he revisado  :D

El problema se encontraba en el propio macchanger de Wifislax.

La versión de Wifislax no mostraba tu MAC real, solo la actual. El paremetro -r tampoco estaba muy pulido, pues aunque fuera una MAC aleatoria, siempre era la misma para todas las interfaces.

He cogido el macchanger compilado de Ubuntu, y funciona perfectamente en Wifislax (recomiendo reemplazarlo para la próxima salida de Wifislax). Con ese ejecutable el script funciona perfecto: muestra las MAC y crea patrones aleatorios para cada interfaz.

El único problema que se me presenta ahora es la reconexión. Desde Ubuntu con un simple dhcpclient bastaba para refrescar la conexión.. Con WiCd no encuentro la manera de hacerlo. He probado añadiendole el script de reconexión automática al final del chamac, pero a mi no me ha funcionado (se ve que intenta autoreconectarse, pero no lo consigue, tengo que hacerlo yo mismo)

Si alguien puede probar si le llega a funcionar (cosa que dudo un poco), le estaría muy agradecido :)

Adjunto el macchanger necesario para hacer funcionar bien el script:

https://dl.dropboxusercontent.com/u/36498325/macchanger (https://dl.dropboxusercontent.com/u/36498325/macchanger)

Nota: La ruta del macchanger es /usr/bin/

Salu2
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 09-09-2013, 14:46 (Lunes)
Ya está, lo he revisado  :D

El problema se encontraba en el propio macchanger de Wifislax.

La versión de Wifislax no mostraba tu MAC real, solo la actual. El paremetro -r tampoco estaba muy pulido, pues aunque fuera una MAC aleatoria, siempre era la misma para todas las interfaces.

He cogido el macchanger compilado de Ubuntu, y funciona perfectamente en Wifislax (recomiendo reemplazarlo para la próxima salida de Wifislax). Con ese ejecutable el script funciona perfecto: muestra las MAC y crea patrones aleatorios para cada interfaz.

El único problema que se me presenta ahora es la reconexión. Desde Ubuntu con un simple dhcpclient bastaba para refrescar la conexión.. Con WiCd no encuentro la manera de hacerlo. He probado añadiendole el script de reconexión automática al final del chamac, pero a mi no me ha funcionado (se ve que intenta autoreconectarse, pero no lo consigue, tengo que hacerlo yo mismo)

Si alguien puede probar si le llega a funcionar (cosa que dudo un poco), le estaría muy agradecido :)

Adjunto el macchanger necesario para hacer funcionar bien el script:

https://dl.dropboxusercontent.com/u/36498325/macchanger (https://dl.dropboxusercontent.com/u/36498325/macchanger)

Nota: La ruta del macchanger es /usr/bin/

Salu2

a mi ayer lo del dhcp me lo hacia sin dilemas...

se desconectaba wicd , y se reconectaba.


¿¿ tienes maracad en wicd la casilla conectar automáticamente ? ... si no , no se re-conectara SOLO. .. Y tendras que darle TU.

Esta en la config de la red, arriba-..la primera de todas..AUutoconectar a esta red si esta disponible..o algo asi se llama..marca esa casilla.
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: warcry en 09-09-2013, 14:51 (Lunes)
si quieres exportar tu script a linux en general, me repito, no utulices el macchanger, en kali tambien falla

y en wifislax no es dhcpclient es dhcpcd  ;)
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 09-09-2013, 15:01 (Lunes)
Veo tu macchanger y subo la apuesta  ;D


A ver ,

wifislax = macchanger 1.5.0
binario que afreces = 1.5.0 ¿ ampliado ?  ..lleva mas opciones, LOL


Me da por revisar..y Casualidades de la vida,

macchanger 1.6.0 ...liberado en 2013 , ...la version anterior llevaba purulando desde 2004  ...9 años despues..se actualizan  ;D


Problema resuelto ...   warcry esta version tal vez falle menos , esta recien liberada de 2013 calentita.  ;D


(http://imageshack.us/a/img10/2914/q7ns.png)
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 09-09-2013, 15:04 (Lunes)
Opciones que trae el nuevo macchanger

GNU MAC Changer
Usage: macchanger [options] device

  -h,  --help                   Print this help
  -V,  --version                Print version and exit
  -s,  --show                   Print the MAC address and exit
  -e,  --endding                Don't change the vendor bytes
  -a,  --another                Set random vendor MAC of the same kind
  -A                            Set random vendor MAC of any kind
  -p,  --permanent              Reset to original, permanent hardware MAC
  -r,  --random                 Set fully random MAC
  -l,  --list[=keyword]         Print known vendors
  -b,  --bia                    Pretend to be a burned-in-address
  -m,  --mac=XX:XX:XX:XX:XX:XX  Set the MAC XX:XX:XX:XX:XX:XX

Report bugs to https://github.com/alobbs/macchanger/issues



Incluso lleva un fichero OUI.list    ;D


1 - descargar   ftp://ftp.gnu.org/gnu/macchanger/
2 - descomprimir
3 - abrir consola en el directorio descomprimido
4 - ./configure --prefix=/usr
5 - make
6 - make install


Si estais en una iso de las que estan en desarrollo ahora mismo de wifislax ...


1 - bajais
2 - descomprimiis
3 - abriis shell en la carpeta que contiene el source code
4 - makefast


makefast , es un pequeño script , que realiza la tarea mas cotidiana al compilar

./configure --prefix=/usr
make
 
y en vez de make install ...

crea en escritorio un modulo , el el programa/libreria ya compilado y limpito ...

click derecho sobre el xzm ..autoinstalar.


podeis guardar el xzm ,para usar en live.   ;D



GRACAIS   vk496  , por pillar por donde fallaba el asunto.  ;)
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 09-09-2013, 15:12 (Lunes)
para que wicd se reconecte solo si se pierde la conexion , hay que marcar esta casilla...

(http://imageshack.us/a/img12/5921/c9vh.png)


El script ya funciona PERFECTAMENTE.  >:(
    >:( >:(
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: Chumpy en 09-09-2013, 15:14 (Lunes)
Me da a mi que a Warcry no lo convences...  ;D

Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: warcry en 09-09-2013, 16:01 (Lunes)
todo tiene su explicacion... version nueva puede que corrija viejos fallos, pero sin mantenimiento que pasara ...

me explico, creo que los fallos del macchanger vienen deribados de la no correcta gestion del hardware, no son los mismos interfaces los que habia en el 2004 que los que habia a finales del 2012, algo asi como el modo monitor, no todos son compatibles, pero algunos no compatibles al final con el paso del tiempo salen sus controladores y entran a jugar.

versión nueva, supongo que soportara el hardware actual, que pasara dentro de otros nueve años sin mantenimiento...  ^-^

ifconfig, va al dia, es algo intrínseco de la estructura de comandos del linux, ahora bien, cada programador que se lo guise como quiera.
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: alist3r en 09-09-2013, 17:33 (Lunes)
intenta detectar qué cliente dhcp usa el sistema:

- pump
- dhclient
- dhcpcd

eso mejorará tu compatibilidad entre distros.

tal como lo tienes ahora solo funcionará en una ubuntu/debian modificada para usar wicd en lugar de NetworkManager o en una wifislax.

o mejor aun, intenta detectar o preconfigurar en variables qué gestor de conexión usa el sistema y dónde estan los scripts de inicio, asi no tienes que preocuparte por el cliente dhcp real.
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: alist3r en 09-09-2013, 17:38 (Lunes)
creo que los fallos del macchanger vienen derivados de la no correcta gestion del hardware, no son los mismos interfaces los que habia en el 2004 que los que habia a finales del 2012

tal cual.

por un lado, el stack wireless ha cambiado completamente y por otro la retrocompatibilidad de cosas como /sys y /proc está abandonando lentamente el kernel.
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: vk496 en 09-09-2013, 22:34 (Lunes)
Bueno, le he hecho mas cambios al script y me gustaría comentar varias cosas:

1º: @USUARIONUEVO , gracias por el tip de la casilla de Autoreconectar... me comí la cabeza, pero luego me di cuenta, y si, funciona...  ;D

2º: @warcry , Gracias por mencionarlo... en principio utilicé macchanger porque mi nivel de programación no es muy alto, y no veía como llegar a hacerlo sin el machchanger  ;D Estaba pensando en ampliar el script para que detectase si el PC tiene macchanger, y si no fuese así, ir por el camino de ifconfig... que te parece?  >:D

3º: @alister , estaba buscando la forma de detectar el cliente dhcp de un PC, y siempre que encontraba una, en otra distro ya no servía... que te parece este método? Lo sé, patético, pero no veía otra forma posoble... jajaj  ;D

Salu2
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: warcry en 09-09-2013, 23:03 (Lunes)

2º: @warcry , Gracias por mencionarlo... en principio utilicé macchanger porque mi nivel de programación no es muy alto, y no veía como llegar a hacerlo sin el machchanger  ;D Estaba pensando en ampliar el script para que detectase si el PC tiene macchanger, y si no fuese así, ir por el camino de ifconfig... que te parece?  >:D

si tu nivel de programación no es muy alto tendrías que ver el mio  ;D

parece que el macchanger ahora esta a la ultima, luego no debería dar ningún problema (no lo he probado), si te apañas bien con el, pues sigue por ahí, puedes introducir una parte de código que pregunte si el macchanger es un comando valido en la shell, y si no lo es dar la orden al repositorio para que lo descargue y lo instale.

en debian ya lo sabes apt-get install...
en slax es slapt-get --install

de todas maneras el script, ya hace lo que inicialmente pensabas que tenia que hacer y eso es un logro, mi mas sincera enhorabuena porque no es tarea facil ponerse a picar codigo  >:( >:( >:(
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: alist3r en 10-09-2013, 01:11 (Martes)
@vk496

desde el punto de vista de sistemas, y para ser pulcro, si existe un gestor de conexión debes usarlo, ya que es este quien se encarga de todo, incluido el llamar al cliente dhcp suponiendo que fuese necesario, o asignar una IP estática que ya estuviera configurada en el gestor de conexión para ese adaptador de red.

el caso mas sencillo, aunque genere cierto volumen de codigo, sería:

detectar si el sistema tiene los controles de daemons en init.d (los que usamos nosotros en debian/kali/ubuntu) o si los tiene en rc.d (wifiway, slax, slackware y derivadas)

cuando ya has detectado la carpeta base de init, pasas a buscar qué tipo de gestor de conexion usa el sistema:

si existe network-manager, ajustas una variable, por ejemplo control_mode, a "network-manager"
si existe wicd, ajustas control_mode, a "wicd"
case else, ajistas control_mode a "direct"

luego, detienes y reinicias los gestores de conexion usando un case con una cláusula para cada caso, mereciendo especial hincapié el modo direct donde deberás de levantar la interfaz por tí mismo y llamar al cliente dhcp que hayas encontrado en el sistema (which pump; which dhcpcd; which dhcpcd3; which dhclient... alguno estará en el path)

esto, por lo que respecta al control de interfaces.

por lo que respecta al dichoso macchanger. lo mejor es que utilices una versión actualizada del mismo, compatible con todos los stacks y nuevos metodos de cfg de ieee80211, y que solamente en caso de no encontrarse este, trates de utilizar las net-tools (ifconfig). en el fondo, una versión actualizada de macchanger hace lo mismo que ifconfig xxxx hw ether, llamando a los mismos IOCTLS del kernel.
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 10-09-2013, 04:52 (Martes)
@vk496

Si ya hay cambios , deberias haber movido a version 0.2

Normalmente dentro del script , se van anotando los cambios

### Fecha tal , version 0.3
## Se reparo este bug en tal distro ..

### Fecha tal version 0.2
## Se ajusto esto y aquello

### Fecha tal o cual version 0.1
## version inicial

Las lineas que empiezan con almohadilla # , son ignoradas a la hora de ejecutar comandos y demas ...

Se utiliza en ocasiones, para anular un funcion o parte de un script, sin eliminarla, por si mas adelante se volviera a necesitar dicha funcion , se anula, pero no se borra , es como ternela hay en un back up , dentro del script.  ;)
Título: Re: ChaMAC 0.1 : Cambia todas tus MAC
Publicado por: alist3r en 10-09-2013, 13:53 (Martes)
este mozo apunta maneras!
Título: Re: ChaMAC 0.2 : Cambia todas tus MAC
Publicado por: vk496 en 10-09-2013, 17:37 (Martes)
Bueno, le acabo de dar mas cambios al script...

@USUARIONUEVO, gracias por el tip, no pensaba en eso mientras estaba comiéndome el coco  ;D ;D

@warcry, esta muy bien lo que dices, pero no tengo pensado hacer eso... mi idea era tener un script completamente automatizado, por si alguien lo añade al arranque del sistema, pues que funcionase igual sin la intervención del usuario...  :-\

@alister, gracias por la info. Los cambios que le he hecho, los probé sobre Ubuntu, Wifislax y Crunchbang, y por ahora bien... Hice que detectase si el path principal estaba en rc.d o init.d, para reiniciar los daemons (inet1 y modem-manager respectivos). Si por alguna razón fallase, queda la posibilidad de los clientes DHCP... que tal así?

Gracias a todos por el apoyo que dais a mi primer proyecto en bash   >:( >:D

Salu2
Título: Re: ChaMAC 0.2 : Cambia todas tus MAC
Publicado por: alist3r en 10-09-2013, 17:45 (Martes)
perfecto!!!
la variedad y la flexibilidad se agradecen. nunca sabes qué distro utiliza el usuario que descarga tus programas.
Título: Re: ChaMAC 0.2b : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 10-09-2013, 23:32 (Martes)
En esta ruta , tambien puedes poner cosas para su ejecucion al inicio de sistema



Código: [Seleccionar]
/etc/xdg/autostart/
el escript directo no , pero si generas alli un fichero


Automacchanger.desktop

con este contenido ...

Código: [Seleccionar]
Exec=/usr/bin/Chamac
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application

creo que seria sucifiente.


el autostart se ejecuta siempre, inicies con el telinit 4 , o con el 3 ..y seas el usuario que seas.


deberas implementar la funcion "si no existe el fichero , pregunta si quieres crealo "

son ideas nada mas.  ;D
Título: Re: ChaMAC 0.2b : Cambia todas tus MAC
Publicado por: vk496 en 11-09-2013, 00:23 (Miércoles)
En esta ruta , tambien puedes poner cosas para su ejecucion al inicio de sistema



Código: [Seleccionar]
/etc/xdg/autostart/
el escript directo no , pero si generas alli un fichero


Automacchanger.desktop

con este contenido ...

Código: [Seleccionar]
Exec=/usr/bin/Chamac
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application

creo que seria sucifiente.


el autostart se ejecuta siempre, inicies con el telinit 4 , o con el 3 ..y seas el usuario que seas.


deberas implementar la funcion "si no existe el fichero , pregunta si quieres crealo "

son ideas nada mas.  ;D

Muy interesante tu propuesta... No haré menú, porque quiero enfocarlo a un script completamente automatizado... Sin embargo, creo que estaría bien añadir algún parámetro al script (-b o --boot) para crear el archivo de autoejecutarse... Y avisar al usuario de la existencia de la función y cual es su estado actual... En cuanto pueda, me pondré a explorar el mundo del bash y picar código....  ;D

Por cierto, me podéis decir como es su funcionamiento en otros sistemas? Es decir, en cuanto tengáis la oportunidad...

Salu2
Título: Re: ChaMAC 0.2b : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 11-09-2013, 00:28 (Miércoles)
en wifislax ... la 0.2 es mas rapida que antes , ya que tiras directamnente del servicio para reiniciar wicd.

es casi instantaneo.  >:(



Lo del autostart ,me lie, por que vi que hablabais de rc.d etc y pense que querias esa funcion ,de autoejecutar al inicio del sistema.


en los init.d o rc.d ...es un problema.

pero en el autostart siempre se ejecutaria.

puede ser una variable como comentas , en un funcion.


se añade como info al final del proceso ..


si quieres que este proceso se haga auromaticamente al inciio de sistema..ejecuta


Chamac --autostart

y la funcion autostart genere el *.desktop   , en     /etc/xdg/autostart

o solo mostrar esa info , si detecta que en la ruta aun no existe el Automacchanger.desktop


Hay lo dejo ... como veis un script, por simple que inicie ,siempre puede acabar en algo mas completo ... y mejorado solo con aportar ideas.  ;)
Título: Re: ChaMAC 0.2b : Cambia todas tus MAC
Publicado por: geminis_demon en 11-09-2013, 02:14 (Miércoles)
Citar
Muy interesante tu propuesta... No haré menú, porque quiero enfocarlo a un script completamente automatizado... Sin embargo, creo que estaría bien añadir algún parámetro al script (-b o --boot) para crear el archivo de autoejecutarse... Y avisar al usuario de la existencia de la función y cual es su estado actual... En cuanto pueda, me pondré a explorar el mundo del bash y picar código....

Hola, muy interesante tu script, felicidades  >:(

Te hecho una mano, para que te hagas una idea de como puede hacer que el script responda de una forma o otra según los parámetros que le pases:

Código: [Seleccionar]
if [ "$1" = "-b" -o "$1" = "--boot" ]; then
iniciar_con_el_sistema
elif [ "$1" = "-n" -o "$1" = "--no-boot" ]; then
clientesdhcp && clientedaemon && detectarmac
elif [ ! "$1" ]; then
echo "No se ha pasado ningún parámetro"
echo "Modo de uso: blablabla...."
fi

En el ejemplo que te he puesto, si le pasas el parámetro -b o --boot llama a la función que se encargrá de añadir el script al inicio del sistema, si le pasas el parámetro -n o --no-boot, el script inicia tal y como lo tienes ahora, y si no se pasa ningún parámetro informa de las posibles opciones.

Eso es solo un ejemplo para que veas como se puede hacer, después ya lo puedes hacer tu a tu manera  ;)

"$1" siempre será el primer parámetro que le pases, "$2" el segundo parámetro, y así sucesivamente.
Título: Re: ChaMAC 0.2b : Cambia todas tus MAC
Publicado por: vk496 en 11-09-2013, 12:56 (Miércoles)
Hola, gracias @geminis_demon y @USUARIONUEVO por los consejos. Ya tengo casi lista la v0.3, pero me encuentro con un pequeño problema a la hora de usar el --autostart.

Para poder usarlo y que genere el .desktop se necesita privilegios root (no hay problema), sin embargo, después de haber sido genereados, hacen falta privilegios root para hacer funcionar el script al iniciar el sitema, y allí es de donde no consigo pasar... que método hay para añadir un programa al startup del sistema con privilegios root y que ese método sea compatible con la mayoría de las distros¿? ???

He estado mirando Google, pero no me ha iluminado mucho.... Por la tarde me pondré a investigar mas... a ver si encuentro algo  :-\

Salu2
Título: Re: ChaMAC 0.2b : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 11-09-2013, 14:23 (Miércoles)
no se si te servirá en el EXEX=


Código: [Seleccionar]
EXEC=sudo su /usr/bin/Chamac
Imagino que abras marcado al script la casilla "es ejecutable" ...

En wifislax, no va a haber ningún problema.

El problema será en distros en las que a lo mejor seas usuario limitado.

Siendo root no tiene por que haber problemas..

tal vez que la opción se ofrezca si eres root

Código: [Seleccionar]
whoim
te dira que usuario eres , si no recuerdo mal.
Título: Re: ChaMAC 0.2b : Cambia todas tus MAC
Publicado por: vk496 en 11-09-2013, 19:27 (Miércoles)
no se si te servirá en el EXEX=


Código: [Seleccionar]
EXEC=sudo su /usr/bin/Chamac
Imagino que abras marcado al script la casilla "es ejecutable" ...

En wifislax, no va a haber ningún problema.

El problema será en distros en las que a lo mejor seas usuario limitado.

Siendo root no tiene por que haber problemas..

tal vez que la opción se ofrezca si eres root

Código: [Seleccionar]
whoim
te dira que usuario eres , si no recuerdo mal.

Gracias por el consejo. Según he mirado, hay muchas (demasiadas) complejidades para automatizar este proceso cuando no eres root, por lo que dejaré la función --autostart tal cual, y que el usuario final se encargue de adaptarlo a sus sistema  ;D ^-^(dejaré un mensaje avisando de ello, para que lo tengan en cuenta)

Lo mas importante que quiero conseguir es evitar la dependencia de machanger (lo uso mas que nada porque me daba la MAC real de la interfaz incluso cuando se cambiaba esta...). He encontrado las rutas donde puede conseguir la mac REAL, por tanto, quiero añadir la posibilidad de hacerlo de las 2 maneras (ifconfig y macchanger). Sin embargo, me hago demasiados lios con la sintáxis del bash, y quisiera ver si alguien me puede echar una mano con ello...


Lo que necesito es que el condicional if llame a una funcion.

algo asi:

Código: [Seleccionar]
#|/bin/bash

mifuncion=1

if [ $mifuncion = 1 ]; then
funcion1
elif [ $mifuncion = 2 ]; then
funcion2
fi

funcion2() {
echo hola
}

funcion1() {
echo adios
}

Pero es que si hago esto, me devuelve un: ./prueba.sh: línea 7: funcion1: no se encontró la orden, y no tengo ni a menor idea de como hacer una llamada desde una condicional...  ??? ??? ???

Salu2
Título: Re: ChaMAC 0.2b : Cambia todas tus MAC
Publicado por: geminis_demon en 11-09-2013, 20:00 (Miércoles)
Hola, el error está en que llamas a la función cuando esta todavía no ha sido "leída" ya que está al final del archivo.

El problema se soluciona poniendo la función antes de llamarla, así:

Código: [Seleccionar]
#!/bin/bash

funcion2() {
echo hola
}

funcion1() {
echo adios
}

mifuncion=1

if [ $mifuncion = 1 ]; then
funcion1
elif [ $mifuncion = 2 ]; then
funcion2
fi

Título: Re: ChaMAC 0.2b : Cambia todas tus MAC
Publicado por: geminis_demon en 11-09-2013, 20:08 (Miércoles)
Código: [Seleccionar]
whoim
te dira que usuario eres , si no recuerdo mal.

Supongo que te refieres a "whoami"  >:D

Título: Re: ChaMAC 0.2b : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 11-09-2013, 20:16 (Miércoles)
Código: [Seleccionar]
whoim
te dira que usuario eres , si no recuerdo mal.

Supongo que te refieres a "whoami"  >:D



sip ...eso es.

si se detecta que eres root, que se de la opción.
Título: Re: ChaMAC 0.2b : Cambia todas tus MAC
Publicado por: vk496 en 11-09-2013, 20:59 (Miércoles)
@geminis_demon, te he dejado un MP con el codigo fuente, a ver si consigues ver donde está el problema...

Si alguien mas quiere echarle un ojo, que avise  ;)

PD: La función para comprobar root ya está integrada con el id -u  ;D

Gracias a todos por la ayuda,   :D

Salu2
Título: Re: ChaMAC 0.3 : Cambia todas tus MAC
Publicado por: alist3r en 12-09-2013, 02:36 (Jueves)
acostumbraos a utilizar la variable $EUID en lugar del comando "whoami"
el User ID Efectivo vale 0 cuando el usuario es root o cuando proceso en cuestión el tiene permisos de root (uso de sudo y otros supuestos)
Título: Re: ChaMAC 0.3 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 12-09-2013, 02:45 (Jueves)
que maquina , 3 versiones en 3 dias ...le ha dao fierte el bash...  >:(
Título: Re: ChaMAC 0.3 : Cambia todas tus MAC
Publicado por: alist3r en 12-09-2013, 02:48 (Jueves)
que maquina , 3 versiones en 3 dias ...le ha dao fierte el bash...  >:(

te dije que apunta maneras el mozo!
este se come un repositorio premium de github él solito!
Título: Re: ChaMAC 0.3 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 12-09-2013, 02:55 (Jueves)
donde

Usa --help para mas info

mejor

Usa chamac --help para mas info


AUnque personalmente , creo que lo voy a implementar en el menu , para que se abra ya en --help  --y el usuario ya decida....asi de paso seguro que ve las opciones posibles.   >:(
Título: Re: ChaMAC 0.3 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 12-09-2013, 03:24 (Jueves)
BUG

Si estoy conectado a intrernet si ve las interfaces ( todas )

Si no estoy conectado a internet ,NO VE NINGUNA.  :-\







LA VERSION 2 SE COMPORTA IGUAL ..... ¿ por que ?  la 1 funcionaba perfect.
Título: Re: ChaMAC 0.3 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 12-09-2013, 04:31 (Jueves)
El autostart estaba mal ...  ( culpa mia )


le falta arriba del todo lo de desktop entry , de todas formas este ..esta probado que funciona ...


tal vez de hay que tubieras poblemas ....  :-\


Código: [Seleccionar]
[Desktop Entry]
Exec=/usr/bin/chamac
StartupNotify=true
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
Título: Re: ChaMAC 0.3 : Cambia todas tus MAC
Publicado por: vk496 en 12-09-2013, 13:13 (Jueves)
jajajajaja, la verdad es que me ha dado la fiebre del bash... ;D Supongo que será una forma de poder olvidar que en nada empiezan los estudios  ^-^

@USUARIONUEVO, gracias por mostrar el bug, el problema no era que no las detectase, sino que la función principal no recibía la llamada...  :P De todas formas, ya está solucionado, confirmame si te va bien...

Otra cosa, si no es mucho pedir, me gustaría que desde el menu de Wifislax el script se lanzara directo... La principal razón por la que me puse a hacer el script, es porque ni en Wifislax ni Wifiway  había ninguna herramienta que te automatizase todo con 1 click,  tenía que estar siempre el usuario haciendolo todo (lo mas parecido a la automatización estaba en el airoscript, donde estaba la posibilidad de cambiar la MAC). Dejé un mensaje al final, para que cuando el script acabse, el usuario supiese que el script tiene capacidad de mas opciones


Bueno, creo que pondré ya la v0.4  ^-^ Y me parece que me quedaré allí, no por la pereza, sino  porque me estoy quedando sin ideas.... jajajajja  ;D

Salu2
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 12-09-2013, 13:24 (Jueves)
REVISATEEE , lo que te puse de la creación del ficghero autostart.desktop  


Te puse los parámetros correctos, el anterior estaba mal ..y por eso tal evz te fallaba en tus pruebas.


GRACIAS.

Ya veo que lo has reparado lo del fichero *.desktop    >:(
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: vk496 en 12-09-2013, 13:33 (Jueves)
REVISATEEE , lo que te puse de la creación del ficghero autostart.desktop  


Te puse los parámetros correctos, el anterior estaba mal ..y por eso tal evz te fallaba en tus pruebas.


GRACIAS.

Ya veo que lo has reparado lo del fichero *.desktop    >:(

en la 0.4 le di los pequeños ajustes...  ;D
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 12-09-2013, 13:41 (Jueves)
Comento , nos queda un pequeño bug , no se muy bien por que.


El script funciona todi bien.

Nos falta pulir un poco en el autostart


AHORA YA EL FICHERO SE GENERA BIEN , E INCLUSO FUNCIONA ,pero por algun motivo solo me cambia la mac del ethernet , la wlan0 NO ...voy a probar en el autostart a usar  chamac -m   ..a ver si resulta asi mejor.
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 12-09-2013, 13:45 (Jueves)
YA ESTAAAAAAAAA

En el *.desktop autostart


donde exec /usr/bin/chamac

pues le añadimos la -m  y ya si.

/usr/bin/chamac -m


no cambies de version por esa chorrada del -m  . .. añadela directamente en el 0.4 y ya esta ,como pone ah¡justes en el autoboot ,ese tambien entra   ;)



Ha quedao bastante apañado , no sera por opciones  ;)   >:( >:( >:( >:( >:(
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: vk496 en 12-09-2013, 14:53 (Jueves)
YA ESTAAAAAAAAA

En el *.desktop autostart


donde exec /usr/bin/chamac

pues le añadimos la -m  y ya si.

/usr/bin/chamac -m


no cambies de version por esa chorrada del -m  . .. añadela directamente en el 0.4 y ya esta ,como pone ah¡justes en el autoboot ,ese tambien entra   ;)



Ha quedao bastante apañado , no sera por opciones  ;)   >:( >:( >:( >:( >:(


haré los cambios y pondré la 0.4-1...


Por cierto. he encontrado otro BUG, y este me va a costar corregirlo... Hasta ahora, para ver la MAC Original, me basaba en el archivo  /etc/udev/rules.d/70-persistent-net.rules, sin embargo, cuando tengo una interfaz en modo monitor, no sé como acceder a su MAC original...  :-\
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: alist3r en 12-09-2013, 16:03 (Jueves)
uf!
no tires de los persistent rules!!!!!!!!

hay distros que ni lo tienen, especialmente las live.
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: geminis_demon en 12-09-2013, 16:19 (Jueves)
cuando tengo una interfaz en modo monitor, no sé como acceder a su MAC original...  :-\

Si tienes una interface en modo monitor, la MAC original será la misma que la interface de la que esta proviene.

Por ejemplo, si mosntas wlan0 en modo monitor, mon0 tendrá su misma MAC, entonces ahora si tienes una lista de interfaces, lo que tienes que averiguar es de que interface proviene mon0.

Te dejo una función que hace precisamente eso, averiguar de que interface proviene una interface en modo monitor, ahora solo tienes que adaptarla a tu script.

Código: [Seleccionar]
#!/bin/bash

INTERFACES="wlan0 wlan1 wlan2"
INTERFACE_MONITOR="mon0"

for INTERFACE in $INTERFACES; do
if [ "$(dirname "$(find /sys/devices -name "$INTERFACE")")" = "$(dirname "$(find /sys/devices -name "$INTERFACE_MONITOR")")" ]; then
echo "La interface $INTERFACE_MONITOR proviene de $INTERFACE"
echo "Por lo tanto la mac original de $INTERFACE_MONITOR es la misma que la MAC original de $INTERFACE"
fi
done

Seguramente habrá otra forma mas práctica de hacerlo, pero así a botepronto se me ha ocurrido esa  >:D
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: alist3r en 12-09-2013, 16:24 (Jueves)
cuando tengo una interfaz en modo monitor, no sé como acceder a su MAC original...  :-\

Si tienes una interface en modo monitor, la MAC original será la misma que la interface de la que esta proviene.

Por ejemplo, si mosntas wlan0 en modo monitor, mon0 tendrá su misma MAC, entonces ahora si tienes una lista de interfaces, lo que tienes que averiguar es de que interface proviene mon0.

Te dejo una función que hace precisamente eso, averiguar de que interface proviene una interface en modo monitor, ahora solo tienes que adaptarla a tu script.

Código: [Seleccionar]
#!/bin/bash

INTERFACES="wlan0 wlan1 wlan2"
INTERFACE_MONITOR="mon0"

for INTERFACE in $INTERFACES; do
if [ "$(dirname "$(find /sys/devices -name "$INTERFACE")")" = "$(dirname "$(find /sys/devices -name "$INTERFACE_MONITOR")")" ]; then
echo "La interface $INTERFACE_MONITOR proviene de $INTERFACE"
echo "Por lo tanto la mac original de $INTERFACE_MONITOR es la misma que la MAC original de $INTERFACE"
fi
done

Seguramente habrá otra forma mas práctica de hacerlo, pero así a botepronto se me ha ocurrido esa  >:D

neh, sysfs forever! es la biblia! la tabla de salvacion! buen aporte.
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: vk496 en 12-09-2013, 20:03 (Jueves)
Chicos, muchas gracias por vuestro apoyo!

@geminis_demon, muchas gracias por tu ayuda, el script parece funcionar bien, solo voy a intentar a darle un par de retoques mas, para ver si consigue hacer lo mismo en caso de que tuviese varias tarjetas en modo monitor....


@alister,  tenias razon, las persistent rules, aunque me sirvan (en la mayoría de los casos), es muy inestable... ahora mismo acabo de bootear el Wifislax y no hay ninguna linea que mencione mi Ethernet (eth0), por tanto, es como si no la tuviese...  :-\

Estaba buscando por internet de donde consigue macchanger sacar la MAC real, pero no hubo suerte...  :( Poco mas tarde me di cuenta de que estaba en un Sistema Operativo abierto, y decidí echar un ojo al código fuente...  >:D

Por desgracia, para mi, el lenguaje C es igual que el chino mandarin, y no consigo entender ni pizca de como lo hace. Si no me equivoco, el tema está en el netinfo.c (no se si interactuara con el kernel o algo). Quería probar algo descabellado, ir cortando partes del código hasta dejar un ejecutable que solo realize la función macchanger --show <interfaz>, es decir que me deje un ejecutable que al ponerle una interfaz me diese sus MAC... Pero como podeis apreciar, me gustan mucho los libros de fantasía, y aquí me he pasado 3 pueblos.... jajajaja  ;D ;D ;D Intentaré buscar otras alternativas...
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: alist3r en 12-09-2013, 21:22 (Jueves)
http://stackoverflow.com/questions/2687085/how-to-grab-mac-address-of-active-ethernet-connection-in-bash-script
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: geminis_demon en 12-09-2013, 21:57 (Jueves)
http://stackoverflow.com/questions/2687085/how-to-grab-mac-address-of-active-ethernet-connection-in-bash-script

Pero ficonfig solo te dice la MAC actual, el quiere saber la dirección MAC original, osea la que tenían antes de haberla cambiado.
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: vk496 en 12-09-2013, 22:07 (Jueves)
http://stackoverflow.com/questions/2687085/how-to-grab-mac-address-of-active-ethernet-connection-in-bash-script

Gracias por la info, la había leido antes....

Citar
route | awk '/default/ { print $NF }' | xargs -I {} ifconfig {} | awk '/HWaddr/ { print $5 }'

El problema de este metodo es que viene a ser lo que usar ifconfig, solo muestra la MAC superficial...

Código: [Seleccionar]
set - `ifconfig | grep -B 1 inet | head -1`
MAC=$5

Este otro no conseguí  entenderlo, por tanto, no pude comprobarlo...  :(

Quisiera tambien decir que encontré otra ruta donde se muestra la MAC original. Esta en /run/udev/data/n? donde ? es un numero...

No se si esto servirá, he intentado hacer una funcion de prueba (hasta ahora no me ha gustado  ;D)

Código: [Seleccionar]
#!/bin/bash


readarray -t interfaces < <(ls /run/udev/data | egrep n.$)

for iface in "${interfaces[@]}"; do
if [ -z 'ls $(cat /run/udev/data/$iface | grep MODEL_ID= | cut -d "=" -f 2)/net | cut -d "/" -f 1' ]; then
break
else
interfaz=$(ls $(cat /run/udev/data/$iface | grep MODEL_ID= | cut -d "=" -f 2)/net | cut -d "/" -f 1)
mac=$(cat /run/udev/data/$iface | grep ADDR= | cut -d "=" -f 2)
echo "La interfaz $interfaz tiene la MAC $mac"
fi
done


Que asco, cuanto mas quieres mejorar algo, mas se te toca los ****** para conseguirlo... Mundo cruel!!!  :'( :'( :'(
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: vk496 en 12-09-2013, 22:09 (Jueves)
http://stackoverflow.com/questions/2687085/how-to-grab-mac-address-of-active-ethernet-connection-in-bash-script

Pero ficonfig solo te dice la MAC actual, el quiere saber la dirección MAC original, osea la que tenían antes de haberla cambiado.
Exacto  >:D
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: geminis_demon en 13-09-2013, 00:10 (Viernes)
Bueno ahí lo tienes, este detecta la MAC original y la falsa, tanto si la interface está en modo managed como si está en modo monitor.

Ya lo adaptas tu a tu manera  ;)

Código: [Seleccionar]
#!/bin/bash

INTERFACES="$(ip link|egrep -v "^ | lo: "|awk '{print $2}'|sed 's/:$//')"

for INTERFACE in $INTERFACES; do
for N in $(ls /run/udev/data|grep "^n[0-9]$"); do
MODEL_ID="$(find /sys/devices -name "$INTERFACE"|rev|cut -d'/' -f3-|rev)"
if [ "$(cat /run/udev/data/$N|grep "$MODEL_ID")" ]; then
MAC_ORIGINAL="$(cat /run/udev/data/$N|grep "MATCHADDR"|cut -d'=' -f2-)"
MAC_ACTUAL="$(cat /sys/class/net/$INTERFACE/address)"
echo "--------------------------------"
echo "   INTERFACE: $INTERFACE"
echo "MAC ORIGINAL: $MAC_ORIGINAL"
echo "  MAC ACTUAL: $MAC_ACTUAL"
echo "--------------------------------"
break
fi
done
done
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: alist3r en 13-09-2013, 15:32 (Viernes)
oh! ya veo! mis disculpas.
si, de momento te puedes fiar de /run/udev, es una infraestructura basatnte estandar dentro del FileSystemHierarchy de linux
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: vk496 en 13-09-2013, 21:10 (Viernes)
Muchas gracias a vuestra ayuda  :D (en la 0.5 os añadiré en los créditos, os lo merecéis mas que de sobra  >:D )

@alister, gracias por el tip. Después de investigar mucho, llego a la conclusión de que solo existen 3 rutas para poder ver la MAC Original:

/run/udev/data/n?, donde después hay que averiguar a que interfaz pertenece. Lo gracioso es que en Ubuntu no funciona (sale todo menos la MAC  :P)

/etc/udev/rules.d/70-persistent-net.rules La otra alternativa que hay

/sys/class/net/$INTERFACE/phy80211/addresses, esta ultima solo muestra el de las tarjetas wireless (eso parece), pues paraa mi eth0 no hay dicha ruta...


@geminis_demon, gracias por iluminarme el camino ( los loops todavía no los tengo tan controlados).

Tu script funciona perfecto bajo Wifislax, pero en Ubuntu las rutas del /run no sirven, así que le añadí alternativas a esa ruta por si fallase (una tontería, pero para mi limitada capacidad fue mucho tiempo perdido :-\ )

Código: [Seleccionar]
readarray -t interfaces < <(ip link | grep "<" | cut -d " " -f 2 | cut -d ":" -f 1 | grep -v lo)

for INTERFACE in ${interfaces[@]}; do
    for N in $(ls /run/udev/data|grep "^n[0-9]$"); do
      MODEL_ID="$(find /sys/devices -name "$INTERFACE"|rev|cut -d'/' -f3-|rev)"
  if [ "$(cat /run/udev/data/$N|grep "$MODEL_ID")" ]; then
  rutaprincipal=$(cat /run/udev/data/$N|grep "MATCHADDR")
    if [ $rutaprincipal ]; then
    MAC_ORIGINAL="$(cat /run/udev/data/$N|grep "MATCHADDR"|cut -d'=' -f2-)"
    elif [ -z $rutaprincipal ]; then
   rutasecundaria=$(cat /etc/udev/rules.d/70-persistent-net.rules | grep $INTERFACE | awk '{print $4}' | grep -o -P '(?<=").*(?=")')
    if [ $rutasecundaria ]; then
MAC_ORIGINAL="$(cat /etc/udev/rules.d/70-persistent-net.rules | grep $INTERFACE | awk '{print $4}' | grep -o -P '(?<=").*(?=")')"
    elif [ -z $rutasecundaria ]; then
MAC_ORIGINAL="$(cat /sys/class/net/$INTERFACE/phy80211/addresses)"
fi
    fi
    MAC_ACTUAL="$(cat /sys/class/net/$INTERFACE/address)"
echo "================================\\"
echo -e "   INTERFACE:\e[1;35m $INTERFACE \e[0m \\"
echo -e "MAC ORIGINAL: $MAC_ORIGINAL   #"
echo -e "  MAC ACTUAL:\e[1;31m $MAC_ACTUAL \e[0m /"
echo "================================/"
break
  fi
    done
done

Otra cosa que me molestaba un poco era que con el comando ifconfig no podía cambiar ninguna interfaz que estuviese en modo monitor. Investigando un poco, encontré que con ip link set dev eth0 address xx:xx:xx:xx:xx:xx si podía hacerlo, así que decidí sustituirlo por el ifconfig ( a ver si alguno me puede decir si he hecho bien o no)

Todo parece funcionar perfecto con él, y creía que ya tenía lista para sacar la 0.5 pero me he encontrado con un comportamiento extraño en el script.... Cuando voy a cambiar la MAC ( o restaurarla), solo me cambia/restaura 1 por cada vez que ejecuto el script. Es decir, tengo que ejecutar el script X veces para X interfaces... (cosa que no pasa cuando ejecuto la opción -m (macchanger)).

Me parece que los comandos que usa el script tienen que estar en distintas partes de la memoria, y no en una misma, por lo que, si no me equivoco, eso ya son cosas del C (no me hagáis mucho caso, digo muchas tonterías de vez en cuando). La verdad es que estoy en un callejón sin salida y no tengo ni idea de como puedo solucionar eso, a ver si a alguno de vosotros se os ocurre algo...  :-\  :-\ :-\

@USUARIONUEVO, en cuanto consiga solucionar esta caca, me instalo el Wifislax en el HDD y me pongo a probar el parámetro --autostart, para perfeccionarlo al máximo ;D ;D ;D ;D

Si alguno le quiere echar un ojo a la supuesta "0.5" (el codigo completo), que me avise  :D

Salu2
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: vk496 en 13-09-2013, 21:16 (Viernes)
Y por cierto, hoy es el día del programador... felicidades a todos!!  >:( >:( >:(

Salu2
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: alist3r en 13-09-2013, 22:07 (Viernes)
<ironic>nooooo otro pesao con este rollo! hoy esta casa parece un festival por culpa del rollo del dia del programador, asi no se peude trabajarrrrrr jajaja</ironic>
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: alist3r en 13-09-2013, 22:39 (Viernes)
Muchas gracias a vuestra ayuda  :D (en la 0.5 os añadiré en los créditos, os lo merecéis mas que de sobra  >:D )

@alister, gracias por el tip. Después de investigar mucho, llego a la conclusión de que solo existen 3 rutas para poder ver la MAC Original:

/run/udev/data/n?, donde después hay que averiguar a que interfaz pertenece. Lo gracioso es que en Ubuntu no funciona (sale todo menos la MAC  :P)

/etc/udev/rules.d/70-persistent-net.rules La otra alternativa que hay

/sys/class/net/$INTERFACE/phy80211/addresses, esta ultima solo muestra el de las tarjetas wireless (eso parece), pues paraa mi eth0 no hay dicha ruta...


@geminis_demon, gracias por iluminarme el camino ( los loops todavía no los tengo tan controlados).

Tu script funciona perfecto bajo Wifislax, pero en Ubuntu las rutas del /run no sirven, así que le añadí alternativas a esa ruta por si fallase (una tontería, pero para mi limitada capacidad fue mucho tiempo perdido :-\ )

Código: [Seleccionar]
readarray -t interfaces < <(ip link | grep "<" | cut -d " " -f 2 | cut -d ":" -f 1 | grep -v lo)

for INTERFACE in ${interfaces[@]}; do
    for N in $(ls /run/udev/data|grep "^n[0-9]$"); do
      MODEL_ID="$(find /sys/devices -name "$INTERFACE"|rev|cut -d'/' -f3-|rev)"
  if [ "$(cat /run/udev/data/$N|grep "$MODEL_ID")" ]; then
  rutaprincipal=$(cat /run/udev/data/$N|grep "MATCHADDR")
    if [ $rutaprincipal ]; then
    MAC_ORIGINAL="$(cat /run/udev/data/$N|grep "MATCHADDR"|cut -d'=' -f2-)"
    elif [ -z $rutaprincipal ]; then
   rutasecundaria=$(cat /etc/udev/rules.d/70-persistent-net.rules | grep $INTERFACE | awk '{print $4}' | grep -o -P '(?<=").*(?=")')
    if [ $rutasecundaria ]; then
MAC_ORIGINAL="$(cat /etc/udev/rules.d/70-persistent-net.rules | grep $INTERFACE | awk '{print $4}' | grep -o -P '(?<=").*(?=")')"
    elif [ -z $rutasecundaria ]; then
MAC_ORIGINAL="$(cat /sys/class/net/$INTERFACE/phy80211/addresses)"
fi
    fi
    MAC_ACTUAL="$(cat /sys/class/net/$INTERFACE/address)"
echo "================================\\"
echo -e "   INTERFACE:\e[1;35m $INTERFACE \e[0m \\"
echo -e "MAC ORIGINAL: $MAC_ORIGINAL   #"
echo -e "  MAC ACTUAL:\e[1;31m $MAC_ACTUAL \e[0m /"
echo "================================/"
break
  fi
    done
done

Otra cosa que me molestaba un poco era que con el comando ifconfig no podía cambiar ninguna interfaz que estuviese en modo monitor. Investigando un poco, encontré que con ip link set dev eth0 address xx:xx:xx:xx:xx:xx si podía hacerlo, así que decidí sustituirlo por el ifconfig ( a ver si alguno me puede decir si he hecho bien o no)

Todo parece funcionar perfecto con él, y creía que ya tenía lista para sacar la 0.5 pero me he encontrado con un comportamiento extraño en el script.... Cuando voy a cambiar la MAC ( o restaurarla), solo me cambia/restaura 1 por cada vez que ejecuto el script. Es decir, tengo que ejecutar el script X veces para X interfaces... (cosa que no pasa cuando ejecuto la opción -m (macchanger)).

Me parece que los comandos que usa el script tienen que estar en distintas partes de la memoria, y no en una misma, por lo que, si no me equivoco, eso ya son cosas del C (no me hagáis mucho caso, digo muchas tonterías de vez en cuando). La verdad es que estoy en un callejón sin salida y no tengo ni idea de como puedo solucionar eso, a ver si a alguno de vosotros se os ocurre algo...  :-\  :-\ :-\

@USUARIONUEVO, en cuanto consiga solucionar esta caca, me instalo el Wifislax en el HDD y me pongo a probar el parámetro --autostart, para perfeccionarlo al máximo ;D ;D ;D ;D

Si alguno le quiere echar un ojo a la supuesta "0.5" (el codigo completo), que me avise  :D

Salu2

siento decirte que el udev de ubuntu está modificado por ellos, y que ademas usan un kernel tambien algo desviado del estandar. pero en el peor de los casos podemos chatear un ratito con ellos y que nos cuenten.

te cuento tambien que solo los dispositivos wireless estan equipados con PHYs (un tipo de chip que se encarga de transformar el enlace wireless en un enlace con propiedades similares a los físicos), por lo tanto, la interfaz /sys para los dispositivos de clase net, solo presenta una carpeta phy para ellos. Es fiable, pero incompleta.

puedo preguntar/investiar si tenemos un equivalente en /sys para los dispositivos ethernet. esta parte del kernel la tengo poco estudiada, pero alguien puede echarnos una mano, seguro.
 
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 14-09-2013, 13:19 (Sábado)
donde esta la 0.5 ?  ;D 8)
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: vk496 en 14-09-2013, 14:12 (Sábado)
donde esta la 0.5 ?  ;D 8)

En mi casa bajo llave... jajaja  ;D

Quería sacarla, pero necesito hacer una pequeña modificación, con la ayuda de un bucle, que por ahora no me sale...


Conoces como hacer un bucle en bash con el until para que el script se reinicie a si mismo y regrese a donde estaba?

Es decir:

1-Compruebo que el valor A no es igual al valor B
2-Si es igual, ejecuto unos comandos, y reinicio el script para regresar al punto 1
3-Si no es igual, continuo con la ejecución del resto del script

Se que es con el until, pero no se como hacer para que se autoreinicie...  ???

Salu2
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: alist3r en 14-09-2013, 14:33 (Sábado)
yo haria esto:
Código: [Seleccionar]
function init_script()
  #no hace falta reiniciar el script
  #solo mandarlo al principio de nuevo
  #si estructuras bien tu codigo, podrás volver al principio cuando quieras
  #procura mantener el codigo de inicializacion del script en una rutina aparte
  #para poder llamarlo cuando quieras
  cmd
  cmd
  cmd...  
y leugo
Código: [Seleccionar]
if [[ "${a}" -ne "${b}" ]]; then
  cmd
  # puedes poner bucles aqui, incluso llamar a functions que sean bucles, por qué no.
  cmd
  cmd
else
  # reiniciar el script, que viene a ser lo mismo que iniciarlo de nuevo
  init_script
fi

no te sirve?

procura separar el codigo de inicializacion y de salida del script. eso te permite llamar a ambos cuando quieras. a veces es util para el caso que comentas, o para detectar la puilsacion de control_c y hacer una salida limpia y ordenada del script, sin que se quede todo abruptamente colgado.
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: vk496 en 14-09-2013, 22:14 (Sábado)
Muchas gracias a vuestra ayuda  :D (en la 0.5 os añadiré en los créditos, os lo merecéis mas que de sobra  >:D )

@alister, gracias por el tip. Después de investigar mucho, llego a la conclusión de que solo existen 3 rutas para poder ver la MAC Original:

/run/udev/data/n?, donde después hay que averiguar a que interfaz pertenece. Lo gracioso es que en Ubuntu no funciona (sale todo menos la MAC  :P)

/etc/udev/rules.d/70-persistent-net.rules La otra alternativa que hay

/sys/class/net/$INTERFACE/phy80211/addresses, esta ultima solo muestra el de las tarjetas wireless (eso parece), pues paraa mi eth0 no hay dicha ruta...


@geminis_demon, gracias por iluminarme el camino ( los loops todavía no los tengo tan controlados).

Tu script funciona perfecto bajo Wifislax, pero en Ubuntu las rutas del /run no sirven, así que le añadí alternativas a esa ruta por si fallase (una tontería, pero para mi limitada capacidad fue mucho tiempo perdido :-\ )

Código: [Seleccionar]
readarray -t interfaces < <(ip link | grep "<" | cut -d " " -f 2 | cut -d ":" -f 1 | grep -v lo)

for INTERFACE in ${interfaces[@]}; do
    for N in $(ls /run/udev/data|grep "^n[0-9]$"); do
      MODEL_ID="$(find /sys/devices -name "$INTERFACE"|rev|cut -d'/' -f3-|rev)"
  if [ "$(cat /run/udev/data/$N|grep "$MODEL_ID")" ]; then
  rutaprincipal=$(cat /run/udev/data/$N|grep "MATCHADDR")
    if [ $rutaprincipal ]; then
    MAC_ORIGINAL="$(cat /run/udev/data/$N|grep "MATCHADDR"|cut -d'=' -f2-)"
    elif [ -z $rutaprincipal ]; then
   rutasecundaria=$(cat /etc/udev/rules.d/70-persistent-net.rules | grep $INTERFACE | awk '{print $4}' | grep -o -P '(?<=").*(?=")')
    if [ $rutasecundaria ]; then
MAC_ORIGINAL="$(cat /etc/udev/rules.d/70-persistent-net.rules | grep $INTERFACE | awk '{print $4}' | grep -o -P '(?<=").*(?=")')"
    elif [ -z $rutasecundaria ]; then
MAC_ORIGINAL="$(cat /sys/class/net/$INTERFACE/phy80211/addresses)"
fi
    fi
    MAC_ACTUAL="$(cat /sys/class/net/$INTERFACE/address)"
echo "================================\\"
echo -e "   INTERFACE:\e[1;35m $INTERFACE \e[0m \\"
echo -e "MAC ORIGINAL: $MAC_ORIGINAL   #"
echo -e "  MAC ACTUAL:\e[1;31m $MAC_ACTUAL \e[0m /"
echo "================================/"
break
  fi
    done
done

Otra cosa que me molestaba un poco era que con el comando ifconfig no podía cambiar ninguna interfaz que estuviese en modo monitor. Investigando un poco, encontré que con ip link set dev eth0 address xx:xx:xx:xx:xx:xx si podía hacerlo, así que decidí sustituirlo por el ifconfig ( a ver si alguno me puede decir si he hecho bien o no)

Todo parece funcionar perfecto con él, y creía que ya tenía lista para sacar la 0.5 pero me he encontrado con un comportamiento extraño en el script.... Cuando voy a cambiar la MAC ( o restaurarla), solo me cambia/restaura 1 por cada vez que ejecuto el script. Es decir, tengo que ejecutar el script X veces para X interfaces... (cosa que no pasa cuando ejecuto la opción -m (macchanger)).

Me parece que los comandos que usa el script tienen que estar en distintas partes de la memoria, y no en una misma, por lo que, si no me equivoco, eso ya son cosas del C (no me hagáis mucho caso, digo muchas tonterías de vez en cuando). La verdad es que estoy en un callejón sin salida y no tengo ni idea de como puedo solucionar eso, a ver si a alguno de vosotros se os ocurre algo...  :-\  :-\ :-\

@USUARIONUEVO, en cuanto consiga solucionar esta caca, me instalo el Wifislax en el HDD y me pongo a probar el parámetro --autostart, para perfeccionarlo al máximo ;D ;D ;D ;D

Si alguno le quiere echar un ojo a la supuesta "0.5" (el codigo completo), que me avise  :D

Salu2

siento decirte que el udev de ubuntu está modificado por ellos, y que ademas usan un kernel tambien algo desviado del estandar. pero en el peor de los casos podemos chatear un ratito con ellos y que nos cuenten.

te cuento tambien que solo los dispositivos wireless estan equipados con PHYs (un tipo de chip que se encarga de transformar el enlace wireless en un enlace con propiedades similares a los físicos), por lo tanto, la interfaz /sys para los dispositivos de clase net, solo presenta una carpeta phy para ellos. Es fiable, pero incompleta.

puedo preguntar/investiar si tenemos un equivalente en /sys para los dispositivos ethernet. esta parte del kernel la tengo poco estudiada, pero alguien puede echarnos una mano, seguro.
 

Gracias por la info, no conocía los PHYs (una cosa mas que conozco  :D ). Yo he buscado por el /sys y en /etc, pero no he encontrado nada... Y ahora, para colmo, cuando arranco la live de Wifislax, ninguna de las dos rutas que contenían la MAC real de la interfaz eth0 ahora funciona...

Quería sacar la v0.5, pero cada vez mas me encuentro con distintos obstáculos.....  :-\

Vosotros que sois los veteranos del proyecto de Wifislax, conocéis mas rutas alternativas para obtener la MAC  ??? ??? ???

Salu2
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: alist3r en 15-09-2013, 20:08 (Domingo)
wifislax no tiene tanto que ver, esto es conocimiento del kernel linux a nivel de sistemas, y del sistema unix/gnu estandar.
normalmente /sys nos da toda la informacion que necesitamos, si sabe usarse. en otros casos nos apoyamos en herramientas externas que se consideran estandar o semiestandar, como por ejemplo ifconfig, iwconfig, iw, brctl, etc etc etc

pero el tema esta de la mac original... ya te digo, si no preguntoa algun hacker del kernel... porque yo no lo sé.

PD: voy a ver si esta noche charlo con una desearrolladora de Tails para que me cuente cómo lo hacen ellos, ya que su distro randomiza todas las macs por defecto, y en caso de que te hayas dado cuenta posteriormente de que el AP tiene filtrado de mac, entonces Tails te ofrece una opcion para recuperar la mac inicial.
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: alist3r en 15-09-2013, 21:16 (Domingo)
bueno ya lo tengo.
leer la mac permanente se debe hacer llamando a un IOCTL del kernel (como casi todo en el fondo)
en un sistema linux suele estar presente la herramienta ethtool que sirve para enviar y recibir IOCTLS al subsistema net del kernel a través de comandos, y así librarse de tener que hacer un programa en C para una chorrada.

Una viez instalado en el sistema, es sencillo saber la mac original.
Citar
root@engetsu:~# macchanger -A eth0
Permanent MAC: e0:cb:4e:4a:d2:88 (Asustek Computer Inc.)
Current   MAC: e0:cb:4e:4a:d2:88 (Asustek Computer Inc.)
New       MAC: 00:06:23:4a:e2:a7 (Mge Ups Systems France)

root@engetsu:~# ethtool -P eth0
Permanent address: e0:cb:4e:4a:d2:88

root@engetsu:~# macchanger eth0
Permanent MAC: e0:cb:4e:4a:d2:88 (Asustek Computer Inc.)
Current   MAC: 00:06:23:4a:e2:a7 (Mge Ups Systems France)


PD: macchanger puede leer la mac permamente (al ejecutarse simplemente, ya te informa de ella), y resetear la mac a la permanente de origen (usando el parametro -p)
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: vk496 en 15-09-2013, 22:39 (Domingo)
@alister, muchas gracias por tu gran investigación y ayuda, de verdad. Yo ya tenía pensado colgar la 0.5 con las 4 alternativas para sacar la Mac permanente (la cuarta es con el macchanger), pero me has parado los pies en el ultimo momento  ;D

Mañana cambiare la cuarta alternativa (macchanger), por la del ethtool, pos me parece que es mas universal (mi ubuntu no venia con macchanger por ejemplo) Quiero dejar las alternativas porque nunca se sabe cuando se van a necesitar (y porque me cuesta admitir que me he tirado horas y horas a lo tonto buscando las rutas y haciendo el **** script con los if de los co***** jajajajaja  ;D )

Para cuando saque la 0.5 me gustaría que me comentarais si lo que me pasa en mi PC os pasa a vosotros también: En cuanto empiezo a usar el script varias veces seguidas, este empieza a fallar a veces (no da errores, pero la Mac no cambia por un distinta, y luego a la próxima si lo hace.... Algo raro, pero bueno....

Y una vez mas, gracias @alister, @USUARIONUEVO y @geminis_demon por toda vuestra ayuda, no esperaba tanto apoyo para un proyecto tan simple e insignificante  >:( >:( >:(

Salu2
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: alist3r en 15-09-2013, 22:51 (Domingo)
macchanger está poco mantenido; hay bifurcaciones extraoficiales que han ido manteniendolo y cuidando de el. por ejemplo la opción -p es posterior a su abandono por parte del creador.

he estado mirando su código, y al final lo que hace es lo que se supone que acaba haciendo cualquier herramienta que cambie las macs de las interfaces: llamar al "Input/Output ConTroL" correspondiente en el kernel, y el resto es puramente código para tener una base de datos de macs, elegir una aleatoriamente, y todas esas cosas que hace macchanger. tampoco es un "big deal", vamos.

me han estado enseñando otras alternativas como macchiato, etc, pero al final todos hacen lo mismo: si no son programas en C que llaman al IOCTL, son scripts en bash que llaman a programas en C (ip, ifconfig, macchanger) los cuales a su vez acaban llamando al IOCTL.

PD: como ya tenemos este mecanismo, bastante asequible, no he consultado si habia representaciones válidas en /sys. Ya da igual.
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: vk496 en 16-09-2013, 10:39 (Lunes)
Bueno, allí os dejo la 0.5  8)

Ya me conatreis que os ha parecido...  :D

Salu2
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 16-09-2013, 12:20 (Lunes)
Va bien , pero le pondria un sleep 3 , al detectar interfaces, por que si no , no se ve ni la info , ni los creditos.

en la funcion cambiar mac, puse dos espacios en blanco y un sllep de 3 ... por lo menos el mio lo dejare asi.


Código: [Seleccionar]
detectarmac() {
lista=$(echo ${interfaces[@]} | wc -w)
echo
echo -e "Network inteface/s: \e[0;31m$lista\e[0m "
echo
echo -e "\e[1;31m${interfaces[@]}\e[0m"
echo
echo
sleep 3
cambiarmac
}
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: alist3r en 16-09-2013, 12:25 (Lunes)
Para cuando saque la 0.5 me gustaría que me comentarais si lo que me pasa en mi PC os pasa a vosotros también: En cuanto empiezo a usar el script varias veces seguidas, este empieza a fallar a veces (no da errores, pero la Mac no cambia por un distinta, y luego a la próxima si lo hace.... Algo raro, pero bueno....

un bloqueo exclusivo en acción.
comprueba si el tiempo de pausa entre ejecuciones del script influye en algo.
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: ferlan en 16-09-2013, 19:00 (Lunes)
Privileges root--->     OK!
Autoboot Status--->     Off
Chamac Mode------->     Normal

Network inteface/s:     3

eth0 wlan1 wlan0



Perooooo.... a la hora de informar de los cambios realizados, me informa de cambio sólo en dos; eth0 y wlan1
Independientemente de lo anterior, la realidad en cuanto a cambios efectivamente realizados es es la siguiente, en seis intentos consecutivos:

 Tjta    Cambio

 eth0      S
 wlan0     N
 wlan1     S

 eth0      N
 wlan0     S
 wlan1     N

 eth0      N
 wlan0     S
 wlan1     N

 eth0      S
 wlan0     S
 wlan1     N

 eth0      S
 wlan0     N
 wlan1     S

 eth0      N
 wlan0     S
 wlan1     N

En mi caso, la primera versión, me funcionó bien.
Pruebas realizadas en Wifislax-4.6 Live USB.
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: alist3r en 16-09-2013, 20:52 (Lunes)
alguien está guardando debug de lo que hace con chamac ?
o vamos a caradeperro? xD
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: vk496 en 16-09-2013, 21:15 (Lunes)
Va bien , pero le pondria un sleep 3 , al detectar interfaces, por que si no , no se ve ni la info , ni los creditos.

en la funcion cambiar mac, puse dos espacios en blanco y un sllep de 3 ... por lo menos el mio lo dejare asi.


Código: [Seleccionar]
detectarmac() {
lista=$(echo ${interfaces[@]} | wc -w)
echo
echo -e "Network inteface/s: \e[0;31m$lista\e[0m "
echo
echo -e "\e[1;31m${interfaces[@]}\e[0m"
echo
echo
sleep 3
cambiarmac
}

Es verdad, gracias, ya lo he cambiado. En principio estaba allí, pero con los cambios que estaba haciendo (y pruebas), borre esa parte para que no fuese tan lento...

Salu2
Título: Re: ChaMAC 0.4 : Cambia todas tus MAC
Publicado por: vk496 en 16-09-2013, 21:20 (Lunes)
Para cuando saque la 0.5 me gustaría que me comentarais si lo que me pasa en mi PC os pasa a vosotros también: En cuanto empiezo a usar el script varias veces seguidas, este empieza a fallar a veces (no da errores, pero la Mac no cambia por un distinta, y luego a la próxima si lo hace.... Algo raro, pero bueno....

un bloqueo exclusivo en acción.
comprueba si el tiempo de pausa entre ejecuciones del script influye en algo.

Ya lo probé, pero no da resultado, solo retrasa el proceso.... Con la opción para restaurar MAC, me pasaba lo mismo, pero conseguí solucionarla con un bucle bastante curioso... Sin embargo, para cambiarla con ifconfig y/o ip link no funciona igual de bien...  :-\

Salu2
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: vk496 en 16-09-2013, 21:23 (Lunes)
alguien está guardando debug de lo que hace con chamac ?
o vamos a caradeperro? xD

Debug?? Eso se come? ;D

Ahora fuera de bromas, cuentame que es  ;D

Salu2
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: alist3r en 16-09-2013, 21:31 (Lunes)
me refiero a que se guarde en un fichero de texto el resultado de todos los comandos que se ejecutan internamente, o que en su defecto, se vean por pantalla. para que podamos resolver problemas como el de "ahora si/ahora no" que nos estamos encontrado.
parece que estamos frente a una race condition (http://es.wikipedia.org/wiki/Condici%C3%B3n_de_carrera) pero no podemos saber más sin revisar a fondo los logs
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: vk496 en 16-09-2013, 21:32 (Lunes)
Privileges root--->     OK!
Autoboot Status--->     Off
Chamac Mode------->     Normal

Network inteface/s:     3

eth0 wlan1 wlan0



Perooooo.... a la hora de informar de los cambios realizados, me informa de cambio sólo en dos; eth0 y wlan1
Independientemente de lo anterior, la realidad en cuanto a cambios efectivamente realizados es es la siguiente, en seis intentos consecutivos:

 Tjta    Cambio

 eth0      S
 wlan0     N
 wlan1     S

 eth0      N
 wlan0     S
 wlan1     N

 eth0      N
 wlan0     S
 wlan1     N

 eth0      S
 wlan0     S
 wlan1     N

 eth0      S
 wlan0     N
 wlan1     S

 eth0      N
 wlan0     S
 wlan1     N

En mi caso, la primera versión, me funcionó bien.
Pruebas realizadas en Wifislax-4.6 Live USB.

Gracias por el dato, ahora ya se que el problema no es exclusivamente mío.... El problema esta en que las primeras versiones estaban basadas en macchanger exclusivamente, sin embargo, para eliminar esa dependencia y que el script fuese mas portable, decidí basarme en herramientas genéricas de Linux.

Te sucede el mismo problema con la opción de macchanger (-m, --macchanger)? Y a la hora de restaurar las MAC (-r, --restore)?

Estoy viendo las posibles soluciones para eso, pero por ahora no he encontrado nada que funcione....


Gracias por el reporte

Salu2
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: vk496 en 16-09-2013, 21:35 (Lunes)
me refiero a que se guarde en un fichero de texto el resultado de todos los comandos que se ejecutan internamente, o que en su defecto, se vean por pantalla. para que podamos resolver problemas como el de "ahora si/ahora no" que nos estamos encontrado

Pues no, lo siento, yo iba a pelo.... jaja ;D

Puedes poner algún ejemplo o algo para que sepa como funciona? Gracias

Salu2
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: cristi_28 en 16-09-2013, 21:38 (Lunes)


Te sucede el mismo problema con la opción de macchanger (-m, --macchanger)? Y a la hora de restaurar las MAC (-r, --restore)?

Estoy viendo las posibles soluciones para eso, pero por ahora no he encontrado nada que funcione....


Gracias por el reporte

Salu2

-p,  --permanent              Reset to original, permanent hardware MAC

-r,  --random                 Set fully random MAC
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: vk496 en 16-09-2013, 21:40 (Lunes)
Por cierto, alguien me puede decir si ethtool tiene la capacidad de cambiar MAC?

Es que estoy desde móvil y no puedo mirarlo...  ^-^


PD: Me esta saliendo todo el rato "500 Internal Server Error" desde el movil

Salu2
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: vk496 en 16-09-2013, 21:43 (Lunes)


Te sucede el mismo problema con la opción de macchanger (-m, --macchanger)? Y a la hora de restaurar las MAC (-r, --restore)?

Estoy viendo las posibles soluciones para eso, pero por ahora no he encontrado nada que funcione....


Gracias por el reporte

Salu2

-p,  --permanent              Reset to original, permanent hardware MAC

-r,  --random                 Set fully random MAC


Me refiero con las opciones de chamac (usa chamac -h para verlas todas)

Salu2
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: alist3r en 16-09-2013, 21:46 (Lunes)
todos los sitios donde pones:

macchanger -r $interfaz &>/dev/null

si hubieras montado una pequeña capa de "debugging" por debajo, podrias activar una variable debug, y en funcion de si está activada o no, envair toda la salida a chamac.log en lugar de tirarla a /dev/null.

así sabríamos qué esta pasando en realidad.
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: alist3r en 16-09-2013, 21:54 (Lunes)
NO. no puedes usar ethtool para cambiar de mac.
Puedes usar el comando ifconfig para ello. es más conveniente, y tambien forma parte de un sistema gnu/linux estandar.

por cierto, a mi no me detiene convenientemente el wicd en mi sistema debian. por tanto, chamac se acaba peleando con dhclient y con wpasupplicant, por lo que no me cambia de mac siempre. como a los demás.
estoy mirando el código para ver por qué
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: vk496 en 16-09-2013, 21:56 (Lunes)
todos los sitios donde pones:

macchanger -r $interfaz &>/dev/null

si hubieras montado una pequeña capa de "debugging" por debajo, podrias activar una variable debug, y en funcion de si está activada o no, envair toda la salida a chamac.log en lugar de tirarla a /dev/null.

así sabríamos qué esta pasando en realidad.

Ah vale, ya lo entiendo...  Nunca había hecho eso, pero voy a intentarlo (en cuanto tenga el PC a mano, lo añadiré sin falta)

Se que usando ">" puedo enviar las salidas a un archivo, pero no se como añadir fecha y hora a todo eso... De todas formas, investigare un poco y lo implementaré sin falta...

Por cierto, para activar la función debug... Lo mejor seria añadiendo otro parámetro al menú o que el propio usuario lo modificase?

Salu2
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: vk496 en 16-09-2013, 22:08 (Lunes)
NO. no puedes usar ethtool para cambiar de mac.
Puedes usar el comando ifconfig para ello. es más conveniente, y tambien forma parte de un sistema gnu/linux estandar.

por cierto, a mi no me detiene convenientemente el wicd en mi sistema debian. por tanto, chamac se acaba peleando con dhclient y con wpasupplicant, por lo que no me cambia de mac siempre. como a los demás.
estoy mirando el código para ver por qué

Solo tengo a network-manager y a la madre de los daemons de la red de los sistemas Slax, wicd no lo tengo metido (otra cosa que me apunto para añadir a la 0.6  ;D )

El problema de que a veces no cambia la MAC viene de ip link (o ifconfig, da igual). Prueba quitando todos los /dev/null y lo veras. De vez en cuando me dice que no puede cambiarlo (resource bussy), y si le hago un loop con while o until, me entra en un bucle infinito.... Estoy viendo estos días posibles soluciones, pero no encuentro nada... No se como lo hace macchanger para que no le falle (supongo que en lenguaje C se podrá hacer mejor estas cosas, ni idea...)

Salu2
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: alist3r en 16-09-2013, 22:35 (Lunes)
vale, he visto que tienes varios problemas de scope de las variables.
yo tardé mucho en superarlos. en bash no es muy intuitivo.
modifico cosas y te las cuento luego.
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: alist3r en 16-09-2013, 22:36 (Lunes)
he habilitado un poquito de "debug" en el script y ya he encontrado qué es lo que está impidiendo, aleatoriamente, que se cambien las direcciones mac:

Código: [Seleccionar]
RTNETLINK answers: Cannot assign requested address
RTNETLINK answers: Cannot assign requested address

efectivamente tu script sufre una condición de carrera.
voy a ver dónde.
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: alist3r en 16-09-2013, 22:44 (Lunes)
todos los sitios donde pones:

macchanger -r $interfaz &>/dev/null

si hubieras montado una pequeña capa de "debugging" por debajo, podrias activar una variable debug, y en funcion de si está activada o no, envair toda la salida a chamac.log en lugar de tirarla a /dev/null.

así sabríamos qué esta pasando en realidad.

Ah vale, ya lo entiendo...  Nunca había hecho eso, pero voy a intentarlo (en cuanto tenga el PC a mano, lo añadiré sin falta)

Se que usando ">" puedo enviar las salidas a un archivo, pero no se como añadir fecha y hora a todo eso... De todas formas, investigare un poco y lo implementaré sin falta...

Por cierto, para activar la función debug... Lo mejor seria añadiendo otro parámetro al menú o que el propio usuario lo modificase?

Salu2

el debug no suele ser de acceso para usuarios, por tanto, una simple asignacion de variable en el script. por ejemplo:

CHAMAC_DEBUG=1
y se comenta o descomenta para desarrollar o para pasarlo a producción.

yo ya tengo implementado algo básico. en un rato te enseño.
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: alist3r en 16-09-2013, 23:15 (Lunes)
ya lo he domado bastante.
sigo con fallos pero las interfaces van cambiando de mac

http://pastebin.com/zr1V3E4F
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: cristi_28 en 16-09-2013, 23:36 (Lunes)
Me pasa solo a mi ?

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: alist3r en 16-09-2013, 23:38 (Lunes)
Código: [Seleccionar]
viaifconfig() {

for INTERFACE in ${interfaces[@]}; do
MAC_ACTUAL="$(cat /sys/class/net/$INTERFACE/address)"
  until [ -N $MAC_ACTUAL ]; do
  ifconfig $INTERFACE down &>${chamac_output_device}
  ip link set $INTERFACE down &>${chamac_output_device}
          # aqui es cuando se produce la condición de carrera
          # despues de esto, debes darle una pausa al sistema para que asuma todo esto
          # no puedes ametrallarlo con comandos ip link, porque el netlink se satura
      # por eso te voy a meter un sleep aqui
          sleep 1
          # y ahora si
  ip link set dev $INTERFACE address $(openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//') &>${chamac_output_device}
  break && ./$0
  conditional_clear
done
done

}

Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: alist3r en 16-09-2013, 23:40 (Lunes)
Me pasa solo a mi ?

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

en el ámbito profesional, one and one es conocida porque no sabe configurar sus servidores de base de datos de una forma muy optima que digamos...
SW experimenta ese problema regularmente desde que migró allí
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 17-09-2013, 16:38 (Martes)
La 0.5 de momento no me ha fallado ninguna vez..aunque aun no probe el autostarter.  ;)
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: alist3r en 17-09-2013, 16:47 (Martes)
puse a andar el macchanger a toda pastilla aleatoriamente en bucle infinito sin pausas y no falló ni una sola vez.
con ip link, la cosa cambia.
si queda un dhclient colgando, entonces la cosa es un horror.
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: vk496 en 17-09-2013, 20:58 (Martes)
puse a andar el macchanger a toda pastilla aleatoriamente en bucle infinito sin pausas y no falló ni una sola vez.
con ip link, la cosa cambia.
si queda un dhclient colgando, entonces la cosa es un horror.

Allí es donde quería encontrar una solucion. Tu método con el sleep esta bien, pero no es una solución definitiva, pues después de echar unas cuantas, vuelve a "bloquearse" alguna interfaz, y allí vuelve otra vez el maldito problema....

tanto con ifconfig como con ip link pasa lo mismo, y ni dando un sleep 5 sirve para sacar las interfaces de ese "estado tonto"...  :-\

Estoy estos dias mirando posibles soluciones, pero hasta ahora no hubu suerte... no se que medidas hay que tomar para poder preparar "el escenario" antes de cambiarlo, sin que falle ni una vez (como esta pasando hasta ahora)...

Salu2
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: alist3r en 17-09-2013, 21:29 (Martes)
ambos usan el netlink socket. ambos se saturaran, me temo.
la cuestión es que tu script aguante, por lo menos, la primera vez con un éxito del 100%.

dos ejecuciones consecutivas del script son un escenario improbable y, tampoco tienes por qué garantizar su correcto funcionamiento en tal caso.

eso si, a la primera debe funcionar.
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 17-09-2013, 22:09 (Martes)
Yo creo que el problema viene de querer lanzarle el parametro a la vez a varias interfaces.

yo me he fijao esta tarde que un par de veces en alguna interface fallaba.


¿ alguna opcion de sleep entre cambiar una interface y otra ? ...debe haber una pausa si detecta mas d euna , que sera siempre, por que ethernet siempre habra ..y wireless casi que tambien.
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: alist3r en 18-09-2013, 01:31 (Miércoles)
Yo creo que el problema viene de querer lanzarle el parametro a la vez a varias interfaces.

yo me he fijao esta tarde que un par de veces en alguna interface fallaba.


¿ alguna opcion de sleep entre cambiar una interface y otra ? ...debe haber una pausa si detecta mas d euna , que sera siempre, por que ethernet siempre habra ..y wireless casi que tambien.

hice bastantes pruebas, y tanto las pausas entre los dos "ip link" como las pausas entre iteraciones del bucle (cada tarjeta), mejoran el problema.
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: vk496 en 18-09-2013, 22:12 (Miércoles)
Bueno chicos, vengo para deciros que ya he solucionado el dichoso problema con los cambios de MAC (10 pruebas continuas sobre etho wlan0 y mon0, y las 10 cambiaron la MAC a todas)  >:(


Otra de las novedades va a ser la detección de wicd (especialmente para los que lo usan fuera de WifiSlax)

Una cosa mas que pensé añadir fue obligar al usuario a tener el script siempre en /usr/bin/ con el nombre chamac, sino, el programa no continuara (mas que nada por la función del autostart, cosa a la que me dedicare plenamente para la 0.7  ;D )

La ultima cosa que me falta por añadir es el modo DEBUG. me gustaría modificar todos los &>/dev/null por una variable ($output por ejemplo), y que si DEBUG es 1, que la variable guardase en un archivo todas las salidas con la máxima info posible (por ahora quiero limitarme a que cada línea tuviese el comando "date" para la hora exacta en primer lugar, y después las salida), y si estuviese en 0, pues un &>/dev/null


Me ha funcionado perfectamente si lo pongo manual, pero no con el uso de variables y todo eso... Espero conseguirlo pronto  :D

Salu2
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 18-09-2013, 22:45 (Miércoles)
pon la 0.6 si solventa lo de los cambios d emac fallidos,..y para la 0.7 el debug.

auqnueb tampoco hay prisa  ;)
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: alist3r en 18-09-2013, 22:53 (Miércoles)
Bueno chicos, vengo para deciros que ya he solucionado el dichoso problema con los cambios de MAC (10 pruebas continuas sobre etho wlan0 y mon0, y las 10 cambiaron la MAC a todas)  >:(


Otra de las novedades va a ser la detección de wicd (especialmente para los que lo usan fuera de WifiSlax)

Una cosa mas que pensé añadir fue obligar al usuario a tener el script siempre en /usr/bin/ con el nombre chamac, sino, el programa no continuara (mas que nada por la función del autostart, cosa a la que me dedicare plenamente para la 0.7  ;D )

La ultima cosa que me falta por añadir es el modo DEBUG. me gustaría modificar todos los &>/dev/null por una variable ($output por ejemplo), y que si DEBUG es 1, que la variable guardase en un archivo todas las salidas con la máxima info posible (por ahora quiero limitarme a que cada línea tuviese el comando "date" para la hora exacta en primer lugar, y después las salida), y si estuviese en 0, pues un &>/dev/null


Me ha funcionado perfectamente si lo pongo manual, pero no con el uso de variables y todo eso... Espero conseguirlo pronto  :D

Salu2

me vas a matar, pero ya he implementado todo eso en privado.
he forkeado tu script salvajemente y no he tenido tiempo de enseñartelo.

lo mejor que puedes hacer es mirarlo tu mismo, tomas ideas (tengo muchos comentarios) y las implementas a tu aire en proximas versiones, descartando mis modificaciones (seria dificil resincronizarnos, ya que hemos empezado a picar codigo por separado sin el control de un repositorio)

si te das de alta en github.com y aprendes a usar git, podré ayudarte mucho mas.

te paso mi version del script en privado para que curiosees
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: vk496 en 19-09-2013, 17:23 (Jueves)
Bueno chicos, vengo para deciros que ya he solucionado el dichoso problema con los cambios de MAC (10 pruebas continuas sobre etho wlan0 y mon0, y las 10 cambiaron la MAC a todas)  >:(


Otra de las novedades va a ser la detección de wicd (especialmente para los que lo usan fuera de WifiSlax)

Una cosa mas que pensé añadir fue obligar al usuario a tener el script siempre en /usr/bin/ con el nombre chamac, sino, el programa no continuara (mas que nada por la función del autostart, cosa a la que me dedicare plenamente para la 0.7  ;D )

La ultima cosa que me falta por añadir es el modo DEBUG. me gustaría modificar todos los &>/dev/null por una variable ($output por ejemplo), y que si DEBUG es 1, que la variable guardase en un archivo todas las salidas con la máxima info posible (por ahora quiero limitarme a que cada línea tuviese el comando "date" para la hora exacta en primer lugar, y después las salida), y si estuviese en 0, pues un &>/dev/null


Me ha funcionado perfectamente si lo pongo manual, pero no con el uso de variables y todo eso... Espero conseguirlo pronto  :D

Salu2

me vas a matar, pero ya he implementado todo eso en privado.
he forkeado tu script salvajemente y no he tenido tiempo de enseñartelo.

lo mejor que puedes hacer es mirarlo tu mismo, tomas ideas (tengo muchos comentarios) y las implementas a tu aire en proximas versiones, descartando mis modificaciones (seria dificil resincronizarnos, ya que hemos empezado a picar codigo por separado sin el control de un repositorio)

si te das de alta en github.com y aprendes a usar git, podré ayudarte mucho mas.

te paso mi version del script en privado para que curiosees

Gracias por tu gran trabajo! La verdad es que lo he estado mirando, y tiene bastantes cosas interesantes, me parece que voy a añadir casi todo  ;D ;D ;D

El unico problema que estoy teniendo para aplicar los cambios es con el $chamac_detected_daemon, pues en cuanto sale del while, lo que contiene dentro desaparece, por lo que nunca se llega a reiniciar un daemon (solo el cliente dhcp). Le he probado a poner/quitar el export que lleva delante (no se me ocurre nada mas), pero sigo sin ver cambios. De todos los echo que coloque a lo largo del script, solo responden los que estan dentro del while, nada mas....  :'(


A ver si acabo con este pequeño contratiempo y publico la 0.6 (que creo que va a ser la mas estable hasta ahora). Te va a hacer mucha gracia la forma con la que resuelvo el problema de los cambios de MAC, ya lo verás....  ;D ;D ;D

Salu2 a todos y atentos a la v0.6  8)
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: alist3r en 19-09-2013, 19:12 (Jueves)
no te va? en teoria solo debes utilizar

EXPORT NOMBREDEVARIABLE=VALOR

para que dicha variable esté disponible en todas las function.
esto es crucial en muchos pntos de tu script.ya te comenté que tenias algun problema de "scope" (alcance) de variables, o cuanto menos, poblemas potenciales.

por norma general en el preload de un script cargamos todas las variables globales con EXPORT, o todas las que podemos.

luego al salir, las limpiamos todas para que no quede ni rastro, utilizando UNSET. es que si no, esas variables quedarian ajustadas en el entorno de bash. se intenta salir limpiamente desconfigurado todas las variables usadas. por eso es buena idea no usar variables con nombres genericos. en tu caso pondria el prefijo CHAMAC_ a todas las variables globales.

me alegro que te haya gustado todo, el codigo de deteccion del daemon tenia muchas posibilidades de simplificarse, y aun lo puedes simplificar mas con respecta mi propuesta si le das alguna vuelta al asunto.

el tema de debug tambien tiene mucho mas potencial, en lugar de usar echo, a veces construimos una funcion echo_debug o similar para que se aparezcan mensajes por pantalla solo cuando el debug está activado. la variable debug deberia, por tanto, ser global (EXPORT). trastea con eso porque te deberia funcionar.

saludos

PD: miedo me da ver lo que hayas ideado para resolver la condicion de carrera en netlink xD
Título: Re: ChaMAC 0.6 : Cambia todas tus MAC
Publicado por: vk496 en 19-09-2013, 21:38 (Jueves)
Bueno, por fin me he decidido a lanzar la 0.6 (me parece que no me he dejado ningun fallo en la v0.6 definitiva)  ^-^

Lo mas importante de todo: Contarme como os van los cambios de MAC (echad un chamac && chamac && chamac && chamac y decirme como os ha ido) >:D

Al final me cansé de los pause, así que probé algo mas "radical", y parece ser que funciona (al menos a mi hasta ahora)  ;D ;D ;D

Salu2
Título: Re: ChaMAC 0.6 : Cambia todas tus MAC
Publicado por: ferlan en 20-09-2013, 02:31 (Viernes)
Contarme como os van los cambios de MAC (echad un chamac && chamac && chamac && chamac y decirme como os ha ido.
¡Vaya curre que te estás pegando con lo que parecía una sencilla utilidad!
Siento tener que ser yo otra vez el agorero:

Privileges root--->     OK!
Chamac installdir--->   OK!
Autoboot Status--->     Off
Chamac Mode------->     Normal

Network inteface/s:     3

eth0 wlan1 wlan0



================================\
INTERFACE: eth0                                    \
MAC ORIGINAL: xx:23:54:fx:ex:xx               #
MAC ACTUAL: xx:c1:43:fx:6x:xx                /
================================/
================================\
INTERFACE: wlan1                                   \
MAC ORIGINAL: xx:f1:a1:0x:1x:4x               #
MAC ACTUAL: xx:98:b2:9x:5x:2x                /
================================/

Reiniciando interfaces y DHCP ...
Mediante ifconfig podras comprobar que la mac realmente ha cambiado.
Iniciando servcio /etc/rc.d/rc.inet1

Recuerda revisar las demas opciones con chamac --help

Tareas realizadas ... Hasta pronto


Esto es lo que se muestra en la ejecución del script. Informa de cambio en eth0 y wlan1, no así en wlan0, pero comprobado con ifconfig, los cambios se efectúan correctamente en las tres. Lo he probado varias veces tal como dices, y con la opción -m  En ningún caso ha fallado a excepción de lo que ya he mencionado.

Probado en Wifislax-4.6  Live-USB
Título: Re: ChaMAC 0.6 : Cambia todas tus MAC
Publicado por: alist3r en 20-09-2013, 02:57 (Viernes)
Citar
viaifconfig() {

for (( c=1; c<=6; c++ ))
do
for INTERFACE in ${interfaces
  • }; do

     MAC_ACTUAL="$(cat /sys/class/net/$INTERFACE/address)"
     until [ -N $MAC_ACTUAL ]; do
     ifconfig $INTERFACE down &>${chamac_output_device}
     ip link set $INTERFACE down &>${chamac_output_device}
     ip link set dev $INTERFACE address $(openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//') &>${chamac_output_device}
     break
     conditional_clear
   done
done
done

}


jajajajaaa!
que puto animal XD

pero bueno, aunque no es elegante es funcional y resuelve el problema. listo para sentencia.

tu mayor punto debil por resolver ahora es la forma de comprobar la version de machanger. deberias detectar expresiones regulares en su salida estandar para asegurarte, porque otras compilaciones de las mismas versiones podrian tener diferentes longitudes, especialmente las de 32 y 64 bits, versiones de depuracion o parcheadas localmente, etc etc etc.
Título: Re: ChaMAC 0.6 : Cambia todas tus MAC
Publicado por: alist3r en 20-09-2013, 03:17 (Viernes)
he conseguido un parche para el netlink socket, para que se coma más comando a mayor velocidad.
vamos, que es un tema conocido. el kernel no está hecho para hacerle estas guarradas tan deprisa ya que limita la cola de entrada de mensajes mediante los netlink sockets. el ratio de throttling parece que está en unos 25 mensajes por segundo, ergo las pausas deberian tambien servir (a mi me sirven de hecho)

lo dejo en constancia, pero vamos, que si ya funciona bien esta parte y no da problemas así, tampoco me voy a poner a ladrar xD
Título: Re: ChaMAC 0.6 : Cambia todas tus MAC
Publicado por: vk496 en 20-09-2013, 12:28 (Viernes)
he conseguido un parche para el netlink socket, para que se coma más comando a mayor velocidad.
vamos, que es un tema conocido. el kernel no está hecho para hacerle estas guarradas tan deprisa ya que limita la cola de entrada de mensajes mediante los netlink sockets. el ratio de throttling parece que está en unos 25 mensajes por segundo, ergo las pausas deberian tambien servir (a mi me sirven de hecho)

lo dejo en constancia, pero vamos, que si ya funciona bien esta parte y no da problemas así, tampoco me voy a poner a ladrar xD

Para la próxima de Wifislax estaría bien que se añadiese (por si acaso), pero en el caso de mi script, para que sea lo mas portable posible, no puedo ir obligando a la gente a aplicar el parche para que funcione bien, sería de locos... xD
Título: Re: ChaMAC 0.6 : Cambia todas tus MAC
Publicado por: vk496 en 20-09-2013, 12:35 (Viernes)
Contarme como os van los cambios de MAC (echad un chamac && chamac && chamac && chamac y decirme como os ha ido.
¡Vaya curre que te estás pegando con lo que parecía una sencilla utilidad!
Siento tener que ser yo otra vez el agorero:

Privileges root--->     OK!
Chamac installdir--->   OK!
Autoboot Status--->     Off
Chamac Mode------->     Normal

Network inteface/s:     3

eth0 wlan1 wlan0



================================\
INTERFACE: eth0                                    \
MAC ORIGINAL: xx:23:54:fx:ex:xx               #
MAC ACTUAL: xx:c1:43:fx:6x:xx                /
================================/
================================\
INTERFACE: wlan1                                   \
MAC ORIGINAL: xx:f1:a1:0x:1x:4x               #
MAC ACTUAL: xx:98:b2:9x:5x:2x                /
================================/

Reiniciando interfaces y DHCP ...
Mediante ifconfig podras comprobar que la mac realmente ha cambiado.
Iniciando servcio /etc/rc.d/rc.inet1

Recuerda revisar las demas opciones con chamac --help

Tareas realizadas ... Hasta pronto


Esto es lo que se muestra en la ejecución del script. Informa de cambio en eth0 y wlan1, no así en wlan0, pero comprobado con ifconfig, los cambios se efectúan correctamente en las tres. Lo he probado varias veces tal como dices, y con la opción -m  En ningún caso ha fallado a excepción de lo que ya he mencionado.

Probado en Wifislax-4.6  Live-USB
chamac -s

Que raro... te detecta la wlan0 desde el script pero no muestra su info al final... hmm....

Prueba con chamac -s para ver si te pasa lo mismo

PD: Gracias por mostrar el output, ahora ya sé que funciona bien (y no solo a mi jajaja)

Salu2
Título: Re: ChaMAC 0.6 : Cambia todas tus MAC
Publicado por: alist3r en 20-09-2013, 15:54 (Viernes)
voy a analziar el codigo en busca de una potencial falla a la hora de procesar el array.
Título: Re: ChaMAC 0.6 : Cambia todas tus MAC
Publicado por: alist3r en 20-09-2013, 16:02 (Viernes)
vk496
la forma de obtener el array deberia ser correcta, y la forma de procesarlo tambien. pero vamos a testar la forma de procesarlo.
no tengo una maquina *nix cerca ahora mismo, pero te digo cómo colocar un punto de debug para ver que pasa ahi:

justo antes de esta linea
Código: [Seleccionar]
for INTERFACE in ${interfaces[@]}; do
colocad estas lineas:
Código: [Seleccionar]
echo "DEBUG: Contenido de interfaces:"
echo "${interfaces[@]}" # mostrar en pantalla el contenido del array.
read foo #fuerza pausa hasta pulsar enter

y pegad por aqui la salida de ese trozo de código
Título: Re: ChaMAC 0.6 : Cambia todas tus MAC
Publicado por: vk496 en 20-09-2013, 16:38 (Viernes)
vk496
la forma de obtener el array deberia ser correcta, y la forma de procesarlo tambien. pero vamos a testar la forma de procesarlo.
no tengo una maquina *nix cerca ahora mismo, pero te digo cómo colocar un punto de debug para ver que pasa ahi:

justo antes de esta linea
Código: [Seleccionar]
for INTERFACE in ${interfaces[@]}; do
colocad estas lineas:
Código: [Seleccionar]
echo "DEBUG: Contenido de interfaces:"
echo "${interfaces[@]}" # mostrar en pantalla el contenido del array.
read foo #fuerza pausa hasta pulsar enter

y pegad por aqui la salida de ese trozo de código

Yo no tengo ninguna PC a la que le pase eso, en todos los PC en los que he llegado a probar el script me ha funcionado....

Lo que mas me sorprende del caso de @ferlan es que el array si almacena todas las interfaces, pero por alguna razón no las muestra todas.... Habrá que esperar a que nos facilite mas datos...  ^-^

Salu2
Título: Re: ChaMAC 0.5 : Cambia todas tus MAC
Publicado por: vk496 en 20-09-2013, 17:17 (Viernes)
Bueno chicos, vengo para deciros que ya he solucionado el dichoso problema con los cambios de MAC (10 pruebas continuas sobre etho wlan0 y mon0, y las 10 cambiaron la MAC a todas)  >:(


Otra de las novedades va a ser la detección de wicd (especialmente para los que lo usan fuera de WifiSlax)

Una cosa mas que pensé añadir fue obligar al usuario a tener el script siempre en /usr/bin/ con el nombre chamac, sino, el programa no continuara (mas que nada por la función del autostart, cosa a la que me dedicare plenamente para la 0.7  ;D )

La ultima cosa que me falta por añadir es el modo DEBUG. me gustaría modificar todos los &>/dev/null por una variable ($output por ejemplo), y que si DEBUG es 1, que la variable guardase en un archivo todas las salidas con la máxima info posible (por ahora quiero limitarme a que cada línea tuviese el comando "date" para la hora exacta en primer lugar, y después las salida), y si estuviese en 0, pues un &>/dev/null


Me ha funcionado perfectamente si lo pongo manual, pero no con el uso de variables y todo eso... Espero conseguirlo pronto  :D

Salu2

me vas a matar, pero ya he implementado todo eso en privado.
he forkeado tu script salvajemente y no he tenido tiempo de enseñartelo.

lo mejor que puedes hacer es mirarlo tu mismo, tomas ideas (tengo muchos comentarios) y las implementas a tu aire en proximas versiones, descartando mis modificaciones (seria dificil resincronizarnos, ya que hemos empezado a picar codigo por separado sin el control de un repositorio)

si te das de alta en github.com y aprendes a usar git, podré ayudarte mucho mas.

te paso mi version del script en privado para que curiosees

Acabo de crearme una cuenta en github, pero lo de aprender a usarlo va a ser algo mas complicado.... jajajjaja ;D

De todas formas, ya tengo subido el proyecto allí
Título: Re: ChaMAC 0.6 : Cambia todas tus MAC
Publicado por: alist3r en 20-09-2013, 17:41 (Viernes)
tranquilo, yo te voy acompañando. mirate la ayuda sobre cómo crear tu primer repo. con un inglés básico, no deberias tener problemas. luego todo lo puedes ir gestionando desde la interfaz web.

dame tu dirección, que te agregamos
Título: Re: ChaMAC 0.6 : Cambia todas tus MAC
Publicado por: vk496 en 20-09-2013, 20:35 (Viernes)
tranquilo, yo te voy acompañando. mirate la ayuda sobre cómo crear tu primer repo. con un inglés básico, no deberias tener problemas. luego todo lo puedes ir gestionando desde la interfaz web.

dame tu dirección, que te agregamos

https://github.com/vk496
Título: Re: ChaMAC 0.6 : Cambia todas tus MAC
Publicado por: ferlan en 20-09-2013, 23:24 (Viernes)

justo antes de esta linea
Código: [Seleccionar]
for INTERFACE in ${interfaces[@]}; do
colocad estas lineas:
Código: [Seleccionar]
echo "DEBUG: Contenido de interfaces:"
echo "${interfaces[@]}" # mostrar en pantalla el contenido del array.
read foo #fuerza pausa hasta pulsar enter

y pegad por aqui la salida de ese trozo de código

Pegado queda:

DEBUG: Contenido de interfaces:
eth0 wlan0 wlan1

Edito para aclarar que esto es así pasando el script con la opción   chamac -s

Título: Re: ChaMAC 0.6 : Cambia todas tus MAC
Publicado por: alist3r en 20-09-2013, 23:46 (Viernes)

justo antes de esta linea
Código: [Seleccionar]
for INTERFACE in ${interfaces[@]}; do
colocad estas lineas:
Código: [Seleccionar]
echo "DEBUG: Contenido de interfaces:"
echo "${interfaces[@]}" # mostrar en pantalla el contenido del array.
read foo #fuerza pausa hasta pulsar enter

y pegad por aqui la salida de ese trozo de código

Pegado queda:

DEBUG: Contenido de interfaces:
eth0 wlan0 wlan1

Edito para aclarar que esto es así pasando el script con la opción   chamac -s


pues ya sabemos lo que va mal.

vk496, piensa si realmente esto es necesario. si puede suceder que entre en el primer bucle pero falle el segundo:
Código: [Seleccionar]
for INTERFACE in ${interfaces[@]}; do
for N in $(ls /run/udev/data|grep "^n[0-9]$"); do
Título: Re: ChaMAC 0.6 : Cambia todas tus MAC
Publicado por: vk496 en 21-09-2013, 00:50 (Sábado)

justo antes de esta linea
Código: [Seleccionar]
for INTERFACE in ${interfaces[@]}; do
colocad estas lineas:
Código: [Seleccionar]
echo "DEBUG: Contenido de interfaces:"
echo "${interfaces[@]}" # mostrar en pantalla el contenido del array.
read foo #fuerza pausa hasta pulsar enter

y pegad por aqui la salida de ese trozo de código

Pegado queda:

DEBUG: Contenido de interfaces:
eth0 wlan0 wlan1

Edito para aclarar que esto es así pasando el script con la opción   chamac -s


pues ya sabemos lo que va mal.

vk496, piensa si realmente esto es necesario. si puede suceder que entre en el primer bucle pero falle el segundo:
Código: [Seleccionar]
for INTERFACE in ${interfaces[@]}; do
for N in $(ls /run/udev/data|grep "^n[0-9]$"); do

Ya que tenemos ethtool, he eliminado lo de las N para la v0.7.... no supondrá ninguna perdida.

A parte, he perfeccionado el --autostart... te dejo el codigo para no tirarme 20 lineas explicando lo que hace:

Código: [Seleccionar]
if [ $autoboot = 1 ]; then
rm -f /etc/xdg/autostart/autochamac.desktop
if [ -f /etc/sudoers ]; then
echo -e "Exist \e[0;31mSUDO\e[0m System---> \e[1;32mYes\e[0m"
sed -i '/\/usr\/bin\/chamac/d' /etc/sudoers
else
echo -e "Exist \e[0;31mSUDO\e[0m System---> \e[1;31mNo\e[0m"
fi
elif [ $autoboot = 0 ]; then
echo "[Desktop Entry]
Exec=/usr/bin/chamac
StartupNotify=true
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true"> /etc/xdg/autostart/autochamac.desktop
if [ -f /etc/sudoers ]; then
echo -e "Exist \e[0;31mSUDO\e[0m System---> \e[1;32mYes\e[0m"
echo "$(logname) ALL=(root) NOPASSWD: /usr/bin/chamac" >>/etc/sudoers
perl -pi -e 's/\/usr\/bin\/chamac/sudo \/usr\/bin\/chamac/g' /etc/xdg/autostart/autochamac.desktop
else
echo -e "Exist \e[0;31mSUDO\e[0m System---> \e[1;31mNo\e[0m"
fi
fi

El unico problema que tengo es no saber como identiificar a un sistema que usa el SUDO y el que no lo usa.... Con lo que puse en el if es suficiente? O hay mas gato encerrado que eso.. ?

Salu2
Título: Re: ChaMAC 0.6 : Cambia todas tus MAC
Publicado por: alist3r en 21-09-2013, 11:46 (Sábado)
Citar
Ya que tenemos ethtool, he eliminado lo de las N para la v0.7.... no supondrá ninguna perdida.
--> excelente decision, veo que las pillas todas al vuelo! jejejej

esta situación es común en desarrollo de software: cuando has introducido una función nueva, otra función vieja ha perdido su razón de ser y puedes retirarla (de hecho debes porque da problemas)

tu manera de detectar si se utiliza SUDO me parece suficiente.

de regalo, una pequeña optimación de código:

Código: [Seleccionar]
# justo debajo de: "X-GNOME-Autostart-enabled=true..."
echo -ne "Does \e[0;31mSUDO\e[0m system exist? ---> "
# escribe de antemano todo lo que sea constante. sin condiciones. sin duplicarlo
# utiliza el parámetro -n para no saltar de linea
# (luego quieres escribir mas cosas en la misma linea)
# y ahora te preocupas solo del SI o del NO, basado en la evaluación

if [ -f /etc/sudoers ]; then
  echo -e "\e[1;32mYes\e[0m"
  echo "$(logname) ALL=(root) NOPASSWD: /usr/bin/chamac" >>/etc/sudoers
  perl -pi -e 's/\/usr\/bin\/chamac/sudo \/usr\/bin\/chamac/g' /etc/xdg/autostart/autochamac.desktop
else
  echo "\e[1;31mNo\e[0m"
fi # el fi de este fragmento de codigo
fi # el fi del bucle superior "if autoboot = 1" que no se ve en este fragmento de codigo
Título: Re: ChaMAC 0.6 : Cambia todas tus MAC
Publicado por: vk496 en 21-09-2013, 16:11 (Sábado)
Creo que ya tengo la v0.7  ;D ;D ;D

Citar
########## 21-09-2013 Chamac 0.7
##
## Eliminadas rutas de /run/udev/data/nX para extraer la MAC Original
## Mejorada función --autostart para sistemas con SUDO
## Añadida opcion para MAC personalizada
## Optimizados mensajes informativos
##
##########

La saco o le hago mas cosas  ^-^ >:D

Salu2
Título: Re: ChaMAC 0.6 : Cambia todas tus MAC
Publicado por: alist3r en 21-09-2013, 16:29 (Sábado)
sácalaaaaaaaa yaaa osssstiaaaaaaaa xD
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: vk496 en 21-09-2013, 19:14 (Sábado)
quería implementar una función para que despues de cambiar las MAC en modo Custom, comprobase si realmente ha cambiado ( hay MACs que no se pueden usar), y si no lo ha hecho, pues que pusiese una por defecto (00:11:22:33:44:55 por ejemplo)... Era una idea de ultima hora que quería meter, pero me salía todo mal, así que la mandé a la *****... A ver si para la v0.8 me sale  ;D ;D ;D ;D

Por cierto, debería frenarme un poco con lo de sacar versiones nuevas a lo loco?¿?¿? jajajajaja  ^-^

Salu2
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: alist3r en 21-09-2013, 19:16 (Sábado)
hay macs que no se pueden usar, ciertamente.
pero el que lie a usar macs custom... ya debe ser suficientemente inteligente para asumir ese riesgo, digo yo, no?
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: Chumpy en 21-09-2013, 19:58 (Sábado)
Mientras sean versiones beta puedes sacar todas las que quieras, cuanto antes arregles los errores mejor. Una vez que tengas todo funcionando ya las sacarás más expaciadas, todavía no has sacado ni siquiera la 1.0 (que supongo que será cuando el script sea plenamente funcional y no presente errores). La 2.0 será cuando añadas mejoras a la 1.0, con sus correspondientes pruebas y te decidas a sacar una nueva versión definitiva.

Desde mi punto de vista

0.x Todavía no funciona
1.0 Funciona!
1.x Pensabamos que funcionaba, pero aún había que arreglar alguna cosilla
2.0 Funciona, pero ahora de verdad, no solo eso, si no que es aún mejor!
2.x Bueno, que pasa, siempre hay cosas que se pueden mejorar
X.0 Esta si que vale, y trae un montón de cosas nuevas
X.X Pero nadie es perfecto, siempre hay que arreglar cosillas y probar nuevas funciones.

Si es una cosa más seria hay mucha gente que en lugar de eso pone una b detrás cuando es beta, es decir, se están probando cosas que no se sabe si van a funionar y luego se la quita cuando todo lo que hay implementado funciona, también sería una opción.

Con las distros de la casa, por ejemplo se le pone la fecha a las que son meras pruebas, betaX cuando no se sabe si las cosas van a funcionar y rcX (relase candidate) cuando se piensa que todo funciona bien, y como corregir los problemas después es un follón pues se dice "si nadie reporta errores será la versión definitiva". Para que te hagas una idea con respecto a lo que son cambios mayores y menores aquí en casa el primer número 4.X se cambió la última vez con la versión de KDE (4), que fue una renovación completa de toda la paquetería, pasamos tambien de Slacware 13 a 14 y X.7 subversiones que manteniendo la misma interfaz cambian el relleno, solo aplicaciones, parches y actualizaciones del kernel.
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: alist3r en 21-09-2013, 20:31 (Sábado)
la explicación del sistema de versionado gnu de chumpy es brutal xD
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 21-09-2013, 22:00 (Sábado)
se preocupa de versiones..pues yo que sueleo subir isos ( varias por semana ) , cuandoe stoy fuerte.  ;D
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: Chumpy en 21-09-2013, 22:40 (Sábado)
Me alegro de que te guste Alister!

se preocupa de versiones..pues yo que sueleo subir isos ( varias por semana ) , cuandoe stoy fuerte.  ;D

Bueno, tu está claro que dentro de poco a las de prueba en lugar de ponerles la fecha solo le vas a tener que poner también la hora y el minuto, como a las fotos de los móviles, para que tengan nombres diferentes.
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: SpanishGroove en 21-09-2013, 23:22 (Sábado)
Ahahahaha, madre mia. Solo faltaría que incluyeses un documento con los metadatos. Seguro así no nos confundiríamos. XD
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: ferlan en 22-09-2013, 02:14 (Domingo)
Creo que ya tengo la v0.7  ;D ;D ;D

Citar
########## 21-09-2013 Chamac 0.7
##
## Eliminadas rutas de /run/udev/data/nX para extraer la MAC Original
## Mejorada función --autostart para sistemas con SUDO
## Añadida opcion para MAC personalizada
## Optimizados mensajes informativos
##
##########

La saco o le hago mas cosas  ^-^ >:D


Privileges root--->     OK!
Chamac installdir--->   OK!
Autoboot Status--->     Off
Chamac Mode------->     Custom

Network inteface/s:     3

eth0 wlan1 wlan0


================================\
   INTERFACE: eth0                                            \
MAC ORIGINAL: xx:xx:54:fe:xx:xx                       #
  MAC ACTUAL: xx:fa:ba:da:ca:be                        /
================================/
================================\
   INTERFACE: wlan1                                           \
MAC ORIGINAL: xx:xx:a1:05:xx:xx                       #
  MAC ACTUAL: xx:fa:ba:da:ca:be                        /
================================/
================================\
   INTERFACE: wlan0                                           \
MAC ORIGINAL: xx:xx:ca:1b:xx:xx                       #
  MAC ACTUAL: xx:fa:ba:da:ca:be                        /
================================/

Pruebas en Wifislax-4.6 Live-USB   ¡OK!    >:(   >:(   >:(
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: vk496 en 22-09-2013, 14:10 (Domingo)
Creo que ya tengo la v0.7  ;D ;D ;D

Citar
########## 21-09-2013 Chamac 0.7
##
## Eliminadas rutas de /run/udev/data/nX para extraer la MAC Original
## Mejorada función --autostart para sistemas con SUDO
## Añadida opcion para MAC personalizada
## Optimizados mensajes informativos
##
##########

La saco o le hago mas cosas  ^-^ >:D


Privileges root--->     OK!
Chamac installdir--->   OK!
Autoboot Status--->     Off
Chamac Mode------->     Custom

Network inteface/s:     3

eth0 wlan1 wlan0


================================\
   INTERFACE: eth0                                            \
MAC ORIGINAL: xx:xx:54:fe:xx:xx                       #
  MAC ACTUAL: xx:fa:ba:da:ca:be                        /
================================/
================================\
   INTERFACE: wlan1                                           \
MAC ORIGINAL: xx:xx:a1:05:xx:xx                       #
  MAC ACTUAL: xx:fa:ba:da:ca:be                        /
================================/
================================\
   INTERFACE: wlan0                                           \
MAC ORIGINAL: xx:xx:ca:1b:xx:xx                       #
  MAC ACTUAL: xx:fa:ba:da:ca:be                        /
================================/

Pruebas en Wifislax-4.6 Live-USB   ¡OK!    >:(   >:(   >:(

Muchas gracias por el output!  ;)

Comento que para la 0.8 añadiré (realmente ya eta hecho  ^-^ ) una opción -u, --update para bajar/actualizar una base de datos OUI, y usarla alado de cada MAC que se vaya a mostrar, para saber a que Vendor pertenece...

Alguna idea para aportar en base a eso?  ;D ;D ;D

Salu2

Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 22-09-2013, 14:31 (Domingo)
en

/etc

suele estar el oui de aircrack ..que seguro esta mas actualizado que ninguno.
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: vk496 en 22-09-2013, 16:21 (Domingo)
en

/etc

suele estar el oui de aircrack ..que seguro esta mas actualizado que ninguno.

Mas que standards.ieee.org/develop/regauth/oui/oui.txt??  ;D ;D

Salu2
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: Chumpy en 22-09-2013, 16:43 (Domingo)
Piensa que necesitas conexión a internet para que funcione.
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: alist3r en 22-09-2013, 21:12 (Domingo)
Mas que standards.ieee.org/develop/regauth/oui/oui.txt??  ;D ;D

ostras! nos ha salido listillo el chaval eh! jajajaja

quitando el codigo alusivo a udev, problema de no-entrada en el bucle de interfaces resuelto.

perfecto. excelente trabajo vk496! aprendes rapido! :)
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: vk496 en 22-09-2013, 21:22 (Domingo)
Mientras sean versiones beta puedes sacar todas las que quieras, cuanto antes arregles los errores mejor. Una vez que tengas todo funcionando ya las sacarás más expaciadas, todavía no has sacado ni siquiera la 1.0 (que supongo que será cuando el script sea plenamente funcional y no presente errores). La 2.0 será cuando añadas mejoras a la 1.0, con sus correspondientes pruebas y te decidas a sacar una nueva versión definitiva.

Desde mi punto de vista

0.x Todavía no funciona
1.0 Funciona!
1.x Pensabamos que funcionaba, pero aún había que arreglar alguna cosilla
2.0 Funciona, pero ahora de verdad, no solo eso, si no que es aún mejor!
2.x Bueno, que pasa, siempre hay cosas que se pueden mejorar
X.0 Esta si que vale, y trae un montón de cosas nuevas
X.X Pero nadie es perfecto, siempre hay que arreglar cosillas y probar nuevas funciones.

Si es una cosa más seria hay mucha gente que en lugar de eso pone una b detrás cuando es beta, es decir, se están probando cosas que no se sabe si van a funionar y luego se la quita cuando todo lo que hay implementado funciona, también sería una opción.

Con las distros de la casa, por ejemplo se le pone la fecha a las que son meras pruebas, betaX cuando no se sabe si las cosas van a funcionar y rcX (relase candidate) cuando se piensa que todo funciona bien, y como corregir los problemas después es un follón pues se dice "si nadie reporta errores será la versión definitiva". Para que te hagas una idea con respecto a lo que son cambios mayores y menores aquí en casa el primer número 4.X se cambió la última vez con la versión de KDE (4), que fue una renovación completa de toda la paquetería, pasamos tambien de Slacware 13 a 14 y X.7 subversiones que manteniendo la misma interfaz cambian el relleno, solo aplicaciones, parches y actualizaciones del kernel.

Muchas gracias por tu descripción, no sabia que el 0.X significaba eso  ;D

Supongo que estaré tonteando hasta la 0.9-X, y si lo veo bien, saco la 1.0 (unque la verdad es que me gusta mas la 0.9-X, refleja el trabajo que se hizo para llegar hasta allí jajajajaja  >:D)

Una vez mas, gracias

Salu2
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: vk496 en 22-09-2013, 21:30 (Domingo)
Piensa que necesitas conexión a internet para que funcione.

Hmm... Tienes razón.... Y aunque aircrack tenga OUI, no todos los PC tienen aircrack...  :-\

Si el script no detecta el OUI en la ruta /usr/share/chamac/oui.txt, mostrara los espacios con un "N/A"

Estaba pensando en añadir el OUI al propio script para luego extraerlo de allí a esa ruta, aunque no me convence mucho... tendría un tamaño muy grande...

Quizás usar rutas alternativas si no encuentra el OUI de chamac ???
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: alist3r en 22-09-2013, 21:59 (Domingo)
no por favor!
ya resulta bastante problematica que todas las apps se quieran llevar los oui a su terreno.
oui es una base de datos de uso general para todos.

un lugar para consultarla, una herramienta para gestionarla. eso seria lo ideal y optimizado.
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: vk496 en 22-09-2013, 22:26 (Domingo)
no por favor!
ya resulta bastante problematica que todas las apps se quieran llevar los oui a su terreno.
oui es una base de datos de uso general para todos.

un lugar para consultarla, una herramienta para gestionarla. eso seria lo ideal y optimizado.

Ya, pero hasta donde yo se, no hay ningún lugar genérico donde puedas acceder a ella, siempre tienes que ir basandote en otros (aircrack, nmap...)... (nose como son los de los demás, pero la OUI de nmap tenía 16000 entradas (la ultima tiene 18000)

Creo que tener una OUI en /usr/share/chamac y añadir alternativas si esa ruta esta vacía (hasta que usen -u, --update) es la mejor opción... no?

Salu2
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 22-09-2013, 22:40 (Domingo)
Puedes hacerlo mejor aun..

una variable if , que busque en los sitios habituales donde suelen haber "oui"

si los hay..el primero que encuentre , que lo linkee dentro de  /usr/share/chamac


y punto , y si el sistema no tiene ningún oui , pues no hay mas.

antes tambiend eberas crear el directorio de destino del simbolico...


Código: [Seleccionar]
mkdir -p /usr/share/chamac
y luego si por ejemplo buscas el oiu de aircrack, que no recuerdo exactamente pero se que en

/etc


suele rondar ...

pues  ...

Código: [Seleccionar]
ln -s /etc/OUI.txt /usr/share/chamac/OUI.txt


o el plan b ...

una variable que antes de nada haga un ping a google ... y si hay respuesta pues ya sabes que hay internet...para tu primer caso.

si no hay internet linkeas.
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: alist3r en 22-09-2013, 22:50 (Domingo)
personalmente no linkaria, sino que buscaría en sitios predefinidos en cada ejecución

/usr/share/arp-scan/ieee-oui.txt
/etc/arpalert/oui.txt
/usr/share/btscanner/oui.txt
/usr/share/ntop/oui.txt
/usr/share/ocsinventory-reports/files/oui.txt
/usr/lib/python2.6/dist-packages/netaddr/eui/oui.txt
/usr/lib/python2.7/dist-packages/netaddr/eui/oui.txt
/usr/share/pyshared/netaddr/eui/oui.txt
/usr/lib/python3/dist-packages/netaddr/eui/oui.txt

son algunos ejemplos. no todos son importantes pero otros como el modulo netaddr de python, pues se puede realmente contar con ellos
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 22-09-2013, 22:52 (Domingo)
alguien que use un script de cambiar macs , es que usa mas apps del tipo , yo apostaría mas por el oui de aircrack-ng .. en /etc
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: alist3r en 22-09-2013, 22:58 (Domingo)
alguien que use un script de cambiar macs , es que usa mas apps del tipo , yo apostaría mas por el oui de aircrack-ng .. en /etc

...que es justamente el que no encuentro para poner en la lista de ejemplos xD


EDIT:
ahhh, ya lo tengo...

Citar
$ cat `which airodump-ng-oui-update`
#!/bin/sh

CURL=`which curl 2>/dev/null`
WGET=`which wget 2>/dev/null`
OUI_DOWNLOAD_URL="http://standards.ieee.org/develop/regauth/oui/oui.txt"

OUI_PATH0="/etc/aircrack-ng"
OUI_PATH1="/usr/local/etc/aircrack-ng"
OUI_PATH2="/usr/share/aircrack-ng"
if [ -d "$OUI_PATH0" ]; then
   OUI_PATH="$OUI_PATH0"
elif [ -d "$OUI_PATH1" ]; then
   OUI_PATH="$OUI_PATH1"
elif [ -d "$OUI_PATH2" ]; then
   OUI_PATH="$OUI_PATH2"
else
   # default
   OUI_PATH="$OUI_PATH0"
fi

AIRODUMP_NG_OUI="${OUI_PATH}/airodump-ng-oui.txt"
OUI_IEEE="${OUI_PATH}/oui.txt"
USERID=""


# Make sure the user is root
if [ x"`which id 2> /dev/null`" != "x" ]
then
   USERID="`id -u 2> /dev/null`"
fi

if [ x$USERID = "x" -a x$UID != "x" ]
then
   USERID=$UID
fi

if [ x$USERID != "x" -a x$USERID != "x0" ]
then
   echo Run it as root ; exit ;
fi


if [ ! -d "${OUI_PATH}" ]; then
   mkdir -p ${OUI_PATH}
fi

if [ ${CURL} ] || [ ${WGET} ]; then
   # Delete previous partially downloaded file (if the script was aborted)
   rm -f ${OUI_IEEE} >/dev/null 2>/dev/null

   # Download it
   echo "
  • Downloading IEEE OUI file..."


   if [ ${WGET} ]; then
      ${WGET} ${OUI_DOWNLOAD_URL} -O ${OUI_IEEE} >/dev/null 2>/dev/null
   else
      ${CURL} -L ${OUI_DOWNLOAD_URL} > ${OUI_IEEE} 2>/dev/null
   fi

   if [ "${?}" -ne 0 ]; then
      echo "
  • Error: Failed to download OUI list, aborting..."

      exit 1
   fi

   # Parse the downloaded OUI list
   echo "
  • Parsing OUI file..."


   # Keep the previous file
   if [ -f "${OUI_DOWNLOADED}" ]; then
      mv ${AIRODUMP_NG_OUI} ${OUI}-old
   fi

   # Parse it
   grep "(hex)" ${OUI_IEEE} | sed 's/^[ \t]*//g;s/[ \t]*$//g' > ${AIRODUMP_NG_OUI}
   if [ "${?}" -ne 0 ]; then
      echo "
  • Error: Failed to parse OUI, aborting..."

      exit 1
   fi

   # Cleanup
   rm -f ${OUI_IEEE}

   echo "
  • Airodump-ng OUI file successfully updated"

else
   if [ -f "${OUI}" ]; then
      echo "
  • Please install curl or wget to update OUI list"

   else
      echo "
  • Please install curl or wget to install OUI list"

   fi
   exit 1
fi

exit 0



por tanto:

/etc/aircrack-ng/airodump-ng-oui.txt
/usr/local/etc/aircrack-ng/airodump-ng-oui.txt
/usr/share/aircrack-ng/airodump-ng-oui.txt

respecto a la heterogeneidad de los oui databases usadas por diferentes softwares, interesante leer esto:
http://hackerific.net/2010/04/04/oui/

la base de datos mas completa sigue siendo la de Wireshark, cómo no:
http://anonsvn.wireshark.org/wireshark/trunk/manuf

PD: algunos fabricantes están identificados por 16/32/36/40 bits:
00:1B:C5:00:00:00/36
09-00-2B-03-00-00/32
20-52-45-43-56-00/40
33-33-00-00-00-00/16
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: vk496 en 23-09-2013, 17:55 (Lunes)
alguien que use un script de cambiar macs , es que usa mas apps del tipo , yo apostaría mas por el oui de aircrack-ng .. en /etc

...que es justamente el que no encuentro para poner en la lista de ejemplos xD


EDIT:
ahhh, ya lo tengo...

Citar
$ cat `which airodump-ng-oui-update`
#!/bin/sh

CURL=`which curl 2>/dev/null`
WGET=`which wget 2>/dev/null`
OUI_DOWNLOAD_URL="http://standards.ieee.org/develop/regauth/oui/oui.txt"

OUI_PATH0="/etc/aircrack-ng"
OUI_PATH1="/usr/local/etc/aircrack-ng"
OUI_PATH2="/usr/share/aircrack-ng"
if [ -d "$OUI_PATH0" ]; then
   OUI_PATH="$OUI_PATH0"
elif [ -d "$OUI_PATH1" ]; then
   OUI_PATH="$OUI_PATH1"
elif [ -d "$OUI_PATH2" ]; then
   OUI_PATH="$OUI_PATH2"
else
   # default
   OUI_PATH="$OUI_PATH0"
fi

AIRODUMP_NG_OUI="${OUI_PATH}/airodump-ng-oui.txt"
OUI_IEEE="${OUI_PATH}/oui.txt"
USERID=""


# Make sure the user is root
if [ x"`which id 2> /dev/null`" != "x" ]
then
   USERID="`id -u 2> /dev/null`"
fi

if [ x$USERID = "x" -a x$UID != "x" ]
then
   USERID=$UID
fi

if [ x$USERID != "x" -a x$USERID != "x0" ]
then
   echo Run it as root ; exit ;
fi


if [ ! -d "${OUI_PATH}" ]; then
   mkdir -p ${OUI_PATH}
fi

if [ ${CURL} ] || [ ${WGET} ]; then
   # Delete previous partially downloaded file (if the script was aborted)
   rm -f ${OUI_IEEE} >/dev/null 2>/dev/null

   # Download it
   echo "
  • Downloading IEEE OUI file..."


   if [ ${WGET} ]; then
      ${WGET} ${OUI_DOWNLOAD_URL} -O ${OUI_IEEE} >/dev/null 2>/dev/null
   else
      ${CURL} -L ${OUI_DOWNLOAD_URL} > ${OUI_IEEE} 2>/dev/null
   fi

   if [ "${?}" -ne 0 ]; then
      echo "
  • Error: Failed to download OUI list, aborting..."

      exit 1
   fi

   # Parse the downloaded OUI list
   echo "
  • Parsing OUI file..."


   # Keep the previous file
   if [ -f "${OUI_DOWNLOADED}" ]; then
      mv ${AIRODUMP_NG_OUI} ${OUI}-old
   fi

   # Parse it
   grep "(hex)" ${OUI_IEEE} | sed 's/^[ \t]*//g;s/[ \t]*$//g' > ${AIRODUMP_NG_OUI}
   if [ "${?}" -ne 0 ]; then
      echo "
  • Error: Failed to parse OUI, aborting..."

      exit 1
   fi

   # Cleanup
   rm -f ${OUI_IEEE}

   echo "
  • Airodump-ng OUI file successfully updated"

else
   if [ -f "${OUI}" ]; then
      echo "
  • Please install curl or wget to update OUI list"

   else
      echo "
  • Please install curl or wget to install OUI list"

   fi
   exit 1
fi

exit 0



por tanto:

/etc/aircrack-ng/airodump-ng-oui.txt
/usr/local/etc/aircrack-ng/airodump-ng-oui.txt
/usr/share/aircrack-ng/airodump-ng-oui.txt

respecto a la heterogeneidad de los oui databases usadas por diferentes softwares, interesante leer esto:
http://hackerific.net/2010/04/04/oui/

la base de datos mas completa sigue siendo la de Wireshark, cómo no:
http://anonsvn.wireshark.org/wireshark/trunk/manuf

PD: algunos fabricantes están identificados por 16/32/36/40 bits:
00:1B:C5:00:00:00/36
09-00-2B-03-00-00/32
20-52-45-43-56-00/40
33-33-00-00-00-00/16


La verdad es que me atrae mas la lista de Wireshark... es una base de datos muuy completa (con 23000 MAC, mas que de ieee.org  ;D)

El problema esta en que no sé como procesar una MAC entera y buscar alguna coincidencia en la lista, pues en la de ieee solo estaban los primeros 24 bits, por tanto, solo tenía que recortar los primeros 24bits de la MAC original y compararla con la lista (en el caso de IEEE.org usaba esto):

Código: [Seleccionar]
cat /usr/share/chamac/oui.txt | grep "(hex)" -n | tr -d '(hex)' | awk '{ gsub("-", ":", $2) ; print }' | grep -i $(echo $MAC_ORIGINAL | cut -d ":" -f 1-3) | cut -d " " -f 3-22
Bastante sencillo, sin embargo, con esta lista sé como "preparar el texto" para poder usarlo, pero no sé como puedo indicar una MAC entera (sin recortarla), y que me busque si hay alguna que coincida (tanto si es en 24 bits como si fuese en mas)....

Hasta ahora, el codigo que tengo para obtener una lista de whireshark que pueda ser interpretada fácilmente es este:

Código: [Seleccionar]
cat manuf | grep -v ^"#" |awk '{gsub(/[ ]+/," ")}1' | sed 's/\t/ /g' | awk '{ gsub("-", ":", $1) ; print }'
No se si me he explicado bien...


Resumiendo:

Si tengo un Cisco que tienen las MAC F0:29:29, como consigo que me lo muestro si introduzco la MAC completa (F0:29:29:c6:a4:22 por ejemplo) ?  ???

Salu2
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: alist3r en 23-09-2013, 18:20 (Lunes)
El problema esta en que no sé como procesar una MAC entera y buscar alguna coincidencia en la lista, pues en la de ieee solo estaban los primeros 24 bits, por tanto, solo tenía que recortar los primeros 24bits de la MAC original y compararla con la lista (en el caso de IEEE.org usaba esto):
el parsing es mas complejo pero no es tan dificil si sabes usar el "anchor" de inicio de linea de grep
Citar
Bastante sencillo, sin embargo, con esta lista sé como "preparar el texto" para poder usarlo,
pues eso, que no te consigues figurarte la forma de parsearlo. pero si te exprimes las neuronas los sacas.

lo prmero es normalizar los separadores. personalmente optaria por eliminar todas las ocurrencias de ":" y de "-", que ambas son toleradas en el fichero de wireshark.

con eso, te quedas simplemente con los datos relevantes.

luego, usando grep, separaria temporalmente el fichero padre en varios ficheros:

- un fichero de macs con especificacion de 16 bits, buscados por la expresion "/16". tomas los 4 primeros caracteres de cada linea, y ya lo tienes.
- un fichero de macs con especificacion de 32 bits, buscados por la expresion "/32". tomas los 8 primeros caracteres de cada linea, y ya lo tienes.
- un fichero de macs con especificacion de 36 bits, buscados por la expresion "/36". tomas los 9 primeros caracteres de cada linea, y ya lo tienes.
- un fichero de macs con especificacion de 40 bits, buscados por la expresion "/40". tomas los 10 primeros caracteres de cada linea, y ya lo tienes.
- por ultimo, un fichero de macs sin especificacion de mascara. es decir, unos 24 bits relevantes de toda la vida, las tres primeras parejas de las macs: 123456xxxxxx. este tendria mas truco, tendrias que hacer una búsqueda negativa del caracter "/", es decir, las lineas que no tienen la barra, porque no estan especificando máscaras diferentes a la clásica de 24 bits. cuando ya tienes esas lineas, puedes tomar los primeros seis caracteres como valor, y ya lo tienes.

ahora que tienes estas 5 sublistas, las concatenas, empezando por la que mayor máscara tiene (las de 40), para que la busqueda mas exacta sea la primera en salir (algunos registros son hijos de otros, por eso te digo que tienes que buscar de mas especifico a mas general. tienes un caso muy claro de lo que te digo en el registro llamado
"00:1B:C5   IeeeRegi # IEEE Registration Authority"
donde los siguientes registros son claramente "subtipos" que comparten los seis primeros caracteres, pero que mejoran la clasificacion añadiendo más caracteres.

lo que te resultará mas complicado es tomar el nombre de fabricante detŕas de la almohadilla #, y en caso de que no exista (algunas lineas no tienen), tomar el nombre corto de wireshark. para ese tipo de trabajo de procesamiento inteligente de texto, necesitas algo mas de conocimiento de sed y de awk, los procesadores de flujos texto de gnu por excelencia. tambien podrias usar un pequeño apoyo en perl, que tiene funciones muy buenas para estos casos

si procesas el archivo de esa manera, ya casi lo tienes.
EDIT:
supon que ya tienes el fichero de macs parseado tal que asi:

0001020304    fabricante0
12345678       fabricante1_familia1
12345690       fabricante1_familia2
123456          fabricante1_general
789012          fabricante2

sabemos que las macs tienen 40,36,32,24,16 bits relevantes.

para buscar la mac "00:01:02:03:04:05", solo tienes que:
tomar los 40 primeros bits (10 digitos) y buscar en la lista con egrep:
^0001020304

(donde ^ es el anchor de inicio de linea, para evitar coincidencias falsas en cosas que no son el inicio exacto de la mac)

si no encuentras coincidencias, buscas coincidencias por 36 bits (que son 9 caracteres), o sea, quitas un caracter mas y sigues buscando:
^000102030
 
asi hasta que encuentres una coincidencia en las listas.

dificil, verdad? :)

con bash, si lo es, un poco. muchas operaciones intermedias y archivos temporales necesarios.
si te parece muy rallante, lo mejor que puedes hacer es tomar la lista de xx:xx:xx, procesarla manualmente, incorporporarla junto al script y listo. los registros de longitudes diferentes a XX:XX:XX son pocos y puedes descartarlos sin que suponga un grave penalty


Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: vk496 en 23-09-2013, 20:45 (Lunes)
Gracias por la info!

Ya tengo parseado el texto para que muestre TODAS las MAC sin ningun digito tipo ":", "-", "/xx" separadas solo con espacios.

Mi idea era poder comparar la MAC (también sin dígitos) con la lista, y si no hay coincidencia, que quite un dígito del final de la MAC, y lo vuelva a comparar hasta encontrar una coincidencia y salir del "bucle"... y si la MAC llega a 0 sin encontrar nada, entonces definir el vendor como "unknow" y salir del "bucle"... Serviría este método? me parece que es mas sencillo... no?

Lo que no se es como hacer "algo" que vaya quitando un carácter del final, nunca me he topado con algo así...  :-\

Salu2
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: alist3r en 23-09-2013, 20:49 (Lunes)
Gracias por la info!

Ya tengo parseado el texto para que muestre TODAS las MAC sin ningun digito tipo ":", "-", "/xx" separadas solo con espacios.

Mi idea era poder comparar la MAC (también sin dígitos) con la lista, y si no hay coincidencia, que quite un dígito del final de la MAC, y lo vuelva a comparar hasta encontrar una coincidencia y salir del "bucle"... y si la MAC llega a 0 sin encontrar nada, entonces definir el vendor como "unknow" y salir del "bucle"... Serviría este método? me parece que es mas sencillo... no?

Lo que no se es como hacer "algo" que vaya quitando un carácter del final, nunca me he topado con algo así...  :-\

Salu2

exacto. esa es la mitad facil que te he descrito en mi descripción funcional anterior.
la parte dificil, pues te la saltas y ya esta xD

en bash puedes usar ciertas expresiones para tomar solo las primeras letras de una cadena
http://tldp.org/LDP/abs/html/string-manipulation.html

fijate en ${string:position:length}
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: vk496 en 23-09-2013, 23:01 (Lunes)
Gracias por la info!

Ya tengo parseado el texto para que muestre TODAS las MAC sin ningun digito tipo ":", "-", "/xx" separadas solo con espacios.

Mi idea era poder comparar la MAC (también sin dígitos) con la lista, y si no hay coincidencia, que quite un dígito del final de la MAC, y lo vuelva a comparar hasta encontrar una coincidencia y salir del "bucle"... y si la MAC llega a 0 sin encontrar nada, entonces definir el vendor como "unknow" y salir del "bucle"... Serviría este método? me parece que es mas sencillo... no?

Lo que no se es como hacer "algo" que vaya quitando un carácter del final, nunca me he topado con algo así...  :-\

Salu2

exacto. esa es la mitad facil que te he descrito en mi descripción funcional anterior.
la parte dificil, pues te la saltas y ya esta xD

en bash puedes usar ciertas expresiones para tomar solo las primeras letras de una cadena
http://tldp.org/LDP/abs/html/string-manipulation.html

fijate en ${string:position:length}

Gracias por la info, me ha servdo, y mucho ;D

Hice un fragmento de codigo sobre el cual me basare para implementar todo lo comentado sobre las OUI hasta ahora (es un modelo de referencia):

Código: [Seleccionar]
#!/bin/bash

MAC_O="$(cat /sys/class/net/eth0/address|tr -d ':')"
MAClist=$(cat ~/manuf | grep -v ^"#" |awk '{gsub(/[ ]+/," ")}1' | sed 's/\t/ /g' | awk '{ gsub("-", "", $1); gsub(":", "", $1); gsub("/44", "", $1); gsub("/40", "", $1); gsub("/36", "", $1); gsub("/32", "", $1); gsub("/25", "", $1); gsub("/24", "", $1); gsub("/16", "", $1);  print }')
i=12

while [ $i -gt 5 ]; do
if echo "$MAClist"|grep -i ^${MAC_O:0:i}&>/dev/null; then
MACvendor=$(echo "$MAClist"|grep -i ^${MAC_O:0:i}|cut -d " " -f 4-22)
echo MAC encontrada!
echo -e "\e[1;35m$MACvendor\e[0m"
break
fi

if [ $i -eq 6 ]; then
echo unknown
fi

let i=i-1
done

Hace su función correctamente, pero no encuentro la manera de poder acelerarlo... Tal cual está, realiza la comprobación X veces hasta encontrar el vendor (lo cual sería muuuuuyy lento si tuviesemos varias tarjetas de red)... hay alguna forma de poder corregir eso?¿

Salu2
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: alist3r en 23-09-2013, 23:22 (Lunes)
excelente trabajo con maclist. has tenido mucha paciencoa con el encadenamiento. incluso a mi me ha costado entenderlo, y eso que me especializo en parsing xD

la manera mas sencilla de aligerar esto es precom****ndo todo lo que se pueda, y evitando la duplicidad.

guarda maclist en un fichero y úsalo siempre que esté. reconstrúyelo única y exclusivamente cuando no esté.

eso nos aligera la carga bastante.

ahora veamos qué se puede hacer para arañar tiempo de proceso en la búsqueda.

estas duplicando innecesariamente grep.
Código: [Seleccionar]
if echo "$MAClist"|grep -i ^${MAC_O:0:i}&>/dev/null; then
MACvendor=$(echo "$MAClist"|grep -i ^${MAC_O:0:i}|cut -d " " -f 4-22)

ejecútalo solo una vez, luego guarda su salida en una variable.
nmediatamente después, asigna el valor de la variable $? a otra variable temporal.
la variable $? guarda el exit code del último comando ejecutado.
si no quieres perder este valor de vista, tienes que guardarlo inmediatamente despues de consultarlo,
porque en la proxima ejecucíón de cualquier comando, se reemplaza de nuevo.

Código: [Seleccionar]
SEARCHING_RESULT=$(echo "$MAClist" | grep -i ^${MAC_O:0:i} )
SEARCHING_EXITCODE=$?

y ahora, si grep te devuelve algo diferente de cero, quiere decir que no ha encontrado nada.
en caso contrario (CERO), tomas la cadena SEARCHING_RESULT y la procesas, sin sobrecargar el sistema con llamadas a grep
Código: [Seleccionar]
if [[ "$SEARCHING_EXITCODE" == "0" ]]; do
  MACvendor=$(echo "$SEARCHING_RESULT" | cut -d " " -f 4-22)
  echo ¡MAC encontrada!
  echo -e "\e[1;35m${MACvendor}\e[0m"
  break
fi

PD: fíjate en esta linea:
echo -e "\e[1;35m${MACvendor}\e[0m"
he protegido la variable $MACvendor entre {llaves}, porque está tocando con otros caracteres que no son espacios.
en caso de no protegerse las variables cuando se tocan con otros textos, eso podria llevar a bash a confundirse y a tratar de imprimir el valor de variables que no existen, como por ejemplo:
$MACvendor\
$MACvendor\e
$MACvendor\e[
$MACvendor\e[0
$MACvendor\e[0m
ese efecto no deseado se evita protegiendo la variable con llaves.

PPD: aunque personalmente odio hacer esto y prefiero genrar un código más pesado pero más explicativo, tambien puedes tomar un poco de atajo y evaluar la variable $? directamente, sin pasar por variables temporales. eso si, logicamente, tienes que hacerlo INMEDIATAMENTE DESPUES de ejecutar grep, porque luego el contenido de la variable se va para no volver:

Código: [Seleccionar]
SEARCHING_RESULT=$(echo "$MAClist" | grep -i ^${MAC_O:0:i} )
# SEARCHING_EXITCODE=$? ## comprimiendo...
# if [[ "$SEARCHING_EXITCODE" == "0" ]]; do ## comprimiendo...
if [[ "$?" == "0" ]]; do ## las dos lineas anteriores se convierten en esta. per queda menos explicativo y a la larga se hace pesado.
  MACvendor=$(echo "$SEARCHING_RESULT" | cut -d " " -f 4-22)
  echo ¡MAC encontrada!
  echo -e "\e[1;35m${MACvendor}\e[0m"
  break
fi
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: geminis_demon en 24-09-2013, 01:56 (Martes)
Citar
PD: fíjate en esta linea:
echo -e "\e[1;35m${MACvendor}\e[0m"
he protegido la variable $MACvendor entre {llaves}, porque está tocando con otros caracteres que no son espacios.
en caso de no protegerse las variables cuando se tocan con otros textos, eso podria llevar a bash a confundirse y a tratar de imprimir el valor de variables que no existen, como por ejemplo:
$MACvendor\
$MACvendor\e
$MACvendor\e[
$MACvendor\e[0
$MACvendor\e[0m
ese efecto no deseado se evita protegiendo la variable con llaves.

Eso no lo sabía. me lo apunto  ;)

Aunque en ese caso en concreto en realidad no hay problema, porque el caracter que hay después de la variable es un caracter especial (\) y como las variables no pueden contener carácteres especiales, bash entiende que ahí termina la variable.

Pero si que me he encontrado con ese problema en algunas ocasiones, y como no sabía que podía protegerlo con las llaves, lo solucionaba así:
Código: [Seleccionar]
echo -e "\e[1;35m$(echo $MACvendor)\e[0m"
 >:D
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: alist3r en 24-09-2013, 02:12 (Martes)
para matarte a collejas, geminis xD
si, el caso del código de vk no genera problema, pero para no liarle más he tratado de no ser tan específico y transmitir la idea general, que es tener el buen hábito de proteger las variables.

no siempre es buena idea protegerlas con "comillas" porque eso se interpreta como un parametro suelto, y realmente algunas veces quieres juntar una variable con una constante, para que sean un solo parámetro.

por ejemplo, esta manera de proteger variables fallaria:

tar cjvf "$RUTA_VARIABLE"/archivo.tar.gz    otra/ruta/constante

porque muchas versiones de bash le pasaran a tar la idea de que "$RUTA_VARIABLE" es un parametro y que /archivo.tar.gz es otro parametro diferente.

esto me dió quebraderos de cabeza cuando aprendía bash.

solucion? lo que comentaba. protegeras entre llaves:

tar cjvf ${RUTA_VARIABLE}/archivo.tar.gz    otra/ruta/constante

y si tienes dudas que ${RUTA_VARIABLE} pueda llegar a contener espacios en algun momento ,pero quieres que sea toda la ruta tratada como un parametro, entonces si que pones las comillas, pero envolviendolo TODO, no solo la variable:

tar cjvf "${RUTA_VARIABLE}/archivo.tar.gz"    otra/ruta/constante

por eso vereis que en mi código añado de forma compulsiva las variables de esta "${manera}", siempre, para no tener problemas de escape o sobre-expansion de variables.
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: vk496 en 24-09-2013, 22:07 (Martes)
Gracias @alister por tus recomendaciones, he estado toqueteando e intentandoresucir el código...

He probado a usar lo que me dejaste, pero no he conseguido que el filtro sea rápido, me sigue funcionando igual que lo que puse yo al principio (posiblemente lo este haciendo mal)

Lo que si que me si cuenta, es que cuando coloco $SEARCHING_RESULT fuera del bucle, el análisis es instantáneo, pero por alguna razón, no llega a encontrar nunca la MAC, sin embargo, cuando la meto dentro, aunque funcione lento, la encuentre sin problemas...

Supongo que encontrare la forma de hacerme con el código correcto en algunos días (malditos exámenes, siempre jodiendo! :P )

Salu2
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: alist3r en 25-09-2013, 01:11 (Miércoles)
no, no creo que lo hagas mal, incluso aunque hayamos reducido, estamos lanzando un grep sobre una buena pedazo de base de datos.
vamos, que un camino de rosas no va a ser. bash tiene sus limitaciones.
$SEARCHING_RESULT fuera del bucle solo se ejecutaria una vez y fallaria siempre. piénsalo, intenta emularlo mentalmente, comando por comando.
cuando tengas una percepcion sensorial mas completa de las estructuras de control, verás esas cosas mas rapidamente.

no pases penas porque el script va lento, es un script en bash y tiene estas limitaciones.
si te sirve de consuelo, hace dos años programé una especie de escaner y evaluador de seguridad automático de cámaras IP, que tarda la reostia en cada ejecución debido a la enoooorme cantidad de procesos y calculos que desparrama.
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: vk496 en 25-09-2013, 22:25 (Miércoles)
Hoy, mientras mi profesor de historia articulaba palabras sin ningun sentido, me vino una inspiración para conseguir acelerar el proceso de busqueda del Vendor, aquí lo dejo..  ;D

Código: [Seleccionar]
#!/bin/bash


MAC_O="002233445566"
MAC_A="001122334455"

MAClist=$(cat ~/manuf | sed 's/\t/ /g' | awk '{ gsub("-", "", $1); gsub(":", "", $1); gsub("/44", "", $1); gsub("/40", "", $1); gsub("/36", "", $1); gsub("/32", "", $1); gsub("/25", "", $1); gsub("/24", "", $1); gsub("/16", "", $1); gsub(/[ ]+/," "); print }')
i=6

while [ $i -le 12 ]; do

SEARCHING_RESULT_o=$(echo "$MAClist" |grep -i ^${MAC_O:0:i}|perl -pi -e 's/#/-/g')
SEARCHING_EXITCODE_o=$?
lineas_o=$(echo "$SEARCHING_RESULT_o" | grep -c "")
if [ "$lineas_o" = 1 ]; then
if [ "$SEARCHING_EXITCODE_o" = 0 ]; then
FABRICANTE_MAC_O="$(echo "$SEARCHING_RESULT_o"|cut -d " " -f 2-22))"
echo $FABRICANTE_MAC_O
fi
fi

SEARCHING_RESULT=$(echo "$MAClist" |grep -i ^${MAC_A:0:i}|perl -pi -e 's/#/-/g')
SEARCHING_EXITCODE=$?
lineas=$(echo "$SEARCHING_RESULT" | grep -c "")
if [ "$lineas" = 1 ]; then
if [ "$SEARCHING_EXITCODE" = 0 ]; then
FABRICANTE_MAC_FALSA=$(echo "$SEARCHING_RESULT"|cut -d " " -f 2-22)
echo $FABRICANTE_MAC_FALSA
break
fi
fi

if [ $i -eq 12 ]; then
echo unknown
fi

let i=i+1
done

Aunque no es instantaneo, la velocidad aumenta muy notablemente.

Salu2
Título: Re: ChaMAC 0.7 : Cambia todas tus MAC
Publicado por: alist3r en 26-09-2013, 11:53 (Jueves)
ole, con perl incrustado y todo!
felicidades!
tengo que probarlo con calma, pero confio en tu palabra :D
Título: Re: ChaMAC 0.8 : Cambia todas tus MAC
Publicado por: vk496 en 26-09-2013, 18:44 (Jueves)
Bueno, aquí os dejo la 0.8 con la principal novedad las OUI (lo de mostrar el fabricante)...

Jamas creería que algo tan simple de unas cuantas lineas llegaría a ser tan complejo... jajajjaja  ;D

Salu2

Título: Re: ChaMAC 0.8 : Cambia todas tus MAC
Publicado por: alist3r en 26-09-2013, 18:48 (Jueves)
bienvenido al mundo de bash xDDD
Título: Re: ChaMAC 0.8 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 27-09-2013, 12:56 (Viernes)
Bueno vamos alla...

por cada interface me salen dos lineas tal que asi

-i used with no filenames on the command line, reading from STDIN.
-i used with no filenames on the command line, reading from STDIN.


no se si eso es asi , ...pero podriamos esconderlo ?  &> /dev/null 

No queda muy estetico  ;)


Y luego ya como observacion , ...el fabricante en vez de al lado de la mac , .. casi lo pondria justo arriba..al lado de la interface


por ejemplo

WLAN1  TP-LINK - BLA BLA BLA
MAC ORIGINAL
MAC FALSA


Ademas el usuario tendra mas claro cada interface que dispositivo es.

por ejemplo yo ,que tengo 3 o 4 a la vez ya se que el wlan1 es la tp-link  ;)
Título: Re: ChaMAC 0.8 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 27-09-2013, 12:59 (Viernes)
donde se pone la mac fackeada creo que sobra el fabricante ya que si no me equivoco siempre sera unknow ...ya que es random.


(http://imageshack.us/a/img401/2340/bmfg.png)
Título: Re: ChaMAC 0.8 : Cambia todas tus MAC
Publicado por: vk496 en 27-09-2013, 17:15 (Viernes)
Bueno vamos alla...

por cada interface me salen dos lineas tal que asi

-i used with no filenames on the command line, reading from STDIN.
-i used with no filenames on the command line, reading from STDIN.


no se si eso es asi , ...pero podriamos esconderlo ?  &> /dev/null 

No queda muy estetico  ;)


Y luego ya como observacion , ...el fabricante en vez de al lado de la mac , .. casi lo pondria justo arriba..al lado de la interface


por ejemplo

WLAN1  TP-LINK - BLA BLA BLA
MAC ORIGINAL
MAC FALSA


Ademas el usuario tendra mas claro cada interface que dispositivo es.

por ejemplo yo ,que tengo 3 o 4 a la vez ya se que el wlan1 es la tp-link  ;)

Eso mismo estaba pensando hacer... jajajaja

Después de ver que prácticamente siempre salía en "unknown", vi que no era bastante efectivo....

Sin embargo, no he tenido nunca el mensaje de arriba que mencionas....  :-\

hasta donde ví, solo puede ser del grep, pero me resulta muy raro que pueda mostrar errores así....
Título: Re: ChaMAC 0.8 : Cambia todas tus MAC
Publicado por: alist3r en 28-09-2013, 13:09 (Sábado)
vk496

puedes usar el descriptor de fichero /proc/self/fd/0' o /dev/stdin en sustitución de la standard input.

tambien puedes convertir todos los caracteres hexadecimales a mayusculas usando tr, y asi puedes prescindir de -i

excelente trabajo como siempre. :)
Título: Re: ChaMAC 0.8 : Cambia todas tus MAC
Publicado por: vk496 en 01-10-2013, 18:08 (Martes)
vk496

puedes usar el descriptor de fichero /proc/self/fd/0' o /dev/stdin en sustitución de la standard input.

tambien puedes convertir todos los caracteres hexadecimales a mayusculas usando tr, y asi puedes prescindir de -i

excelente trabajo como siempre. :)

Gracias por el consejo  :D

En base a lo que me habíais dicho, le he metido mas cosillas:

Citar
########## XX-XX-2013 Chamac 0.9
##
## Corregido bug "-i used with no filenames on the command line, reading from STDIN" (@USUARIONUEVO y @alister)
## Mejorado el parseo de datos
## Reducida información que se muestra sobre los Vendor (mas dinamica)
## Añadida opcion --list para mostrar todos los Vendor
## Añadida opcion --ending para mantener los bytes del Fabricante
##
##########

Como podreis ver, me estoy fijando en el macchanger para portar algunas funciones suyas...  Todo marcha bien por ahora (supongo que en nada lanzaré la v0.9  ;D).

Pero lo que no me queda muy claro, es la diferencia entre la opción -a y -A del macchanger (cosa que quiero implementar tmbn)....  Hace lo mismo¿?¿?¿?  ???

Salu2

PD: Conocéis algún sitio donde pueda mostrar mi proyecto para compartirlo con mas gente?
Título: Re: ChaMAC 0.8 : Cambia todas tus MAC
Publicado por: alist3r en 01-10-2013, 18:12 (Martes)
--ending viene a ser como -a
en cambio -A hace un cambio total de la mac
asi que ya lo tienes hecho
Título: Re: ChaMAC 0.8 : Cambia todas tus MAC
Publicado por: vk496 en 01-10-2013, 18:53 (Martes)
--ending viene a ser como -a
en cambio -A hace un cambio total de la mac
asi que ya lo tienes hecho

Entonces si -A es un cambio completo... para que tiene la opción -r ? jajaj  ;D
Título: Re: ChaMAC 0.8 : Cambia todas tus MAC
Publicado por: alist3r en 01-10-2013, 21:39 (Martes)
uf, calla, no me hagas caso:

        -a, --another
              Set random vendor MAC of the same kind.

       -A     Set random vendor MAC of any kind.

       -r, --random
              Set fully random MAC.

-A toma como referencia los posibles vendors y elige un vendor aleatoriamente.
-r es una idea de pinza total que te pone una mac 100% aleatoria, resultando en un unknown casi siempre
Título: Re: ChaMAC 0.9 : Cambia todas tus MAC
Publicado por: vk496 en 03-10-2013, 19:43 (Jueves)
Bueno, acabo de meterle mas cosas al asunto, y creo que es la version definitiva, porque ya no se me ocurre nada mas que añadir... jajajaja

Muchas gracias a todos por vuestra ayuda, de verdad que no me esperaba llegar a algo así  >:( >:(

Lo único que me falta es probar su completa funcionalidad desde Wifislax (a la tabla de particiones de mi USB le ha dado por joderse...  :P )

Salu2  ;D
Título: Re: ChaMAC 0.9 : Cambia todas tus MAC
Publicado por: alist3r en 06-10-2013, 02:33 (Domingo)
Bueno, acabo de meterle mas cosas al asunto, y creo que es la version definitiva, porque ya no se me ocurre nada mas que añadir... jajajaja

Muchas gracias a todos por vuestra ayuda, de verdad que no me esperaba llegar a algo así  >:( >:(

Lo único que me falta es probar su completa funcionalidad desde Wifislax (a la tabla de particiones de mi USB le ha dado por joderse...  :P )

Salu2  ;D

la habras jodido tu en todo caso no? jajajaja

recuerda que windows solo puede ver la PRIMERA partición de los dispositivos extraibles, no sea que te hayas liado con eso.
Título: Re: ChaMAC 0.9-5 : Cambia todas tus MAC
Publicado por: vk496 en 09-10-2013, 22:31 (Miércoles)
Bueno, creía que la 0.9 iba a ser la definitiva, pero va ser que no.... Hice fallos muy tontos y no me di cuenta de ellos... (Sigue sin gustaría la idea del 1.0 , así que la dejo en 0.9-5 xDD)

@alister, ya lo comprobé desde Linux, y ese no era el problema. La tabla de particiones se había esfumado por completo, y ninguna herramienta de recuperación me funcionó...

Ahora tengo otro problema, y es que no encuentro el pu** USB!! y es de 64Gb con 3.0, cosa que me pone mas nervioso aun xD

Salu2


Enviado desde mi iPod touch usando Tapatalk
Título: Re: ChaMAC 0.9-5 : Cambia todas tus MAC
Publicado por: Chumpy en 09-10-2013, 22:54 (Miércoles)
Después del 9 va el 10, no hay problema en que la versión sea 0.10 , 0.11, 0.12.... creo recordar que emule tenía versiones del tipo 0.49c
Título: Re: ChaMAC 0.9-5 : Cambia todas tus MAC
Publicado por: alist3r en 13-10-2013, 02:30 (Domingo)
please, usad el versionado de estilo GNU, que ya estamos acostumbrados todos.
0.10 es totalmente válido, por supuesto. todos los que necesites antes de hacer un cambio grande a  1.0
Título: Re: ChaMAC 0.9-5 : Cambia todas tus MAC
Publicado por: vk496 en 13-10-2013, 11:51 (Domingo)
El problema es que nose que cambios hacerle.... Me he quedado sin ideas


Enviado desde mi iPod touch usando Tapatalk
Título: Re: ChaMAC 0.9-5 : Cambia todas tus MAC
Publicado por: alist3r en 13-10-2013, 14:52 (Domingo)
menudo problemón del primer mundo eh.. xDD
Título: Re: ChaMAC 0.9-5 : Cambia todas tus MAC
Publicado por: vk496 en 13-10-2013, 15:03 (Domingo)
Ya... jajajajaj

Pero es que nose, le falta alguna "chispa", algo realmente único como para sacar una versión final... xD

Salu2


Enviado desde mi iPod touch usando Tapatalk
Título: Re: ChaMAC 0.9-5 : Cambia todas tus MAC
Publicado por: alist3r en 13-10-2013, 15:07 (Domingo)
oye, que el tema de cambiar de mac no da para mucho mas eh! bastante has hecho ya, caray!
la relación "cantidad de código escrito" / "complejidad de la tarea que realiza" ya se inclina hacia la primera parte, asi que es buen momento para acabar de cuajarlo todo y pasar a otra idea eh! si no te tirarás metido en esto hasta el infinito, como en la paradoja de Zenón xD
Título: Re: ChaMAC 0.9-5 : Cambia todas tus MAC
Publicado por: vk496 en 13-10-2013, 15:11 (Domingo)
Jajajajaj, me igual, le meteré fuegos artificiales si hace falta, pero le daré un buen final al mini-proyecto...

La cuestión es el "cuando"... xD

Salu2


Enviado desde mi iPod touch usando Tapatalk
Título: Re: ChaMAC 0.9-5 : Cambia todas tus MAC
Publicado por: alist3r en 13-10-2013, 15:13 (Domingo)
haz que la chupe bien!
Título: Re: ChaMAC 0.9-5 : Cambia todas tus MAC
Publicado por: ñandu en 13-10-2013, 15:17 (Domingo)
haz que la chupe bien!
;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:(
Título: Re: ChaMAC 0.9-5 : Cambia todas tus MAC
Publicado por: vk496 en 13-10-2013, 15:29 (Domingo)
Las grandes ideas nacen de cosas simples y elementales.

+1 alister xDDD

Salu2




Enviado desde mi iPod touch usando Tapatalk
Título: Re: ChaMAC 0.9-5 : Cambia todas tus MAC
Publicado por: alist3r en 13-10-2013, 16:04 (Domingo)
qué mejores fuegos artificiales que esos? :D
Título: Re: ChaMAC 0.9-5 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 04-11-2013, 23:33 (Lunes)
se han colao un monton de lineas de mas al final del script ...

a partir de la linea

735


de hay hacia abajo es basura que se ha colado.


el script finaliza en la linea que pone


Código: [Seleccionar]
clientesdhcp && clientedaemon

Otro apunte , aqui veo la 0.9-5  , pero en tu blog estan la 0.8 y 0.9 a pelo ... no se si son la misma la 0.9 y la 0.9-5   que no creo , pero hay lo dejo.  ;)
Título: Re: Re: Re: ChaMAC 0.9-5 : Cambia todas tus MAC
Publicado por: vk496 en 04-11-2013, 23:41 (Lunes)
se han colao un monton de lineas de mas al final del script ...

a partir de la linea

735


de hay hacia abajo es basura que se ha colado.


el script finaliza en la linea que pone


Código: [Seleccionar]
clientesdhcp && clientedaemon

Otro apunte , aqui veo la 0.9-5  , pero en tu blog estan la 0.8 y 0.9 a pelo ... no se si son la misma la 0.9 y la 0.9-5   que no creo , pero hay lo dejo.  ;)

Ya lo arregle. De la 0.9 a la 0.9-5 hay un cambio en una palabra solo (puse el archivo en seco en vez de una variable)

Lo que pasa es que me da muuuuuuuuucha pereza cambiarlo.. jajajaj

Salu2

Enviado desde mi GT-I9505
Título: Re: ChaMAC 0.9-5 : Cambia todas tus MAC
Publicado por: USUARIONUEVO en 04-11-2013, 23:44 (Lunes)
ya lo tengo parcheado ...  8)
Título: Re: ChaMAC 0.9-5 : Cambia todas tus MAC
Publicado por: qwer en 06-03-2016, 12:56 (Domingo)
Hola;
Acabo de probar el script , le he dado permisos de root y cuando reinicio el sistema compruebo con ifconfig la mac y efectivamente está cambiada pero lo que no logro a pesar de utilizar la opción -M es que se quede siempre la mac predeterminada que yo quiera y no que siempre que reinicio salga una mac diferente aleatoria.

Hay alguna forma de dejar la mac que yo quiera de forma permanente?

Un saludo y perdón por revivir un post antiguo pero creo que es aquí donde debe ir mi pregunta.