Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program RetoWEP;
- Uses strings, crt, Dos, getopts;
- const
- CantComandosRoot=6;
- CantComandosNoRoot=5;
- CantComandos= CantComandosRoot + CantComandosNoRoot;
- CantAtribPerm=8;
- CantMaxMon=20; {+1}
- DireccionMac='E0:91:93:4F:82:7E';
- CantAtribAirod=6; {Cantidad atributos posibles en airodump}
- ApCh='8'; {chanel del AP}
- ApMac='E0:91:93:4F:82:7E';{MAC del AP}
- type
- Tmono=Array[0..CantMaxMon] of boolean;
- TAtributos=Array[1..CantAtribPerm] of string[50];
- TComandos=Array[1..CantComandos] of string;
- TComandosRoot=Array[1..CantComandosRoot] of string;
- TComandosNoRoot=Array[1..CantComandosNoRoot] of string;
- TAtributosAirodump=Array[1..CantAtribAirod] of string;
- TCadenas = record {Para almacenar las cadenas que marcan la introduccion al reto}
- Cadena:string;
- Marca:integer;
- end;
- const
- Comandos : TComandos = ('kill','airmon-ng','airodump-ng','aircrack-ng','iwconfig','help','su','clear','ifconfig','exit','explicacion');
- ComandosRoot : TComandosRoot = ('kill','airmon-ng','airodump-ng','aircrack-ng','iwconfig','ifconfig');
- ComandosNoRoot : TComandosNoRoot = ('help','su','clear','exit','explicacion');
- AtributosAirodump:TAtributosAirodump = ('-w','--write','-c','--channel','--bssid','-ivs');
- var
- Atributos:TAtributos; {atributos introducidos}
- mono:Tmono; {Interfaces creadas}
- root:boolean; {es root o no el usuario}
- KeyLog:string; {Lo introducido por el usuario pero sin separar}
- i,y:integer;{Variable para for inicializar}
- E925,E935,E1112:boolean; {Aplicaciones molestas corriendo}
- salir:boolean; {Salida del programa}
- Beacons:integer;
- Data:integer;
- archivoEscritura:string;
- function SoloNumeros (cadena:string):boolean; {verifica si el string posee solo numeros}
- var x,numeros:integer;
- begin
- numeros:=0; {Inicializo}
- SoloNumeros:=false; {Inicializo}
- for x:=1 to length(cadena) do {Leo toda la cadena}
- begin
- if (cadena[x]>='0') and (cadena[x]<='9') then {veo la cantidad de numeros que hay en la cadena}
- begin
- numeros:=numeros+1;
- end;
- end;
- if numeros=length(cadena) then {Si la cantidad de numeros es igual a la cantidad de caracteres}
- begin
- SoloNumeros:=true;
- end;
- end;
- procedure CapturarAtributos (KeyLog:string; var Atributos:TAtributos); {Separar atributos del comando introducido por el usuario}
- var
- y:integer;
- aux:string;
- begin
- y:=1;
- while pos(' ',KeyLog)<>0 do
- begin
- if pos(' ',KeyLog)<>0 then {Si hay un espacio}
- begin
- aux:=copy(KeyLog,1,(pos(' ',KeyLog) - 1)); {Copio la primera palabra}
- Atributos[y]:=aux;
- KeyLog:=copy(KeyLog,(pos(' ',KeyLog) + 1),length(KeyLog)); {Copio desde el primer lugar que sigue del espacio hasta el final de la cadena}
- if aux<>'' then
- begin
- y:=y+1;
- end;
- end;
- end;
- Atributos[y]:=KeyLog; {Guardo la ultima palabra}
- end;
- procedure DesplazarComentario (Cadenas:TCadenas); {Escribe la cadena letra por letra como si se tratase de una animación}
- var
- x:integer;
- begin
- x:=1; {asigno}
- repeat
- write(Cadenas.Cadena[x]); {Imprimo la letra}
- delay(200); {Retraso medio segundo la ejecucion del programa}
- x:=x+1; {Paso a la siguiente letra}
- until x= Cadenas.Marca; {Hasta que haya vacio (marca real)}
- end;
- procedure Explicacion; {Pequeña explicacion del reto}
- Const
- Bienvenido:TCadenas = (Cadena:'¡Bienvenido al reto!'; Marca:22);
- Simulacion:TCadenas = (Cadena:'Este programa simula que estás trabajando en una terminal. Puedes introducir los comandos que desees siempre y cuando estos estén habilitados y tengas los permisos para ello. Para ver la lista de comandos disponibles puedes utilizar el comando help.'; Marca:252);
- Objetivo:TCadenas = (Cadena:'Para completar el reto debes obtener la clave WEP de la red llamada TP_Link utilizando la suit aircrack-ng de auditoria wirless.';Marca:129);
- Importante:TCadenas = (Cadena:'Importante! La contraseña del usuario de ID 0 es "www.hackxcrack.es" (sin comillas)';Marca:84);
- Ahora:TCadenas = (Cadena:'Ahora... A trabajar! :D'; Marca:23);
- ComandoHelp:TCadenas = (Cadena:'Puedes introducir el comando help para ver una lista de comandos disponibles';Marca:77);
- var
- x:integer;
- begin
- ClrScr;
- x:=1;
- repeat
- case x of {Lo hago así para que si el usuario presiona una tecla salga del programa al terminar el case actual}
- 1 : begin DesplazarComentario(Bienvenido); writeLn; writeLn; end;
- 2 : begin DesplazarComentario(Simulacion); writeLn; writeLn; end;
- 3 : begin DesplazarComentario(Objetivo); writeLn; writeLn; end;
- 4 : begin DesplazarComentario(Importante); writeLn; writeLn; end;
- 5 : begin DesplazarComentario(Ahora); writeLn; writeLn; end;
- 6 : begin DesplazarComentario(ComandoHelp);writeLn;writeLn;end
- end;
- x:=x+1; {Por si el usuario decide salir antes, limpio la pantalla y escribo tódo junto}
- until (x>=7) or (keypressed);
- ClrScr;
- writeLn(Bienvenido.Cadena); writeLn;
- writeLn(Simulacion.Cadena); writeLn;
- writeLn(Objetivo.Cadena); writeLn;
- writeLn(Importante.Cadena); writeLn;
- writeLn(Ahora.Cadena); writeLn;
- writeLn(ComandoHelp.Cadena); writeLn;
- readKey;readKey; {Pongo dos veces por que sino lo saltaba por el buffer del teclado}
- ClrScr;
- end;
- procedure prompt (root:boolean); {Linea de comandos}
- begin
- if root=false then
- begin
- write('User@hackxcrack:~/home$ ');
- readLn(KeyLog);
- end;
- if root=true then
- begin
- write('Root@hackxcrack:~/home# ');
- readLn(KeyLog);
- end;
- end;
- procedure clear (Atributos:TAtributos);{Limpiar pantalla}
- begin
- if Atributos[2]='' then
- begin
- ClrScr;
- end
- else begin
- writeLn('arguments wrong');
- end;
- end;
- procedure kill (Atributos:TAtributos; var E925,E935,E1112:boolean);
- var accion:integer;
- begin
- accion:=0;{Inicilaizo la accion}
- if (Atributos[2]='925') and (E925=true) then {Si elije matar al primer programa}
- accion:=1;
- if (Atributos[2]='935') and (E935=true) then {Si elije matar al segundo programa}
- accion:=2;
- if (Atributos[2]='1112') and (E1112=true) then {Si elije matar al tercer programa}
- accion:=3;
- if accion=0 then {Si no introdujo un ID correcto o ya lo habia matado antes}
- begin
- if SoloNumeros(Atributos[2])=true then {Si solo posee numeros}
- begin
- accion:=4;
- end
- else
- accion:=5; {Si posee algun caracter que no es numero}
- end;
- {1=925 - 2=935 - 3=1112 - 4=ID - 5=Atributo}
- case accion of
- 1 : E925:=false;
- 2 : E935:=false;
- 3 : E1112:=false;
- 4 : writeLn('El proceso no existe');
- 5 : writeLn('arguments must be process or job IDs');
- end;
- end;
- function PedirContrasena:string;
- var contrasena:string;
- c:char;
- x:integer;
- begin
- x:=1;
- contrasena:='';
- c:=' '; {Inicializo}
- write('Contraseña: ');
- while c<>#13 do {mientras sea diferente de espacio}
- begin
- c:=readKey;
- if c<>#13 then
- begin
- if c=#8 then {Si usa el backspace}
- begin
- contrasena[x]:=' ';
- x:=x-1;
- end
- else begin
- contrasena:= contrasena + c; {Agrego el nuevo caracter a la cadena}
- x:=x+1;
- end;
- end;
- end;
- writeLn;{Para que haga un espacio luego de terminar de escribir la contaseña}
- PedirContrasena:=contrasena;
- end;
- procedure su (var root:boolean;Atributos:TAtributos);
- begin
- if root=false then
- begin
- if Atributos[2]='' then
- begin
- if PedirContrasena='www.hackxcrack.es' then
- begin
- root:=true;
- end
- else begin
- writeLn('Contraseña incorrecta');
- end;
- end
- else
- writeLn('arguments wrong');
- end
- else
- writeLn('You are already root');
- end;
- function ComandoCorrecto(Atributos:TAtributos;Comandos:TComandos):boolean;
- var i:integer;
- correcto:boolean;
- begin
- correcto:=false; {Inicializo}
- for i:=1 to CantComandos do {Recorro la lista de comandos}
- begin
- if Atributos[1]=Comandos[i] then
- correcto:=true;
- end;
- if correcto=true then
- ComandoCorrecto:=true;
- if correcto=false then
- ComandoCorrecto:=false;
- end;
- function ComandoRoot(Atributos:TAtributos;ComandosRoot:TComandosRoot):boolean; {Devuelve true si el comando introducido requiere root}
- begin
- ComandoRoot:=false;
- for i:=1 to CantComandosRoot do {hacer de nuevo con busqueda}
- begin
- if Atributos[1]=ComandosRoot[i] then
- ComandoRoot:=true
- end;
- end;
- function ComandoNoRoot(Atributos:TAtributos;ComandosNoRoot:TComandosNoRoot):boolean; {Devuelve true si el comando introducido no requiere root}
- begin
- ComandoNoRoot:=false;
- for i:=1 to CantComandosNoRoot do
- begin
- if Atributos[1]=ComandosNoRoot[i] then
- ComandoNoRoot:=true
- end;
- end;
- procedure exit (Atributos:TAtributos; var root,salir:boolean);
- begin
- if root=true then
- root:=false
- else
- salir:=true;
- end;
- procedure iwconfig (Atributos:TAtributos;mono:Tmono);
- begin
- if Atributos[2]='' then {Si no posee atributos}
- begin
- writeLn('lo no wireless extensions.');
- writeLn;
- writeLn('eth0 no wireless extensions.');
- writeLn;
- writeLn('wlan0 IEEE 802.11bgn ESSID:off/any');
- writeLn(' Mode:Managed Access Point: Not-Associated Tx-Power=off');
- writeLn(' Retry long limit:7 RTS thr:off Fragment thr:off');
- writeLn(' Encryption key:off');
- writeLn(' Power Management:off');
- writeLn;
- for i:=0 to CantMaxMon do {Leer todos los mon activos}
- begin
- if mono[i]=true then
- begin
- writeLn('mon',i,' IEEE 802.11bgn Mode:Monitor Tx-Power=14 dBm');
- writeLn(' Retry long limit:7 RTS thr:off Fragment thr:off');
- writeLn(' Power Management:on');
- writeLn;
- end;
- end;
- end
- else begin
- writeLn('arguments wrong');
- end;
- end;
- procedure ifconfig (Atributos:TAtributos;mono:Tmono);
- begin
- if Atributos[2]='' then {Si no posee atributos}
- begin
- writeLn('eth0 Link encap:Ethernet HWaddr E0:69:9F:E4:AC:F5 ');
- writeLn(' UP BROADCAST MULTICAST MTU:1500 Metric:1');
- writeLn(' RX packets:0 errors:0 dropped:0 overruns:0 frame:0');
- writeLn(' TX packets:0 errors:0 dropped:0 overruns:0 carrier:0');
- writeLn(' collisions:0 txqueuelen:1000');
- writeLn(' RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)');
- writeLn(' Interrupt:45');
- writeLn;
- writeLn('lo Link encap:Local Loopback');
- writeLn(' inet addr:127.0.0.1 Mask:255.0.0.0');
- writeLn(' inet6 addr: ::1/128 Scope:Host');
- writeLn(' UP LOOPBACK RUNNING MTU:16436 Metric:1');
- writeLn(' RX packets:676429 errors:0 dropped:0 overruns:0 frame:0');
- writeLn(' TX packets:676429 errors:0 dropped:0 overruns:0 carrier:0');
- writeLn(' collisions:0 txqueuelen:0');
- writeLn(' RX bytes:330843279 (315.5 Mb) TX bytes:330843279 (315.5 Mb)');
- writeLn;
- writeLn('wlan0 Link encap:Ethernet HWaddr ',DireccionMac);
- writeLn(' inet6 addr: fe80::2c0:dfff:fef9:ea73/64 Scope:Link');
- writeLn(' UP BROADCAST MULTICAST MTU:1500 Metric:1');
- writeLn(' RX packets:789658 errors:0 dropped:0 overruns:0 frame:0');
- writeLn(' TX packets:483056 errors:0 dropped:0 overruns:0 carrier:0');
- writeLn(' collisions:0 txqueuelen:1000');
- writeLn(' RX bytes:1079073403 (1029.0 Mb) TX bytes:61078984 (58.2 Mb)');
- writeLn;
- for i:=0 to CantMaxMon do {Leer todos los mon activos}
- begin
- if mono[i]=true then {Muestra por cada mono activo}
- begin
- writeLn('mon',i,' Link encap:UNSPEC HWaddr E0-',DireccionMac,'-00-00-00-00-00-00-00-00-00-00');{Separo en 2 por que la cadena es muy larga y no compila}
- writeLn(' UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1');
- writeLn(' RX packets:136 errors:0 dropped:138 overruns:0 frame:0');
- writeLn(' TX packets:0 errors:0 dropped:0 overruns:0 carrier:0');
- writeLn(' collisions:0 txqueuelen:1000');
- writeLn(' RX bytes:27266 (26.6 Kb) TX bytes:0 (0.0 b)');
- writeLn;
- end;
- end;
- end
- else begin
- writeLn('arguments wrong');
- end;
- end;
- function PrivilegiosNecesarios(Atributos:TAtributos;root:boolean):boolean;{Devuelve true si tiene los privilegios necesarios}
- begin
- if ((ComandoRoot(Atributos,ComandosRoot)=true) and (root=true)) or ComandoNoRoot(Atributos,ComandosNoRoot)=true then
- begin
- PrivilegiosNecesarios:=true;
- end
- else begin
- PrivilegiosNecesarios:=false;
- end;
- end;
- procedure InterfaceCorrecto (Atributos:TAtributos;posInt:integer;mono:Tmono;var NumMon:integer;var correcto:boolean);
- var incorrecto:integer;
- aux:string;
- begin
- correcto:=false;
- if copy(Atributos[PosInt],1,3)='mon' then {Si empieza con mon}
- begin
- aux:= copy(Atributos[PosInt],4,(pos(' ',KeyLog) - 1)); {Desde la primera letra despues de mon hasta el final de la primera palabra}
- val(aux,NumMon,incorrecto); {Almaceno la cadena como integer en NumMon. Si habian letras en la cadena y por lo tanto da error, en incorrecto se almacena la posicion de la letra}
- if (incorrecto=0) and (mono[NumMon]=true) then
- Correcto:=true;
- end;
- if Atributos[PosInt]='wlan0' then
- Correcto:=true;
- end;
- procedure airmonStart (Atributos:TAtributos; var mono:Tmono);
- const
- PosInt=3;
- var
- x,y:integer;
- NumMon:integer;
- MonCorrecto:boolean;
- begin
- InterfaceCorrecto(Atributos,PosInt,mono,NumMon,MonCorrecto);
- if (MonCorrecto=true) and (Atributos[4]='') then {Si la interface existe y no hay un cuarto atributo}
- begin
- if (E925=true) or (E935=true) or (E1112=true) then {Si alguna de las aplicaciones conflictivas sigue on entonces indica que las cierre}
- begin
- writeLn('Found 3 processes that could cause trouble.');
- writeLn('you may want to kill them!');
- writeLn;
- writeLn('PID Name');
- if (E925=true) then {Si no se mató, lo muestra}
- writeLn('925 avahi-daemon');
- if (E935=true) then {Si no se mató, lo muestra}
- writeLn('935 NetworkManager');
- if (E1112=true) then {Si no se mató, lo muestra}
- writeLn('1112 wpa_supplicant');
- writeLn;
- end else
- begin {Si no hay aplicaciones molestando}
- writeLn('Interface Chipset Driver');
- writeLn;
- writeLn('wlan0 Atheros ath9k - [phy0]');
- for y:=0 to CantMaxMon do {Imprimo interfaces existentes}
- begin
- if mono[y]=true then
- writeLn('mon',y,' Atheros ath9k - [phy0]');
- end;
- {Creo la nueva interface----------->}
- x:=0;
- while (x<=CantMaxMon) and (x<>-1) do
- begin
- if mono[x]=false then {Si la interface no está creada}
- begin
- mono[x]:=true;
- writeLn(' (monitor mode enabled on mon',x,')');
- writeLn;
- x:=-1; {Para que salga del bucle al crear la interface} {Pongo -1 para así diferenciar que ese valor significa se creó la interface}
- end else
- x:=x+1; {paso al siguiente elemento}
- end;
- if x=CantMaxMon+1 then {Si la interface no se creó, significa que no habian mas lugares}
- writeLn('Ya has creado demasiadas interfaces. Prueba quitar alguna con: airmon-ng stop <interface>');
- end; {fin else "si no hay aplicaciones molestando"}
- end
- else begin{Interface incorrecta o cuarto atributo existente}
- if atributos[4]='' then
- begin
- writeLn('La interface introducida no existe');
- end else
- writeLn('arguments wrong.');
- end;
- end;
- procedure airmonStop (Atributos:TAtributos; var mono:Tmono);
- const
- PosInt=3;
- var
- NumMon:integer;
- MonCorrecto:boolean;
- x:integer;
- begin
- InterfaceCorrecto(Atributos,PosInt,mono,NumMon,MonCorrecto);
- if (MonCorrecto=true) and (Atributos[4]='') then
- begin
- writeLn('Interface Chipset Driver');
- writeLn;
- writeLn('wlan0 Atheros ath9k - [phy0]');
- for x:=0 to CantMaxMon do
- begin
- if x<>NumMon then
- begin
- if mono[x]=true then
- writeLn('mon',x,' Atheros ath9k - [phy0]');
- end
- else begin {Si es el mon que se queria remover}
- mono[NumMon]:=false;
- writeLn('mon',x,' Atheros ath9k - [phy0] (removed)');
- end;
- end;
- end
- else begin {Si hay un cuarto atributo o si el mon no existe}
- if Atributos[4]<>'' then
- writeLn('arguments wrong.');
- if MonCorrecto=false then
- writeLn('La interface introducida no existe');
- end;
- end;
- procedure JustAirmon (Atributos:TAtributos;mono:Tmono);
- var x:integer;
- begin
- writeLn('Interface Chipset Driver');
- writeLn;
- writeLn('wlan0 Atheros ath9k - [phy0]');
- for x:=0 to CantMaxMon do {Imprimo interfaces existentes}
- begin
- if mono[x]=true then
- writeLn('mon',x,' Atheros ath9k - [phy0]');
- end;
- writeLn;
- end;
- procedure airmon (Atributos:TAtributos; var mono:Tmono);
- begin
- if Atributos[2]='start' then
- airmonStart(Atributos,mono);
- if Atributos[2]='stop' then
- airmonStop(Atributos,mono);
- if Atributos[2]='' then
- JustAirmon(Atributos,mono);
- if (Atributos[2]<>'') and (Atributos[2]<>'stop') and (Atributos[2]<>'start') then
- writeLn('Arguments wrong');
- end;
- function UltimoAtrib (Atributos:TAtributos):integer; {Ultimo atributo ingresado (contando interface como uno)}
- var x:integer;
- begin
- x:=1;
- while x <= CantAtribPerm do {Recorro los atributos}
- begin
- if Atributos[x]='' then {Cuando encuentre el primer vacio}
- begin
- UltimoAtrib:=x-1; {La posicion anterior es la ultima}
- x:=CantAtribPerm; {Salgo del bucle}
- end;
- x:=x+1
- end;
- end;
- function BuscarAtributo(Atributos:TAtributos;Cadena:string):boolean; {Le paso como parametro el atributo que va a buscar en la cadena}
- var
- x:integer;
- begin
- BuscarAtributo:=false; {Inicializo}
- if (Cadena='-w') or (Cadena='--write') then {si busco el write write}
- begin
- for x:=1 to UltimoAtrib(Atributos) do
- begin
- if (Atributos[x]=Cadena) and (x < UltimoAtrib(Atributos)-1) and (Atributos[x-1]<>'-c') and (Atributos[x-1]<>'-channel') then {Antes no puede estar el channel Despues de -w debe estar el nombre del archivo y despues de este la interface}
- BuscarAtributo:=true; {encontró el atributo que buscaba y también tenia el nombre con que se iba a guardar}
- end;
- end;
- if (Cadena='-c') or (Cadena='--channel') then {Si busco el channel}
- begin
- for x:=1 to UltimoAtrib(Atributos) do
- begin
- if (Atributos[x]=Cadena) and (Atributos[x-1]<>'-w') and (Atributos[x-1]<>'-write') and (x < UltimoAtrib(Atributos)-2) then {Antes no puede estar el write y reviso que despues de -w debe estar el nombre del archivo y despues de este la interface}
- BuscarAtributo:=true;
- end;
- end;
- if (Cadena='--bssid') then {Si busco el bssid}
- begin
- for x:=1 to UltimoAtrib(Atributos) do
- begin
- if (Atributos[x]=Cadena) and (Atributos[x-1]<>'-w') and (Atributos[x-1]<>'-write') and (Atributos[x-1]<>'-c') and (Atributos[x-1]<>'-channel') then {Si lo que le sigue es una mac y antes no tiene al write (ya que lo tomaria como el nombre del archivo a guardar)}
- BuscarAtributo:=true;
- end;
- end;
- end;
- function AtributosCorrectos(Atributos:TAtributos; AtributosAirodump:TAtributosAirodump):boolean; {Solo sirve para el coamando airodump, lo que hace es revisar que todos los atributos ingresados sean correctos}
- var x,y:integer;
- begin
- x:=2;
- y:=1;
- AtributosCorrectos:=true; {Inicializo}
- while (x <= UltimoAtrib(Atributos)-1) and (AtributosCorrectos=true) do {Si encuentra un atributo falso sale sin revisar los que siguen}
- begin
- AtributosCorrectos:=false; {Inicializo por cada vez que se repite el bucle}
- y:=1;
- while y<=CantAtribAirod do
- begin
- if Atributos[x]=AtributosAirodump[y] then {Si no encuentra un atributo verdadero se va a quedar en false y va a salir del bucle}
- begin
- {Me fijo que no sea anulado por un comando anterior}
- if (((Atributos[x]='-w') or (Atributos[x]='--write')) and (Atributos[x-1]<>'-c') and (Atributos[x-1]<>'--channel') and (Atributos[x-1]<>'--bssid')) or (((Atributos[x]='-c') or (Atributos[x]='--channel')) and (Atributos[x-1]<>'-w') and (Atributos[x-1]<>'--write') and (Atributos[x-1]<>'--bssid')) or ((Atributos[x]='--bssid') and (Atributos[x-1]<>'-c') and (Atributos[x-1]<>'--channel') and (Atributos[x-1]<>'-w') and (Atributos[x-1]<>'--write')) then
- begin {Si es cualquiera de estos atrib salteo el que les sigue por que es parametro del anterior}
- if UltimoAtrib(Atributos) >= x+2 then {Me fijo que tenga lugar para la interface y el valor del atributo}
- begin
- x:=x+2;
- y:=0;
- AtributosCorrectos:=true;
- end;
- end;
- if Atributos[x]='-ivs' then
- AtributosCorrectos:=true;
- end;
- y:=y+1;
- end;
- x:=x+1;
- end;
- end;
- function CtrlC:boolean;
- begin
- CtrlC:=false; {Inicializo}
- if keypressed=true then
- if readKey=#3 then {#3 = ctrl + C}
- CtrlC:=true;
- end;
- procedure BuscarRedes (var Beacons:integer; var Data:integer);
- var
- S:integer;
- Hr,Min,Seg,Seg100:word;
- PWR:integer;
- DataAux:integer;
- begin
- {Inicializo en 0 segundos, capturas, beacons, etc}
- S:=0; Beacons:=0; DataAux:=0; Data:=0;
- PWR:=80; {Inicializo PWR en 80}
- repeat
- ClrScr;
- GetTime (Hr,Min,Seg,Seg100);{Tomo la hora local y la coloco en esas variables}
- writeLn(' CH 6 ][ Elapsed: ',S,' s ][',Hr,':',Min,':',Seg,']');
- S:=S+1; {Aumento en 1 los segundos}
- writeLn;
- writeLn('BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID');
- writeLn;
- writeLn(ApMac,' -',PWR,' ',Beacons,' ',Data,' ',DataAux,' ',ApCh,' 54e. WEP WEP TP-LINK-AFCFCA');
- writeLn;
- writeLn('BSSID STATION PWR Rate Lost Packets Probes');
- writeLn('B0:48:7A:AF:CF:CA C8:AA:21:D7:AA:97 ',PWR,' 3 0 ',Beacons,' 11 ');
- writeLn;
- repeat
- PWR:=random(101);
- until PWR>85;
- Beacons:=Beacons + random(6);
- DataAux:=random(30);
- Data:=Data + DataAux;
- delay(1000); {Demoro 1000 milisegundos la ejecucio del programa}
- until CtrlC=true;
- end;
- procedure SinRedes;
- var
- S:integer;
- Hr,Min,Seg,Seg100:word;
- begin
- {Inicializo en 0 segundos, capturas, beacons, etc}
- S:=0;
- repeat
- ClrScr;
- GetTime (Hr,Min,Seg,Seg100);{Tomo la hora local y la coloco en esas variables}
- writeLn(' CH 6 ][ Elapsed: ',S,' s ][',Hr,':',Min,':',Seg,']');
- S:=S+1; {Aumento en 1 los segundos}
- writeLn;
- writeLn('BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID');
- writeLn;
- writeLn;
- writeLn('BSSID STATION PWR Rate Lost Packets Probes');
- writeLn;
- delay(1000); {Demoro 1000 milisegundos la ejecucio del programa}
- until CtrlC=true;
- end;
- function CanalIntro (Atributos:TAtributos):string;
- var
- x,aux:integer;
- begin
- for x:=1 to UltimoAtrib(Atributos) do
- begin
- if (Atributos[x]='-c') or (Atributos[x]='--channel') then
- aux:=x+1;
- end;
- CanalIntro:=Atributos[aux];
- end;
- function BssidIntro (Atributos:TAtributos):string;
- var
- x,aux:integer;
- begin
- for x:=1 to UltimoAtrib(Atributos) do
- begin
- if Atributos[x]='--bssid' then
- aux:=x+1;
- end;
- BssidIntro:=Atributos[aux];
- end;
- function NombreEscritura (Atributos:TAtributos):string;
- var
- x:integer;
- begin
- x:=1;
- while (x<UltimoAtrib(Atributos)) and (Atributos[x]<>'-w') and (Atributos[x]<>'--write') do
- begin
- x:=x+1
- end;
- if x<UltimoAtrib(Atributos) then
- begin
- if (Atributos[x+1]='-c') or (Atributos[x+1]='--channel') then
- begin
- NombreEscritura:='';
- end else
- NombreEscritura:=Atributos[x+1];
- end else
- writeLn('Ha habido un problema durante la ejecucion del programa, porfavor pongase en contaco con el servicio tecnico (osea yo XD) (osea Facu de Hackxcrack) jaja');
- end;
- procedure airodump (Atributos:TAtributos;var Beacons:integer;var Data:integer; E925,E935,E1112:boolean; var archivoEscritura:string);
- var
- NumMon:integer;
- MonCorrecto:boolean;
- escritura,canal,bssid:boolean;
- begin
- escritura:=false; {Inicializo}
- canal:=false;
- bssid:=false;
- InterfaceCorrecto(Atributos,UltimoAtrib(Atributos),mono,NumMon,MonCorrecto); {Lo busco en el ultimo atributo}
- if AtributosCorrectos(Atributos,AtributosAirodump)=true then {Atributos correctos}
- begin
- if MonCorrecto=true then {Interface Correcta}
- begin
- if (E925=false) and (E935=false) and (E1112=false) then {Aplicaciones cerradas}
- begin
- {Convierto en variable para no desperdiciar recursos llamando tantas veces la funcion}
- if (BuscarAtributo (Atributos,'-w')=true) or (BuscarAtributo (Atributos,'--write')=true) then
- escritura:=true;
- if (BuscarAtributo (Atributos,'-c')=true) or (BuscarAtributo (Atributos,'--channel')=true) then
- canal:=true;
- if (BuscarAtributo (Atributos,'--bssid')=true) then
- bssid:=true;
- {Si no tiene ninguno de los atributos (exeptuando -ivs que no importa si está o nó, por que no hace nada en la ejecucion del algoritmo}
- if (escritura=false) and (canal=false) and (bssid=false) then
- begin
- BuscarRedes(Beacons,Data);
- Beacons:=0; Data:=0; {Reinicio por que -w está deshabilitado}
- end;
- if (escritura=true) and (canal=false) and (bssid=false) then
- begin
- archivoEscritura:=NombreEscritura(Atributos);
- writeLn(archivoEscritura);
- if archivoEscritura<>'' then
- begin
- BuscarRedes(Beacons,Data);
- end else
- writeLn('Nombre de archivo para escritura invalido');
- {No reinicio por que -w está habilitado}
- end;
- if (escritura=false) and (canal=true) and (bssid=false) then
- begin
- if CanalIntro(Atributos)=ApCh then
- begin
- BuscarRedes(Beacons,Data);
- Beacons:=0; Data:=0; {Reinicio por que -w está deshabilitado}
- end else
- begin
- SinRedes;
- end;
- end;
- if (escritura=false) and (canal=false) and (bssid=true) then
- begin
- if BssidIntro(Atributos)=ApMac then
- begin
- BuscarRedes(Beacons,Data);
- Beacons:=0; Data:=0; {Reinicio por que -w está deshabilitado}
- end else
- begin
- SinRedes;
- end;
- end;
- if (escritura=true) and (canal=true) and (bssid=false) then
- begin
- archivoEscritura:=NombreEscritura(Atributos);
- if archivoEscritura<>'' then
- begin
- if CanalIntro(Atributos)=ApCh then
- begin
- BuscarRedes(Beacons,Data);
- {No reinicio por que -w está habilitado}
- end else
- SinRedes;
- end else
- writeLn('Nombre de archivo para escritura invalido');
- end;
- if (escritura=true) and (canal=false) and (bssid=true) then
- begin
- archivoEscritura:=NombreEscritura(Atributos);
- if archivoEscritura<>'' then
- begin
- if BssidIntro(Atributos)=ApMac then
- begin
- BuscarRedes(Beacons,Data);
- {No reinicio por que -w está habilitado}
- end else
- SinRedes;
- end else
- writeLn('Nombre de archivo para escritura invalido');
- end;
- if (escritura=false) and (canal=true) and (bssid=true) then
- begin
- if (BssidIntro(Atributos)=ApMac) and (CanalIntro(Atributos)=ApCh) then
- begin
- BuscarRedes(Beacons,Data);
- Beacons:=0; Data:=0; {Reinicio por que -w está deshabilitado}
- end else
- begin
- SinRedes;
- end;
- end;
- if (escritura=true) and (canal=true) and (bssid=true) then
- begin
- archivoEscritura:=NombreEscritura(Atributos);
- if archivoEscritura<>'' then
- begin
- if (BssidIntro(Atributos)=ApMac) and (CanalIntro(Atributos)=ApCh) then
- begin
- BuscarRedes(Beacons,Data);
- {No Reinicio por que -w está habilitado}
- end else
- SinRedes;
- end else
- writeLn('Nombre de archivo para escritura invalido');
- end;
- end else
- begin {Aplicaciones no cerradas}
- writeLn('failed: Device or resource busy');
- writeLn('3 processes could cause trouble.');
- writeLn('you may want to kill them!');
- writeLn;
- writeLn('PID Name');
- if (E925=true) then {Si no se mató, lo muestra}
- writeLn('925 avahi-daemon');
- if (E935=true) then {Si no se mató, lo muestra}
- writeLn('935 NetworkManager');
- if (E1112=true) then {Si no se mató, lo muestra}
- writeLn('1112 wpa_supplicant');
- writeLn;
- end;
- end else {Interface incorrecta}
- begin
- if UltimoAtrib(Atributos) <> 1 then {Si hay un segundo atributo, por lo tanto escribó una interface (aunque incorrecta)}
- begin
- writeLn('La interface introducida no existe');
- end else {Si no hay un segundo atributo, solo el airodump-ng}
- begin
- writeLn;
- writeLn('usage: airodump-ng <options> <interface>');
- writeLn;
- writeLn('Options:');
- writeLn(' --ivs : Save only captured IVs');
- writeLn(' --write <prefix> : Dump file prefix');
- writeLn(' -w : same as --write');
- writeLn;
- writeLn('Filter options:');
- writeLn(' --bssid <bssid> : Filter APs by BSSID');
- writeLn(' --channel <channels>: Capture on specific channels');
- writeLn(' -c : same as --channel');
- end;
- end;
- end else {Atributos incorrectos}
- writeLn('Arguments wrong.');
- end;
- function ExaRandom:string;
- var
- aux:integer;
- begin
- aux:=random(16);
- case aux of
- 0 : ExaRandom:='0';
- 1 : ExaRandom:='1';
- 2 : ExaRandom:='2';
- 3 : ExaRandom:='3';
- 4 : ExaRandom:='4';
- 5 : ExaRandom:='5';
- 6 : ExaRandom:='6';
- 7 : ExaRandom:='7';
- 8 : ExaRandom:='8';
- 9 : ExaRandom:='9';
- 10: ExaRandom:='A';
- 11: ExaRandom:='B';
- 12: ExaRandom:='C';
- 13: ExaRandom:='D';
- 14: ExaRandom:='E';
- 15: ExaRandom:='F';
- end;
- end;
- function MemoRandom:string;
- var
- aux:integer;
- begin
- aux:=random(6);
- case aux of
- 0 : MemoRandom:='256';
- 1 : MemoRandom:='512';
- 2 : MemoRandom:='1024';
- 3 : MemoRandom:='696';
- 4 : MemoRandom:='1280';
- 5 : MemoRandom:='768';
- end;
- end;
- procedure aircrackConData(Data:integer);
- var
- S:integer;
- DataReaded:integer;
- begin
- {Inicializo}
- DataReaded:=0;
- S:=0;
- {Primera Parte}
- ClrScr;
- writeLn('Opening ',archivoEscritura,'.cap');
- writeLn('Reading packets, please wait...');
- delay(10000);
- {Segunda Parte}
- ClrScr;
- writeLn('Opening ',archivoEscritura,'.cap');
- writeLn('Read ',Data,' packets.');
- writeLn;
- writeLn(' # BSSID ESSID Encryption');
- writeLn;
- writeLn(' 1 ',ApMac,' TP-LINK-AFCFCA WEP (',Data,' IVs)');
- writeLn;
- writeLn('Choosing first network as target.');
- writeLn;
- writeLn('Opening ',archivoEscritura,'.cap');
- writeLn('Reading packets, please wait...');
- {Tercera Parte}
- repeat
- ClrScr;
- writeLn(' Aircrack-ng 1.1');
- writeLn;
- writeLn(' [',S,' s] Tested ',DataReaded,' keys (got ',Data,' IVs)');
- writeLn;
- writeLn(' KB depth byte(vote)');
- writeLn(' 0 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 1 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 2 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 3 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 4 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 5 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 6 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 7 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 8 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 9 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 10 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 11 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 12 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- DataReaded:=DataReaded + random (5000);
- delay(1000);
- S:=S+1;
- until (DataReaded>=Data) or (CtrlC);
- if DataReaded>=Data then
- begin
- {Cuarta Parte}
- ClrScr;
- writeLn(' Aircrack-ng 1.1');
- writeLn;
- writeLn(' [',S,' s] Tested ',DataReaded,' keys (got ',Data,' IVs)');
- writeLn;
- writeLn(' KB depth byte(vote)');
- writeLn(' 0 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 1 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 2 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 3 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 4 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' KEY FOUND! [ 46:35:33:33:35 ] (ASCII: ThisIsThePasword )');
- writeLn(' Decrypted correctly: 100%');
- end;
- end;
- procedure aircrackSinData(Data:integer);
- var
- S:integer;
- DataReaded:integer;
- begin
- {Inicializo}
- DataReaded:=0;
- S:=0;
- {Primera Parte}
- ClrScr;
- writeLn('Opening ',archivoEscritura,'.cap');
- writeLn('Reading packets, please wait...');
- delay(10000);
- {Segunda Parte}
- ClrScr;
- writeLn('Opening ',archivoEscritura,'.cap');
- writeLn('Read ',Data,' packets.');
- writeLn;
- writeLn(' # BSSID ESSID Encryption');
- writeLn;
- writeLn(' 1 ',ApMac,' TP-LINK-AFCFCA WEP (',Data,' IVs)');
- writeLn;
- writeLn('Choosing first network as target.');
- writeLn;
- writeLn('Opening ',archivoEscritura,'.cap');
- writeLn('Reading packets, please wait...');
- {Tercera Parte}
- repeat
- ClrScr;
- writeLn(' Aircrack-ng 1.1');
- writeLn;
- writeLn(' [',S,' s] Tested ',DataReaded,' keys (got ',Data,' IVs)');
- writeLn;
- writeLn(' KB depth byte(vote)');
- writeLn(' 0 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 1 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 2 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 3 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 4 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 5 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 6 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 7 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 8 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 9 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 10 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 11 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 12 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- DataReaded:=DataReaded + random (5000);
- delay(1000);
- S:=S+1;
- until (DataReaded>=Data) or (CtrlC);
- {Cuarta Parte}
- ClrScr;
- writeLn(' Aircrack-ng 1.1');
- writeLn;
- writeLn(' [',S,' s] Tested ',DataReaded,' keys (got ',Data,' IVs)');
- writeLn;
- writeLn(' KB depth byte(vote)');
- writeLn(' 0 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 1 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 2 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 3 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' 4 ',random(2),'/ ',random(3),' ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,') ',ExaRandom,ExaRandom,'( ',MemoRandom,')');
- writeLn(' Failed. Next try with 20000 IVs.');
- end;
- procedure help;
- begin
- writeLn;
- writeLn('Comandos disponibles');
- writeLn('explicacion : Despliega una expliacion del reto');
- writeLn('help : Despliega este mensaje');
- writeLn('clear : Limpia la pantalla');
- writeLn('kill : Cierra un programa');
- writeLn('airmon-ng : Colocar tarjeta en modo monitor');
- writeLn('airodump-ng : Programa para capturar paquetes transmitidos a travez del protocolo 802.1');
- writeLn('aircrack-ng : Crackea pasword de los paquetes capturados');
- writeLn('iwconfig : Muestra información de las interfaces de red disponibles');
- writeLn('ifconfig : Parecido a iwconfig');
- writeLn;
- end;
- procedure aircrack (Atributos:TAtributos;archivoEscritura:string;Data:integer);
- begin
- if Atributos[2]=archivoEscritura then
- begin
- if Atributos[3]='' then
- begin
- if Data >= 20000 then
- aircrackConData(Data);
- if Data < 20000 then
- aircrackSinData(Data);
- end else {Si hay tercer atributo}
- writeLn('Arguments wrong');
- end else {Si introdujo mal el nombre del archivo}
- writeLn('Ruta o archivo inexistente');
- end;
- begin
- Explicacion;
- {--------------Comienzo inicializacion--------------}
- for y:=0 to CantMaxMon do {Arreglo de interfaces}
- begin
- mono[y]:=false;
- end;
- E925:=true; E935:=true; E1112:=true; {Inicializo procesos que molestan y deben ser cerrados}
- root:=false;
- {-----------------Fin inicializacion-----------------}
- repeat
- {--------------Comienzo inicializacion--------------}
- for i:=1 to CantAtribPerm do {Arreglo atributos vacio}
- begin
- Atributos[i]:='';
- end;
- {-----------------Fin inicializacion-----------------}
- prompt (root);
- CapturarAtributos(KeyLog,Atributos);
- if ComandoCorrecto(Atributos,comandos)=true then {Si el comando es correcto}
- begin
- if PrivilegiosNecesarios(Atributos,root)=true then {Si tiene privilegios para ese comando}
- begin
- if Atributos[1]='su' then
- su (root,Atributos);
- if Atributos[1]='clear' then
- clear(Atributos);
- if Atributos[1]='kill' then
- kill (Atributos,E925,E935,E1112);
- if Atributos[1]='exit' then
- exit (Atributos,root,salir);
- if Atributos[1]='iwconfig' then
- iwconfig (Atributos,mono);
- if Atributos[1]='ifconfig' then
- ifconfig (Atributos,mono);
- if Atributos[1]='airmon-ng' then
- airmon(Atributos,mono);
- if Atributos[1]='airodump-ng' then
- airodump(Atributos,Beacons,Data,E925,E935,E1112,archivoEscritura);
- if Atributos[1]='aircrack-ng' then
- aircrack(Atributos,archivoEscritura,Data);
- if Atributos[1]='help' then
- help;
- if Atributos[1]='explicacion' then
- Explicacion;
- end
- else {Si no tiene privilegios necesarios}
- writeLn('Absolute path to ',Atributos[1],' is /usr/sbin/',Atributos[1],', so running it may require superuser privileges (eg. root).');
- end
- else {Si el mensaje introducido fue incorrecto}
- writeLn(Atributos[1],' is not a typo you can use command help to lookup the commands available');
- until salir=true;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement