|
921
|
Programación / Scripting / [Ruby] [APORTE] FINDUS (Find Duplicates)
|
en: 14 Abril 2012, 17:58 pm
|
Esta utilidad busca archivos duplicados comprobando el hash CRC32. FINDUS [OPCIONES] [RUTA] - Opciones:
[-R] Habilita la búsqueda recursiva de subdirectorios.
- Ejemplos:
FINDUS "%CD%" FINDUS -R "C:\Windows" # -*- coding: UTF-8 -*- require "zlib" exit if Object.const_defined?(:Ocra) def logo() print ' _______ __ _____ ___ ________ ____ ____ ________ /" "| |" \\ (\\" \\|" \\ |" "\\ (" _||_ " | /" ) (: ______) || | |.\\\\ \\ | (. ___ :) | ( ) : | (: \\___/ \\/ | |: | |: \\. \\\\ | |: \\ ) || (: | | . ) \\___ \\ // ___) |. | |. \\ \\. | (| (___\\ || \\\\ \\__/ // __/ \\\\ (: ( /\\ |\\ | \\ \\ | |: :) /\\\\ //\\ /" \\ :) \\__/ (__\\_|_) \\___|\\____\\) (________/ \\__/ (_______/ Find Duplicates v1.0 By Elektro H@cker ' end def help() print ' Este programa busca archivos duplicados comprobando el hash CRC32. [*] Modo de empleo: FINDUS [OPCIONES] [RUTA] [*] Opciones: [-R] Habilita la búsqueda recursiva en subdirectorios. [*] Ejemplos: FINDUS "%CD%" FINDUS -R "C:\Windows" ' Process.exit end def errorcontrol() if ARGV.empty? help elsif ARGV.length == 2 and not File.directory? (ARGV[1]) help elsif ARGV.length == 1 and not File.directory? (ARGV[0]) help end if ARGV[0] =~ /-r/i $folder = ARGV[1] Dir.chdir($folder) resursive = File.join("**", "*.*") $files = Dir.glob(resursive) elsif $folder = ARGV[0] Dir.chdir($folder) not_resursive = File.join("*.*") $files = Dir.glob(not_resursive) end end logo errorcontrol $list = "" # Listar los archivos del directorio File.open("#{ENV['TEMP']}\\dir.txt", 'w+') do |file| file.puts $files end # Comparar el crc de cada archivo listado File.read("#{ENV['TEMP']}\\dir.txt").each_line { |line| begin file = File.read(line.strip) ; nil file_crc = Zlib.crc32(file,0).to_s(16) file_size = File.size(line.strip) if $list[file_crc.to_s] print "#{$folder}\\#{line.strip.gsub('/', '\\')}\n#{$list.split(file_crc).first.split(")").last.split("\n\n").last}#{file_crc})\n\n" end $list << "#{$folder}\\#{line.strip.gsub('/', '\\')}\n(CRC32: #{file_crc}) (BYTES: #{file_size})\n\n" rescue print "Archivo inaccesible #{$folder}\\#{line}" end } __END__
PD: Tiene algunos fallos en los permisos de las carpetas especiales de windows Saludos.
|
|
|
922
|
Programación / Scripting / [BATCH] GTC (Google Translate Console)
|
en: 12 Abril 2012, 15:20 pm
|
Una utilidad para traducir frases al vuelo desde la consola. Modo de empleo: GTC [Idioma de entrada] [Idioma de salida] [Texto] Ejemplo: GTC ES "Hello World" (El idioma de entrada se reconoce automaticamente por defecto.) Idiomas: AF: Africano AR: Árabe AZ: Azerbaijani BE: Bielorruso BG: Búlgaro BN: Bengalés CA: Catalàn CS: Checo CY: Galés DA: Danés DE: Alemàn EL: Griego EN: Inglés EO: Esperanto ES: Espa±ol ET: Estonio EU: Euskera FA: Persa FI: Finlandés FR: Francés GA: Irlandés GL: Gallego GU: Gujarati HI: Hindú HR: Croata HT: Haitiano HU: Húngaro HY: Armenio ID: Indonesio IS: Islandés IT: Italiano IW: Hebreo JA: Japonés KA: Georgiano KN: Kanada KO: Coreano LA: LatÝn LT: Lituano LV: Letón MK: Macedonio MS: Malayo MT: Maltés NL: Holandés NO: Noruego PL: Polaco PT: Portugués RO: Rumano RU: Ruso SK: Eslovaco SL: Esloveno SQ: Albanés SR: Serbio SV: Sueco SW: Suajili TA: Tamil TE: Telugu TH: Tailandés TL: Tagalo TR: Turco UK: Ucraniano UR: Urdu VI: Vietnamita YI: Yiddish ZH-CN: Chino (Simplificado) ZH-TW: Chino (Tradicional) IMPORTANTE: Para usar el script, Es necesario la utilidad wget.exe. http://sourceforge.net/projects/gnuwin32/files/wget/1.11.4/wget-1.11.4-bin.zip/download PARECE SER QUE NO FUNCIONA http://www.mediafire.com/?41476m73gbza1aj(Necesariamente esa versión) Capturas: El code: @Echo OFF Title GoogleTranslateConsole v1.3 :: By Elektro H@cker
Wget 1>nul 2>&1 IF %Errorlevel% EQU 9009 (Exit /B 1)
Goto :Errorcontrol
:LOGO Echo+ Echo: GGGGGGGGGGGGG TTTTTTTTTTTTTTTTTTTTTTT CCCCCCCCCCCCC Echo: GGG::::::::::::G T:::::::::::::::::::::T CCC::::::::::::C Echo: GG:::::::::::::::G T:::::::::::::::::::::T CC:::::::::::::::C Echo: G:::::GGGGGGGG::::G T:::::TT:::::::TT:::::T C:::::CCCCCCCC::::C Echo: G:::::G GGGGGG TTTTTT T:::::T TTTTTT C:::::C CCCCCC Echo: G:::::G T:::::T C:::::C Echo: G:::::G T:::::T C:::::C Echo: G:::::G GGGGGGGGGG T:::::T C:::::C Echo: G:::::G G::::::::G T:::::T C:::::C Echo: G:::::G GGGGG::::G T:::::T C:::::C Echo: G:::::G G::::G T:::::T C:::::C Echo: G:::::G G::::G T:::::T C:::::C CCCCCC Echo: G:::::GGGGGGGG::::G TT:::::::TT C:::::CCCCCCCC::::C Echo: GG:::::::::::::::G T:::::::::T CC:::::::::::::::C Echo: GGG::::::::::::G T:::::::::T CCC::::::::::::C Echo: GGGGGGGGGGGGG Google TTTTTTTTTTT Translate CCCCCCCCCCCCC Console Echo+ Goto :EOF
:HELP Echo: Modo de empleo: | MORE Echo: GTC [Idioma de entrada] [Idioma de salida] [Texto] |MORE Echo: Ejemplo: | MORE Echo: GTC ES "Hello World" | MORE
Echo: (El idioma de entrada se reconoce automaticamente por defecto.) | MORE
Echo: Idiomas: | MORE Echo: AF: Africano AR: µrabe AZ: Azerbaijani BE: Bielorruso Echo: BG: B£lgaro BN: Bengal‚s CA: Catal…n CS: Checo Echo: CY: Gal‚s DA: Dan‚s DE: Alem…n EL: Griego Echo: EN: Ingl‚s EO: Esperanto ES: Espa¤ol ET: Estonio Echo: EU: Euskera FA: Persa FI: Finland‚s FR: Franc‚s Echo: GA: Irland‚s GL: Gallego GU: Gujarati HI: Hind£ Echo: HR: Croata HT: Haitiano HU: H£ngaro HY: Armenio Echo: ID: Indonesio IS: Island‚s IT: Italiano IW: Hebreo Echo: JA: Japon‚s KA: Georgiano KN: Kanada KO: Coreano Echo: LA: Latín LT: Lituano LV: Let¢n MK: Macedonio Echo: MS: Malayo MT: Malt‚s NL: Holand‚s NO: Noruego Echo: PL: Polaco PT: Portugu‚s RO: Rumano RU: Ruso Echo: SK: Eslovaco SL: Esloveno SQ: Alban‚s SR: Serbio Echo: SV: Sueco SW: Suajili TA: Tamil TE: Telugu Echo: TH: Tailand‚s TL: Tagalo TR: Turco UK: Ucraniano Echo: UR: Urdu VI: Vietnamita YI: Yiddish Echo: ZH-CN: Chino (Simplificado) Echo: ZH-TW: Chino (Tradicional) Exit /B 1
:Errorcontrol Setlocal Enabledelayedexpansion Set "Langs=AF:Africano, AR:µrabe, AZ:Azerbaijani, BE:Bielorruso, BG:B£lgaro, BN:Bengal‚s, CA:Catal…n, CS:Checo, CY:Gal‚s, DA:Dan‚s, DE:Alem…n, EL:Griego, EN:Ingl‚s, EO:Esperanto, ES:Espa¤ol, ET:Estonio, EU:Euskera, FA:Persa, FI:Finland‚s, FR:Franc‚s, GA:Irland‚s, GL:Gallego, GU:Gujarati, HI:Hind£, HR:Croata, HT:Haitiano, HU:H£ngaro, HY:Armenio, ID:Indonesio, IS:Island‚s, IT:Italiano, IW:Hebreo, JA:Japon‚s, KA:Georgiano, KN:Kanada, KO:Coreano, LA:Latín, LT:Lituano, LV:Let¢nMK:, Macedonio, MS:Malayo, MT:Malt‚s, NL:Holand‚s, NO:Noruego, PL:Polaco, PT:Portugu‚s, RO:Rumano, RU:Ruso, SK:Eslovaco, SL:Esloveno, SQ:Alban‚s, SR:Serbio, SV:Sueco, SW:Suajili, TA:Tamil, TE:Telugu, TH:Tailand‚s, TL:Tagalo, TR:Turco, UK:Ucraniano, UR:Urdu, VI:Vietnamita, YI:Yiddish, ZH-CN:Chino Simplificado, ZH-TW:Chino Tradicional" IF "%~3" EQU "" ( Echo "%LANGS%" | Find /I "%~1:" >NUL IF !Errorlevel! EQU 1 (Echo Idioma no reconocido & Exit /B 1) ) ELSE ( Echo "%LANGS%" | Find /I "%~1:" >NUL IF !Errorlevel! EQU 1 (Echo Idioma no reconocido & Exit /B 1) Echo "%LANGS%" | Find /I "%~2:" >NUL IF !Errorlevel! EQU 1 (Echo Idioma no reconocido & Exit /B 1) ) Setlocal Disabledelayedexpansion
:Translate Call :LOGO IF "%~1" EQU "" (Start /B CMD /Q %0) IF "%~2" EQU "" (Goto :HELP) IF "%~3" EQU "" (Set "LangIN=auto" & Set "LangOUT=%~1" & Set "String=%~2") ELSE (Set "LangIN=%~1" & Set "LangOUT=%~2" & Set "String=%~3") Set "String=%String: =+%" Set "String=%String:...=;;%" Set "String=%String:.=,,%" Set "String=%String:!=(;)%" WGET -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=%STRING%&sl=%LangIN%&tl=%LangOUT%" -O "%TEMP%\GTC.html" For /F "Tokens=* Delims=;" %%a in ('Type "%TEMP%\GTC.html"') do (Set "Body=%%a")
SET "Cut=%Body:*","=%" CALL SET "Traduced=%%Body:%Cut%=%%" SET "Traduced=%Traduced:[[["=%" & REM " SET "Traduced=%Traduced: , ,=.%" SET "Traduced=%Traduced: (;)=!%" SET "Traduced=%Traduced: ( ;)=!%" SET "Traduced=%Traduced:(;)=!%" SET "Traduced=%Traduced:","=%"
:Print Setlocal Enabledelayedexpansion IF "%~3" EQU "" ( SET "LangINPrint=[AUTO]" SET "LangOUTPrint=!langs:*%1:=!" For /F "Tokens=1,* Delims=," %%# in ('Echo !LangOUTPrint!') Do (Set "LangOUTPrint=[%%#]") ) ELSE ( SET "LangINPrint=!langs:*%1:=!" SET "LangOUTPrint=!langs:*%2:=!" For /F "Tokens=1,* Delims=," %%# in ('Echo !LangINPrint!') Do (Set "LangINPrint=[%%#]") For /F "Tokens=1,* Delims=," %%# in ('Echo !LangOUTPrint!') Do (Set "LangOUTPrint=[%%#]") ) Setlocal Disabledelayedexpansion Echo: Texto a traducir %LangINPrint% : IF "%~3" EQU "" (Echo: [+] %~2 | MORE) ELSE (Echo: [+] %~3 | MORE) Echo: Texto traducido %LangOUTPrint% : Echo: [+] %Traduced% Exit /B 0 PD: Cualquier bug o mejora comenten, Gracias. Salu2.
|
|
|
923
|
Media / Multimedia / (Solucionado) Como convertir AVI a M2V
|
en: 10 Abril 2012, 13:33 pm
|
Hola
Pues me encuentro con ese problema... He buscado y buscado pero no encuentro ningún convertidor AVI a M2V ( En cambio, M2v a AVI hay a patadas... :/ )
Entiendo que AVI es un container, y M2V es un archivo de video sin pistas de audio, Pero digo yo que algún modo habrá, no? Además, Algo a mi favor es que mi AVI no tiene pista de audio...
EDITO: Si al menos supiera que codec necesito para convertir a m2v... lo haría con el vdub y listo xD, Sé que M2V es algo de mpeg... pero ahí me quedo atascado.
Gracias y saludos...
|
|
|
924
|
Programación / Scripting / [Batch] [Mini-Aporte] MAME Panel (Una tool para el emulador MAME)
|
en: 9 Abril 2012, 10:19 am
|
Un script para los aficionados a los Arcades (Como yo). Cuenta con varias utilidades para manejar ciertos aspectos del emulador Mame y/o MameUI32/ MameUI64 (Tengo que decir que solo lo he probado con la gui MameUI) -Se puede arrastrar una rom al bat para ejecutarla. (Con MAME/Mameui no se puede a menos que la ROM esté en el directorio "ROMS"... Por eso empezé a hacer este script.) Otras cosas que se pueden hacer son: - Ejecutar una rom escribiendo el nombre. - Ejecutar una rom al azar. - Buscar una rom. - Listar las roms disponibles. - Eliminar una rom. - Ejecutar MAME - Descargar la última base de trucos (cheat.zip) - Ejecutar un pequeño limpiador/organizador de roms creado por mi. Notas: El script tiene que ejecutarse en el directorio donde tiene su mame.exe o mameui32.exe/mameui64.exe Algunas partes del script requieren ciertos programas para el correcto funcionamiento del code. De todas formas si no tiene ninguna de estas utilidades, No pasa nada, simplemente esa parte se "saltará". Colous (Para mostrar el scrpt coloreado) Irfanview (Para redimensionar las imagenes en el limpiador) Wget (Para descargar el cheat.zip) 7z (Para descomprimir el cheat.zip) El code: @Echo OFF Title Mame Panel v1.0
:: :: :: :: :: :: :: :: :: By Elektro H@cker :: :: :: :: :: :: :: :: ::
:: Configuración :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: ::
REM Modifica el nombre de los ejecutable si es necesario...
:: Obligatorio: Set MAME=MameUI64.exe
:: Opcional: Set COLOUS=%windir%\system32\colous.exe Set IRFANVIEW=%windir%\system32\i_view32.exe Set NIRCMD=%windir%\system32\nircmd Set WGET=%windir%\system32\wget.exe Set ZIP=%windir%\system32\7z.exe :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: ::
Mode con cols=80 lines=20 %NIRCMD% win center ititle "Mame Panel v1.0" 2>Nul PUSHD "%~dp0" IF NOT exist %MAME% (Exit /B 1) IF exist "%~1" (Goto :Play_New)
:Invaders call :Logo %COLOUS% writesec "[7] By Elektro H@cker" 2>Nul || Echo: By Elektro H@cker Echo: ÛÛÛÛÛÛÛÛ Echo: ÛÛ ÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ Echo: ÛÛ ÛÛ ÛÛ ÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ Echo: ÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ Echo: ÛÛÛÛÛÛ ÛÛÛÛÛÛ ÛÛÛÛÛÛ ÛÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛÛ Echo: ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ Echo: ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛ Echo: ÛÛ ÛÛ ÛÛÛÛ ÛÛÛÛ ÛÛÛÛ Echo: ÛÛ ÛÛ ÛÛÛÛ ÛÛÛÛ Call :Wait call :Logo Echo+ Echo: ÛÛÛÛÛÛÛÛ Echo: ÛÛ ÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ Echo: ÛÛ ÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ Echo: ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ Echo: ÛÛÛÛ ÛÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛÛ Echo: ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ Echo: ÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛ ÛÛÛÛ ÛÛÛÛ Echo: ÛÛ ÛÛ ÛÛ ÛÛ ÛÛÛÛ ÛÛÛÛ ÛÛÛÛ Echo: ÛÛÛÛ ÛÛÛÛ ÛÛÛÛ ÛÛÛÛ %COLOUS% writesec "[7] By Elektro H@cker" 2>Nul || Echo: By Elektro H@cker Call :Wait Set /A Animation+=1 IF %Animation% EQU 6 (Goto :Menu) Goto :Invaders
:Logo Cls Set Rom= Echo+ Echo: _______ _______ _______ _______ ______ __ Echo: ^| ^| ^| _ ^| ^| ^| ___^| ^| __ \.---.-..-----..-----.^| ^| Echo: ^| ^| ^| ^| ___^| ^| __/^| _ ^|^| ^|^| -__^|^| ^| Echo: ^|__^|_^|__^|___^|___^|__^|_^|__^|_______^| ^|___^| ^|___._^|^|__^|__^|^|_____^|^|__^| Echo: %COLOUS% Writesec "[8] ÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈ" 2>NUL || Echo: ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ Echo+ Goto :EOF
:Wait ping -n 1 localhost >nul & ping -n 1 localhost >nul & ping -n 1 localhost >nul ping -n 1 localhost >nul & ping -n 1 localhost >nul & ping -n 1 localhost >nul ping -n 1 localhost >nul & ping -n 1 localhost >nul & ping -n 1 localhost >nul ping -n 1 localhost >nul & ping -n 1 localhost >nul & ping -n 1 localhost >nul ping -n 1 localhost >nul & ping -n 1 localhost >nul & ping -n 1 localhost >nul Goto :EOF
:Menu Call :Logo %COLOUS% writesec "[7] ([10]1[7]) Jugar rom al azar. ([10]M[7]) Ejecutar M.A.M.E." 2>Nul && Echo+ || Echo: (1) Jugar rom al azar. (M) Ejecutar M.A.M.E. | MORE %COLOUS% writesec "[7] ([10]2[7]) Buscar rom. ([10]O[7]) Ir al organizador." 2>Nul && Echo+ || Echo: (2) Buscar rom. (O) Ir al organizador. | MORE %COLOUS% writesec "[7] ([10]3[7]) Listar roms disponibles. ([10]S[7]) Salir..." 2>Nul && Echo+ && Echo+ || Echo: (3) Listar roms disponibles. (S) Salir... | MORE & Echo+ %COLOUS% writesec "[7] Opcion [10]/[7] Nombre de la rom?" 2>Nul && Echo+ || Echo: ¨Opci¢n / Nombre de la rom? | MORE %COLOUS% Cursoron 2>Nul Set /P ROM=^>^> IF NOT defined ROM (Goto :Menu) IF "%ROM%" EQU "1" (Goto :Random) IF "%ROM%" EQU "2" (Goto :Search) IF "%ROM%" EQU "3" (Goto :List) IF /I "%ROM%" EQU "M" (Start /B %MAME% && Exit) IF /I "%ROM%" EQU "O" (Goto :Manager) IF /I "%ROM%" EQU "S" (Exit /B 0) Start /B %MAME% %ROM% Goto :Menu
:Play_New Move %1 ".\roms\" >Nul Start /W %MAME% "%~n1" Echo: Si no te ha gustado la rom, Puedes borrarla... | MORE Choice /M "¨Borrar la rom %~nx1 ?" IF errorlevel 1 (Del /Q ".\Roms\%~nx1") Goto :Menu
:List Dir /W /P /A-D ".\Roms\*" ^| Find /V "bytes" | MORE /E /C +2 Pause Goto :Menu
:Random Setlocal enabledelayedexpansion Del /Q "%temp%\roms.tmp" 2>Nul For /F "Tokens=*" %%# in ('Dir /B ".\Roms\*"') do (Echo !Random!!Random!;%%#>>"%temp%\roms.tmp") For /F "Tokens=2 Delims=;" %%# in ('Type "%temp%\roms.tmp" ^| Sort') do (Start /B %MAME% %%# && Endlocal && Goto :Menu)
:Search Call :Logo %COLOUS% writesec "[7] Busca una rom en tu colecion... ([10]M[7]) Ejecutar M.A.M.E." 2>Nul && Echo+ || Echo: Busca una rom en tu colecion... (M) Ejecutar M.A.M.E. | MORE %COLOUS% writesec "[7] Ejemplo: [10]kof[7] ([10]V[7]) Volver..." 2>Nul && Echo+ || Echo: Ejemplo: kof (V) Volver... | MORE %COLOUS% writesec "[7] ([10]S[7]) Salir..." 2>Nul && Echo+ && Echo+ || Echo: (S) Salir... | MORE & Echo+ %COLOUS% writesec "[7] Nombre de la rom?" 2>Nul && Echo+ || Echo: ¨Nombre de la rom? | MORE %COLOUS% Cursoron 2>Nul Set /P ROM=^>^> IF NOT defined ROM (Goto :Search) IF /I "%ROM%" EQU "M" (Start /B %MAME% && Exit) IF /I "%ROM%" EQU "V" (Goto :Menu) IF /I "%ROM%" EQU "S" (Exit /B 0) Cls Echo+ %COLOUS% writesec "[7] Buscando roms con el patron [10]*%ROM%*[7] ..." 2>Nul && Echo+ || Echo: Buscando roms con el patr¢n: *%Rom%* ... | MORE %COLOUS% Cursoron 2>Nul Dir /B /A ".\Roms\*%rom%*" | MORE Pause Goto :Search
:Manager Call :Logo %COLOUS% writesec "[7] ([10]1[7]) Descargar CheatDatabase ([10]M[7]) Ejecutar M.A.M.E." 2>Nul && Echo+ || Echo: (1) Descargar CheatDatabase (M) Ejecutar M.A.M.E. | MORE %COLOUS% writesec "[7] ([10]2[7]) Ejecutar el limpiador ([10]V[7]) Volver..." 2>Nul && Echo+ || Echo: (2) Ejecutar el limpiador (V) Volver... | MORE %COLOUS% writesec "[7] ([10]3[7]) Eliminar una rom. ([10]S[7]) Salir..." 2>Nul && Echo+ && Echo+ || Echo: (3) Eliminar una rom. (S) Salir... | MORE & Echo+ %COLOUS% writesec "[7] Opcion?" 2>Nul && Echo+ || Echo: ¨Opci¢n? | MORE %COLOUS% Cursoron 2>Nul Set /P ROM=^>^> IF NOT defined ROM (Goto :Manager) IF "%ROM%" EQU "1" (Call :Cheats) IF "%ROM%" EQU "2" (Goto :Cleaner) IF "%ROM%" EQU "3" (Goto :Delete) IF /I "%ROM%" EQU "M" (Start /B %MAME% && Exit) IF /I "%ROM%" EQU "V" (Goto :Menu) IF /I "%ROM%" EQU "S" (Exit /B 0) Goto :Manager
:Cheats Call :Logo IF NOT exist "%wget%" (Echo Para usar esta opcion necesita instalar wget... | MORE & Pause & Goto :EOF) IF NOT exist "%zip%" (Echo Para usar esta opcion necesita instalar 7zip... | MORE & Pause & Goto :EOF) %COLOUS% writesec "[7] Conectando con la pagina de [10]Pugsy's [7]..." 2>Nul && Echo+ || Echo: Conectando con la pagina de Pugsy's ... | MORE %WGET% -q -t 3 http://cheat.retrogames.com/ -O "%temp%\mameloader_cheat.html.tmp" 1>Nul %COLOUS% writesec "[7] Buscando la ultima version del archivo ..." 2>Nul && Echo+ || Echo: Buscando la £ltima versi¢n del archivo ... | MORE For /F "tokens=3 Delims==>" %%# in ('Type "%temp%\mameloader_cheat.html.tmp" ^| Find /I "XML Cheat Collection for MAME" ^| Find /V /I "ZIP"') Do (Set CheatDatabase=%%#) %COLOUS% writesec "[7] Descargando [10]%CheatDatabase:~10,-1% [7]..." 2>Nul && Echo+ || Echo: Descargando %CheatDatabase:~10,-1% ... | MORE %WGET% -q -t 3 "http://cheat.retrogames.com/%CheatDatabase:~1,-1%" -O "%temp%\%CheatDatabase:~10,-1%" 1>Nul %COLOUS% writesec "[7] Descomprimiendo [10]%CheatDatabase:~10,-1% [7]en la carpeta [10]cheat [7]..." 2>Nul && Echo+ || Echo: Descomprimiendo %CheatDatabase:~10,-1% en la carpeta "cheat" ... | MORE %ZIP% e "%temp%\%CheatDatabase:~10,-1%" -o"%temp%\" cheat.zip -aoa 1>nul %ZIP% e "%temp%\cheat.zip" -o".\cheat\" *.xml -aoa 1>nul Echo: Listo! | MORE %COLOUS% Cursoron 2>Nul Pause Goto :EOF
:Cleaner Setlocal enabledelayedexpansion Call :Logo Echo+ %COLOUS% writesec "[7]El limpiador se encarga de redimensionar las imagenes de la carpeta titles y eliminar los archivos de las demas carpetas que no tengan una rom asociada en la carpeta [10]ROMS[7]." 2>Nul && Echo+ || Echo: El limpiador se encarga de redimensionar las imagenes de la carpeta titles y eliminar los archivos de las demas carpetas que no tengan una rom asociada en la carpeta ROMS. | MORE %COLOUS% writesec "[7]Los archivos listos para su eliminacion se moveran a la carpeta [10]_Eliminados [7]del directorio de MAME." 2>Nul && Echo+ || Echo: Los archivos listos para su eliminacion se moveran a la carpeta "_Eliminados" del directorio de MAME. | MORE %COLOUS% Cursoron 2>Nul Choice /M "¨Ejecutar el limpiador?" IF !Errorlevel! EQU 2 (Goto :Manager) Else (Call :Logo) Call :Resizer_title_png Call :Resizer_title_ico Call :Clean cfg Call :Clean cheat Call :Clean diff Call :Clean icons Call :Clean_Folder nvram Call :Clean snap Call :Clean titles Echo: Listo. | MORE %COLOUS% Cursoron 2>Nul Pause Goto :Manager
:Clean %COLOUS% writesec "[7] Eliminando archivos sin rom asociada en la carpeta: [10]%~1" 2>Nul || Echo: Eliminando archivos sin rom asociada en la carpeta: %~1 FOR /F "Tokens=*" %%a in ('Dir /B /A ".\%~1" ^| Find /V /I "Default.cfg" ^| Find /V /I "output.xml"') do ( Set "Rom=%%a" IF NOT exist ".\Roms\!Rom:~0,-4!.zip" ( IF NOT exist ".\Roms\!Rom:~0,-4!" ( %COLOUS% writesec "[14] %%a" 2>nul || Echo: %%a MKDir ".\_Eliminados\%~1" 2>NUL Move /Y "%~1\%%a" ".\_Eliminados\%~1\" >NUL ) ) ) Echo+ Goto :EOF
:Clean_Folder %COLOUS% writesec "[7] Eliminando archivos sin rom asociada en la carpeta: [10]%~1" 2>Nul || Echo: Eliminando archivos sin rom asociada en la carpeta: %~1 FOR /F "Tokens=*" %%a in ('Dir /B /AD ".\%~1" ^| Find /V /I "Default.cfg" ^| Find /V /I "output.xml"') do ( IF NOT exist ".\Roms\%%a.zip" ( %COLOUS% writesec "[14] %%a" 2>nul || Echo: %%a MKDir ".\_Eliminados\%~1" 2>NUL Move /Y "%~1\%%a" ".\_Eliminados\%~1\" >NUL ) ) Echo+ Goto :EOF
:Resizer_title_png REM Redimensionar titles a 512x512 px (Y formato PNG) %COLOUS% writesec "[7] Redimensionando los titles a PNG 512x512 px ..." 2>Nul || Echo: Redimensionando los titles a PNG 512x512 px ... %IRFANVIEW% "%CD%\titles\* /resize=(512,512) /resample /convert=*.png" 2>NUL || IF NOT exist "%IRFANVIEW%" (Echo: Para usar esta opcion necesita instalar Irfanview... | MORE) Del /Q "%CD%\titles\*.bmp", "%CD%\titles\*.gif", "%CD%\titles\*.ico", "%CD%\titles\*.jpg", "%CD%\titles\*.jpeg", "%CD%\titles\*.tif" 2>Nul Echo+ Goto :EOF
:Resizer_title_ico REM Convertir titles a iconos 32x32 %COLOUS% writesec "[7] Convirtiendo los titles a iconos de 32x32 px ..." 2>Nul || Echo: Convirtiendo los titles a iconos de 32x32 px ... %IRFANVIEW% "%CD%\titles\* /resize=(32,32) /convert=..\icons\*.ico" 2>NUL || IF NOT exist "%IRFANVIEW%" (Echo: Para usar esta opcion necesita instalar Irfanview... | MORE) Echo+ Goto :EOF
:Delete Call :Logo %COLOUS% writesec "[7] Elimina una rom escribiendo ([10]M[7]) Ejecutar M.A.M.E." 2>Nul && Echo+ || Echo: Busca una rom en tu colecion... (M) Ejecutar M.A.M.E. | MORE %COLOUS% writesec "[7] su nombre... ([10]V[7]) Volver..." 2>Nul && Echo+ || Echo: Ejemplo: kof (V) Volver... | MORE %COLOUS% writesec "[7] Ejemplo: [10]kof2000[7] ([10]S[7]) Salir..." 2>Nul && Echo+ && Echo+ || Echo: (S) Salir... | MORE & Echo+ %COLOUS% writesec "[7] Nombre de la rom?" 2>Nul && Echo+ || Echo: ¨Nombre de la rom? | MORE %COLOUS% Cursoron 2>Nul Set /P ROM=^>^> IF NOT defined ROM (Goto :Delete) IF /I "%ROM%" EQU "M" (Start /B %MAME% && Exit) IF /I "%ROM%" EQU "V" (Goto :Manager) IF /I "%ROM%" EQU "S" (Exit /B 0) Cls Echo+ Set Rom=%ROM:.zip=% IF NOT exist ".\Roms\%Rom%.zip" ( %COLOUS% writesec "[7] Rom no encontrada..." 2>Nul && Echo+ || Echo: Rom no encontrada... | MORE %COLOUS% writesec "[7] Mostrando resultados parecidos:" 2>Nul && Echo+ || Echo: Mostrando resultados parecidos: | MORE %COLOUS% Cursoron 2>Nul Dir /B /A ".\Roms\*%rom%*" | MORE Pause ) Else ( Del /Q ".\Roms\%Rom%.zip" %COLOUS% writesec "[7] Rom [10]%ROM%.zip [7]eliminada ..." 2>Nul && Echo+ || Echo: Rom %ROM%.zip eliminada ... | MORE %COLOUS% Cursoron 2>Nul Pause ) Goto :Delete Salu2.:
|
|
|
925
|
Programación / Scripting / [Batch] [APORTE] Clock (Alternativa a AT)
|
en: 4 Abril 2012, 06:55 am
|
Hola. Estaba haciendo unas correcciones en un script de una persona en otro foro, Y me gustó bastante la idea del script, Así que decidí mejorarlo y simplificarlo... - Codeado por Ianna. Modificado por Elektro H@cker. Básicamente el script se podría comparar con el comando AT, Para realizar una acción determinada a una hora determinada (Eso si, Del mismo día). Obviamente no es un programador de tareas, Ni está tán completo como para commpararlo, Pero de algún modo si. CLOCK Pausa el proceso por lotes hasta que llega la hora, Y luego continua. Ejemplos: Clock 08:15:00 Echo+ Buenos dias !
Clock 22:50:00 Shutdown /R
Clock 14:30:00 Echo Ha llegado la hora de comer !
PD: Realizar un comando después de la hora no es algo obligatorio. Suspende el proceso de un programa por lotes hasta la hora determinada.
» CLOCK [HORA:MINUTO:SEGUNDO]
Ejemplos:
» CLOCK 20:30:15 » CLOCK 22:50:00 Shutdown /R
La hora se aplica con un formato de 24 horas.
(Codeado por Ianna. Modificado por Elektro H@cker.) El Script: ::::::::::::::::::::: ::: CLOCK UTILITY ::: ::::::::::::::::::::: ::: By El_Ianna ::: Mod by Elektro H@cker REM Comprobación de errores. REM Seteo de la hora seleccionada. IF " %FINAL:~0,1%" EQU "0" (Set FINAL= %FINAL:~1%) REM Seteo de la acción. :SLEEP SET "HORARIO= %TIME:~0,2%%TIME:~3,2%%TIME:~6,2%" SET "HORARIO= %Horario: =%" :HELP ECHO: MM'""""'YMM M""MMMMMMMM MMP"""""YMM MM'""""'YMM M""MMMMM""M ECHO: M' .mmm. `M M MMMMMMMM M' .mmm. `M M' .mmm. `M M MMMM' .M ECHO: M MMMMMooM M MMMMMMMM M MMMMM M M MMMMMooM M .MM ECHO: M MMMMMMMM M MMMMMMMM M MMMMM M M MMMMMMMM M MMMb. YM ECHO: M. `MMM' .M M MMMMMMMM M. `MMM' .M M. `MMM' .M M MMMMb M ECHO: MM. .dM M M MMb dMM MM. .dM M MMMMM M ECHO: MMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMM | MORE & REM " ECHO: Suspende el proceso de un programa por lotes hasta la hora determinada. | MORE ECHO: ¯ CLOCK [HORA:MINUTO:SEGUNDO] | MORE ECHO: ¯ CLOCK 22:50:00 Shutdown /R | MORE ECHO: La hora se aplica con un formato de 24 horas. | MORE ECHO: (Codeado por Ianna. Modificado por Elektro H @cker. ) | MORE :MSG ECHO msgbox "La sintaxis del comando no es correcta. CLOCK /? para mas informacion.",16,"Utilidad Clock (By Ianna )" > " %TEMP%\Clock.vbs" START /B Wscript "%TEMP%\Clock.vbs" :END ECHO: Utilidad Clock (By Ianna ) | MORE
|
|
|
926
|
Programación / Scripting / [Batch] [Ruby] Ctool (Convertidor de unidades Bytes, KB, MB, GB, TB y PB)
|
en: 31 Marzo 2012, 17:52 pm
|
Una utilidad por linea de comandos para convertir entre bytes, kilobytes, megabytes, gigabytes, terabytes, y petabytes. Como usarlo: CTool.exe {Tamaño} {Unidad} {A unidad} Las unidades son: Bytes, KB, MB, GB, TB, PB. Ejemplos: - Convertir bytes a megabytes: CTool 446.777.647.104 Bytes MB - Convertir megabytes a kilobytes: - Convertir petabyte a todas las unidades: Algunas imagenes: - El script convertido a EXE: - Un ejemplo de uso en Batch, Para averiguar el espacio libre en el disco duro: For /f "tokens=3 delims= " %%# in (' Dir ^| find "libres"' ) do (Set "Bytes= %%#" ) For /f "tokens=2 delims==" %%# in ('Ctool %bytes% bytes gb ^| Find "="' ) do (Echo: Espacio libre en %Homedrive%%%# )
- El script, Codeado en Ruby: PD: Quizás no me ha quedado muy "bonito", Repito bastantes cosas que se podrian simplificar xD pero no estoy por la labor de hacerlo, Así como está ya funciona xD. # -*- coding: UTF-8 -*- # Conversion Tool v0.1 # By Elektro H@cker exit if Object.const_defined?(:Ocra) def logo() puts " _______ _______ __ | _ || |.-----..-----.| | |. 1___||.| | || _ || _ || | |. |___ `-|. |-'|_____||_____||__| |: 1 | |: | |::.. . | |::.| Conversion `-------' `---' Tool " end def help() print " How to use it: #{__FILE__.split('/').last.split('.').first}.exe {Size} {Unit} {To unit} Units are: Bytes, KB, MB, GB, TB, PB. Examples: - Convert bytes to megabytes: #{__FILE__.split('/').last.split('.').first}.exe 446.777.647.104 Bytes MB - Convert megabytes to kilobytes: #{__FILE__.split('/').last.split('.').first}.exe 44.33 MB KB - Convert petabyte to all: #{__FILE__.split('/').last.split('.').first}.exe 1 PB " Process.exit end def BytesToUnit (number) @KILOBYTE = 1024.0 @MEGABYTE = 1024.0 * 1024.0 @GIGABYTE = 1024.0 * 1024.0 * 1024.0 @TERABYTE = 1024.0 * 1024.0 * 1024.0 * 1024.0 @PETABYTE = 1024.0 * 1024.0 * 1024.0 * 1024.0 * 1024.0 @Bytes = number.to_s + " Bytes" @Kilos = (number / @KILOBYTE).to_s if number.to_s.length > 20 and @Kilos.length > 3 and @Kilos.split('.').first.length == 1 @Kilos = "KB too depth" elsif not @Kilos.include? "-" and not @Kilos[0..3].eql? "0.00" @Kilos = @Kilos.split('.').first + "." + @Kilos.split('.').last[0..1] + " KB" elsif @Kilos = "0.0 KB".to_s end # Kilos @Megas = (number / @MEGABYTE).to_s if number.to_s.length > 20 and @Megas.length > 3 and @Megas.split('.').first.length == 1 @Megas = "MB too depth" elsif not @Megas.include? "-" and not @Megas[0..3].eql? "0.00" @Megas = @Megas.split('.').first + "." + @Megas.split('.').last[0..1] + " MB" elsif @Megas = "0.0 MB".to_s end # Megas @Gigas = (number / @GIGABYTE).to_s if number.to_s.length > 20 and @Gigas.length > 3 and @Gigas.split('.').first.length == 1 @Gigas = "GB too depth" elsif not @Gigas.include? "-" @Gigas = @Gigas.split('.').first + "." + @Gigas.split('.').last[0..1] + " GB" elsif @Gigas = "0.0 GB".to_s end # Gigas @Teras = (number / @TERABYTE).to_s if number.to_s.length > 20 and @Teras.length > 3 and @Teras.split('.').first.length == 1 @Teras = "TB too depth" elsif not @Teras.include? "-" @Teras = @Teras.split('.').first + "." + @Teras.split('.').last[0..1] + " TB" elsif @Teras = "0.0 TB".to_s end # Teras @Petas = (number / @PETABYTE).to_s if number.to_s.length > 20 and @Petas.length > 3 and @Petas.split('.').first.length == 1 @Petas = "PB too depth" elsif not @Petas.include? "-" @Petas = @Petas.split('.').first + "." + @Petas.split('.').last[0..1] + " PB" elsif @Petas = "0.0 PB".to_s end # Petas end def KBToUnit (number) @BYTE = 1024.0 @MEGABYTE = 1024.0 @GIGABYTE = 1024.0 * 1024.0 @TERABYTE = 1024.0 * 1024.0 * 1024.0 @PETABYTE = 1024.0 * 1024.0 * 1024.0 * 1024.0 @Bytes = (number * @BYTE).to_s if number.to_s.length > 20 and @Bytes.length > 3 and @Bytes.split('.').first.length == 1 @Bytes = "Bytes too depth" elsif @Bytes[0..2].eql? "0.0" @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0..1] + " Bytes" elsif @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0] + " Bytes" end # Bytes @Kilos = number.to_s + " KB" @Megas = (number / @MEGABYTE).to_s if number.to_s.length > 20 and @Megas.length > 3 and @Megas.split('.').first.length == 1 @Megas = "MB too depth" elsif not @Megas.include? "-" and not @Megas[0..3].eql? "0.00" @Megas = @Megas.split('.').first + "." + @Megas.split('.').last[0..1] + " MB" elsif @Megas = "0.0 MB".to_s end # Megas @Gigas = (number / @GIGABYTE).to_s if number.to_s.length > 20 and @Gigas.length > 3 and @Gigas.split('.').first.length == 1 @Gigas = "GB too depth" elsif not @Gigas.include? "-" @Gigas = @Gigas.split('.').first + "." + @Gigas.split('.').last[0..1] + " GB" elsif @Gigas = "0.0 GB".to_s end # Gigas @Teras = (number / @TERABYTE).to_s if number.to_s.length > 20 and @Teras.length > 3 and @Teras.split('.').first.length == 1 @Teras = "TB too depth" elsif not @Teras.include? "-" @Teras = @Teras.split('.').first + "." + @Teras.split('.').last[0..1] + " TB" elsif @Teras = "0.0 TB".to_s end # Teras @Petas = (number / @PETABYTE).to_s if number.to_s.length > 20 and @Petas.length > 3 and @Petas.split('.').first.length == 1 @Petas = "PB too depth" elsif not @Petas.include? "-" @Petas = @Petas.split('.').first + "." + @Petas.split('.').last[0..1] + " PB" elsif @Petas = "0.0 PB".to_s end # Petas end def MBToUnit (number) @BYTE = 1024.0 * 1024.0 @KILOBYTE = 1024.0 @GIGABYTE = 1024.0 @TERABYTE = 1024.0 * 1024.0 @PETABYTE = 1024.0 * 1024.0 * 1024.0 @Bytes = (number * @BYTE).to_s if number.to_s.length > 20 and @Bytes.length > 3 and @Bytes.split('.').first.length == 1 @Bytes = "Bytes too depth" elsif @Bytes[0..2].eql? "0.0" @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0..1] + " Bytes" elsif @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0] + " Bytes" end # Bytes @Kilos = (number * @KILOBYTE).to_s if number.to_s.length > 20 and @Kilos.length > 3 and @Kilos.split('.').first.length == 1 @Kilos = "KB too depth" elsif not @Kilos.include? "-" and not @Kilos[0..3].eql? "0.00" @Kilos = @Kilos.split('.').first + "." + @Kilos.split('.').last[0..1] + " KB" elsif @Kilos = "0.0 KB".to_s end # Kilos @Megas = number.to_s + " MB" @Gigas = (number / @GIGABYTE).to_s if number.to_s.length > 20 and @Gigas.length > 3 and @Gigas.split('.').first.length == 1 @Gigas = "GB too depth" elsif not @Gigas.include? "-" @Gigas = @Gigas.split('.').first + "." + @Gigas.split('.').last[0..1] + " GB" elsif @Gigas = "0.0 GB".to_s end # Gigas @Teras = (number / @TERABYTE).to_s if number.to_s.length > 20 and @Teras.length > 3 and @Teras.split('.').first.length == 1 @Teras = "TB too depth" elsif not @Teras.include? "-" @Teras = @Teras.split('.').first + "." + @Teras.split('.').last[0..1] + " TB" elsif @Teras = "0.0 TB".to_s end # Teras @Petas = (number / @PETABYTE).to_s if number.to_s.length > 20 and @Petas.length > 3 and @Petas.split('.').first.length == 1 @Petas = "PB too depth" elsif not @Petas.include? "-" @Petas = @Petas.split('.').first + "." + @Petas.split('.').last[0..1] + " PB" elsif @Petas = "0.0 PB".to_s end # Petas end def GBToUnit (number) @BYTE = 1024.0 * 1024.0 * 1024.0 @KILOBYTE = 1024.0 * 1024.0 @MEGABYTE = 1024.0 @TERABYTE = 1024.0 @PETABYTE = 1024.0 * 1024.0 @Bytes = (number * @BYTE).to_s if number.to_s.length > 20 and @Bytes.length > 3 and @Bytes.split('.').first.length == 1 @Bytes = "Bytes too depth" elsif @Bytes[0..2].eql? "0.0" @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0..1] + " Bytes" elsif @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0] + " Bytes" end # Bytes @Kilos = (number * @KILOBYTE).to_s if number.to_s.length > 20 and @Kilos.length > 3 and @Kilos.split('.').first.length == 1 @Kilos = "KB too depth" elsif not @Kilos.include? "-" and not @Kilos[0..3].eql? "0.00" @Kilos = @Kilos.split('.').first + "." + @Kilos.split('.').last[0..1] + " KB" elsif @Kilos = "0.0 KB".to_s end # Kilos @Megas = (number * @MEGABYTE).to_s if number.to_s.length > 20 and @Megas.length > 3 and @Megas.split('.').first.length == 1 @Megas = "MB too depth" elsif not @Megas.include? "-" and not @Megas[0..3].eql? "0.00" @Megas = @Megas.split('.').first + "." + @Megas.split('.').last[0..1] + " MB" elsif @Megas = "0.0 MB".to_s end # Megas @Gigas = number.to_s + " GB" @Teras = (number / @TERABYTE).to_s if number.to_s.length > 20 and @Teras.length > 3 and @Teras.split('.').first.length == 1 @Teras = "TB too depth" elsif not @Teras.include? "-" @Teras = @Teras.split('.').first + "." + @Teras.split('.').last[0..1] + " TB" elsif @Teras = "0.0 TB".to_s end # Teras @Petas = (number / @PETABYTE).to_s if number.to_s.length > 20 and @Petas.length > 3 and @Petas.split('.').first.length == 1 @Petas = "PB too depth" elsif not @Petas.include? "-" @Petas = @Petas.split('.').first + "." + @Petas.split('.').last[0..1] + " PB" elsif @Petas = "0.0 PB".to_s end # Petas end def TBToUnit (number) @BYTE = 1024.0 * 1024.0 * 1024.0 * 1024.0 @KILOBYTE = 1024.0 * 1024.0 * 1024.0 @MEGABYTE = 1024.0 * 1024.0 @GIGABYTE = 1024.0 @PETABYTE = 1024.0 @Bytes = (number * @BYTE).to_s if number.to_s.length > 20 and @Bytes.length > 3 and @Bytes.split('.').first.length == 1 @Bytes = "Bytes too depth" elsif @Bytes[0..2].eql? "0.0" @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0..1] + " Bytes" elsif @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0] + " Bytes" end # Bytes @Kilos = (number * @KILOBYTE).to_s if number.to_s.length > 20 and @Kilos.length > 3 and @Kilos.split('.').first.length == 1 @Kilos = "KB too depth" elsif not @Kilos.include? "-" and not @Kilos[0..3].eql? "0.00" @Kilos = @Kilos.split('.').first + "." + @Kilos.split('.').last[0..1] + " KB" elsif @Kilos = "0.0 KB".to_s end # Kilos @Megas = (number * @MEGABYTE).to_s if number.to_s.length > 20 and @Megas.length > 3 and @Megas.split('.').first.length == 1 @Megas = "MB too depth" elsif not @Megas.include? "-" and not @Megas[0..3].eql? "0.00" @Megas = @Megas.split('.').first + "." + @Megas.split('.').last[0..1] + " MB" elsif @Megas = "0.0 MB".to_s end # Megas @Gigas = (number * @GIGABYTE).to_s if number.to_s.length > 20 and @Gigas.length > 3 and @Gigas.split('.').first.length == 1 @Gigas = "GB too depth" elsif not @Gigas.include? "-" @Gigas = @Gigas.split('.').first + "." + @Gigas.split('.').last[0..1] + " GB" elsif @Gigas = "0.0 GB".to_s end # Gigas @Teras = number.to_s + " TB" @Petas = (number / @PETABYTE).to_s if number.to_s.length > 20 and @Petas.length > 3 and @Petas.split('.').first.length == 1 @Petas = "PB too depth" elsif not @Petas.include? "-" @Petas = @Petas.split('.').first + "." + @Petas.split('.').last[0..1] + " PB" elsif @Petas = "0.0 PB".to_s end # Petas end def PBToUnit (number) @BYTE = 1024.0 * 1024.0 * 1024.0 * 1024.0 * 1024.0 @KILOBYTE = 1024.0 * 1024.0 * 1024.0 * 1024.0 @MEGABYTE = 1024.0 * 1024.0 * 1024.0 @GIGABYTE = 1024.0 * 1024.0 @TERABYTE = 1024.0 @Bytes = (number * @BYTE).to_s if number.to_s.length > 20 and @Bytes.length > 3 and @Bytes.split('.').first.length == 1 @Bytes = "Bytes too depth" elsif @Bytes[0..2].eql? "0.0" @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0..1] + " Bytes" elsif @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0] + " Bytes" end # Bytes @Kilos = (number * @KILOBYTE).to_s if number.to_s.length > 20 and @Kilos.length > 3 and @Kilos.split('.').first.length == 1 @Kilos = "KB too depth" elsif not @Kilos.include? "-" and not @Kilos[0..3].eql? "0.00" @Kilos = @Kilos.split('.').first + "." + @Kilos.split('.').last[0..1] + " KB" elsif @Kilos = "0.0 KB".to_s end # Kilos @Megas = (number * @MEGABYTE).to_s if number.to_s.length > 20 and @Megas.length > 3 and @Megas.split('.').first.length == 1 @Megas = "MB too depth" elsif not @Megas.include? "-" and not @Megas[0..3].eql? "0.00" @Megas = @Megas.split('.').first + "." + @Megas.split('.').last[0..1] + " MB" elsif @Megas = "0.0 MB".to_s end # Megas @Gigas = (number * @GIGABYTE).to_s if number.to_s.length > 20 and @Gigas.length > 3 and @Gigas.split('.').first.length == 1 @Gigas = "GB too depth" elsif not @Gigas.include? "-" @Gigas = @Gigas.split('.').first + "." + @Gigas.split('.').last[0..1] + " GB" elsif @Gigas = "0.0 GB".to_s end # Gigas @Teras = (number * @TERABYTE).to_s if number.to_s.length > 20 and @Teras.length > 3 and @Teras.split('.').first.length == 1 @Teras = "TB too depth" elsif not @Teras.include? "-" @Teras = @Teras.split('.').first + "." + @Teras.split('.').last[0..1] + " TB" elsif @Teras = "0.0 TB".to_s end # Teras @Petas = number.to_s + " PB" end # Error control def args() if ARGV.empty? or ARGV[0] == "/?" or ARGV[1] == nil or ARGV[2] == nil and not ARGV[1] == "bytes" and not ARGV[1] == "Bytes" and not ARGV[1] == "BYTES" and not ARGV[1] == "kb" and not ARGV[1] == "Kb" and not ARGV[1] == "KB" and not ARGV[1] == "kB" and not ARGV[1] == "mb" and not ARGV[1] == "Mb" and not ARGV[1] == "MB" and not ARGV[1] == "mB" and not ARGV[1] == "gb" and not ARGV[1] == "gB" and not ARGV[1] == "Gb" and not ARGV[1] == "GB" and not ARGV[1] == "tb" and not ARGV[1] == "Tb" and not ARGV[1] == "TB" and not ARGV[1] == "tB" and not ARGV[1] == "pb" and not ARGV[1] == "pB" and not ARGV[1] == "Pb" and not ARGV[1] == "PB" help() elsif not ARGV[2] == "bytes" and not ARGV[2] == "Bytes" and not ARGV[2] == "BYTES" and not ARGV[2] == "kb" and not ARGV[2] == "Kb" and not ARGV[2] == "KB" and not ARGV[2] == "kB" and not ARGV[2] == "mb" and not ARGV[2] == "Mb" and not ARGV[2] == "MB" and not ARGV[2] == "mB" and not ARGV[2] == "gb" and not ARGV[2] == "gB" and not ARGV[2] == "Gb" and not ARGV[2] == "GB" and not ARGV[2] == "tb" and not ARGV[2] == "Tb" and not ARGV[2] == "TB" and not ARGV[2] == "tB" and not ARGV[2] == "pb" and not ARGV[2] == "pB" and not ARGV[2] == "Pb" and not ARGV[2] == "PB" $ToUnit = "all" end end # Process logo() args() input = ARGV[0] unit = ARGV[1] $ToUnit = ARGV[2] input = input.gsub(',', '.') if not input.length == 6 or not input.length == 5 and not input[-3] == "." input = input.gsub('.', '') input = input.to_i elsif input = input.to_f end if unit =~ /bytes/i BytesToUnit(input) elsif unit =~ /kb/i KBToUnit(input) elsif unit =~ /mb/i MBToUnit(input) elsif unit =~ /gb/i GBToUnit(input) elsif unit =~ /tb/i TBToUnit(input) elsif unit =~ /pb/i PBToUnit(input) end if $ToUnit =~ /bytes/i puts "#{input} #{unit} = #{@Bytes}" elsif $ToUnit =~ /kb/i puts "#{input} #{unit} = #{@Kilos}" elsif $ToUnit =~ /mb/i puts "#{input} #{unit} = #{@Megas}" elsif $ToUnit =~ /gb/i puts "#{input} #{unit} = #{@Gigas}" elsif $ToUnit =~ /tb/i puts "#{input} #{unit} = #{@Teras}" elsif $ToUnit =~ /pb/i puts "#{input} #{unit} = #{@Petas}" elsif $ToUnit == nil puts "#{input} #{unit} = #{@Bytes}" puts "#{input} #{unit} = #{@Kilos}" puts "#{input} #{unit} = #{@Megas}" puts "#{input} #{unit} = #{@Gigas}" puts "#{input} #{unit} = #{@Teras}" puts "#{input} #{unit} = #{@Petas}" end __END__
|
|
|
927
|
Programación / Scripting / [BATCH/RUBY] [APORTE] REG2BAT (Convierte archivos REG a BAT)
|
en: 30 Marzo 2012, 01:28 am
|
Un simple programa por línea de comandos que convierte archivos de registro (.REG) a archivos por lotes (.BAT) Modo de empleo: Ejemplos: REG2BAT.exe Archivo.reg REG2BAT.exe *.reg REG2BAT.exe * Ahora con un sencillo instalador! Convierte archivos con un solo click del ratón! (Hecho especialmente para aquellos Batcheros que no disponen del intérprete de Ruby ) Nota: Esta version solamente es compatible con archivos de registro en codificación Unicode, debido a las mejoras para evitar los bugs corregidos. Test.reg(Un simple archivo de registro para que puedan testear el programa.) Windows Registry Editor Version 5.00
# Delete test: [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run] "my key"=- [-HKEY_CURRENT_USER\test]
# Add Test [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run] "Binary Test"=hex:da,da,d2,dd,d0 "Dword Test"=dword:23523626 "Expand SZ Test"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,00,00 "Multi SZ Test"=hex(7):22,00,63,00,3a,00,5c,00,70,00,72,00,6f,00,67,00,72,00,\ 61,00,6d,00,20,00,66,00,69,00,6c,00,65,00,73,00,5c,00,74,00,65,00,73,00,74,\ 00,2e,00,65,00,78,00,65,00,22,00,00,00,00,00 "Qword Test"=hex(b):2f,3b,00,00,00,00,00,00 "SZ Test"="Wscript.exe \"C:\\Program Files (x86)\\RUN.vbs\"" La conversión del test.reg: REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "my key" /F REG DELETE "HKCU\test" /F REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "Binary Test" /T "REG_BINARY" /D dadad2ddd0 /F REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "Dword Test" /T "REG_DWORD" /D 0x23523626 /F REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "Expand SZ Test" /T "REG_EXPAND_SZ" /D "%%windir%%" /F REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "Qword Test" /T "REG_QWORD" /D "0x0000000000003b2f" /F REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "Multi SZ Test" /T "REG_MULTI_SZ" /D "\"c:\program files\test.exe\"" /F REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "SZ Test" /T "REG_SZ" /D "Wscript.exe \"C:\Program Files (x86)\RUN.vbs\"" /F
REG2BAT.rbVersión 0.3Soporte para convertir lineas de comentario a comentario de Batch Se ha mejorado la eficacia de conversión para evitar al 100% problemas con claves de varias lineas. Bugs corregidos: - Error al intentar convertir una clave binaria de varias lineas - Error al convertir claves predeterminadas Versión 0.2Ahora soporta el uso del comodín * # -*- coding: UTF-8 -*-
# # # # # # # # # # # # # # # # # # #
# REG2BAT v0.3 #
# By Elektro H@cker #
# Tested with REGEDIT 5.0 version #
# # # # # # # # # # # # # # # # # # #
require 'tmpdir' exit if Object.const_defined?(:Ocra)
def logo puts " _ .-') ('-. .-. .-') ('-. .-') _ ( \\( -O ) _( OO) \\ ( OO ) ( OO ).-.( OO) ) ,------. (,------. ,----. .-----. ;-----.\\ / . --. // '._ | /`. ' | .---'' .-./-') / ,-. \\ | .-. | | \\-. \\ |'--...__) | / | | | | | |_( O- ) '-' | | | '-' /_).-'-' | |'--. .--' | |_.' |(| '--. | | .--, \\ .' / | .-. `. \\| |_.' | | | | . '.' | .--'(| | '. (_/ .' /__ | | \\ | | .-. | | | | |\\ \\ | `---.| '--' | | | | '--' / | | | | | | `--' '--' `------' `------' `-------' `------' `--' `--' `--' "
puts "
Coded by Elektro H@cker
▄ ▄█████ ███▄▄ ▄▄▄▄▄▄▄▄█████████▀ ██████▀ ▄▄████████████████████ ▀████ ▄███████████████████████▄ ███ ▄███████████████████████████ ▀█ █████████████████▀▀ ██ ████ ▄▄█████████████████▀ ██ ████ ███▀▀████████████▀ ▄█ ████ ███▄ ▀▀█████▀ ▄▀▄ ▄█ ▄████ ███▄▄ ▄▀▄ ▀███▄▀▀ ▄▄▀█▀ █████ ▄▄█▄▀█▄▄ ▀▀████████▀███ ▄ ██████ ▀████▄▀▀▀██▀▀██▀▀██ ▀█ █▄█████ ▀▀███▄ ▀█ ▀█ ▀ █ ▄██████ ▄ ████▄▄▀██▄ █ ▄ █▄ ███ ████▀▀ ▄█ █▀▀▀▀▀▀ █████▄█▄▄████████▀ ▄▄ ▄██ ▄▄█▀▀ ▀█▀██████████▀ ▄███ █▀ ██▀ ▄▄▀ ▄ ▀▀▀████▀ ▄████ █ ▄██ ▄██ ▀█ ████ ▄███▄ ▄███ ▄███ ▀▀ ▄ ▀▀ " sleep 0.5 end
def help() print "\n How to use:\n\n" print " " + __FILE__.split('/').last + " [File]\n\n" print "\n Examples:\n\n" print " " + __FILE__.split('/').last + " File.reg\n\n" print " " + __FILE__.split('/').last + " *.reg\n\n" print " " + __FILE__.split('/').last + " *\n\n" Process.exit end
def expand(string)
# Comment line if string[0].eql? (';') $key = string print "[COMMENT] #{string}\n" write_comment() $key = '' end # Comment line
# Key to delete if string[0..1].eql? ('[-') $key = string[2..-2] $key = $key.gsub('HKEY_CLASSES_ROOT', 'HKCR').gsub('HKEY_CURRENT_USER', 'HKCU').gsub('HKEY_LOCAL_MACHINE', 'HKLM').gsub('HKEY_USERS', 'HKU') $subkey = '' print "IN: [-#{$key}]\n\n" write_delete() $key = ''
# Key to add elsif string[0..0].eql? ('[') and string[-1].eql? (']') $key = string[1..-2] $key = $key.gsub('HKEY_CLASSES_ROOT', 'HKCR').gsub('HKEY_CURRENT_USER', 'HKCU').gsub('HKEY_LOCAL_MACHINE', 'HKLM').gsub('HKEY_USERS', 'HKU') print "IN: #{string}\n\n"
#Subkey to delete elsif string[-1].eql? ('-') $subkey = string $subkey = $subkey[0..-3] print "[REG] #{string}\n" write_delete $key = ''
#Subkey to add elsif string.include? '"' if not $key.eql? ''
$subkey = string $subkey = $subkey.gsub('\\\\', '\\') $subkey = $subkey.gsub( '@=' , ' "" /D ' ) $subkey = $subkey.gsub( '=hex:' , ' /T "REG_BINARY" /D ' ) $subkey = $subkey.gsub('=hex(2):' , ' /T "REG_EXPAND_SZ" /D ') $subkey = $subkey.gsub('=hex(7):' , ' /T "REG_MULTI_SZ" /D ' ) $subkey = $subkey.gsub('=hex(b):' , ' /T "REG_QWORD" /D ' ) $subkey = $subkey.gsub( '=dword:' , ' /T "REG_DWORD" /D ' ) $subkey = $subkey.gsub( '"="' ,'" /T "REG_SZ" /D "' )
# BIANRY if $subkey.include? 'REG_BINARY' $subkey = $subkey.gsub(',' , '') end # BINARY
# DWORD if $subkey.include? 'REG_DWORD' $DWORD_data = $subkey.split('/D').last $New_DWORD_data = ' 0x' + $DWORD_data[1..-1] $subkey = $subkey.gsub($DWORD_data, $New_DWORD_data) end # DWORD
# QWORD if $subkey.include? 'REG_QWORD' $QWORD_data = $subkey.split('/D').last.gsub(',','').gsub(' ', '') hex_string_len = $QWORD_data.length $New_QWORD_data = '' min = -2 until min < -hex_string_len hex_string_block = $QWORD_data[min,2] $New_QWORD_data << hex_string_block min -= 2 end # until $subkey = $subkey.split('/D').first + '/D "0x' + $New_QWORD_data + '"' end # QWORD
# EXPAND # & # MULTI if $subkey.include? 'REG_EXPAND_SZ' or $subkey.include? 'REG_MULTI_SZ' hex_string = $subkey.split('/D').last.gsub(' ', '').gsub('\\', '').gsub(',00', '').gsub('00,', '').gsub(',', '') hex_string_len = hex_string.length $New_hex_data = '' min = 0 until min == hex_string_len $New_hex_data << hex_string[min,2].hex.chr min += 2 end # until $New_hex_data = $New_hex_data.gsub('"', '\"').gsub('%', '%%') $subkey = $subkey.split('/D').first + '/D "' + $New_hex_data + '"' end # EXPAND & MULTI
print "[REG] #{string}\n" write_add() $subkey = '' end # if not $key.eql? '' end # if & elsifs end
def write_delete() if not $subkey.eql? "" File.open(ARGV[$num][0..-4] + "bat", 'a+') do |file| file.print "REG DELETE \"#{$key}\" /V #{$subkey} /F \n" print "[BAT] REG DELETE \"#{$key}\" /V #{$subkey} /F \n\n" end # file (1) elsif File.open(ARGV[$num][0..-4] + "bat", 'a+') do |file| file.print "REG DELETE \"#{$key}\" /F \n" print "[BAT] REG DELETE \"#{$key}\" /F \n\n" end # file (2) end # if & elsifs end
def write_add() File.open(ARGV[$num][0..-4] + "bat", 'a+') do |file| file.print "REG ADD \"#{$key}\" /V #{$subkey} /F \n" print "[BAT] REG ADD \"#{$key}\" /V #{$subkey} /F \n\n" end # file end
def write_comment() File.open(ARGV[$num][0..-4] + "bat", 'a+') do |file| file.print "REM #{$key}\n" end # file end
def args() if ARGV.empty? or ARGV[$num] == "/?" help() elsif ARGV[$num] == nil print "Finished.\n" Process.exit elsif not File.exist? (ARGV[$num]) print "\n ERROR. File doesn't exist...\n\n" help() elsif not ARGV[$num].split('.').last.eql? "reg" and not ARGV[$num].split('.').last.eql? "REG" print "\n ERROR. File " + ARGV[$num] + " is not a valid registry...\n\n" $num += 1 if ARGV.length == 1 print "Finished.\n" Process.exit end # ARGV.length args() end # if & elsifs end
########################################################################################################
string = '' $string_hex = '' $num = 0 $regcode = ''
logo() args()
while not $num == ARGV.length or $num < ARGV.length args() File.open(ARGV[$num], "r:utf-16le:UTF-8").each_line { |line| if line[0..1].eql? " " then line = line[2..-1] end if line[-3..-2].eql? ",\\" then line = line[0..-3] end $regcode = $regcode + line } File.open("#{Dir.tmpdir}/#{ARGV[$num].split('\\').last}", 'a+') { |file| file.puts $regcode } File.open("#{Dir.tmpdir}/#{ARGV[$num].split('\\').last}", "r").each_line { |string| expand(string[0..-2]) and string = ''} File.open("#{Dir.tmpdir}/#{ARGV[$num].split('\\').last}", "w") { |delete| delete.print "" } $regcode = '' $num += 1 end # while
puts "Finished.\n" __END__
Saludos
|
|
|
928
|
Programación / Scripting / [Batch] [APORTE] Text Protector
|
en: 23 Marzo 2012, 21:07 pm
|
Un pequeño programa commandline para proteger sus archivos con contenido de texto para que queden inteligibles a ojos de otra persona. Ejemplo: Antes: @Echo off chcp 1252 >nul Echo Test | More Echo abc123 áéíóú ñ Ñ € ^ Pause Después: charlist[65,1]charlist[31,1]charlist[3,1]charlist[8,1]charlist[15,1]charlist[0,1]charlist[15,1]charlist[6,1]charlist[6,1] charlist[3,1]charlist[16,1]charlist[3,1]charlist[8,1]charlist[0,1]charlist[54,1]charlist[55,1]charlist[58,1]charlist[55,1]charlist[0,1]charlist[78,1]charlist[14,1]charlist[21,1]charlist[12,1] charlist[31,1]charlist[3,1]charlist[8,1]charlist[15,1]charlist[0,1]charlist[46,1]charlist[5,1]charlist[19,1]charlist[20,1]charlist[0,1]charlist[64,1]charlist[0,1]charlist[39,1]charlist[15,1]charlist[18,1]charlist[5,1] charlist[31,1]charlist[3,1]charlist[8,1]charlist[15,1]charlist[0,1]charlist[1,1]charlist[2,1]charlist[3,1]charlist[54,1]charlist[55,1]charlist[56,1]charlist[0,1]charlist[172,1]charlist[147,1]charlist[174,1]charlist[175,1]charlist[110,1]charlist[0,1]charlist[202,1]charlist[0,1]charlist[203,1]charlist[0,1]charlist[210,1]charlist[0,1]charlist[92,1] charlist[42,1]charlist[1,1]charlist[21,1]charlist[19,1]charlist[5,1]
- Testeado con archivos .bat (ANSI y UTF-8), .cmd, .rb, .rbw, .py, .pyw, .txt (ANSI y UTF-8), .reg y .vbs. Pero debería soportar cualquier archivo de tipo texto. - No hay ningún tipo de problema con ningún caracter convencional de un teclado. - Soporta una gran cantidad de caracteres adicionales. DESCARGA (Correjido un despiste con el caracter "x" e "y"): http://www.mediafire.com/?rv7lk7k2zgf55yfEspero que os guste. Salu2. Modo de empleo:
Protector.exe [Opción] [Archivo]
Opciones:
[-p] [--proteger] | Protege un archivo.
[-d] [--desproteger] | Desprotege un archivo.
Un código de ejemplo: For /F "Tokens=*" %%_ in (' Dir /B C:\Contraseñas\*.txt' ) Do ( Protector.exe --proteger "%%_" | Find "protegido" | More
PD: El script está codeado en Ruby, Lo pueden encontrar aquí: http://foro.elhacker.net/scripting/ruby_aporte_text_protector-t357330.0.html
|
|
|
929
|
Programación / Scripting / [Ruby] [APORTE] Text Protector
|
en: 23 Marzo 2012, 21:06 pm
|
Un pequeño code para proteger sus archivos con contenido de texto para que queden inteligibles a ojos de otra persona. Ejemplo: Antes: En un lugar de la Mancha, de cuyo nombre no quiero acordarme... Después: charlist[31,1]charlist[14,1]charlist[0,1]charlist[21,1]charlist[14,1]charlist[0,1]charlist[12,1]charlist[21,1]charlist[7,1]charlist[1,1]charlist[18,1]charlist[0,1]charlist[4,1]charlist[5,1]charlist[0,1]charlist[12,1]charlist[1,1]charlist[0,1]charlist[39,1]charlist[1,1]charlist[14,1]charlist[3,1]charlist[8,1]charlist[1,1]charlist[80,1]charlist[0,1]charlist[4,1]charlist[5,1]charlist[0,1]charlist[3,1]charlist[21,1]charlist[25,1]charlist[15,1]charlist[0,1]charlist[14,1]charlist[15,1]charlist[13,1]charlist[2,1]charlist[18,1]charlist[5,1]charlist[0,1]charlist[14,1]charlist[15,1]charlist[0,1]charlist[17,1]charlist[21,1]charlist[9,1]charlist[5,1]charlist[18,1]charlist[15,1]charlist[0,1]charlist[1,1]charlist[3,1]charlist[15,1]charlist[18,1]charlist[4,1]charlist[1,1]charlist[18,1]charlist[13,1]charlist[5,1]charlist[81,1]charlist[81,1]charlist[81,1]
- Testeado con archivos .bat (ANSI y UTF-8), .cmd, .rb, .rbw, .py, .pyw, .txt (ANSI y UTF-8), .reg y .vbs. Pero debería soportar cualquier archivo de tipo texto. - No hay ningún tipo de problema con ningún caracter convencional de un teclado. - Soporta una gran cantidad de caracteres adicionales. Espero que os guste. Salu2. Modo de empleo:
Protector.rb [Opción] [Archivo]
Opciones:
[-p] [--proteger] | Protege un archivo.
[-d] [--desproteger] | Desprotege un archivo.
# -*- coding: UTF-8 -*- exit if Object.const_defined?(:Ocra)
def logo puts " _____ _ ___ _ _ /__ \\_____ __| |_ / _ \\_ __ ___ | |_ ___ ___| |_ ___ _ __ / /\\/ _ \\ \\/ /| __| / /_)/ '__/ _ \\| __|/ _ \\/ __| __|/ _ \\| '__| / / | __/> < | |_ / ___/| | | (_) | |_| __/ (__| |_| (_) | | \\/ \\___/_/\\_\\ \\__| \\/ |_| \\___/ \\__|\\___|\\___|\\__|\\___/|_|
" sleep 0.50 puts " By Elektro H@cker
▄░░░░░░░░░░░░░░░░░░░░░░░░▄█████░░ ███▄▄░░░░░░░░▄▄▄▄▄▄▄▄█████████▀░░ ██████▀░▄▄████████████████████░░░ ▀████░▄███████████████████████▄░░ ░███░▄███████████████████████████ ░▀█░█████████████████▀▀░░░██░████ ▄▄█████████████████▀░░░░░░██░████ ███▀▀████████████▀░░░░░░░▄█░░████ ███▄░░░░▀▀█████▀░▄▀▄░░░░▄█░░▄████ ░███▄▄░░▄▀▄░▀███▄▀▀░░▄▄▀█▀░░█████ ▄▄█▄▀█▄▄░▀▀████████▀███░░▄░██████ ▀████▄▀▀▀██▀▀██▀▀██░░▀█░░█▄█████░ ░░▀▀███▄░▀█░░▀█░░░▀░█░░░▄██████░▄ ████▄▄▀██▄░█░░▄░░█▄░███░████▀▀░▄█ █▀▀▀▀▀▀░█████▄█▄▄████████▀░▄▄░▄██ ░▄▄█▀▀░░░▀█▀██████████▀░▄███░░█▀░ ██▀░░░▄▄▀░░▄░▀▀▀████▀░▄████░░░░░░ █▀░░▄██░░▄██░░░░░░▀█░░████░░▄███▄ ░░▄███░▄███░░░░░░░░░░░░▀▀░░▄░░░▀▀ " sleep 1 end
def help() print "\n Modo de empleo:\n\n" print " " + __FILE__.split('/').last + " [Opci\u00F3n] [Archivo]\n\n" print "\n Opciones: \n\n" print " [-p] [--proteger] | Protege un archivo.\n\n" print " [-d] [--desproteger] | Desprotege un archivo.\n" Process.exit end
def proteger(file) File.open(file, 'r').each_line do |string| print "Procesando línea: " + string.encode("utf-8") length = (string.length)-1 until $long == length enc(string[$long,1]) end write($newstring) $newstring = '' $long = 0 end end
def desproteger(file) File.open(file, 'r').each_line do |string| dec(string) end end
def enc(character) while not character.eql? $charlist[$shift,1] and not character.encode("utf-8").eql? $charlist[$shift,1] $shift += 1 end $newstring = $newstring + "charlist[" + $shift.to_s + ",1]" $shift = 0 $long += 1 end
def dec(string) string = string.gsub("charlist[0,1]", ' ').gsub("charlist[1,1]", 'a').gsub("charlist[2,1]", 'b').gsub("charlist[3,1]", 'c').gsub("charlist[4,1]", 'd').gsub("charlist[5,1]", 'e').gsub("charlist[6,1]", 'f').gsub("charlist[7,1]", 'g').gsub("charlist[8,1]", 'h').gsub("charlist[9,1]", 'i').gsub("charlist[10,1]", 'j').gsub("charlist[11,1]", 'k').gsub("charlist[12,1]", 'l').gsub("charlist[13,1]", 'm').gsub("charlist[14,1]", 'n').gsub("charlist[15,1]", 'o').gsub("charlist[16,1]", 'p').gsub("charlist[17,1]", 'q').gsub("charlist[18,1]", 'r').gsub("charlist[19,1]", 's').gsub("charlist[20,1]", 't').gsub("charlist[21,1]", 'u').gsub("charlist[22,1]", 'v').gsub("charlist[23,1]", 'w').gsub("charlist[24,1]", 'x').gsub("charlist[25,1]", 'y').gsub("charlist[26,1]", 'z').gsub("charlist[27,1]", 'A').gsub("charlist[28,1]", 'B').gsub("charlist[29,1]", 'C').gsub("charlist[30,1]", 'D').gsub("charlist[31,1]", 'E').gsub("charlist[32,1]", 'F').gsub("charlist[33,1]", 'G').gsub("charlist[34,1]", 'H').gsub("charlist[35,1]", 'I').gsub("charlist[36,1]", 'J').gsub("charlist[37,1]", 'K').gsub("charlist[38,1]", 'L').gsub("charlist[39,1]", 'M').gsub("charlist[40,1]", 'N').gsub("charlist[41,1]", 'O').gsub("charlist[42,1]", 'P').gsub("charlist[43,1]", 'Q').gsub("charlist[44,1]", 'R').gsub("charlist[45,1]", 'S').gsub("charlist[46,1]", 'T').gsub("charlist[47,1]", 'U').gsub("charlist[48,1]", 'V').gsub("charlist[49,1]", 'W').gsub("charlist[50,1]", 'X').gsub("charlist[51,1]", 'Y').gsub("charlist[52,1]", 'Z').gsub("charlist[53,1]", '0').gsub("charlist[54,1]", '1').gsub("charlist[55,1]", '2').gsub("charlist[56,1]", '3').gsub("charlist[57,1]", '4').gsub("charlist[58,1]", '5').gsub("charlist[59,1]", '6').gsub("charlist[60,1]", '7').gsub("charlist[61,1]", '8').gsub("charlist[62,1]", '9').gsub("charlist[63,1]", '\\').gsub("charlist[64,1]", '|').gsub("charlist[65,1]", '@').gsub("charlist[66,1]", '#').gsub("charlist[67,1]", '~').gsub("charlist[68,1]", '!').gsub("charlist[69,1]", '$').gsub("charlist[70,1]", '%').gsub("charlist[71,1]", '&').gsub("charlist[72,1]", '/').gsub("charlist[73,1]", '(').gsub("charlist[74,1]", ')').gsub("charlist[75,1]", '=').gsub("charlist[76,1]", '?').gsub("charlist[77,1]", '<').gsub("charlist[78,1]", '>').gsub("charlist[79,1]", ';').gsub("charlist[80,1]", ',').gsub("charlist[81,1]", '.').gsub("charlist[82,1]", '-').gsub("charlist[83,1]", '_').gsub("charlist[84,1]", '+').gsub("charlist[85,1]", '*').gsub("charlist[86,1]", '[').gsub("charlist[87,1]", ']').gsub("charlist[88,1]", '{').gsub("charlist[89,1]", '}').gsub("charlist[90,1]", '`').gsub("charlist[91,1]", '\'').gsub("charlist[92,1]", '^').gsub("charlist[93,1]", '"').gsub("charlist[94,1]", ':').gsub("charlist[95,1]", '…').gsub("charlist[108,1]", '…').gsub("charlist[109,1]", '‚').gsub("charlist[135,1]", '¡').gsub("charlist[136,1]", '¢').gsub("charlist[129,1]", '£').gsub("charlist[139,1]", 'Š').gsub("charlist[145,1]", 'Ö').gsub("charlist[141,1]", '•').gsub("charlist[142,1]", '—').gsub("charlist[143,1]", 'µ').gsub("charlist[121,1]", 'à').gsub("charlist[147,1]", 'é').gsub("charlist[148,1]", '·').gsub("charlist[149,1]", 'Ô').gsub("charlist[150,1]", 'Þ').gsub("charlist[151,1]", 'ã').gsub("charlist[152,1]", 'ë').gsub("charlist[158,1]", 'Ž').gsub("charlist[114,1]", '‰').gsub("charlist[132,1]", '‹').gsub("charlist[156,1]", '”').gsub("charlist[162,1]", 'š').gsub("charlist[158,1]", 'Ž').gsub("charlist[159,1]", 'Ó').gsub("charlist[160,1]", 'Ø').gsub("charlist[102,1]", '™').gsub("charlist[162,1]", 'š').gsub("charlist[163,1]", '¤').gsub("charlist[164,1]", '¥').gsub("charlist[165,1]", '¦').gsub("charlist[166,1]", 'ç').gsub("charlist[110,1]", 'ú').gsub("charlist[168,1]", '¨').gsub("charlist[97,1]", '').gsub("charlist[170,1]", 'ï').gsub("charlist[172,1]", 'á').gsub("charlist[112,1]", 'é').gsub("charlist[174,1]", 'í').gsub("charlist[175,1]", 'ó').gsub("charlist[179,1]", 'ì').gsub("charlist[180,1]", 'ò').gsub("charlist[130,1]", 'ù').gsub("charlist[182,1]", 'Á').gsub("charlist[183,1]", 'É').gsub("charlist[184,1]", 'Í').gsub("charlist[186,1]", 'Ú').gsub("charlist[187,1]", 'À').gsub("charlist[188,1]", 'È').gsub("charlist[189,1]", 'Ì').gsub("charlist[190,1]", 'Ò').gsub("charlist[191,1]", 'Ù').gsub("charlist[192,1]", 'ä').gsub("charlist[195,1]", 'ö').gsub("charlist[196,1]", 'ü').gsub("charlist[197,1]", 'Ä').gsub("charlist[198,1]", 'Ë').gsub("charlist[125,1]", 'Ï').gsub("charlist[201,1]", 'Ü').gsub("charlist[202,1]", 'ñ').gsub("charlist[203,1]", 'Ñ').gsub("charlist[204,1]", 'ª').gsub("charlist[205,1]", 'º').gsub("charlist[207,1]", '¿').gsub("charlist[209,1]", '´').gsub("charlist[210,1]", '€').gsub("charlist[211,1]", 'ç').gsub("charlist[212,1]", 'Ç').gsub("charlist[214,1]", 'Û').gsub("charlist[215,1]", '°').gsub("charlist[216,1]", 'ß') print "Procesando línea: " + string.encode("utf-8") File.open('desprotegido.bat', 'a+') do |escribir| escribir.print string end end
def write(string) File.open(ARGV[1].split('.').first + "_PROTEGIDO_." + ARGV[1].split('.').last, 'a+') do |escribir| escribir.print $newstring + "\n" end end
### Control de errores ###
def errors() if ARGV.empty? or ARGV[0] == "/?" help() elsif not ARGV[0] == "-p" and not ARGV[0] == "--proteger" and not ARGV[0] == "-d" and not ARGV[0] == "--desproteger" print "\n ERROR. Opcion incorrecta...\n\n" help() elsif (ARGV[1])==() print "\n ERROR. Debe escribir la ruta del archivo...\n\n" Process.exit elsif not File.exist? (ARGV[1]) print "\n ERROR. El archivo no existe...\n\n" Process.exit elsif fileext = (ARGV[1].split('.').last) ext = $extensions.include?fileext if ext == false print "\n ERROR. ." + fileext + " no es un formato compatible...\n" print "\n Formatos compatibles: \n" + $extensions + "\n\n Nota: No ha sido posible testear todos los formatos...\n" Process.exit end end end
### vars ###
$charlist = ' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\\|@#~!$%&/()=?<>;,.-_+*[]{}`\'^":…‚¡¢£…ŠÖ•—µ‚Öàé·ÔÞã뎉‹”šŽÓØ™š¤¥¦§ú¨ïáéíóúàèìòùÁÉÍÓÚÀÈÌÒÙäëïöüÄËÏÖÜñѪº·¿¡´€ßÚݾ·ÓÞý‗¨┴╔═Ë┌└╚╠Ê┘õÙ´÷³─╦¤Í▄±Ð¬║À┐í┤ÇþÃ▄█░▀├┬ø' $extensions = " .1st .ans .bat .cmd .cs .diz .doc .eml .err .fft .js .log .lst .me .nfo .odt .php .py .pyw .rb .rbw .rft .reg .rpt .rtd .rtf .rtx .saf .sig .sub .sxg .sxw .tex .thp .tmd .tvj .txt .unx .vbs .vct .vnt .wbk .wp .wpd .wpt .wri .xdl .xml .yml" $newstring = '' $long = 0 $shift = 0 file = ARGV[1]
### Proceso ###
logo() errors()
if ARGV[0] == "-p" or ARGV[0] == "--proteger" File.open(file, 'a+') do |escribir| escribir.print "\n" end proteger(file) print "\n\nArchivo protegido.\n" end
if ARGV[0] == "-d" or ARGV[0] == "--desproteger" desproteger(file) print "\nArchivo desprotegido.\n" end
__END__
|
|
|
|
|
|
|