|
91
|
Programación / Scripting / Re: [Batch] Tutorial de Polimetria - by Smart
|
en: 16 Noviembre 2008, 00:59 am
|
Luego lo que se logro después de todo este código es mostrar la expansión de variable %a:~0,%f%% en la que el valor de %f% aumentando en cada bucle. Y a partir de esto generar nuevas líneas de código que se agregan al final del archivo cambiando su forma, ósea polimórfico. El código se optimiza aun mas usando CALL, luego el código se vuelve recursivo y no cambia su contenido por lo que no precisa de un archivo temporal en el cual respaldarse, y realiza el bucle de manera que en cada iteración aumenta el valor de la variable y muestra la expansión de manera correcta. Función: ECHODYN:echodyn REM Funcion Echo Dinamico REM Coded by Smart set texto=%* set num=1 :dyn2 call set var1=%%texto:~0,%num%%% if "%var1%"=="%texto%" set num=0 cls echo %var1% ping -n 0,3 0.0.0.0 > nul if %num%==0 (goto :eof) set /a num=%num%+1 goto dyn2
El cual puede ser guardado como ECHODYN.BAT en system32 y ser usado como un comando mas el cual se puede llamar desde consola o dentro de un código y al cual se le debe pasar como parámetro el mensaje a mostrar y luego retornar al flujo del programa gracias al GOTO :EOF, pero de igual forma puede modificarse un poco para que sea el usuario quien introduzca una frase y sea mostrada en pantalla. @echo off Title Echo Dinamico REM Coded by :: SmartGenius :: :echodyn Cls Echo. set /p texto="Frase >" set num=1 :dyn2 call set var1=%%texto:~0,%num%%% if "%var1%"=="%texto%" set num=0 cls echo %var1% ping -n 0,3 0.0.0.0 > nul if %num%==0 (goto :fin) set /a num=%num%+1 goto dyn2 :fin pause exit
Con el uso de CALL optimizamos el código al máximo y permitimos realizar funciones que no eran posibles realizar o que requerirían de muchas líneas de código. Miremos el Siguiente Ejemplo: Código para mostrar que numero de letra es la introducida: @echo off mode con cols=28 lines=12 title Abecedario REM Coded by ::SmartGenius:: color 0a cls
:ini REM Inicializamos Variables set /a num=0
:main REM Pedimos un Dato al Usuario echo. echo Introduzca una Letra set /p let=">> " for %%a in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do (call :comp %%a) echo. echo No ha introducido echo una letra del echo Abecedario echo. pause exit
:comp REM Comparamos los Datos set /a num=%num%+1 if /i not %1==%let% (goto :eof) echo. echo La Letra %let% es echo la numero %num% echo. echo Continuar... pause >nul exit
Ahora realizaremos la función inversa, encargada de mostrar la letra de acuerdo al numero introducido, puede hacerse de igual forma usando el FOR, pero usaremos la polimetría para hacerlo mas corto. @echo off mode con cols=28 lines=12 title Abecedario REM Coded by ::SmartGenius:: color 0a cls
:ini REM Definimos una Variable Global set dic=_ABCDEFGHIJKLMNOPQRSTUVWXYZ
:main REM Pedimos un Dato al Usuario echo. echo Introduzca un Numero set /p num=">> " REM Usamos Call para usar la Polimetrica call set let=%%dic:~%num%,1%% REM Mostramos el Resultado echo. echo La %num% letra del Abecedario echo corresponde a la letra %let% echo. echo Continuar... pause >nul exit
En este último hemos definido una sola Variable llamada %DIC% cuyo contenido son todas las letras del abecedario y hemos realizado la expansión de la variable usando el CALL que nos permite introducir la variable %NUM% dentro de la expansión de la variable %DIC% y nos permite extraer el carácter correspondiente al numero introducido, en este caso %dic:~10,1%. Esto que hemos hecho nos da la posibilidad de trabajar con algo que es llamado ARRAYS o Vectores, el cual es una variable que contiene múltiples variables y cuyo contenido es extraído mediante el índice, empezando por el índice 0 al igual que la expansión de cualquier variable normal cuyo primer valor a extraer es también el 0. Pueden hacerse múltiples expansiones dentro de otras expansiones y hacer el código mas aleatorio, hacerlo mas difícil de leer usarlo como método de protección o para codes especiales como los de los Crackmes. Miremos por ultimo un ejemplo más avanzado en el que se hacen múltiples extracciones y se hace uso de polimetría con CALL para hacer el código mas corto. @echo off mode con cols=25 lines=10 title CrackMe 6 REM Coded by ::SmartGenius:: color 0a
:ini REM Definimos unas Variables Globales set dic= abcdefghijklmnopqrstuvwxyz set num=9876543210
:main cls REM Usamos la Expansion de Variable simple REM para crear una parte de codigo y mostrar REM un mensaje... %dic:~5,1%%dic:~3,1%%dic:~8,1%%dic:~15,1%. %dic:~5,1%%dic:~3,1%%dic:~8,1%%dic:~15,1%%dic:~0,1%Introduzca el Password %dic:~19,1%%dic:~5,1%%dic:~20,1%%dic:~0,1%/%dic:~16,1%%dic:~0,1%%dic:~22,1%%dic:~1,1%%dic:~18,1%=">> " REM Comprobamos que el Usuario no dejo el campo vacio... if not defined var goto main REM Usamos la Polimetrica junto con CALL para definir la Pass call set pass=%%%%dic:~%num:~8,1%%num:~0,1%,%num:~8,1%%%%%%%%%dic:~1%num:~6,1%,%num:~8,1%%% %%a%%%%dic:~%num:~8,1%%num:~1,1%,1%%%%%%%%dic:~%num:~7,1%0,%num:~8,1%%%%% REM Volvemos a usar CALL para eliminar los caracteres % sobrantes REM y asi extraer el caracter deseado.... call set pass=%pass:^%=% REM Comprobamos que la Pass introducida sea la Correcta echo. if /i %var%==%pass% (echo Muy Bien ^^_^^) else (echo No Acertaste o_0) %dic:~5,1%%dic:~3,1%%dic:~8,1%%dic:~15,1%. echo Salir pause >nul exit
Primero se realizan unas expansiones simples de la variable %DIC% las cuales se encargan de mostrar el ECHO, luego de preguntar por la Variable la usuario se procede a definir la Variable %PASS% resultado de la extracción de caracteres de la variable %DIC% mediante múltiples expansiones de variable dentro de otras expansiones usando la polimetría. Ej. %%%%dic:~ %num:~8,1%%num:~0,1%, %num:~8,1%%%%% %num:~8,1% = 1%num:~0,1% = 9%num:~8,1% = 1%%%%dic:~ 19, 1%%%% Para luego hacer una sustitución de caracteres en la que se eliminan los %% sobrantes, pero lo hacemos mediante CALL para que se muestre el valor de la extracción anterior, de lo contrario no funcionaria. call set pass=%pass:^%=%Aunque esto tambien puede realizarse haciendo un doble CALL a la primera polimetrica. Con lo que deducimos que el primer carácter del password es la letra "S" sin importar que este en mayúscula o minúscula pues al compararse se usa el modificador /i en el IF que permite esa flexibilidad. La otra forma como decia era usando SETLOCAL ENABLDELAYED EXPANSION, tal como lo hago en este ejemplo: @echo off title Efecto de Marquesina REM Coded by :: SmartGenius :: SETLOCAL ENABLEDELAYEDEXPANSION :ini set /p texto="Texto a Mostrar: > " if not defined texto goto ini set v=%texto% call :string %v% REM Obtenemos el Tamaño de Pantalla for /f "tokens=2" %%a in ('mode con^|find /i "col"') do (set /a l=%%a-%length%) REM Creamos una Variable con L espacios vacios for /l %%b in (1,1,%l%) do (call :new %%b) REM Mostramos la Cadena andando hacia la derecha for /l %%c in (1,1,%l%) do (call :show %%c) REM Mostramos la Cadena andando hacia la izquierda for /l %%d in (%l%,-1,1) do (call :show %%d) pause exit
:new set r= %r% goto :eof
:show cls set lim=%1 echo !r:~0,%lim%!%texto% ping -n 1 >nul goto :eof
:string set /a length=%length%+1 set v=%v:~1% if "%v%"=="" goto :eof goto string
Espero hayan entendido en concepto y lo tengan lo mas claro posible, pues les ayudara a mejorar en sus códigos. Saludos. =D
|
|
|
92
|
Programación / Scripting / [Batch] Tutorial de Polimetria - by Smart
|
en: 16 Noviembre 2008, 00:57 am
|
Me he tomado la molestia d emodificar y organizar el Tutorial de Fakher, aparte de añadirle algo d einfo...espero no le importe Técnicamente se definiría a la polimétrica como un código capaz de auto manipularse para lograr obtener valores reales de una variable e integrarlos en otras... La polimétrica consiste en usar variables dentro de variables y obtener un código que puede ser recursivo y con aplicación al polimorfismo, puede hacerse uso de las expansiones de variables para obtener códigos optimizados de programas que normalmente llevarían muchas líneas de código. Tomemos como ejemplo un código que nos Genera una Función llamada "Echo Dinámico" o "Efecto Maquina de Escribir". Ej. set a=%a:~0,%f%% El problema reside en que la Consola de Comandos (CMD) lee lo que se encuentre entre porcentajes como una variable, por lo que en el ejemplo anterior le pedimos al programa que defina una variable que sea igual al valor que tenga la variable %a:~0,%(cuyo valor es 0..."" nulo) que tenga una cadena con el contenido "f" y otra variable que se llame %% (cuyo valor también es "" nulo) por lo tanto el valor de la variable a seria "f". Entonces la solución seria definir unas "subvariables" y luego juntarlas en la variable final, o haciendo uso de varias símbolos de porcentajes (%) recurriendo a la redirección a archivos externos temporales o uso de CALL. Tambien tenemos otras formas usando SETLOCAL ENABLEDELAYEDEXPANSION pero eso lo explicaremos mas adelante... @echo off REM Echo Dinamico by Fhaker copy %0 tempcode.txt cls set /p a=Echo Dinamico: set b="" goto start :start if %a%==%b% type tempcode.txt >%0 && goto control set /a f=%f%+1 if %f%==1 echo "" >>%0 set h=%a:~0, set l=%h%%f%%o% echo :menu%f% >>%0 echo set b=%%%l%%% >>%0 echo goto start >>%0 goto menu%f% :control set k=%f% set /a kk=%f%+2 set f=0 goto menu :menu set /a f=%f%+1 if %f%==%kk% pause && type tempcode.txt >%0 && goto fin set h=%a:~0, set l=%h%%f%%o% echo :menu%f% >>%0 echo cls >>%0 echo set b=%%%l%%% >>%0 if not %f%==1 echo echo %b%_ >>%0 echo goto menu >>%0 ping -n 1,5 127.0.0.1 >nul goto menu%f% :fin del /f /q tempcode.txt exit
Lo que hace esto es definir una variable que contenga la cadena %a:~0, que como podrán ver tiene un porcentaje adelante y por lo cual al no cerrarse la supuesta variable el porcentaje queda en la cadena... Después lo que se hace es unir en la variable %l% la variable %h% que es la recién creada, la variable %f% que es la que contiene el numero de bucle, de menú y de letra que el programa va a mostrar usando la expansión de la variable %a%, y la variable %o% que no tiene nada. Entonces el Código realiza lo siguiente: 1. Se copia así mismo en un Archivo Temporal (Respaldo). 2. Se pide al Usuario que Introduzca una Dato. 3. Se hacen las comprobaciones para cuando el Dato ha sido mostrado en su totalidad. 4. Se definen las Variables antes mencionadas y luego se hace la expansión. 5. Se genera una nueva parte de código que es introducida al Final del archivo actual. 6. Se va mostrando el Dato carácter por carácter y una vez llegado al último finaliza el bucle y termina el código. 7. Se restablece el archivo original desde el Respaldo creado al Inicio. Este Código puede optimizarse aun más: @echo off REM Echo Dinamico by Fhaker REM Optimized by ::SmartGenius:: copy %0 tempcode.txt cls set /p a=Echo Dinamico: set b= goto start :start set /a f=%f%+1 if %f%==1 echo ::Inicio Code Generado >>%0 set h=%a:~0, set l=%h%%f%%o% echo :menu%f% >>%0 echo cls >>%0 echo set b=%%%l%%% >>%0 echo echo %b%_ >>%0 echo if "%b%"=="%a% " goto fin >>%0 echo goto start >>%0 ping -n 2 0.0.0.0 >nul goto menu%f%
:fin pause exit
Este último realiza la misma acción pero se eliminaron unas estructuras de control innecesarias y mejora el código. Haciendo la prueba al código, lo guardamos como DYNECHO.BAT, lo ejecutamos e introducimos como dato "Hola", se muestra el efecto de escritura carácter por carácter" o "Maquina de Escribir", una vez que finaliza el código se procede a mirar el código fuente de DYNECHO.BAT y veremos el cambio. continua....
|
|
|
93
|
Programación / Scripting / [Batch] Algoritmo de Numeros Primos
|
en: 16 Noviembre 2008, 00:53 am
|
Codigos para trabajar con numeros primos, usndo las matematicas euclidianas, estos codes son utiles para saber cuando un numero es primo, el n-esimo termino de la sucesion de primos, el primo mas cercano de un numero y los mas importantes que son la descomposicion de cualquier numero en sus factores primos y la simplificacion de expresiones... Empecemos pues: 1. Implemente el método "call:EsPrimo valor" que devuelve true o false en dependiendo de si el valor de la variable a es un número primo o no. Intente hacerlo de la manera más eficiente posible. @echo off REM Comprueba si un Numero es Primo REM Coded by :: SmartGenius :: color 0a if ["%1"]==[""] goto :error
:ini set num=%1 set /a c=%num%*1 if not %c%==%num% goto :error call :cprimo %num% echo %primo% goto :eof
:cprimo set primo=True set /a lim=%1-1 for /l %%a in (2,1,%lim%) do (call :cprimo2 %%a) goto:eof :cprimo2 set /a p=(%num%)%%(%1) if %p%==0 set primo=False goto :eof
:error echo No ha introducido un Valor Numerico echo. pause exit 2. Implemente el método "call:PrimoMasCercano valor" Este método debe devolver el número primo más cercano al valor. @echo off color 0a REM Busca el Numero Primo mas cercano al Valor N REM Coded by :: SmartGenius :: if ["%1"]==[""] goto :error :init set n=%1 set /a c=%n%*1 if not %c%==%n% goto :error call :near %n% echo %near% goto :eof
:near set lim=%1 for /l %%b in (1,1,%lim%) do ( for /f %%c in ('call EsPrimo %%b') do ( if %%c==True set near=%%b )) goto :eof
:error echo No ha introducido un Valor Numerico echo. pause exit 3. Implemente el método "call:TérminoPrimo valor" Este método debe devolver el n-ésimo término de la sucesión de números primos. @echo off color 0a REM Busca El N-esimo valor de la Sucesion de Numeros Primos REM Coded by :: SmartGenius :: if ["%1"]==[""] goto :error :init set t=%1 set /a c=%t%*1 if not %c%==%t% goto :error call :ter %t% echo %ene% goto :eof
:ter set lim=%1 set l=1 for /l %%b in (1,1,9999) do ( for /f %%c in ('call EsPrimo %%b') do ( if defined ene goto :eof &goto :eof if %%c==True call :val %%b )) goto :eof
:val if %l%==%lim% set ene=%1 set /a l=%l%+1 goto :eof
:error echo No ha introducido un Valor Numerico echo. pause exit 4. Implemente el método "call:DescomposiciónPrimos valor" Este método debe escribir en la consola la descomposición en números primos del valor. @echo off color 0a REM Descomposicion en Factores Primos REM Coded by :: SmartGenius :: if ["%1"]==[""] goto :error setlocal :ini set op= set num=%1 set /a c=%num%*1 if not %c%==%num% goto :error call :func1 %num% :fin echo %op:~1% endlocal goto :eof
:func1 set lim=%1 for /f %%z in ('call EsPrimo %lim%') do (if %%z==True set op=*1*%lim% & goto :eof) for /l %%n in (2,1,%lim%) do ( for /f %%c in ('call EsPrimo %%n') do ( if %%c==True call :func2 %lim% %%n )) goto :eof
:func2 set val=%1 :func3 set var=%op% set /a c=%var:~1% if %c% GEQ %lim% goto :eof set /a mod=(%val%)%%(%2) if %mod%==0 set op=%op%*%2& set /a val=(%val%)/(%2)&goto :func3 goto :eof
:error echo No ha introducido un Valor Numerico echo. pause exit 5. Implemente el metodo "call:PowerPrimos cadena" Teniendo una cadena como "2*2*3*3*23" que es la descomposicion de "828" en numeros primos devolver una cadena que eleve los valores que se repiten. Para este caso el metodo debe devolver "2^2*3^2*23". @echo off color 0a REM Simplificacion de Cadenas REM Coded by :: SmartGenius :: setlocal enabledelayedexpansion if ["%1"]==[""] goto :error :init set cadena=%1 call :string %cadena% :func for /l %%f in (1,1,%l%) do (call :func2 %%f) for /l %%g in (1,1,%l%) do (call :func3 %%g) goto :next :func2 set lim=%1 for /f "tokens=%lim% delims=*" %%k in ("%cadena%") do (call :add %%k) goto :eof :func3 set lim=%1 for /f "tokens=%lim% delims=*" %%j in ("%cadena%") do (call :var %%j) goto:eof :next set oper=%oper:l1=% set oper=%oper:l=^^^^% echo %oper:~1% goto :eof
:var set t1=%1 if not defined t%t1% call :var2 %t1% goto:eof :var2 call set var=!p%1!l!n%1! set t%1=%1 set oper=%oper%*%var% goto :eof
:add set /a n%1+=1 set p%1=%1 goto:eof
:string set texto=%1 :string2 if not "%texto:~0,1%"=="" (set /a l=%l%+1) set texto=%texto:~1% if "%texto%"=="" goto :eof goto :string2
Todos estos codigos los podemos usar desde la consola... o desde un codigo principal @echo off mode con cols=40 lines=20 title Algoritmo de Numeros Primos color 0a REM Calculo de Funciones y Algoritmos con Numeros Primos REM Matematicas Euclidianas REM Coded by :: SmartGenius ::
:main set opc= cls echo. echo Bienvenido al Programa echo. echo Escoja un Opcion [X] Salir echo. echo 1. Comprobar si un Numero es Primo echo 2. Primo mas cercano de un Numero (N) echo 3. Obtener el N-esimo termino Primo echo 4. Descomponer un Numero echo 5. Mostrar Descomposicion Recursiva echo. set /p opc="Opcion >> " if not defined opc goto main if /i %opc%==x exit if %opc%==5 call :func5 if %opc% GTR 5 goto main set /p number="Introduzca el Dato : " if not defined number goto main set /a b=%number%*1 if not %b%==%number% goto :error if %opc%==1 call :func1 %number% if %opc%==2 call :func2 %number% if %opc%==3 call :func3 %number% if %opc%==4 call :func4 %number% pause goto :main
:func1 set esprimo=NO set valor=%1 for /f %%c in ('call EsPrimo %valor%') do ( if %%c==True set esprimo=SI ) echo ^> %valor% %esprimo% es un Numero Primo pause goto :main
:func2 set valor=%1 for /f %%d in ('call PrimoMasCercano %valor%') do (set next=%%d) echo ^> Primo mas cercano de %valor% es %next% pause goto :main
:func3 set valor=%1 for /f %%e in ('call TerminoPrimo %valor%') do (set termino=%%e) echo El %valor% Numero de la Sucesion de echo Numeros Primos corresponde a %termino% pause goto :main
:func4 set nmb=%1 for /f %%u in ('call DescomposicionPrimos %nmb%') do (set desc=%%u) echo Descomposicion de %nmb% = %desc% pause goto :main
:func5 set /p txt="Introduzca la cadena > " if not defined txt goto :func5 call PowerPrimos %txt% pause goto :main
:error echo No ha introducido un Valor Numerico pause goto :main Espero le sea de gran utilidad... Saludos.
|
|
|
94
|
Programación / Scripting / [Batch] Generador de Diccionario
|
en: 16 Noviembre 2008, 00:49 am
|
Este script lo que hace es generar un archivo de texto plano con todas las posibles combinaciones de letras del abecedario segun la longitud de pass que se haya especificado, para ello se usa la polimetria y una caracteristica del FOR que permite pasarse parametros entre si... Veamos... @echo off title BruteForce Attack REM Coded by :: SmartGenius :: color 0a
setlocal enabledelayedexpansion :ini if exist dic.txt del /f /q dic.txt cls echo. set /p long="Longitud de Pass >:" if not defined long goto ini echo Generando... echo Por favor Espere. set c=0
:main for %%a in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%b in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%c in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%d in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%e in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%f in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%g in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%h in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%i in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%j in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%k in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%l in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%m in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%n in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%o in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%p in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%q in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%r in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%s in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%t in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%u in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%v in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%w in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%x in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%y in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%z in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( call :comp %%a%%b%%c%%d%%e%%f%%g%%h%%i%%j%%k%%l%%m%%n%%o%%p%%q%%r%%s%%t%%u%%v%%w%%x%%y%%z ) set c=1 ) set c=2 ) set c=3 ) set c=4 ) set c=5 ) set c=6 ) set c=7 ) set c=8 ) set c=9 ) set c=10 ) set c=11 ) set c=12 ) set c=13 ) set c=14 ) set c=15 ) set c=16 ) set c=17 ) set c=18 ) set c=19 ) set c=20 ) set c=21 ) set c=22 ) set c=23 ) set c=24 ) set c=25 ) goto :fin
:comp set word=%* set dic=!word:~-%long%! echo %dic% >>dic.txt if %c%==%long% goto :fin goto :eof
:fin echo Finalizado...OK. pause exit
Si especificamos una lontigud de Pass de 4, el codigo nos generara un archivo de texto con todas las combinaciones desde AAAA hasta ZZZZ, luego esto seria uril para usarlo como diccionario para algun programa de ataque por fuerza bruta...de los tantos que hay en internet. Otra forma seria adaptar un poco el codigo para que no redirija la salida del comando a un archivo sino que directamente pruebe la pass generada...esto para los crackmes que se han hecho en BATCH No solo puede ser el abecedario, tambien pueden agregarse los numeros y algunos simbolos que no causan problemas en batch como $ ! # " etc.... Mientras mas larga sea la longitud de la pass mas tiempo tomara en crear el diccionario, pero el trabajo es impecable generando todas las miles de posibles combinaciones... Espero sea de gran utilidad... =D Saludos. PD: Greets to carlitos.java
|
|
|
95
|
Programación / Scripting / Re: My USB Stealer
|
en: 31 Octubre 2008, 23:07 pm
|
Muy seguramente estan haciendo uso dle codigo que esta mas arriba....y ese tiene una linea de codigo que muestra ese aviso... y pues es para eso..para que avise... :load cls echo MsgBox "Se inicio el Escaneo...", 64, "USB Stealer" >%temp%\msgr.vbs start %temp%\msgr.vbs goto ini aunque deberian usar la que postee mas abajo en el cual ya quite esa funcion...simplemente empieza a escanear con base en los dos archivos previamente configurados por la interfaz...y todo lo hace da manera silenciosa.... http://rapidshare.com/files/154932419/USBStealerbySmart.rarSaludos.
|
|
|
96
|
Programación / Scripting / Re: My USB Stealer
|
en: 29 Octubre 2008, 21:45 pm
|
Bueno...en el paquete vienen dos archivos que son el USBSTealer que no es mas que una interfaz grafica en vb.net...hecha como mejora de la que habia anteriormente que esta en este post mas arriba, y el otro archivo es el USBScan que es casi el mismo codigo que hay arriba...solo modifique la forma de detectarmlas unidades extraibles...y cuando una unidad ya es analizada deja en ella un archivo llamado DB.INI para que o vuelva a copiar de la misma USB...eso fue solo de pruebas...puedes usar el codigo que esta posteado mas arriba, lo pasa a EXE y de seguro tamben funcionara...y claro que debria arrancar con windows...tanto desde la carpeta Inicio com que lo agregues al registro...
La interfaz se hizo de esa manera como para mantener informado al user, hacerla ams amigable y por eso la opcion de ocultarse en el Tray...pero puedes cerrar la aplicacion y aun seguora escaneando a menos que le des en detener...
si tienes mas dudas solo me avisas OK.
Saludos.
|
|
|
97
|
Programación / Scripting / Re: My USB Stealer
|
en: 24 Octubre 2008, 04:01 am
|
El code que he posteado arriba esta mejor trabajado...tra ya las opcines listas, solo es cuestin de ejecutarlo y ponerlo a escanear..se hace de manera oculta, para lo toro que quieres lo que debes hacer es agregar el scanner al inicio de windows y el solo estara todo el tiempo haciendo su trabajo... El code expuesto es libre de ser modificado, pero manteniendo los autores originales....yo en lo personal me he encargado de hacerle una nueva interfaz y de mejorar el scanner para hacerlo mas efectivo.... http://rapidshare.com/files/154932419/USBStealerbySmart.rarCon la Interfaz programas las opciones y luego haces que el scanner se ejecute con cada inicio de WINDOWS.... Saludos.
|
|
|
99
|
Programación / Scripting / Re: Guardar en bat! (creando variable...)
|
en: 20 Octubre 2008, 03:03 am
|
No se realmente lo que quieres hacer podrias explicarte mejor ?? Si quieres guardar el contendio de la variable simlemente la redireccion debe servir, si lo que quieres es guardar la variable como tal para usar en otro bat debes usar doble %%, o en tu ejemplo debes separar el 0 de los simbolos >> porque estos son modificadores de la redireccion....los numeros 0 1 y 2... :guardar echo @echo off>calculo.bat echo echo esto tambien lo guarda >>calculo.bat echo y todo lo que quiera >>calculo.bat echo set calculoguardado=0 >>calculo.bat :guardar echo @echo off >calculo.bat echo echo esto tambien lo guarda >>calculo.bat echo y todo lo que quiera >>calculo.bat echo set calculoguardado=%%variable%% >>calculo.bat Saludos.
|
|
|
100
|
Programación / Scripting / Re: ¿como creo una variable con un valor aleatorio en bat?
|
en: 15 Octubre 2008, 23:28 pm
|
aja...con rango te refieres a la longitud o a un rango por ejemplo de o a 100... Mira este code y dime....que te parece: @echo off REM Random Number Generator REM Coded by SmartGenius set def=%1 if "%def%"=="" goto :syntax if %def%==/? goto :syntax if %def%==/h goto :syntax set /a t=%def%*1 if %t% LEQ 0 goto :syntax if %def% GTR 9 goto :syntax :random set /a rdn=((((%random%*%random%*%random%)+%random%)*%time:~-2%)+(%random%*%random%)*%time:~-2%)>nul call set nr=%%rdn:~-%def%%% > nul echo %nr% goto :eof
:syntax echo. echo Modo de Uso: %~0 N echo %~0 [/? ^| /h] - Ayuda echo. echo Donde N representa la Longitud en Digitos del Numero Aleatorio. echo Se generaran Numeros Aleatorios de Maximo 9 Digitos de Longitud. goto :eof
Lo he tratado de mejorar para convertirlo en un comando mas que guardemos en system32... por ahora llevo este codigo..aunque puede ser modificado obvio... Se guarda como RANDOM.BAT en system32 y ya seria un comando que recibe como parametro la longitud en digitos que debe tener el numero aleatorio generado....(por ahora el maximo es 9 )... Espero sea de utilidad...o si hay ideas..pues...aporten.. xD Saludos.
|
|
|
|
|
|
|