El libre pensamiento para un internet libre

No estas registrado.  

Anuncio

Wifi-libre.com: El libre pensamiento para un internet libre / Regístrese ahora

#1 24-04-2018 19:57:47

kcdtv
Administrator

Registrado: 14-11-2014
Mensajes: 4,487

¿Por qué ethtool es una dependencia de aircrack-ng?

¿Por qué ethtool es una dependencia de aircrack-ng?

Examinando la lista de dependencias de aircrack-ng nos damos cuenta que nuestra "suite" favorita nos pide instalar ethtool

ethtool_1.jpg

  Es algo intrigante: ethtool es antes de todo una herramienta de administración de interfaz ethernet. 

Description
ethtool is used to query and control network device driver and hardware settings, particularly for wired Ethernet devices.
devname is the name of the network device on which ethtool should operate.

  Y si  miramos las opciones no vemos ninguna relación directa entre ethtool y la suite aircrack-ng, enteramente dedicada al WiFi.
  Entonces.... ¿Por qué ethtool?

  Una de las novedades con el nuevo aircrack-ng 1.2 es la mejora de la compilación gracias a los "autotools".
Ver: Se modifica la forma de instalar aircrack-ng en 2018 (autotools) 
Se configura la compilación  (comando configure) antes de ejecutarla (comando make).
  Es un paso suplementario, pero permite mejorar la compatibilidad y la robustez de una instalación.
  Permite también arreglar los errores de compilación antes de compilar. Y conocer el origen de estos problemas.
Es mucho mejor que dar golpes a ciegas, instalando paquetes sin saber muy bien si van arreglar los fallos que vamos encontrando.

  Ilustración con nuestro "caso ethtool":

  1. Desinstalo ethtool de mi sistema

    sudo apt autoremove ethtool

  2. Y hago una configuración de compilación

    ./configure (argumentos)
  3. Haciendo así veo inmediatamente que ethool es solo necesario para poder usar airmon-ng.
    aircrack-ng_autotools_4.jpg

  4. Determino la ruta de airmon-ng en mi sistema (para mi es /usr/local/sbin/airmon-ng)

    sudo which airmon-ng
  5. Empleo grep para buscar las lineas que contienen ethtool

    grep --color "ethtool" /usr/local/sbin/airmon-ng

    ethtool_2.jpg

Vemos que ethtool se emplea pocas veces.. Muy pocas veces si miramos con más atención
  * Primeras ocurrencias

if [ ! -x "$(command -v ethtool 2>&1)" ]; then
	printf "Please install the ethtool package for your distro.\n"

Es una condición para determinar si ethtool está presente en el sistema. Ni siquiera se ejecuta . No nos interesa.
* Ocurrencias siguientes

	#DRIVER=$(printf "$ethtool_output" | awk '/driver/ {print $2}')
		BUSADDR="$(printf "$ethtool_output" | awk '/bus-info/ {print $2}'):1.0"
	FIRMWARE="$(printf "$ethtool_output" | awk '/firmware-version/ {print $2}')"
				BUSINFO="$(printf "$ethtool_output" | grep bus-info | cut -d ":" -f "3-" | sed 's/^ //')"
	elif $(printf "$ethtool_output" | awk '/bus-info/ {print $2}' | grep -q bcma)
	unset ethtool_output DRIVER FROM FIRMWARE STACK MADWIFI MAC80211 BUS BUSADDR BUSINFO DEVICEID CHIPSET EXTENDED PHYDEV ifacet DRIVERt FIELD1 FIELD1t FIELD2 FIELD2t CHIPSETt

  Variables y condición en base de  la variable "$ethtool_output".
Aquí tampoco se ejecuta ethtool
  * Variable $ethtool_output

ethtool_output="$(ethtool -i $iface 2>&1)"

Es la única linea (airmon-ng tiene 1519 lineas) dónde se ejecuta concretamente ethtool. ¡No hay otra! Se emplea para crear la variable $ethtool_output
La opción de ethtool que se emplea es la opción -i (information).
   Y su salida es así:

[email protected]:~$ sudo ethtool -i wlan0
driver: ath9k
version: 4.15.0-kali2-amd64
firmware-version: N/A
expansion-rom-version: 
bus-info: 0000:02:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

  Podríamos pensar que es para conocer el driver, pero no es el caso: La variable DRIVER hecha con ethtool está "comentada" (símbolo # antes de declararla) y no se define con ethtool

#DRIVER=$(printf "$ethtool_output" | awk '/driver/ {print $2}')

  El driver de la interfaz se pilla así cuando es una inetrfaz PCI:

DRIVER="$(awk -F'=' '$1 == "DRIVER" {print $2}' /sys/class/net/$1/device/uevent)

  O bien así cuando se trata de una interfaz USB

DRIVER="$(awk -F'=' '$1 == "DRIVER" {print $2}' /sys/class/net/$1/device/$BUSADDR/uevent)"

  Tampoco se emplea para pillar el firmware:
   No: Ethtool se emplea una sola vez y para definir una sola variable: $ethtool_output
Y la variable definida sirve para definir $BUSADDR, $FIRMWARE y $BUSINFO

BUSADDR="$(printf "$ethtool_output" | awk '/bus-info/ {print $2}'):1.0"
	FIRMWARE="$(printf "$ethtool_output" | awk '/firmware-version/ {print $2}')"
				BUSINFO="$(printf "$ethtool_output" | grep bus-info | cut -d ":" -f "3-" | sed 's/^ //')"

  Idealmente airmon-ng debería prescindir de ethtool para no obligar a tener este paquete instalado para definir una sola variable.
Al ver las antiguas variables comentadas deducimos que es lo que se ha intentado. Pero, muy probablemente, no se ha encontrado una forma satisfactoria para definir a $BUSADDR
Si tienes una idea para hacer las cosas de otra forma y poder así quitar ethtool de la lista de las dependencias sería interesante compartirla.
¡Saludos!

Desconectado

Anuncio

Wifi-highpower.es es distribuidor oficial de Alfa Network

Temas similares

Tema Respuestas Vistas Ultimo mensaje
4 68 Ayer 21:00:55 por Koala
7 169 Ayer 16:54:46 por kcdtv
Pegado:
Pegado:: 2ª Sorteo Del Mercadillo por josep345  [ 1 2 ]
44 1586 Ayer 16:53:17 por kcdtv
2 967 Ayer 16:03:32 por kcdtv
5 619 17-10-2018 18:15:16 por javierbu

Pie de página

Información del usuario

Ultimo usuario registrado: RandallJimenez
Usuarios registrados conectados: 0
Invitados conectados: 8

Estadisticas de los foros

Número total de usuarios registrados: 1,236
Número total de temas: 1,207
Número total de mensajes: 12,429

Máx. usuarios conectados: 71 el Ayer 06:35:48