|
11
|
Foros Generales / Foro Libre / En honor a quienes caminaron antes que nosotros (en el foro)
|
en: 6 Febrero 2025, 19:50 pm
|
En honor a quienes caminaron antes que nosotrosA lo largo de los años, muchas personas han pasado por este foro, compartiendo su conocimiento, su tiempo y su pasión por la informática y el hacking ético. Pseudónimos como Simorg, Randomize o engel lex, entre tantos otros que se merecen una mención, quedarán en el recuerdo de muchos, y perdurarán por siempre en las páginas del foro ...o al menos hasta que el-brujo pulse el botón rojo. 🔌 Algunos fueron mentores, otros fueron compañeros de aprendizaje, otros fueron amigos, y todos ellos dejaron su marca en cada hilo, en cada respuesta y en cada solución compartida. 🏆 Sois los mejores, ¡todos!. Este humilde y pequeño homenaje está dedicado para aquellos que ya no están activos, pero cuyo legado sigue vivo en cada línea de código y en cada enseñanza que dejaron: gracias. Sus aportes siguen iluminando el camino de quienes hoy buscan aprender, tal como ustedes lo hicieron en su momento. Foro.elhacker.net no es solo una comunidad, es el reflejo de la perseverancia, el altruismo y el esfuerzo de quienes alguna vez estuvieron aquí y quienes siguen estando resolviendo dudas, demostrando que el conocimiento es más valioso cuando se comparte. A todos ustedes, los que alguna vez fueron parte de esto, los que caminaron antes que nosotros: no se les olvida. 🙏 Gracias por todo. Atentamente, Elektro.
|
|
|
12
|
Foros Generales / Sugerencias y dudas sobre el Foro / ¿Qué razón puede haber para que hayan borrado este hilo?.
|
en: 7 Octubre 2024, 10:30 am
|
Me estoy refiriendo al hilo creado por el usuario ZonalSage25, que se encuentra en la papelera, y que lleva por título: "que tipo de intrucion es etsa" (así, mal escrito) Soy una persona muy confiada y que jamás ha sufrido baneos ni mucho menos he sufrido la constante eliminación indiscriminada de mis posts sin tener el detalle de avisarme ni nada, que sino, me daría por pensar que cierto moderador lo ha borrado simplemente por que yo he publicado una respuesta, con bastante texto que me ha costado redactar, y ese moderador lo sabe, y por eso lo elimina (para fastidiar). Pero como digo, eso es solo lo que pensaría alguien muy desconfiado... ¿verdad?. Un usuario que formula una pregunta normal y corriente como otra cualquiera; la única respuesta que hay en ese hilo es mi respuesta, con bastante texto y explicaciones para resolverle la consulta al usuario, pero se decide eliminar el hilo. Vaya. ¡Un saludo!
|
|
|
13
|
Media / Juegos y Consolas / Emulador Ryujinx de Nintendo Switch: Aquí puedes descargar la última versión.
|
en: 4 Octubre 2024, 02:57 am
|
Nintendo lo ha vuelto a hacer.  Tras la demanda presentada en torno a marzo de 2024 por la compañía Nintendo contra los autores de los emuladores Yuzu y Citra, a comienzos de este octubre de 2024 se ha revelado que Nintendo contactó a los creadores de otro emulador para Switch, conocido como Ryujinx, quienes han decidido cerrar el proyecto a raíz de un acuerdo extrajudicial con la compañía de video juegos. 🌐 En el siguiente enlace tienen la oportunidad de descargar una copia de la última versión pública conocida, Ryujinx 1.1.1403: ⚫ https://drive.google.com/drive/folders/1hljtWr52piwbXZfcvI9eC8LoALi5SHGi ⚠️ Ignoro el autor de esta carpeta compartida, la cual se publicó en este hilo de Reddit. ✔️ La integridad de estos archivos ejecutables resulta confiable, un análisis en VirusTotal muestra 2 detecciones (de 72 AV analizados), que serán falsos positivos, exactamente como ocurre al analizar una versión legítima anterior que fue descargada desde el GitHub de Ryujinx.
👌 También les podría interesar: ⚫ Emuladores Yuzu y Citra: Aquí puedes descargar sus últimas versiones.
Eso sería todo. ¡Disfrútenlo mientras todavía se pueda!
Atentamente, Elektro.
|
|
|
14
|
Foros Generales / Sugerencias y dudas sobre el Foro / Respuestas generadas por IA
|
en: 1 Octubre 2024, 01:23 am
|
Hola. Considero que alguien debería informar al usuario gerardomunoz de que, por respeto a los demás usuarios y colaboradores / participantes, de ahora en adelante mencione que sus respuestas son generadas por IA cuando vuelva a publicarlas. De hecho, y en mi opinión, considero que esto debería establecerse como una norma del foro. Y si se detecta que un usuario - que ya esté avisado con anterioridad - sigue generando respuestas con IA sin mencionarlo, pues se le debería sancionar. No solo es una cuestión de respeto, sino de sentido común. Cualquier persona que utilice IA para generar respuestas en el foro debería dejarlo claro, ya que las respuestas de una IA son totalmente genéricas (en muchas ocasiones no son capaces de profundizar para servir de ayuda) y muchísimas veces hace afirmaciones falsas, que parecen muy creíbles, por que si algo puede hacer una IA es escribir de forma académica, profesional, con carisma y autoridad para terminar convenciéndote de cualquier cosa... hasta que te pones a verificar la información por ti mismo y descubres que no era cierto lo que te dijo la IA. Y no me estoy refiriendo a temas que sean muy abstractos o complejos, la IA puede afirmar cosas falsas hasta con los resultados de simples operaciones de sumar y restar. Quien utilice servicios de texto de IA generativa tipo ChatGPT a menudo, ya sabrá que lo que digo es tal y como lo afirmo. Y no voy a entrar en debates innecesarios sobre si las respuestas de ese usuario están o no están generadas IA (SPOILER: si que lo están). Quien esté lo suficientemente acostumbrado a utilizar IA, y quien además conozca las herramientas adecuadas (al alcance de todo el mundo) para detectar frases generadas por IA, ya sabe que lo que estoy afirmando es cierto. Esto es un foro, y la esencia de un foro no se debería echar a perder permitiendo que cualquier usuario publique respuestas generadas por IA sin avisar de ello. Y ese es el punto, que haya usuarios que copien y peguen la respuesta generada por ChatGPT, como si se tratase de un bot que se pone a responder a las dudas de los usuarios, pero con pequeñas modificaciones para añadir un "¡Hola!" y un "Hasta luego". Creo que eso no es nada correcto. Y si eso se empezase a tomar por costumbre entre más usuarios, y sin que haya unas reglas que lo regulen, entonces esto ya no será un foro, se convertirá en otra cosa distinta (para peor). Un saludo y gracias por leer. Atentamente, Elektro. Las reglas generales del foro: https://foro.elhacker.net/reglas
|
|
|
15
|
Programación / Scripting / [APORTE] [PowerShell] Crear reglas de firewall para bloquear tráfico de direcciones IPv4
|
en: 22 Septiembre 2024, 11:22 am
|
El siguiente script desarrollado en el lenguaje PowerShell sirve para automatizar la creación de reglas del firewall de Windows para bloquear tráfico de direcciones IPv4. Las direcciones IPv4 pueden estar definidas en el propio script, o en un archivo de texto local. En la cabecera del script, se puede asignar el valor apropiado para especificar la ruta de un archivo que contenga direcciones IPv4: $ipv4ListFile = "$PSScriptRoot\Ipv4.txt" Ejemplo del contenido del archivo: 172.64.149.23 192.229.221.95 20.190.177.85 20.73.194.208 O directamente también se pueden establecer las IPv4 a bloquear, en el siguiente array:
   Block IP addresses.ps1# Script Version 1.3 <# =========================================================================================== | | | User Settings | | | =========================================================================================== #> # Path to a plain text file containing IP addresses. # Note: The file must contain a single IP address per line. [string] ` $ipListFile = "$PSScriptRoot\Ipv4.txt" # An Array with additional IP addresses to block. [string[]] ` $ipArray = @() <# =========================================================================================== | | | Functions | | | =========================================================================================== #> function Show-WelcomeScreen { Clear-Host Write-Host "" Write-Host " $($host.ui.RawUI.WindowTitle)" Write-Host " +=======================================+" Write-Host " | |" Write-Host " | This script will add firewall rules |" Write-Host " | to block network traffic for the IP |" Write-Host " | addresses specified in the input file |" Write-Host " | and/or defined in this script file. |" Write-Host " | |" Write-Host " +=======================================+" Write-Host "" Write-Host " Input File Path: $ipListFile" -ForegroundColor DarkGray Write-Host "" Write-Host " IP addresses hardcoded in this script: $($ipArray.Count)" -ForegroundColor DarkGray Write-Host "" } function Confirm-Continue { Write-Host " Press 'Y' key to continue or 'N' key to exit." Write-Host "" Write-Host " -Continue? (Y/N)" do { $key = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") $char = $key.Character.ToString().ToUpper() if ($char -ne "Y" -and $char -ne "N") { [console]::beep(1500, 500) } } while ($char -ne "Y" -and $char -ne "N") if ($char -eq "N") {Exit(1)} else {Clear-Host} } function Show-GoodbyeScreen { Write-Host "Operation Completed!" -BackgroundColor Black -ForegroundColor Green Write-Host "" Write-Host "Press any key to exit..." $key = $Host.UI.RawUI.ReadKey("NoEcho, IncludeKeyDown") } function Add-FirewallRules { param ( [string]$ipListFile, [string[]]$ipArray ) Write-Host "Compiling internal C# code..." # Natural Sorting C# Snippet Add-Type -TypeDefinition ' using System; using System.Collections.Generic; using System.Runtime.InteropServices; public static class NativeMethods { [DllImport("shlwapi.dll", CharSet = CharSet.Unicode)] public static extern int StrCmpLogicalW(string first, string second); } public class NaturalStringComparer : IComparer<string> { public int Compare(string first, string second) { return NativeMethods.StrCmpLogicalW(first, second); } } ' Write-Host "Fetching computer's firewall rules..." $ruleGroupName = "$env:COMPUTERNAME IP Blocks" [CimInstance[]]$currentRules = Get-NetFirewallRule -Group $ruleGroupName -ErrorAction SilentlyContinue Write-Host "Building IP address collection..." $comparer = [NaturalStringComparer]::new() $sortedSet = [System.Collections.Generic.SortedSet[string]]::new($ipArray, $comparer) if (Test-Path $ipListFile) { Write-Host "Fetching IP addresses from input file..." $ipList = Get-Content -Path $ipListFile | Where-Object { -not [string]::IsNullOrWhiteSpace($_) } foreach ($ip in $ipList) { $sortedSet.Add($ip) | Out-Null } } if ($sortedSet.Count -eq 0) { Write-Warning "There are no IP addresses to process." return } $totalItemCount = $sortedSet.Count $currentItemIndex = 0 Write-Host "Start processing IP address collection..." Write-Host "" foreach ($ip in $sortedSet) { $currentItemIndex +=1 Write-Host "[$currentItemIndex of $totalItemCount] IP address: $ip" $ruleNameInbound = "IP Block (Inbound) ($ip)" $currentRules | Where-Object { $_.DisplayName -eq $ruleNameInbound } -ErrorAction SilentlyContinue | Remove-NetFirewallRule Write-Host "Adding firewall rule to block inbound traffic..." -ForegroundColor DarkGray [CimInstance]$ruleInbound = New-NetFirewallRule ` -DisplayName "$ruleNameInbound" ` -Description "This rule disables incoming traffic for address: $ip" ` -Group "$ruleGroupName" ` -Direction "Inbound" ` -Action "Block" ` -RemoteAddress "$ip" ` -Profile "Any" ` -Enabled "True" ` -LocalAddress "Any" ` -InterfaceType "Any" $ruleNameOutbound = "IP Block (Outbound) ($ip)" $currentRules | Where-Object { $_.DisplayName -eq $ruleNameOutbound } -ErrorAction SilentlyContinue | Remove-NetFirewallRule Write-Host "Adding firewall rule to block outbound traffic..." -ForegroundColor DarkGray [CimInstance]$ruleOutbound = New-NetFirewallRule ` -DisplayName "$ruleNameOutbound" ` -Description "This rule disables outgoing traffic for address: $ip" ` -Group "$ruleGroupName" ` -Direction "Outbound" ` -Action "Block" ` -RemoteAddress "$ip" ` -Profile "Any" ` -Enabled "True" ` -LocalAddress "Any" ` -InterfaceType "Any" Write-Host "" } } <# =========================================================================================== | | | Main | | | =========================================================================================== #> [System.Console]::Title = "Block IP addresses - by Elektro" [CultureInfo]::CurrentUICulture = "en-US" try { Set-ExecutionPolicy -ExecutionPolicy "Unrestricted" -Scope "Process" } catch { } Show-WelcomeScreen Confirm-Continue Add-FirewallRules -ipListFile $ipListFile -ipArray $ipArray Show-GoodbyeScreen Exit(0)
Notas: - Probado en Windows 10 (PowerShell 5.1.19041.1682). Debería funcionar igual en Windows 11. EDITADO: Script actualizado a la versión 1.1. Al final he decidido utilizar el cmdlet New-NetFirewallRule a pesar de los inconvenientes, por que entiendo que así será más compatible y útil para más gente. EDITADO: Script actualizado a la versión 1.2. Se ha mejorado bastante la velocidad de ejecución del código, optimizando la metodología de obtención de las reglas de firewall del equipo. EDITADO: Script actualizado a la versión 1.3. Últimos ajustes y micro-optimizaciones aplicados (). 
|
|
|
16
|
Informática / Hardware / AMD Ryzen 7 5800X 3D vs. AMD Ryzen 9 5950X
|
en: 15 Septiembre 2024, 11:48 am
|
Hola a todos! Llevo indeciso con el siguiente asunto casi medio año, así que he decidido lanzarme a compartir mis dudas en el foro para ver si alguien puede opinar algo que me haga decantarme por una u otra opción... El caso es que tengo una placa base con socket AM4 donde tengo instalado un procesador AMD RYZEN 7 1700X, cuyas especificaciones técnicas son las siguientes: https://www.techpowerup.com/cpu-specs/ryzen-7-1700x.c1892Lo compré en el año 2017, y va siendo hora de actualizarlo... Y entonces se me plantean las dos siguientes opciones: ⚫ AMD Ryzen 7 5800X 3D: https://www.amd.com/en/products/processors/desktops/ryzen/5000-series/amd-ryzen-7-5800x3d.html ⚫ AMD Ryzen 9 5950X: https://www.amd.com/en/products/processors/desktops/ryzen/5000-series/amd-ryzen-9-5950x.htmlSon los mejores procesadores lanzados para el socket AM4, es decir, el tope de gama para AM4. No merece la pena compararlos con ningún otro procesador AMD con socket AM4 (ya lo hice, y además he visto muchas reseñas de especialistas en Youtube). Ambos tienen especificaciones técnicas muy similares. Los benchmarks como el siguiente, no me parecen lo suficientemente concluyentes como para despejarme las dudas: https://cpu.userbenchmark.com/Compare/AMD-Ryzen-9-5950X-vs-AMD-Ryzen-7-5800X3D/4086vsm1817839Y, por si eso fuese poco para decidirse, también comparten un precio prácticamente idéntico (aunque ahora mismo haya una diferencia notable en tiendas online como Amazon, lo cierto es que muchas veces se suelen poner a 320€ los dos, incluso a 300€). No sé decidirme por uno de estas dos CPUs, y al final no hago otra cosa más que desaprovechar las oportunidades de compra con precios reducidos, por que termino por no comprar ninguno de los dos.
Mi pregunta: ¿Cual de esos dos procesadores debería elegir, y por qué motivos?.Por si sirve de algo, deciros que el PC está encendido las 24 hrs los 365 días del año. En teoría ambas CPU tienen el mismo TDP, pero me da miedo que una termine consumiendo más que la otra y eso se vea reflejado en el recibo de la luz. Mi actual Ryzen 7 1700X tiene un TDP de 95W, en comparación con los 105W de esas otras dos CPU más modernas. Realmente no tengo ni idea de cómo pueden afectar 10W de más (y sin descanso) al precio del recibo de la luz. Realizo tareas multi-hilo intensivas como codificación de video. Muy ocasionalmente juego a video juegos, y cuando lo hago no me importa reducirle el nivel de detalles gráficos que el PC pueda tirar mejor, y con mi actual Ryzen no me puedo quejar de las cargas en video juegos que no dependan de la GPU. Supongo que lo que más me gustaría mejorar con uno de esos dos CPU es la velocidad / tiempo total para la codificación de videos. Y creo que eso es todo lo que quería exponer. Muchas gracias por su tiempo. ¡Espero sus opiniones!. Atentamente, Elektro.
|
|
|
17
|
Foros Generales / Sugerencias y dudas sobre el Foro / Robo de cuentas: suplantación de identidad a cuentas de @elhacket.net
|
en: 9 Mayo 2024, 03:20 am
|
Hola. Desde hace unas semanas, he estado recibiendo el siguiente correo electrónico en múltiples ocasiones:  Observen a quién está dirigido: elektrostudios@elhacker.net, una cuenta de correo que teóricamente ya no existe porque el-brujo la suspendió cuando lo solicité, ya hace años. En estos correos, se hacen pasar por el "equipo de cuentas" del foro (xD). Supongo que esto constituye un delito denunciable. No estoy seguro de si se puede hacer algo al respecto desde la administración. No me refiero a denunciar, sino a detener las acciones de este individuo. Por mi parte, ya he informado sobre el phishing al equipo técnico de Microsoft (donde a mi me llegan estos correos) en todas las ocasiones posibles, para que terminen bloqueando el dominio de origen. Creo que es lo único que puedo hacer. ¿A ustedes, los ex/miembros del staff que tienen una cuenta de @elhacker.net, también les ha llegado este burdo intento de robar los datos de sus cuentas de correo? La respuesta a esa pregunta al menos ayudaría a verificar si hay varias víctimas de este ataque, o si tal vez este intento de aparente robo de contraseña solo va dirigido a mí. ¡Quién sabe!, yo no lo sé, por eso pregunto para obtener más información. EDICIÓN:El enlace "Validar Datos" del correo que he compartido lleva a esta URL: (no he ingresado al sitio) Observen la doble "n" en el nombre, que pretende suplantar la identidad del servicio legítimo de infinitummail.com. El dominio se creó el 30 de abril de este año como se puede comprobar aquí: Registered On 2024-04-30 En fin, no sé quién estará detrás de esta doble suplantación, pero intentar obtener las contraseñas de los miembros del foro con cuentas @elhacker.net, que han sido concedidas por el administrador de la web y cuya gestión es únicamente por parte de él, no tiene sentido. Si hay algún problema de "actividad sospechosa", se recupera y cambia la contraseña de forma tradicional con Google, no mediante un "equipo de cuentas" xD. A menos que esto sea un ataque de phising organizado, es decir, en caso de que sea un solo individuo quien está llevando a cabo estos ataques, esa persona es un completo inútil e incompetente al pensar que alguien en el ex/staff o los ex/colaboradores del foro podrían caer en esta trampa tan absurda y terminar introduciendo sus datos de inicio de sesión. Que siga malgastando dinero en comprar dominios baratos y en redactar patéticos correos electrónicos, que conmigo lo tienen difícil. xD ¡Saludos!
|
|
|
18
|
Media / Multimedia / Busco: Programa para editar (cortar/pegar) un archivo de audio AC-3 sin volver a codificarlo
|
en: 21 Abril 2024, 18:11 pm
|
Me gustaría descubrir un programa para Windows, con una interfaz gráfica de usuario, que sea capaz de cargar un archivo de audio AC-3 para cortar (y pegar) en algunos puntos del stream de audio, sin volver a codificar el audio. Cuando pienso en este tipo de aplicación, lo ideal sería que tuviera similitud con la interfaz de usuario de mp3DirectCut ( https://mpesch3.de/):  Requisitos: ----------- - Freeware (de código abierto o no, no importa) o Freemium (parcialmente gratuito con funciones premium deshabilitadas). - Funciona en Windows 10 (x64). - Con interfaz gráfica de usuario (GUI) donde puedes seleccionar un rango, por lo que no necesitas ingresar manualmente los códigos de tiempo para cortar. - Tiene un visualizador de flujo de audio (o "visualizador de ondas"), como en la captura de pantalla anterior. - Puede reproducir el audio, cortarlo en cualquier punto y pegar un silencio en cualquier punto. - Edición sin pérdidas, "lossless" (es decir, no requiere volver a codificar el archivo de audio). - Soporta estéreo o canales 5.1. Nota: las sugerencias de software pago también son bienvenidas, si son económicas para uso privado (no soluciones corporativas que cuestan cientos o miles de euros). Muchas gracias por su atención.
|
|
|
19
|
Foros Generales / Sugerencias y dudas sobre el Foro / [SOLUCIONADO] ¿Cómo desactivo o cambio el corrector ortográfico en el foro?
|
en: 13 Abril 2024, 11:08 am
|
Este problema me sucede desde... no sé, desde hace años, pero no me ha dado por pedir ayuda, hasta ahora. Quien me conozca un poco sabrá que suelo editar mucho mis posts, para corregir faltas, mejorar la redacción, añadir o borrar información (y a veces, cosas que me arrepiento de haber escrito tras haber reflexionado un poco xD), y cosas así. En parte es por que soy (o me considero) perfeccionista, y en parte también es por este problema que voy a explicar, que no me ayuda en nada para darme cuenta de algunos errores ortográficos o algunas teclas que acabo tecleando sin pretender hacerlo... El caso es que, siempre que escribo algo en el foro, se me activa de forma automática el corrector de palabras EN INGLÉS. Y no sé por qué se activa en Inglés, pero creo que no es una configuración de mi navegador (Firefox), por que en el resto de páginas no me sucede esto, solo en el foro. Y entonces, cuando escribo algo, prácticamente todas las palabras en Español me aparecen así como si estuvieran mal escritas:  ¿Alguien tiene idea de como puedo hacer para que se active el corrector en Español, o desactivarlo del todo (solo para el foro)?. Gracias.
|
|
|
20
|
Programación / Scripting / [APORTE] [PowerShell] RAR.exe | Test RAR Files
|
en: 5 Abril 2024, 00:39 am
|
El siguiente script, desarrollado en PowerShell y dependiente del programa de terceros WinRAR (rar.exe), sirve para analizar la integridad de los archivos RAR que haya en el directorio donde se ejecute el script.    El script genera un archivo con nombre "RAR_Test_Files.log" en el directorio de trabajo, donde se registran los nombres de archivos de los tests fallidos. En este ejemplo: RAR_Test_Files.logFailed test with exit code 3: C:\Nueva carpeta\Stupid Invaders (Spanish) (Disc 1)_128mb.rar Test RAR Files.ps1<# =========================================================================================== | | | Variables | | | =========================================================================================== #> $rarExecutablePath = "${env:ProgramFiles}\WinRAR\rar.exe" $recursiveSearch = $true $logErrorFilePath = "$PSScriptRoot\RAR_Test_Files.log" <# =========================================================================================== | | | Functions | | | =========================================================================================== #> function Show-WelcomeScreen { Clear-Host Write-Host "" Write-Host " $($host.ui.RawUI.WindowTitle)" Write-Host " +===================================================+" Write-Host " | |" Write-Host " | This script will use RAR.exe to test each file in |" Write-Host " | the current working directory, and inform about |" Write-Host " | any errors found during the test. |" Write-Host " | |" Write-Host " +===================================================+" Write-Host "" Write-Host " Script Settings " -ForegroundColor DarkGray Write-Host " ===========================" -ForegroundColor DarkGray Write-Host " RAR Executable Path: $([System.IO.Path]::GetFullPath($rarExecutablePath))" -ForegroundColor DarkGray Write-Host " Recursive Search...: $recursiveSearch" -ForegroundColor DarkGray Write-Host "" } function Confirm-Continue { Write-Host " Press 'Y' key to continue or 'N' to exit." Write-Host "" Write-Host " -Continue? (Y/N)" do { $key = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") $char = $key.Character.ToString().ToUpper() if ($char -ne "Y" -and $char -ne "N") { [console]::beep(1500, 500) } } while ($char -ne "Y" -and $char -ne "N") if ($char -eq "N") {Exit(1)} else {Clear-Host} } function Test-RarFiles { Write-Host "Fetching RAR files, please wait..." -ForegroundColor DarkGray Write-Host "" $rarFiles = $null if ($recursiveSearch) { $rarFiles = Get-ChildItem -LiteralPath "$PSScriptRoot" -Filter "*.rar" -Recurse -File } else { $rarFiles = Get-ChildItem -LiteralPath "$PSScriptRoot" -Filter "*.rar" -File } $rarFileCount = $rarFiles.Count $currentFileCount = 0 If ($rarFileCount -eq 0) {return} $testSuccessCount = 0 $testFailCount = 0 $logStream = [System.IO.StreamWriter]::new($logErrorFilePath, $false ) foreach ($rarFile in $rarFiles) { $currentFileCount +=1 Write-Host "RAR File $currentFileCount of $($rarFileCount):" -ForegroundColor DarkGray $psi = New-Object System.Diagnostics.ProcessStartInfo $psi.FileName = $rarExecutablePath $psi.Arguments = "t -idcdn `"$($rarFile.FullName)`"" $psi.RedirectStandardOutput = $false $psi.UseShellExecute = $false $psi.CreateNoWindow = $false $process = [System.Diagnostics.Process]::Start($psi) $process.WaitForExit() $exitCode = $process.ExitCode if ($exitCode -eq 0) { Write-Host "RAR process exited with code: $exitCode" -ForegroundColor Green $testSuccessCount +=1 } else { Write-Warning "RAR process exited with code: $exitCode" $logStream.WriteLine("Failed test with exit code $($exitCode): $($rarFile.FullName)") $testFailCount +=1 } Write-Host "" } $logStream.Close() $SuccessPercent = [string]::Format("{0:F0}", ($testSuccessCount / $currentFileCount) * 100) if ($testSuccessCount -eq $currentFileCount) { Write-Host "RAR Tests Successful: $testSuccessCount of $currentFileCount ($SuccessPercent%)" -BackgroundColor Black -ForegroundColor Green } else { Write-Warning "RAR Tests Successful: $testSuccessCount of $currentFileCount ($SuccessPercent%)" } $FailPercent = [string]::Format("{0:F0}", ($testFailCount / $currentFileCount) * 100) if ($testFailCount -eq 0) { Write-Host "RAR Tests Failed....: $testFailCount of $currentFileCount ($FailPercent%)" -BackgroundColor Black -ForegroundColor Green } else { Write-Warning "RAR Tests Failed....: $testFailCount of $currentFileCount ($FailPercent%)" } } function Show-GoodbyeScreen { Write-Host "" Write-Host "Operation Completed!" -BackgroundColor Black -ForegroundColor Green Write-Host "" Write-Host "Press any key to exit..." $key = $Host.UI.RawUI.ReadKey("NoEcho, IncludeKeyDown") Exit(0) } <# =========================================================================================== | | | Main | | | =========================================================================================== #> [System.Console]::Title = "Test RAR Files - by Elektro" #[System.Console]::SetWindowSize(150, 45) [CultureInfo]::CurrentUICulture = "en-US" try { Set-ExecutionPolicy -ExecutionPolicy "Unrestricted" -Scope "Process" } catch { } Show-WelcomeScreen Confirm-Continue Test-RarFiles Show-GoodbyeScreen
|
|
|
|
|
|
|