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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17
121  Programación / Scripting / [BATCH] Información no documentada de expansión ~a en: 18 Marzo 2009, 01:14 am
Hasta hace poco los únicos atributos que conocía de los archivos en windows familia nt, eran:
sólo lectura
oculto
archivo
sistema

y son los únicos que podemos establecer con attrib.exe

Jugando con el comando for, la documentación de Microsoft dice: que si tenemos una variable de comando for, por ejemplo la variable I y hacemos:

%%~aI (dentro de un archivo por lotes (modo script))
%~aI (modo interactivo)

se expanden los atributos del archivo.

Yo pensé que sólo existían 4 atributos, pero me entró curiosidad de porqué la expansión que realiza el comando for, siempre son 9 guiones.
-rahs----

Como attrib.exe sólo permite establer 4 atributos, tuve que buscar maneras de establecer otros atributos (código c, compact, fsutil, etc.).

Finalmente conseguí todo el listado las letras que aparecen en la expansión de atributos del comando for:

Esto es lo no documentado:
Código:
Attributo			Expansión
FILE_ATTRIBUTE_DIRECTORY d--------
FILE_ATTRIBUTE_READONLY -r-------
FILE_ATTRIBUTE_ARCHIVE --a------
FILE_ATTRIBUTE_HIDDEN ---h-----
FILE_ATTRIBUTE_SYSTEM ----s----
FILE_ATTRIBUTE_COMPRESSED -----c---
FILE_ATTRIBUTE_OFFLINE ------o--
FILE_ATTRIBUTE_TEMPORARY -------t-
FILE_ATTRIBUTE_REPARSE_POINT --------l

Otros atributos que que no son reconocidos o expandidos por el comando for:
FILE_ATTRIBUTE_NORMAL
FILE_ATTRIBUTE_ENCRYPTED
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
FILE_ATTRIBUTE_SPARSE_FILE

También conocí otros iconos o color de texto que identifican un atributo de archivo:

Oculto y Cifrado


Oculto y Comprimido.


Offline.



122  Programación / Scripting / Re: Juego Batch: Worm 6 en: 15 Marzo 2009, 23:48 pm
Publique una ligera corrección, ahora es la versión 6.0b, lo único que cambié fue la cantidad de 1 segundo a 2.
123  Programación / Scripting / [Batch] Técnica: Realizar doble expansión retardada en: 15 Marzo 2009, 11:09 am
Puede que casi nunca se use esto, pero yo actualizando mi juego worm hecho en batch, tuve la necesidad de hacer una doble expansión retardada, ya que estaba dentro de un if, y lo hice usando for.

Ejemplo (no del código del juego, simplemente para explicar esto):
Código:
@echo off

setlocal enabledelayedexpansion

set tabla[0]=Multics
set tabla[1]=Unix
set tabla[2]=BSD
set tabla[3]=Linux
set tabla[4]=Windows9x
set tabla[5]=WindowsNT
set tabla[6]=SanOS
set tabla[7]=JOs
set tabla[8]=OpenSuse
set tabla[9]=Windows7


for /l %%a in (0,1,4) do call :test numero %%a
pause
goto :eof

:test
if %1==numero (
set nombreTabla=tabla[%2]

rem if !%nombreTabla%!
rem no se puede hacer esto dentro del if
rem porque la variable nombreTabla
rem la declaramos o actualizamos dentro del if
rem por lo tanto la expansión simple no funcionaría (%)
rem y necesitamos expansión retarada (!) doble

rem Como? con el for

rem dentro del for /f en in hacemos una expansion retardada y en el do hacemos la siguiente, también retardada del contenido de la expansión anterior.
for /f "tokens=* eol=" %%v in ("!nombreTabla!") do if !%%v!==Windows9x (
set %%v=WindowsNT
rem o set !nombreTabla!=WindowsNT
)

)
echo.............
set nombreTabla
set tabla[4]
set tabla[5]
echo.............
goto :eof



El truco está: en !%%v!

Esto es un solo un ejemplo solo para demostrar como realizar una doble expansión retardada dentro de un if usando el for /f. Alguien podría decir que la solución al problema es:

if !tabla[%2]!==Windows9x (set tabla[%2]=WindowsNt)

pero el código es solo un ejemplo, y el problema es que estaba dentro de un if.
Esto es solo para casos especiales. El código del juego realmente no estaba dentro de un if sino dentro de un for, pero ambos, tanto if como for expanden de manera simple en la entrada y no en la ejecución:

Código:
FOR /L %%A IN (0,1,5) DO (
SET "_CANDIDATE=BOARD[!RANDOM:~-1!][!RANDOM:~-1!]"
FOR /F "TOKENS=1 DELIMS==" %%B IN ("!_CANDIDATE!") DO IF ^!%%B! EQU ^° (
SET "!_CANDIDATE!=Ï"
GOTO :PLAY
)
)
Este código lo que hace es intentar 5 veces encontrar una variable BOARD[X][Y] aleatoria con contenido igual a "vacío" para asignar otro valor, en este caso: "comida"
Ah, y el goto es para quebrar el for.
124  Programación / Scripting / Juego Batch: Worm 6 en: 15 Marzo 2009, 10:28 am
He decidido actualizar el juego batch que hice la otra vez, esta vez, he puesto enfásis en la velocidad, por lo que el código no quedó tan legible, pero sí más veloz, y con una mejor presentación.

Aquí está:


http://sites.google.com/site/wormbatchgame/Home/WORM6b.zip?attredirects=0
125  Seguridad Informática / Seguridad / Re: REMOVABLE DRIVE AUTORUN PROTECTOR RDAP.CMD en: 14 Marzo 2009, 16:47 pm
He creado otra versión del script, pero solo para ser ejecutada bajo Windows XP, y solo para unidades removibles con sistema de archivos fat32, la razón es que no se producen los mismos resultados al ejecutar el script bajo Windows XP y Windows Vista. Esta versión es más segura, una vez ejecutado en windows xp, la unidad removible con fat32, queda con una carpeta autorun.inf imborrable, por lo menos yo uso esta versión ahora:

Código:
@ECHO OFF
:: RDAP.CMD
:: REMOVABLE DRIVE AUTORUN PROTECTOR Version 12:44 14-03-2009
::
:: ONLY FOR RUN UNDER WINDOWS XP AND REMOVABLE DRIVE WITH FAT OR FAT32 FILESYSTEM.
::
:: AUTHOR: 0X0309
::
TITLE REMOVABLE DRIVE AUTORUN PROTECTOR
SETLOCAL ENABLEEXTENSIONS

VER | FIND /i " XP"  >NUL
IF ERRORLEVEL -1 IF ERRORLEVEL 1 (
ECHO. SCRIPT ONLY FOR WINDOWS XP.
GOTO END
)

ECHO\Detecting removable drives . . .
SET "TXT=530054004F00520041"
FOR /F "DELIMS=\: TOKENS=0X3" %%^^ IN ('REG QUERY HKLM\SYSTEM\MOUNTEDDEVICES ^| FIND "%TXT%"') DO (
VOL %%^^: 8>NUL 1>&8 2>&1 && (
ECHO\Found removable drive %%^^:
CHKDSK %%^^: 0>NUL 2>&0 | FIND " FAT" >NUL
IF ERRORLEVEL 0 IF NOT ERRORLEVEL 1 (
IF EXIST %%^^:\AUTORUN.INF (DEL /F /Q /A %%^^:\AUTORUN.INF 7>NUL 1>&7 2>&1)
IF EXIST %%^^:\AUTORUN.INF (RD /Q /S \\?\%%^^:\AUTORUN.INF 6>NUL 1>&6 2>&1)
(MD \\?\%%^^:\AUTORUN.INF\...\) 5>NUL 1>&5 2>&1
(RD /Q /S \\?\%%^^:\AUTORUN.INF\...) 4>NUL 1>&4 2>&1
(CD.>\\?\%%^^:\AUTORUN.INF\NUL) 3>NUL 1>&3 2>&1
(MD \\?\%%^^:\AUTORUN.INF\...\%RANDOM%\...\ 9>NUL 1>&9 2>&1)
IF EXIST %%^^:\AUTORUN.INF (ECHO\The removable drive %%^^: was protected.)
) ELSE (ECHO. %%^^: IS NOT WITH FILESYSTEM FAT OR FAT32.)
)
)

:END
(0>NUL SET /P %%=Press a key to quit . . . )
PAUSE >NUL
GOTO :EOF
126  Programación / Scripting / Re: [Batch] Detector de sistemas operativos en: 10 Marzo 2009, 06:52 am
Listo, en el mismo enlace:
http://sites.google.com/site/ntbatchsite/universal-batch-operating-system-detector

dejé la versión corregida y actualizada, ahora puede ser ejecutada aún cuando el servicio workstation esté detenido (net stop workstation).

Saludos.
127  Programación / Scripting / Re: [Batch] Detector de sistemas operativos en: 10 Marzo 2009, 02:22 am
por que no haces mejor

Código:
'net.exe config workstation ^| find.exe "Windows" ^| find.exe /i "Versi¢n del programa"'

y para los que esten en ingles lo mismo pero cambiando Versi¢n del programa

¿y los que tienen el sistema operativo en alemán?

ya tengo la solución, ahora estoy realizando más pruebas, por ejemplo también acabo de darme cuenta que net.exe config workstation necesita el servicio workstation ejecutándose, por ejemplo si pones net stop workstation y luego net.exe config workstation se arroja un error. (Esto también está solucionado, pero seguiré haciendo más pruebas, tal vez en unos dos días publique la nueva versión)
128  Programación / Scripting / Re: [Batch] Detector de sistemas operativos en: 9 Marzo 2009, 23:41 pm
Pronto publicaré una nueva revisión, que tengo terminada, pero estoy esperando pronto poder testearla en windows seven.
129  Programación / Scripting / [Batch] Detector de sistemas operativos en: 9 Marzo 2009, 01:47 am
Participando en el grupo usenet alt.msdos.batch.nt se mostraron soluciones para detectar el sistema operativo en el que se ejecuta un script batch, basándome en el trabajo de Timo Salmi, creé otro script.

Aquí está:
http://sites.google.com/site/ntbatchsite/universal-batch-operating-system-detector

Si se modifica se debe hacer con cuidado, porque command.com (en windows 95/98) no es tan flexible como cmd.exe.

De todas formas, el script, lo he probado y también exitosamente en:
MS-DOS 7.10
Windows 95
Windows 98
Windows NT
Windows 2000
Windows XP
Windows 2003

En la misma página, pueden descargar en adjunto una imagen .iso de 50 KB aprox, para así cargar el script dentro de una máquina virtual.


¿Podría alguien probarlo en Windows Vista y Seven?

130  Programación / Scripting / Re: Poner comentarios en el comando Set. [Batch] en: 8 Marzo 2009, 23:49 pm
En realidad, me equivoqué, no se puede, porque al redirigir la salida de errores a nul se evita el mensaje de error, pero si en el "comentario" colocas un símbolo como + * / sin anteponer nada, por ejemplo +
dirás suma 0. por lo que igual se interpretan dichos carácteres.

Ejemplo:
Código:
@echo off
2>nul set /a "operacion=1000*2-500" +1 se multiplica 1000 por 2 y se restan 500
echo.%operacion%
pause
debería dar 1500, pero da 1501

y lo que tú dices puede utilizarse siempre que no se utilizen símbolos especiales

Código:
set "system=wintendo" /* & calc comentario */
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines