Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: lagranladilla en 26 Junio 2013, 22:36 pm



Título: [BASH] Script que compruebe si wlan1 esta conectada
Publicado por: lagranladilla en 26 Junio 2013, 22:36 pm
Hola!
hacia mucho tiempo que no realizava un Script en bash y ahora quiero realizar algo muy sencillo pero que no acabo de encontrarle solucion!.

 La idea seria poner un script al inicio del sistema que compruebe si mi tarjeta wifi (wlan1), q va por USB y es externa esta conectada al ordenador.
En el caso de que lo este se le cambiaria la MAC:

Código:
#!/bin/bash

UP=$(ifconfig | grep -o 'wlan1')

if ["$UP"="wlan!"]; then
      ifconfig wlan1 down
      macchanger -A wlan1 
      ifconfig wlan1 up
fi

Me da error en la linea donde llamo al if, me dice lo siguiente:

Código:
[wlan1=wlan1]: orden no encontrada

Creo que estoy haciendo algo mal... si wlan1 esta connectada entonces UP devuelve wlan1 no?

creo que la estoy liando y deberia ser mucho mas sencillo

Gracias de antemanooo!!


Título: Re: [BASH] Script que compruebe si wlan1 esta conectada
Publicado por: -- KiLiaN -- en 26 Junio 2013, 22:54 pm
Prueba asi, en bash los espacios en blanco cuentan mucho.

Código
  1. #!/bin/bash
  2.  
  3. UP=$(sudo ifconfig | grep -o 'eth1')
  4. echo $UP
  5. if [ $UP = eth1 ]; then
  6.     ifconfig wlan1 down
  7.      macchanger -A wlan1  
  8.      ifconfig wlan1 up
  9. fi


Título: Re: [BASH] Script que compruebe si wlan1 esta conectada
Publicado por: lagranladilla en 26 Junio 2013, 23:33 pm
Bien! era eso!!  ;-)

Ahora el script se ejecuta pero a la hora de cambiar la MAC, la consola devuelve:

Código:
Permanent MAC: 48:02:##:##:##:## (unknown)
Current   MAC: 48:02:##:##:##:## (unknown)
ERROR: Can't change MAC: interface up or not permission: Invalid argument

He intentado cambiar la MAC de la interficie realizando los comandos uno a uno como sudo a traves del terminal y me da el mismo error... A que se puede deber?? Podria ser alguna clase de incompatibilidad del Macchanger?? yo nunca he oido que puda acurrir...

pd: (las "#" las pongo yo, en el ordenador me aparece la MAC correctamente  ;))


Título: Re: [BASH] Script que compruebe si wlan1 esta conectada
Publicado por: -- KiLiaN -- en 26 Junio 2013, 23:41 pm
Lo ejecutas con sudo?


Título: Re: [BASH] Script que compruebe si wlan1 esta conectada
Publicado por: lagranladilla en 26 Junio 2013, 23:45 pm
Si!

esta en /home/"user"/Escritorio y se llama S99mac ya que luego pensaba ponerlo en la carpeta /etc/rc2.d

lo ejecuto como sudo ./S99mac

:S


Título: Re: [BASH] Script que compruebe si wlan1 esta conectada
Publicado por: lagranladilla en 27 Junio 2013, 00:42 am
tambien si escribo, dice:

Código:
sudo ifconfig wlan1 hw ether AA:AA:AA:AA:AA:AA
SIOCSIFHWADDR: Argumento inválido

con el wlan0 me funciona tanto el script como los comandos.. La tarjeta wlan1 es  nueva, es una wifisky con un chipset ralink 3070


Título: Re: [BASH] Script que compruebe si wlan1 esta conectada
Publicado por: lagranladilla en 27 Junio 2013, 13:06 pm
bien, finalmente probando con otra entena (wisacom con chipset realtek 8187L), el script me funciona perfectamente con lo que deduzco que el problema viene del chipset o de la misma antena... He probado tambien con otros sistemas (wifislax, kali linux...) y el problema persiste.

Dejo el script final por si alguien quisiera usarlo:

Código
  1. #!/bin/bash
  2.  
  3. # wlan0 & eth0
  4.  
  5. ifconfig eth0 down
  6. ifconfig wlan0 down
  7. macchanger -A eth0
  8. macchanger -A wlan0
  9. ifconfig eth0 up
  10. ifconfig wlan0 up
  11.  
  12. # wlan1 y 2, dispositivos externos (si existe)
  13.  
  14. UP=$(ifconfig | grep -o 'wlan1')
  15. UP2=$(ifconfig | grep -o 'wlan2')
  16.  
  17. if [ "$UP" = wlan1 ]; then
  18.  
  19. ifconfig wlan1 down
  20. macchanger -A wlan1
  21. ifconfig wlan1 up
  22. fi
  23.  
  24. if [ "$UP2" = wlan2 ]; then
  25.  
  26. ifconfig wlan2 down
  27. macchanger -A wlan2
  28. ifconfig wlan2 up
  29. fi
  30. #fin del script

Para poner el Script al inicio de sessión uno de los metodos seria copiarlo en la carpeta /etc/rc2.d y nombrarlo S99mac (con permisos de ejecucion).

salud!


Título: Re: [BASH] Script que compruebe si wlan1 esta conectada
Publicado por: -Myx- en 28 Junio 2013, 04:57 am
Otra forma de hacer lo mismo:

Código
  1. #!/bin/bash
  2. for interface in /sys/class/net/*; do
  3.    [[ $interface = 'lo' ]] && continue
  4.    ifconfig "$interface" down
  5.    macchanger -A "$interface"
  6.    ifconfig "$interface" up
  7. done
  8.  

Tambien se puede jugar con udev para hacer lo mismo...creo

Código:
http://www.reactivated.net/writing_udev_rules.html