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


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: 1 ... 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [27] 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 ... 243
261  Foros Generales / Foro Libre / ¿Puede GPT programar más rápido que tú o incluso cosas que no sabes? en: 18 Noviembre 2024, 14:40 pm
En mi caso sí. Pareciera entonces que programar fuese una pavadita, que cualquiera puede hacer, porque a ver, no soy experto pero hace años que le doy al asunto. O es que en una escala del 1 al 5, yo estoy en LV2 y GPT en 4 o 3 y la diferencia se nota mucho. Pero hay otras cosas que no hace tan bien, al menos aún, no es Dios ¿pero cómo hace el tipo para programar tan bien siendo un "cacharro", una máquina? ¿deberé volverme GPTólico? ¿surgirá una nueva religión?
262  Programación / Programación General / ¿Se puede evitar estos ifs, cómo? en: 18 Noviembre 2024, 05:37 am
El código es largo como para ponerlo todo, cualquier cosa pregunten:
Código
  1. } else if (MinCuadraditoPintado < CuadraditoCentraloCD) {
  2. // El dibujo puede ser simétrico...
  3. // a otro ya mostrado. ¿Lo es?
  4. // Esto puede cambiar:
  5. DibujoEsSimetrico = "No";
  6. // Captar valor (colores) de cada fila;
  7. // si alguno es menor al inverso, sí:
  8. PunteroDeFilas = 0;
  9. do {
  10. PunteroDeFilas++;
  11. PunteroDeColumnas = 0;
  12. PunteroInverso = CuadraditosPorFila;
  13. do {
  14. PunteroDeColumnas++;
  15. Valor = eval("Cuadradito"+PunteroDeFilas+"_"+PunteroDeColumnas);
  16. ValorInverso = eval("Cuadradito"+PunteroDeFilas+"_"+PunteroInverso);
  17. // trace("Valor: "+Valor);
  18. // trace("ValorInverso: "+ValorInverso);
  19. if (Valor < ValorInverso) {
  20. DibujoEsSimetrico = "Sí";
  21. FilaFallada = PunteroDeFilas;
  22. PunteroDeFilas = CuadraditosPorFila;
  23. break;
  24. } else if (Valor > ValorInverso) {
  25. // Es ok:
  26. PunteroDeFilas = CuadraditosPorFila;
  27. break;
  28. }
  29. PunteroInverso--;
  30. } while (PunteroDeColumnas < CuadraditosPorFila);
  31. } while (PunteroDeFilas < CuadraditosPorFila);
  32. // Este if es probablemente innecesario,
  33. // porque se supone que el dibujo será simétrico u ok,
  34. // antes de que se terminen de comparar todas las filas.
  35. if (DibujoEsSimetrico == "Sí") {
  36. // trace ("  El dibujo es simétrico a otro ya mostrado.");
  37. DibujosSimetricos++;
  38. // Al Puntero ponerlo al final de la fila...
  39. // captada como simétrica, para posiblemente...
  40. // evitar algunos otros dibujos simétricos:
  41. Puntero = CuadraditosPorFila*FilaFallada;
  42. Variar();
  43. } else if (CuadraditosDespintados < MinCuadraditosDespintados) {
  44. trace ("  El dibujo tiene demasiados cuadraditos pintados: "+CuadraditosDespintados);
  45. DibujosDensos++;
  46. // Preparar Puntero para generar el próximo dibujo:
  47. Puntero = MaxPosiciondePuntero;
  48. Variar();
  49. } else {
  50. DibujosOk++;
  51. // trace ("  Mostrando dibujo nro: "+DibujosOk);
  52. // Preparar Puntero para generar el próximo dibujo:
  53. Puntero = MaxPosiciondePuntero;
  54. play ();
  55. }
  56. } else if (CuadraditosDespintados < MinCuadraditosDespintados) {
  57. trace ("  El dibujo tiene demasiados cuadraditos pintados: "+CuadraditosDespintados);
  58. DibujosDensos++;
  59. // Preparar Puntero para generar el próximo dibujo:
  60. Puntero = MaxPosiciondePuntero;
  61. Variar();
  62. } else {
  63. DibujosOk++;
  64. // trace ("  Mostrando dibujo nro: "+DibujosOk);
  65. // Preparar Puntero para generar el próximo dibujo:
  66. Puntero = MaxPosiciondePuntero;
  67. play ();
  68. }
  69.  

En resumen:
Código:
sino si el dibujo puede ser simétrico
   averiguar si lo es, iniciando un while
      iniciar otro while, también necesario
         si se capta simetría
            terminar los while
         sino si se capta que no hay simetría
            terminar los while
      fin del while
   fin del while
   Si se captó simetría
      hacer A
   sino si es denso
      hacer B
   sino
      hacer C
sino si es denso
   hacer B
sino
   hacer C

Veo 2 problemas:
- Ifs fuera del while, que se cumplen del mismo modo que los de dentro, sin que vaya a haber cambios en el proceso.
- Código repetido.

En cuanto al 1er punto:
El código es parte de la función Variar, que se autollama en los casos A y B, así que los while deberían terminar antes de que se autollame, por eso no puedo hacer A dentro del while como correspondería.

El código repetido se podría evitar si se analiza siempre la simetría (quitar el else if inicial), pero no parece buena idea sabiendo que será necesario sólo a partir de cierto punto (el código se repite así que tampoco es que haya un punto fijo, sólo hay condiciones fijas).

No sé. Lo de simetría, por las dudas, no se refiere a si el dibujo es capicúa, sino que, al ser invertido (espejo | ) es igual a un dibujo hecho antes.

Es un programa que genera dibujos en blanco y negro siguiendo cierto órden.


Me gustaría poner un ejemplo más simple sobre esta estructura de código... A ver:
Código:
Si hace calor
   usar gorro
sino si el cielo está nublado
   averiguar si está lloviendo, iniciando un while
      iniciar otro while, también necesario
         si se capta lluvia
            terminar los while
         sino si se capta que no llueve
            terminar los while
      fin del while
   fin del while
   Si se captó lluvia
      usar paraguas
   sino si hay terremoto
      no salir
   sino
      hacer lo normal
sino si hay terremoto
   no salir
sino
   hacer lo normal
No es muy parecido porque no hay autollamadas. ¿Ese es el problema, debería evitarlas? Puedo poner un while al principio supongo... Repetir mientras el dibujo generado no sea ok. Probaré. ¿Alguna otra idea o sugerencia?

¿Y el código repetido cómo lo hago más eficiente?
263  Foros Generales / Sugerencias y dudas sobre el Foro / Re: ¿Editar un tema lo vuelve a temas activos? en: 18 Noviembre 2024, 02:48 am
Acabo de modificar un tema y no se reactivó, o sea, estaba en 3er lugar porque otros posts fueron más recientes, y tras mi modificación siguió en el mismo lugar.
264  Media / Multimedia / Re: Duración de textos en un video ¿qué estoy haciendo mal? en: 17 Noviembre 2024, 17:16 pm
Ya entendí... En el lapso en que se movía por 2nda vez, tenía 2 objetos aumentando la velocidad, en vez de tener 1... Son objetos a los que no los hago visibles y quizá por andar copiando y pegando textos lo copié sin querer y quedaron 2... Aún no lo solucioné pero teniendo en cuenta esto supongo que ya está, fin del misterio, no tenía sentido, había probado poner la misma fuente y tamaño, variar la forma de calcular y el error seguía.

265  Sistemas Operativos / Windows / Re: no puedo acceder a varias carpetas del pc en: 17 Noviembre 2024, 17:15 pm
¿Abrir el ordenador? ¿te refieres a acceder a él desde otro aparato? Yo lo que sé es que el mío cuando lo enciendo, si no muevo el mouse enseguida luego no se mueve, así que puede estar relacionado, no debería suceder, pero el truco sería no dejar encendido en vano el PC, y de paso te ahorras algo de corriente.
266  Programación / Programación General / Simulación de choques desde atrás. en: 17 Noviembre 2024, 07:53 am
Barriles aparecen desde la izquierda, moviéndose a la derecha. Quiero que en vez de poder ocupar el mismo espacio (es un mundo 2d, los barriles están acostados y se ve su parte circular, como si fuese una rueda) y que uno pase al otro como si nada, se choquen, y que el de atrás pierda velocidad ¿se detenga? y el otro gane ¿lo mismo que la otra perdió? Pregunto porque no sé cómo sería más realista.

El principal problema que tengo es quizá por no saber Física. Se me ocurre algo así:
Se mueve el barril que está más a la izquierda.
luego el siguiente, y así sucesivamente hasta el más derecho.
Luego se va mirando desde la izquierda, a ver si quedó tocando a uno de delante, en cuyo caso el de atrás pierde velocidad y el de delante gana.
El problema es que a altas velocidades puede ocurrir algo así:
O sea, son 2 momentos distintos. En el 1ero, arriba, no se chocaron.
Abajo, se movieron, como indiqué, pero el de más izquierda se movía mucho más rápido que el del medio, que era más rápido que la derecha, así que quedaron tocándose los 3. Si en el programa pongo que I se detenga por tocar a M, y M se detenga por tocar a D, entonces I y M van a quedarse tocando y quietos, lo cual no es físicamente posible, sería que estén ocupando el mismo espacio.

¿Cómo lo hago bien?
267  Programación / Programación General / Re: Cambiar partes de un color definido hexadecimalmente. en: 17 Noviembre 2024, 06:52 am
Me parece que has utilizado un solo cuadro de texto que llamaré txt_rgb para de ahí tomar su valor que está dado en Hexadecimal, entonces te basta con:

ColorDelFondo = new Color(Fondo)
ColorDelFondo.setRGB( parseInt(txt_rgb,16) )
Pero no es una película, no tiene nombre. El nombre que se le da es en realidad la variable que muestra. Me funcionó así:
ColorDelObjetoFondo = new Color(Fondo)
ColorDelObjetoFondo.setRGB(parseInt(ColorDelFondo,16))

ColorDelFondo está definido en el texto, yo lo había definido en el frame pensando que era lo 1ero que se aplicaba y que si no estaba definido se iba a aplicar mal. Pero funciona, aparentemente 1ero las variables toman el valor de los textos y luego se aplica el código del frame.

Citar
"AABBCC" primero hay que notar que es un String, para nada es un número por lo que hay que convertirlo, se hace con parseInt, a él le das un String y la Base numérica en la que está esa String y te devuelve el Número Entero correspondiente: 11189196 que es un Número válido y completamente equivalente a 0xAABBCC
Interesante ¿si un texto tiene G y pongo base 17 también lo convierte a un número interpretando bien la idea o sólo funciona hasta 16? Con eso y la operación inversa podría resumir números largos... Me sirve si grabo datos de situaciones cuyos nombres están compuestos por las variables, ejemplo:
VidaPropia_VidaRival.GoodAction = 1
donde VidaPropia y VidaRival se sustituirán por números, imagina qué pasa entonces si la cantidad de variables fuese mucha... Nombres larguísimos. Aunque el separador debe estar, m.... ¿sabes una solución para esto?


Bueno, miro lo que hiciste, parece bien, aunque mi idea no era hacerlo rotatorio, sino que si uno quiere verde al máximo por ejemplo hace clics hasta ver que ocurrió. Si es rotatorio habría que presionar el botón contrario luego o volver a presionar varias veces el mismo botón...

Fua, está difícil, y la idea es entenderlo no simplemente copiarlo. Intentaré entendero y comento mis dudas. El botón más derecho dice:
Código
  1. on (release) {
  2.  if ( hex2int(n) + 1 > 15 ) {
  3.    n = 0
  4.  } else {
  5.    n = int2hex(hex2int(n) + 1)
  6.  }
  7.  c = new Color(_root.cuadro)
  8.  c.setRGB(hex2int(_root.R1.n + _root.R2.n + _root.G1.n + _root.G2.n + _root.B1.n + _root.B2.n))
  9. }
O sea, al presionarlo se usa esto:
Código:
function hex2int(h) {
  return parseInt(h,16)
}
Del texto ¿separado? m... Buena idea supongo, aunque luego debes concatenarlo. Bueno, copiaré lo de tenerlo separado. Del trozo de texto hexadecimal obtienes su valor convertido a número.

Si al sumarle 1 resulta más de 15, lo vuelves 0.
sino al texto lo transformas con esto:
Código:
function int2hex(i) {
  return (i).toString(16).toUpperCase()
}
Lo cual es obtener, de lo que hiciste antes, el resultado de convertirlo a texto en base 16 y en mayúscula.
O sea, eso es necesario si es un número, si es A~F no, supongo.
Y le sumas 1.
Edit: No, al revés, es necesario sólo si es un texto.

Luego concatenando asignas el color al cuadro... Bien, creo que lo entendí, lo aplicaré, aunque mi plan incluye botones para asignar colores directamente, y si el texto está separado habrá que distribuir en él las variables. Está bien, sólo que buscaba algo más matemático, como que el botón más derecho sumara al número de a 1, el siguiente botón hacia la izquierda sumara de a, no sé ¿16? De hecho tu sistema no implica que aumentar 1 al último valor de un color, pueda aumentar el anterior, como tenía pensado, por ejemplo si se tiene:
00FFEF
presionar el último debería causar 00FFF0 porque sumas 1 al color azul que era ponele 250. Voy a probar 3 textos en vez de 6 a ver si sale.
268  Media / Juegos y Consolas / Sugerencias para historia de hackers. en: 17 Noviembre 2024, 05:48 am
Sigo con mi sueño de hacer un videojuego en que distintos personajes vayan viajando al mundo de otros, que esté alterado por los villanos de los que viajan.

¿Pero quién podría ser el enemigo? ¿quién inició eso y con qué objetivo?

Acabo de ver un resumen de la historia de FF 13-2, probablemente eso me inspiró un poco.

El enemigo podría ser un bug, o un hacker, pero para no dejar al concepto o estereotipo malparado, se me ocurrió poner hackers buenos también. Que no haya malos es más complicado, tal vez imposible, o tal vez si a todos los involucrados les falta información importante o por mala suerte o descuido hubo un gran malentendido. No sé, leo ideas.

Lo que se me había ocurrido es que el hacker malvado, o el grupo de hackers malvados, a pesar de los esfuerzos de los buenos, lograron dar consciencia a un villano, el cual va viajando a otros videojuegos para dar consciencia a otros villanos y reunirse todos en un mundo específico, tal vez Internet, con lo cual sería el fin de los videojuegos tal como los conocemos. Luego de todo el entrenamiento volverían a sus juegos con la capacidad de obtener información y dinero de los jugadores, todo lo cual se lo darían a los hackers malvados, ese es su plan. ¿Se les ocurre algo mejor?
Habría que explicar por qué el villano debe recorrer los mundos uno por uno en vez de ir directo a Internet. Tal vez simplemente no hay varios caminos, sólo uno que atraviesa todos los mundos. O para poder ir deben adquirir cierta cantidad de poder ¿para no perder su consciencia, lo vi en Ghost in the Shell?
Los buenos por su parte hicieron lo mismo con el héroe antagonista del villano, y se dedican a proteger a los demás héroes, para que no mueran por el ataque de los villanos, que están adelantados. Algunos podría ser que estén engañados, hipnotizados, debilitados, etc, y haya que recuperarlos.

Otra idea era que el hacker malvado quería convertirse en el final boss de un videojuego, por lo que de algún modo se proyectó en uno, y empezó a hacer desmadres dejando a los héroes más o menos intactos para que lo persigan.

Slayers Try también tuvo algo que ver con estas ideas xP Y Ralph el demoledor pero lo vi hace mucho.

Es como "the ultimate goal" de los hackers malvados: Dar consciencia a un villano virtual, capaz de modificar software a una velocidad y profundidad y con una facilidad que la humanidad no podríad xD
269  Informática / Software / Re: ¿Cómo averiguo los passwords de archivos rar o extraigo sus contenidos sin saberlos? en: 16 Noviembre 2024, 18:08 pm
Antes de empezar con el tema del diccionario decidí buscar infor sobre WinRAR Password Remover v.5.0.1.

Aparentemente requiere un pago, no está del todo claro, dice aquí:
https://winrarpasswordremoverfree.weebly.com/

Aquí se menciona una cuenta:
https://www.youtube.com/watch?v=QjJuWUF0iZ0
pero es para una versión anterior y no me funcionó. Quizá vi mal, puse:
tebble73
aikido123
Lo escribe chiquito y no lo pone en la información del video, yo que sé.

El programa aparentemente fue creado por PORTABLEAPPZBLOGSPOTCOM. Comenté en un blog, pero no veo mi comentario, estará en proceso de aprobación. No encontré un canal de YT.

Busqué la versión 5.5.0 pero no hubo caso.

Lo más parecido que hallé es esto:
https://rar-password-unlocker.soft32.com/free-download/?dm=0
que no es lo mismo, y no lo pude descargar, nunca empieza la descarga.

Otro día puede que busque más.

EDIT: Ya. Busqué "bypass winrar password", es decir, poder extraer sin que se averigue el password, hacer que el programa no lo pregunte, a ver si es posible. No encontré sobre eso. Encontré esto:
https://www.passfab.com/rar/bypass-winrar-password.html#method3
¿Cómo funciona exactamente?

El método 4 parece aún mejor, si es que funciona. Pruebo ese. Tarda en abrirse el archivo...

Mientras pregunté a GPT sobre ese bat, dijo:
Citar
Este archivo batch (con extensión `.bat`) es un script que parece intentar descifrar la contraseña de un archivo .RAR usando fuerza bruta, incrementando el valor de una variable numérica para probar diferentes combinaciones de contraseñas. A continuación, te explico cada línea de este archivo:

```batch
@echo off
```
- **`@echo off`**: Desactiva la visualización de los comandos en la consola. Solo se muestran los resultados de los comandos ejecutados, no los comandos en sí.

```batch
title WinRar Password Retriever
```
- **`title WinRar Password Retriever`**: Cambia el título de la ventana de la consola a "WinRar Password Retriever".

```batch
copy "C:\Program Files\WinRAR\Unrar.exe"
```
- **`copy "C:\Program Files\WinRAR\Unrar.exe"`**: Copia el archivo `Unrar.exe` desde la carpeta de instalación de WinRAR a la ubicación actual del script. Este archivo es necesario para extraer el contenido de los archivos .RAR.

```batch
SET PASS=0
```
- **`SET PASS=0`**: Inicializa una variable llamada `PASS` con el valor `0`, que será utilizada para intentar contraseñas numéricas, comenzando desde 0.

```batch
SET TMP=TempFold
```
- **`SET TMP=TempFold`**: Define una carpeta temporal llamada `TempFold` donde se extraerá el contenido del archivo .RAR durante el proceso de fuerza bruta.

```batch
MD %TMP%
```
- **`MD %TMP%`**: Crea la carpeta temporal `TempFold` (si no existe) usando el comando `MD` (make directory).

```batch
:RAR
```
- **`:RAR`**: Es una etiqueta que marca un punto en el script. Se puede volver a esta etiqueta mediante el comando `GOTO`.

```batch
cls
```
- **`cls`**: Limpia la pantalla de la consola.

```batch
echo.
```
- **`echo.`**: Imprime una línea en blanco en la consola.

```batch
SET/P "NAME=File Name  : "
```
- **`SET/P "NAME=File Name  : "`**: Solicita al usuario que ingrese el nombre del archivo .RAR (incluyendo la extensión) y almacena ese valor en la variable `NAME`.

```batch
IF "%NAME%"=="" goto ProblemDetected
```
- **`IF "%NAME%"=="" goto ProblemDetected`**: Si el usuario no ingresa ningún valor para el nombre del archivo, el script salta a la etiqueta `ProblemDetected`.

```batch
goto GPATH
```
- **`goto GPATH`**: Si el nombre del archivo fue ingresado, el script salta a la etiqueta `GPATH` para pedir la ruta del archivo.

```batch
:ProblemDetected
```
- **`:ProblemDetected`**: Marca la etiqueta que maneja el caso en que no se ingresa un nombre de archivo.

```batch
echo You can't leave this blank.
```
- **`echo You can't leave this blank.`**: Imprime un mensaje de error indicando que el campo no puede estar vacío.

```batch
pause
```
- **`pause`**: Pausa la ejecución del script y espera a que el usuario presione una tecla para continuar.

```batch
goto RAR
```
- **`goto RAR`**: Regresa a la etiqueta `:RAR` para pedir nuevamente el nombre del archivo.

```batch
:GPATH
```
- **`:GPATH`**: Marca la etiqueta donde se solicita la ruta completa del archivo .RAR.

```batch
SET/P "PATH=Enter Full Path (eg: C:\Users\Admin\Desktop) : "
```
- **`SET/P "PATH=Enter Full Path (eg: C:\Users\Admin\Desktop) : "`**: Solicita al usuario que ingrese la ruta completa del archivo y guarda ese valor en la variable `PATH`.

```batch
IF "%PATH%"=="" goto PERROR
```
- **`IF "%PATH%"=="" goto PERROR`**: Si el usuario no ingresa una ruta, el script salta a la etiqueta `PERROR`.

```batch
goto NEXT
```
- **`goto NEXT`**: Si se ingresó una ruta, el script salta a la etiqueta `NEXT` para continuar con la verificación del archivo.

```batch
:PERROR
```
- **`:PERROR`**: Marca la etiqueta que maneja el caso en que no se ingresa una ruta.

```batch
echo You can't leave this blank.
```
- **`echo You can't leave this blank.`**: Imprime un mensaje de error indicando que la ruta no puede estar vacía.

```batch
pause
```
- **`pause`**: Pausa la ejecución y espera a que el usuario presione una tecla.

```batch
goto RAR
```
- **`goto RAR`**: Regresa a la etiqueta `:RAR` para que el usuario vuelva a ingresar el nombre del archivo y la ruta.

```batch
:NEXT
```
- **`:NEXT`**: Marca la etiqueta donde se verifica si el archivo existe.

```batch
IF EXIST "%PATH%\%NAME%" GOTO SP
```
- **`IF EXIST "%PATH%\%NAME%" GOTO SP`**: Si el archivo .RAR existe en la ruta especificada, el script salta a la etiqueta `SP`.

```batch
goto PATH
```
- **`goto PATH`**: Si el archivo no existe, el script salta a la etiqueta `PATH`.

```batch
:PATH
```
- **`:PATH`**: Marca la etiqueta donde se maneja el caso de un archivo inexistente.

```batch
cls
```
- **`cls`**: Limpia la pantalla.

```batch
echo File couldn't be found. Make sure you include the (.RAR) extension at the end of the file's name.
```
- **`echo File couldn't be found. Make sure you include the (.RAR) extension at the end of the file's name.`**: Muestra un mensaje de error indicando que no se pudo encontrar el archivo, probablemente porque el nombre o la ruta es incorrecta.

```batch
pause
```
- **`pause`**: Pausa la ejecución y espera a que el usuario presione una tecla.

```batch
goto RAR
```
- **`goto RAR`**: Regresa a la etiqueta `RAR` para que el usuario vuelva a ingresar los datos.

```batch
:SP
```
- **`:SP`**: Marca la etiqueta donde comienza el proceso de fuerza bruta para descifrar la contraseña.

```batch
echo.
echo Breaking Password...
echo.
```
- **`echo.`**: Imprime líneas en blanco y el mensaje "Breaking Password..." indicando que el proceso de descifrado ha comenzado.

```batch
:START
```
- **`:START`**: Marca la etiqueta donde comienza el bucle de prueba de contraseñas.

```batch
title Processing...
```
- **`title Processing...`**: Cambia el título de la ventana a "Processing..." mientras se realiza la fuerza bruta.

```batch
SET /A PASS=%PASS%+1
```
- **`SET /A PASS=%PASS%+1`**: Incrementa el valor de la variable `PASS` en 1. Este será el próximo intento de contraseña (numérica).

```batch
UNRAR E -INUL -P%PASS% "%PATH%\%NAME%" "%TMP%"
```
- **`UNRAR E -INUL -P%PASS% "%PATH%\%NAME%" "%TMP%"`**: Ejecuta el comando `Unrar.exe` para intentar extraer el contenido del archivo .RAR usando la contraseña actual, que es el valor de `PASS`. El comando `-INUL` suprime los mensajes de salida y `-P%PASS%` especifica la contraseña a probar.

```batch
IF /I %ERRORLEVEL% EQU 0 GOTO FINISH
```
- **`IF /I %ERRORLEVEL% EQU 0 GOTO FINISH`**: Si la extracción fue exitosa (`ERRORLEVEL` es 0), el script salta a la etiqueta `FINISH`, lo que indica que se ha encontrado la contraseña correcta.

```batch
GOTO START
```
- **`GOTO START`**: Si la contraseña no es correcta, el script vuelve a la etiqueta `START` para intentar con el siguiente valor de `PASS`.

```batch
:FINISH
```
- **`:FINISH`**: Marca la etiqueta donde el script finaliza cuando se encuentra la contraseña correcta.

```batch
RD %TMP% /Q /S
```
- **`RD %TMP% /Q /S`**: Elimina la carpeta temporal `TempFold` y su contenido de manera silenciosa (`/Q` para "quiet" y `/S` para eliminar subdirectorios).

```batch
Del "Unrar.exe"
```
- **`Del "Unrar.exe"`**: Elimina el archivo `Unrar.exe` que fue copiado al inicio del script.

```batch
cls
```
- **`cls`**: Limpia la pantalla.

```batch
title 1 Password Found
```
- **`title 1 Password Found`**: Cambia el título de la ventana a "1 Password Found".

```batch
echo.
echo File = %NAME%
echo Stable Password= %PASS%
```
- **`echo File = %NAME%`**: Imprime el nombre del archivo .RAR.
- **`echo Stable Password= %PASS%`**: Imprime la contraseña encontrada (el valor de `PASS`).

```batch
echo.
echo Press any key to exit.
pause>NUL
```
- **`pause>NUL`**: Pausa la ejecución y espera a que el usuario presione una tecla para salir, sin mostrar el mensaje predeterminado de "Press any key to continue...".

```batch
exit
```
- **`exit`**: Finaliza la ejecución del script.

---

### Resumen
Este script intenta descifrar la contraseña de un archivo .RAR mediante fuerza bruta, probando contraseñas numéricas (incrementando `PASS` en cada ciclo). Utiliza `Unrar.exe` para intentar extraer el contenido del archivo, y se detiene cuando se encuentra una contraseña que permite la extracción exitosa.
Le pregunté si lo de numéricas se refiere a que no encuentra la contraseña si tiene texto, y dijo que sí, que no la encontraría. Igual el código es interesante.

El archivo sigue sin abrirse así que lo reintentaré sin tener cosas abiertas...

Con el bloc de notas me aburrí de esperar. Con Word puse reemplazar todas y se trancó. Volví a abrirlo, las estaba reemplazando de a una, y me puso esto:
270  Informática / Software / En Excel, especificar fórmulas más rápido. en: 16 Noviembre 2024, 06:26 am
​Mi tabla tiene 2 partes.

La 1era se ve así:


La 2nda:


Explico: Hay ciertas características o condiciones, a la izquierda, y se cuenta cuántas escaleras cumplen cada una. Por ejemplo Fi es cuando el 1er contacto (first) que tuvo el personaje con esa escalera, fue por la izquierda. Si eso es true, se pone 1, y sino 0. A la derecha se suma la cantidad de escaleras que cumplieron esa condición. Los datos para eso están en otra sección que no viene al caso. No le presten atención al No, porque no viene al caso tampoco, lo copié sin darme cuenta.

La diferencia entre ambas partes es que la 2nda se basa en la 1era, es true si alguna de las 2 condiciones en la izquierda se cumple. Por ejemplo SioSd significa que la escalera fue contactadas sólo por la izquierda o sólo por la derecha. Si alguna de esas condiciones se cumple, será 1, y sino 0. El total en la derecha funciona igual, no hay problema con eso.

¿Cómo se hace la 2nda parte? Por ejemplo TsoDxA en la escalera 1 es:
=SI($B$11+B49>0; 1; 0)
en la escalera 2 es: =SI($C$11+C49>0; 1; 0)
en la 3 es: =SI($D$11+D49>0; 1; 0)
etc
En B11 está el dato de Ts para la 1er escalera, en B49 está el correspondiente de DxA.
La variable Ts se mantiene hacia abajo, en tanto en la izquierda de la 1er columna diga Ts, por eso le puse el signo de $, para que al autorellenar o como se llame, la referencia no cambie.
El problema es que cuando aparece algo nuevo en la izquierda, como en el caso de Si, tengo que cambiar esas referencias, o sea, por ejemplo $B$11 lo tengo que cambiar por $B$12, $C$11 por $C$12, y así hasta la H. Sólo 7 cambios, el resto lo autocompleto, parece poca cosa, pero la tabla es grande, las variables en la izquierda cambian muchas veces, así que esos cambios los tengo que hacer muchas veces, a menos que me den una solución mejor...

¿Qué se les ocurre?

Por ejemplo: ¿Es posible poner una referencia basada en el contenido de una celda? No sé si serviría, es una intuición. Si en la derecha, donde no se vea, pongo un número, y a cada referencia se le suma ese número, tendría que modificar 1 número nada más, en vez de 7 cosas que implican tener que presionar F2 y moverse en el contenido de la celda. Bueno, tal vez necesite modificar la referencia 1 vez, el resto lo autorelleno.​

Me recomendaron poner esto:
=SI(BUSCARV(INDICE(DIVIDIRTEXTO($A51;"o";0);;1);$A$7:$H$49;COLUMNA();0)+BUSCARV(INDICE(DIVIDIRTEXTO($A51;"o";0);;2);$A$7:$H$49;COLUMNA();0)>0; 1; 0)
en B51
No lo entiendo y cuando lo pongo el resultado es #¿NOMBRE?

Creo que mi versión, 2013, no tiene esa fórmula, porque no me aparece como opción cuando la escribo.

Le pedí a GPT que me la explique, esto es lo que sigo sin entender:
BUSCARV(INDICE(...);$A$7:$H$49;COLUMNA();0):
BUSCARV busca el valor que se ha obtenido con INDICE dentro del rango $A$7:$H$49.
El tercer argumento COLUMNA() se utiliza para determinar de qué columna se debe devolver el valor. La función COLUMNA() devuelve el número de la columna de la celda donde está escrita la fórmula. Si la fórmula está en la columna C, por ejemplo, devolverá 3.
El cuarto argumento 0 indica que se debe hacer una coincidencia exacta.
Entonces, el primer BUSCARV busca el valor 123 (o lo que sea que haya en la primera parte del texto de $A51)


Busca Fi, por ejemplo, en el rango $A$7:$H$49. Como está en la columna A, podría ser $A$7:$A$49 ¿o no?
Lo hallará en A7. ¿Y luego? No entiendo lo de COLUMNA(). De hecho no entiendo qué devuelve BuscarV ¿la coordenada donde está el valor? A7. Luego, dependiendo de en qué columna esté la fórmula, debería tomar el valor de la fila 7 y esa columna, o sea, si está en 2, la tomaría de B7 ¿pero cómo hace eso? ¿escribir COLUMNA() sustituye la columna que fue el resultado de BuscarV? ¿sustituye A por B?
Páginas: 1 ... 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [27] 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 ... 243
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines