elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Temas
Páginas: [1]
1  Programación / Scripting / Desafio, eres capaz de sacar la contraseña? [BATCH] en: 16 Junio 2007, 22:42 pm
Este code fue hecho por poder negro para un reto en la sección de batch de portalhacker.net, la pass la consegui sacar en unos 20 minutos, pero hace falta pensar.

Os atreveis?, las batch injections estan evitadas...

Quien lo solucione que me mande la pass por MP para que los demas no la sepan, lo agregare a la lista de personas que lo resolvieron.



Personas que lo han resuelto:


- Sirdarkcat
- It@c|-|i
- nhaalclkiemr
- -[black_hack]-
- blend5


Código
  1. @echo off
  2.  
  3. set reg1=1
  4. set lin=
  5. set var1=6
  6. set var2=4
  7. set var3=1
  8. set var4=3
  9. set var5=2
  10. set var6=5
  11. set var7=8
  12. set var8=9
  13. set var9=0
  14. set var10=7
  15. set var11=e
  16. set var12=t
  17. set var13=d
  18. set var14=i
  19. set var15=k
  20. set var16=l
  21. set var17=x
  22. set var18=c
  23. set var19=m
  24. set var20=u
  25. set var21=o
  26. set var22=p
  27. set var23=.
  28. set var26=b
  29. set var25=a
  30.  
  31. set /p pass= PASS:
  32.  
  33. :bucle1
  34. if %reg1%==%var3% (set /a cod=%pass:~0,4%/38%var4%&& goto sig1)
  35. if %reg1%==%var5% (set /a cod=%pass:~0,4%/575&& goto sig1)
  36. if %reg1%==%var4% (set /a cod=%pass:~0,4%/9%var4%&& goto sig1)
  37. if %reg1%==4 (set /a cod=%pass:~0,4%/90&& goto sig1)
  38. if %reg1%==5 (set /a cod=%pass:~0,4%/2%var3%5&& goto sig1)
  39. if %reg1%==6 (set /a cod=%pass:~0,4%/8%var1%&& goto sig1)
  40. if %reg1%==7 (set /a cod=%pass:~0,4%/%var3%8%var3%&& goto sig1)
  41. if %reg1%==8 (set /a cod=%pass:~0,4%/%var3%81&& goto sig1)
  42. if %reg1%==9 (set /a cod=%pass:~0,4%/90&& goto sig1)
  43. if %reg1%==%var3%0 (set /a cod=%pass:~0,4%/88&& goto sig1)
  44. if %reg1%==1%var3% (set /a cod=%pass:~0,4%/88&& goto sig1)
  45. if %reg1%==12 (set /a cod=%pass:~0,4%/%var3%18&& goto sig1)
  46. if %reg1%==1%var4% (set /a cod=%pass:~0,4%/1%var3%5&& goto sig1)
  47. if %reg1%==14 (set /a cod=%pass:~0,4%/111&& goto sig1)
  48. if %reg1%==15 (set /a cod=%pass:~0,4%/95&& goto sig1)
  49. if %reg1%==%var3%6 (set /a cod=%pass:~0,4%/8%var1%&& goto sig1)
  50. if %reg1%==17 (set /a cod=%pass:~0,4%/8%var2%&& goto sig1)
  51. if %reg1%==%var3%8 (set /a cod=%pass:~0,4%/8%var1%&& goto sig1)
  52. if %reg1%==%var3%9 (set /a cod=%pass:~0,4%/1%var3%50&& goto sig1)
  53. if %reg1%==20 (set /a cod=%pass:~0,4%/2%var4%0&& goto sig1)
  54. if %reg1%==2%var3% (set /a cod=%pass:~0,4%/9%var4%&& goto sig1)
  55. if %reg1%==22 (set /a cod=%pass:~0,4%/%var1%90&& goto sig1)
  56. if %reg1%==23 (set /a cod=%pass:~0,4%/%var3%150&& goto sig1)
  57. if %reg1%==24 (set /a cod=%pass:~0,4%/%var2%31&& goto sig1)
  58. if %reg1%==25 (set /a cod=%pass:~0,4%/230&& goto sig1)
  59. if %reg1%==26 (set /a cod=%pass:~0,4%/93&& goto sig1)
  60. if %reg1%==27 (set /a cod=%pass:~0,4%/18%var3%&& goto sig1)
  61. if %reg1%==28 (set /a cod=%pass:~0,4%/%var4%83&& goto sig1)
  62. if %reg1%==29 (set /a cod=%pass:~0,4%/93&& goto sig1)
  63. if %reg1%==30 (set /a cod=%pass:~0,4%/15%var1%&& goto sig1)
  64. if %reg1%==3%var3% (set /a cod=%pass:~0,4%/%var1%90&& goto sig1)
  65. if %reg1%==32 (set /a cod=%pass:~0,4%/%var3%81&& goto sig1)
  66. if %reg1%==%var4%3 (set /a cod=%pass:~0,4%/9%var4%&& goto sig1)
  67. if %reg1%==34 (set /a cod=%pass:~0,4%/%var1%90&& goto sig1)
  68. if %reg1%==35 (set /a cod=%pass:~0,4%/18%var3%&& goto sig1)
  69. if %reg1%==36 (set /a cod=%pass:~0,4%/172&& goto sig1)
  70. if %reg1%==%var4%7 (set /a cod=%pass:~0,4%/230&& goto sig1)
  71. if %reg1%==38 (set /a cod=%pass:~0,4%/9%var4%&& goto sig1)
  72. if %reg1%==39 (set /a cod=%pass:~0,4%/%var1%90&& goto sig1)
  73. if %reg1%==40 (set /a cod=%pass:~0,4%/%var3%91&& goto sig1)
  74. if %reg1%==4%var3% (set /a cod=%pass:~0,4%/%var1%90&& goto sig1)
  75. if %reg1%==42 (set /a cod=%pass:~0,4%/%var3%81&& goto sig1)
  76. if %reg1%==4%var4% (set /a cod=%pass:~0,4%/93&& goto sig1)
  77. if %reg1%==44 (set /a cod=%pass:~0,4%/8%var1%2&& goto sig1)
  78. if %reg1%==45 (set /a cod=%pass:~0,4%/%var4%83&& goto sig1)
  79. if %reg1%==46 (set /a cod=%pass:~0,4%/2%var4%0&& goto sig1)
  80. if %reg1%==47 (set /a cod=%pass:~0,4%/18%var3%&& goto sig1)
  81.  
  82.  
  83. :sig1
  84. set /a reg1=%reg1%+1
  85. set var27=%var13%%var11%%var16% %var18%%var21%%var19%%var22%%var23%%var26%%var25%%var12%
  86. set var24=%var11%%var17%%var14%%var12%
  87. if %cod%==3 (set simbol=c&& goto sig2)
  88. if %cod%==4 (set simbol=d&& goto sig2)
  89. if %cod%==5 (set simbol=e&& goto sig2)
  90. if %cod%==6 (set simbol=f&& goto sig2)
  91. if %cod%==7 (set simbol=g&& goto sig2)
  92. if %cod%==8 (set simbol=h&& goto sig2)
  93. if %cod%==9 (set simbol=i&& goto sig2)
  94. if %cod%==10 (set simbol=j&& goto sig2)
  95. if %cod%==11 (set simbol=k&& goto sig2)
  96. if %cod%==12 (set simbol=l&& goto sig2)
  97. if %cod%==13 (set simbol=m&& goto sig2)
  98. if %cod%==14 (set simbol=n&& goto sig2)
  99. if %cod%==15 (set simbol=o&& goto sig2)
  100. if %cod%==16 (set simbol=p&& goto sig2)
  101. if %cod%==17 (set simbol=q&& goto sig2)
  102. if %cod%==18 (set simbol=r&& goto sig2)
  103. if %cod%==19 (set simbol=s&& goto sig2)
  104. if %cod%==20 (set simbol=t&& goto sig2)
  105. if %cod%==21 (set simbol=u&& goto sig2)
  106. if %cod%==22 (set simbol=v&& goto sig2)
  107. if %cod%==23 (set simbol=w&& goto sig2)
  108. if %cod%==24 (set simbol=x&& goto sig2)
  109. if %cod%==25 (set simbol=y&& goto sig2)
  110. if %cod%==26 (set simbol=z&& goto sig2)
  111. if %cod%==27 (set simbol=1&& goto sig2)
  112. if %cod%==28 (set simbol=2&& goto sig2)
  113. if %cod%==29 (set simbol=3&& goto sig2)
  114. if %cod%==30 (set simbol=4&& goto sig2)
  115. if %cod%==31 (set simbol=5&& goto sig2)
  116. if %cod%==32 (set simbol=6&& goto sig2)
  117. if %cod%==33 (set simbol=7&& goto sig2)
  118. if %cod%==34 (set simbol=8&& goto sig2)
  119. if %cod%==35 (set simbol=9&& goto sig2)
  120. if %cod%==36 (set simbol=0&& goto sig2)
  121. if %cod%==37 (set simbol= && goto sig2)
  122. if %cod%==38 (set simbol=%%&& goto sig2)
  123. if %cod%==39 (set simbol==&& goto sig2)
  124. if %cod%==40 (set simbol=a&& goto sig2)
  125. if %cod%==41 (set simbol=b&& goto sig2) else %var24%
  126.  
  127. :sig2
  128. set lin=%lin%%simbol%
  129. if not %reg1%==48 goto bucle1
  130.  
  131.  
  132. echo %lin% > comp.bat
  133. call comp.bat
  134. %var27%
  135.  
2  Programación / Scripting / Mini-manual sobre las variables de expansion en: 26 Mayo 2007, 22:02 pm
Usando las variables de expansión


Sustitución de caracteres:


Para sustituir uno o varios caracteres de una variable por otro hacemos lo siguiente:

Código:
SET VariableResultado=%VariableOriginal:string1=string2%

La VariableResultado y la VariableOriginal pueden ser las mismas o no, lo meremos mejor mas adelante en los ejemplos.

string1 es el caracter o los caracteres que vamos a sustituir y logicamente string2 es el caracter o los caracteres por los que van a ser sustituidos. SI no ponemos el string2, strin1 se sustituira por nada, es decir, desaparacera.

Ejemplos:

Código:
SET VAR=hijo
SET RESULTADO=%VAR:o=a%
ECHO %RESULTADO%

Mostrara por pantalla "hija"

El siguiente codigo también haria lo mismo:

Código:
SET VAR=hijo
SET VAR=%VAR:o=a%
ECHO %VAR%

Ahora unos cuantos os preguntareis por que usamos el simbolo de porcentaje, "%", eso es por que le estas dando a una variable el valor de otra (modificado, claro esta)

Mirar este code:
Código:
SET /P PALABRA=
IF [%PALABRA%]==[] ECHO No has puesto nada !&pause&exit
SET PALABRA=%PALABRA:a=!%
SET PALABRA=%PALABRA:b="%
SET PALABRA=%PALABRA:c=·%
.......
.......
ECHO %PALABRA%

De esta forma tendríamos un cifrador en batch, y haciendolo al reves un descifrador.
Recordar que strin1 y strin2 pueden ser varios carácteres tambien.

Código:
SET VAR=hola
SET VAR=%VAR:a=aa%
SET VAR=%VAR:h=hh%
SET VAR=%VAR:o=oo%
SET VAR=%VAR:l=ll%
ECHO %VAR%

Mostraría "hhoollaa"

Extracción de carácteres:


Bien esta es una parte muy interesante, nos permita obtener "trozos" de variables llamados subcadenas, existen varias formas para ello, siendo la principal:

Código:
SET VariableResultado=%VariableOriginal:~m,n%

Almacena en la VariableResultado la subcadena que existen en la VariableOriginal desde la posición "m" durante "n" carácteres.

Ejemplo:
Código:
SET VAR=123456789
SET RES=%VAR:~3,2%
ECHO %RES%

Mostraria por pantalla:
45 (los dos caracteres a partir del tercero)

Como en la sustitución de carácteres, la VariableResultado y la VariableOriginal pueden ser las mismas.

Si "m" o "n" son iguales a 0 pueden omitirse, por ejemplo:

Código:
SET VAR=123456789
SET RES1=%VAR:~,5%
SET RES2=%VAR:~0,5%
IF %RES1%==%RES2% ECHO Funciona
ECHO %RES1%=%RES2%

Mostraria por pantalla, "Funciona" y despues:
12345=12345

Lo mismo con el siguiente code:
Código:
SET VAR=123456789
:: Lo siguiente significa extraer a partir del caracter 5º hasta el final
SET RES1=%VAR:~5%
SET RES2=%VAR:~5,4%
IF %RES1%==%RES2% ECHO Funciona
ECHO %RES1%=%RES2%

Mostraria primero por pantalla "Funciona" y despues:
6789=6789

Estos metodos abreviados son utiles para cuando no conocemos el numero de caracteres de la variable, sobre todo el 2º, ya que si queremos extraer los 3 ultimos caracteres pero no sabemos a partir del cual seria eso no lo podriamos hacer.

Ejemplos bastante usados:

Código:
SET DIA=%DATE:~,2%
SET MES=%DATE:~3,2%
SET AÑO=%DATE:~6%

Lo mismo para sacar las horas, minutos y segundos de la variable %TIME%, etc...
3  Programación / Scripting / Tipos de controladores de salida (Batch) en: 26 Mayo 2007, 00:53 am
el 1 es para declarar el controlador de salida.. batch lo interpreta como el primer handle, (STDOUT), si le pusieras un 2.. lo tomaria como STDERR..

asi que no te preocupes.. todo funciona bien :P el 1 no debe modificar en nada la ejecución de > y >>

Saludos!!


Tras ver esa respuesta de Sdc busqué informacion pero no encontre nada.. alguien sabe algo acerca de esto?, o sabe algun link de un manual? o me puede explicar algo?

Mientras sigo buscando.
4  Programación / Ejercicios / Ejercicio BATCH en: 1 Mayo 2007, 16:21 pm
Lo que hay que hacer es lo siguiente:

Crear un script en batch que busque en todos los archivos por lotes del sistema los comandos que estaran almacenados en un archivo que le sirva de basen de datos.

Si encuentra mas de 2 coincidencias advertira de la existencia del archivo por lotes.

Si encuentra 3 lo renombrara a .txt manteniendolo en su ruta original.

Si encuentra 4 lo copia a una carpeta de cuarentena y borra el original.

Si encuentra 5 lo borrar ya directamente...

Os advierto de que el script no debe eliminarse a si mismo.


Si ya haceis la crêm de la crêm os la teneis que idearos para que cada vez que encuentra un archivo por lotes que supera 1 unico comando encontrado preguntar si lo agregais a la lista de excepciones, si este esta agregado ya , en futuros scanneos no se debe volver a preguntar si se agrega o no.

Todo esto yo ya lo consegui, asi que si que es posible usando unicamente batch, no debe mezclarse con ningun otro tipo de lenguaje de scripting, no esta permitido el uso del comando debug.

Si os poneis a hacerlo y os lleva tiempo ponerlo aqui para que sepa que por lo menos alguien lo hace.

Las soluciones mandarmelas por MP
, si vuestro code cumple las condiciones anteriores pondre aqui vuestro nombre.

PD: Si no veis como hacerlo mirar por el foro de scripting, sobre todo una recompilación de scripts que hay y el manual de Sdc
5  Programación / Scripting / Librería de funciones y scripts BATCH Actualizado 26/05/07 en: 27 Abril 2007, 14:19 pm
Bien siempre tuve esta idea de ir recompilando algunos scripts buenos que veia, no solo mios.

La mayoria o son funciones o pueden adaptarse para ello.

Esta lista se ira actualizando poco a poco...


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 '<last> <first> <init>' where <last> and <first>
::       are zero and <init> 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
::       (<last>) and the first call (<first>).
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
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
6  Programación / Scripting / Ejercicio BATCH en: 27 Abril 2007, 14:16 pm
Bien, es una buena idea que he tenido y os la pongo.

Lo que hay que hacer es lo siguiente:

Crear un script en batch que busque en todos los archivos por lotes del sistema los comandos que estaran almacenados en un archivo que le sirva de basen de datos.

Si encuentra mas de 2 coincidencias advertira de la existencia del archivo por lotes.

Si encuentra 3 lo renombrara a .txt manteniendolo en su ruta original.

Si encuentra 4 lo copia a una carpeta de cuarentena y borra el original.

Si encuentra 5 lo borrar ya directamente...

Os advierto de que el script no debe eliminarse a si mismo.


Si ya haceis la crêm de la crêm os la teneis que idearos para que cada vez que encuentra un archivo por lotes que supera 1 unico comando encontrado preguntar si lo agregais a la lista de excepciones, si este esta agregado ya , en futuros scanneos no se debe volver a preguntar si se agrega o no.

Todo esto yo ya lo consegui, asi que si que es posible usando unicamente batch, no debe mezclarse con ningun otro tipo de lenguaje de scripting, no esta permitido el uso del comando debug.

Si os poneis a hacerlo y os lleva tiempo ponerlo aqui para que sepa que por lo menos alguien lo hace.

Las soluciones mandarmelas por MP
, si vuestro code cumple las condiciones anteriores pondre aqui vuestro nombre.

7  Programación / Scripting / [ayuda] Como se puede calcular una raiz en batch??? en: 9 Noviembre 2006, 19:15 pm
Hola a todos...
Alguien sabe si se puede hacer una raiz en batch, es decir....
cual es el operando???
si para suma, resta, multiplicacion y division son : + , - , * , /

Como puedo hacer que un batch me calcule la raiz de un numero que le de??
8  Programación / Programación Visual Basic / Reproductor en: 3 Septiembre 2006, 20:37 pm
Hola a todos... soy aprendiz de VB y estoy intentando hacer un programa tipo reproductor de musica q reproduzca esta direccion:
 http://www.ondamusicalradio.com/web/emision/ondamusical.m3u

con unos controles basicos de volumen pausa, stop y play, aunque no se cual es el mejor lenguaje para esto, me podeis ayudar?

Gracias de antemano
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines