| |
|
61
|
Programación / Programación General / Re: ¿Top 10 programas más fáciles de hacer?
|
en: 18 Julio 2026, 17:54 pm
|
¿Cuándo dije que algo fuese más difícil de hacer las cosas? ¿Cuando pregunté lo de por qué usar Flash cuando hay que darle muchas vueltas para usarlo? Eso creo, pero recordar el tema específico es difícil y no lo encontré buscando ahora un rato. Quiero agregar que hacer un cheat simple para un juego sin anticheat también es uno de los tipos de programas más fáciles de hacer. ¿Ejemplo? De momento sólo tengo emuladores y Super Fly, de DOS, pero podría probar instalar alguno sencillo para probar. ... En cuanto al tema, estoy pensando en los videojuegos más sencillos, pero claro es complicado para mí, por ahora tengo esto: 
|
|
|
|
|
62
|
Informática / Software / John The Ripper de nuevo (RAR)
|
en: 18 Julio 2026, 16:35 pm
|
Sí recuerdo este tema https://foro.elhacker.net/software/dudas_sobre_john_the_ripper-t521441.0.html;msg2278553#msg2278553pero desde que se rompió mi PC e intenté continuar, me he topado con problemas varios y entonces le veo sentido a preguntar todo desde 0. Tengo John en: john-1.9.0-jumbo-1-win64 Hay carpeta run, el comando help funciona, se supone que está bien. Tengo mi generador de diccionario: # -*- coding: utf-8 -*- import os charset = "abcdefghijklmnñopqrstuvwxyz" def has_three_consecutive_same_chars(word): """Función para verificar si hay tres caracteres consecutivos iguales.""" for i in range(len(word) - 2): if word[i] == word[i + 1] == word[i + 2]: return True return False # Esto detecta automáticamente la carpeta real donde está este archivo .py directorio_actual = os.path.dirname(os.path.abspath(__file__)) ruta_archivo = os.path.join(directorio_actual, "Mywords.txt") # Guardamos el archivo usando la ruta absoluta correcta with open(ruta_archivo, "w", encoding="utf-8") as txt: for a in charset: for b in charset: for c in charset: for d in charset: word = "K" + a + b + c + d if not has_three_consecutive_same_chars(word): txt.write(word + "\n") print("¡Proceso terminado con éxito!") print(f"Archivo guardado en: {ruta_archivo}") input("\nPresiona Enter para salir...")
Insisto en que no se entiende por qué es necesario tanto lío, decir la carpeta donde guardar, si antes funcionaba así: # -*- coding: ANSI -*- charset = "abcdefghijklmnñopqrstuvwxyz" def has_three_consecutive_same_chars(word): """Función para verificar si hay tres caracteres consecutivos iguales.""" for i in range(len(word) - 2): if word[i] == word[i + 1] == word[i + 2]: return True return False with open("Mywords.txt", "w", encoding="utf-8") as txt: for a in charset: for b in charset: for c in charset: for d in charset: word = "A" + a + b + c + d if not has_three_consecutive_same_chars(word): txt.write(word + "\n")
El diccionario generado lo copio y pego en run. Ejecuto un archivo bat así: @echo off :: Cambia a la carpeta donde está el ejecutable de John the Ripper cd /d "C:\john-1.9.0-jumbo-1-win64\run" :: Ejecuta el comando con el archivo de wordlist y el archivo de hashes john --wordlist=Mywords.txt rar.hashes :: Pausa para que puedas ver el resultado pause
Dice: "stat: rar.hashes: No such file or directory" Pero el archivo sí existe, o al menos uno llamado hash.txt que tiene los nombres de las carpetas de mi rar, que también está ahí. Aparentemente el que hacía falta es otro, rar.hashes. Se crea como se indica en el link que puse ¿pero qué es el otro archivo, de dónde salió? El hash.txt ¿lo creé yo, cómo? Ya parece que funciona... --- Editado el título, cambiado "ripley" por "Ripper" y agregado "(RAR)" para corregir y mejorar la comprensión
|
|
|
|
|
63
|
Programación / Programación General / Re: Generar secuencias evitando redundancias, loops en que nada ocurra, etc.
|
en: 17 Julio 2026, 15:42 pm
|
No hay mucha respuesta  Frame 1: // Para códigos de 1 cosa (acción, if, do while o while): // // Las líneas se guardarán en elementos de arrays, // así que en este contexto nro de línea y de elemento... // son lo mismo: CodesLV1 = 0; // Generar código agregando acción: set ("LV1Code"+CodesLV1, new Array("1")); // Generar código agregando if: CodesLV1++; set ("LV1Code"+CodesLV1, new Array("if", "}")); // Generar código agregando do while: CodesLV1++; set ("LV1Code"+CodesLV1, new Array("do {", "} while")); // Generar código agregando while: CodesLV1++; set ("LV1Code"+CodesLV1, new Array("while {", "}")); // // Mostrar los códigos: CodeaMostrar = 0; do { NombredeNewCode = "LV1Code"+CodeaMostrar; trace (NombredeNewCode); TextoLineaPorLinea = eval(NombredeNewCode).join("\n"); trace (TextoLineaPorLinea+"\n"); CodeaMostrar++; } while (CodeaMostrar<=CodesLV1);
Salida: LV1Code0 1
LV1Code1 if }
LV1Code2 do { } while
LV1Code3 while { } Está bien. Frame 2: // Para códigos de 2 cosas: CodesLV2 = -1; CodeBase = -1; do { CodeBase++; LineaDondeAgregar = -1; do { CodesLV2++; NombredeNewCode = "LV2Code"+CodesLV2; LineaDondeAgregar++; // Para generar código agregando acción, 1ero se copia a otro: set (NombredeNewCode, eval("LV1Code"+CodeBase).slice()); // Insertar en la posición LineaDondeAgregar // Parámetros: (índice, elementos_a_eliminar, nuevo_elemento) eval(NombredeNewCode).splice(LineaDondeAgregar, 0, "2"); trace (NombredeNewCode); TextoLineaPorLinea = eval(NombredeNewCode).join("\n"); trace (TextoLineaPorLinea+"\n"); } while (LineaDondeAgregar<eval("LV1Code"+CodeBase).length); } while (CodeBase < CodesLV1); stop ();
Salida: LV2Code0 2 1
LV2Code1 1 2
LV2Code2 2 if }
LV2Code3 if 2 }
LV2Code4 if } 2
LV2Code5 2 do { } while
LV2Code6 do { 2 } while
LV2Code7 do { } while 2
LV2Code8 2 while { }
LV2Code9 while { 2 }
LV2Code10 while { } 2 Cosas que deben corregirse o agregarse: - No debe haber "2" si antes no hay "1". - Lo que esté dentro de un if o loop, debe tener 3 espacios. - Sólo se está agregando "2", se debe también agregar if, etc, y else en caso de haber if. ¿Bien? ¿alguien lo hace? ¿alguna duda? ¿alguna optimización que se les ocurra, o mejores nombres?
|
|
|
|
|
64
|
Programación / Programación General / Re: ¿Top 10 ejercicios más sencillos sobre fuerza bruta "de métodos"?
|
en: 16 Julio 2026, 15:05 pm
|
Anduve sin ganas de abrir los ojos, comer, etc, me dolían un poco, no podía ver bien, y aún tengo toz y ando medio deprimido también. ¿Causas? Probablemente alguna de estas: - Vivo medio lejos de un baño, en eso me pareció que mi orín tendría olor medio agradable, me pareció graciosa la idea de olerlo, había oído que podía tener bacterias pero bueno. Hace años en TV pasaron que gente tomaba lo suyo, no llegué a tanto. - Sentí frío en la garganta pero no me abrigué. Pero no es mi culpa que ninguno de los abrigos que tengo abriguen el cuello, varios tenían cierre roto, los hice unir, pero tan arriba no los unieron (y si los hubieran unido probablemente no me los podría poner). No venden mucho de eso y remeras que compré tienen el cuello particularmente bajo. - Mis familiares invitaron a una gente que probablemente tenía bacterias diferentes a las que acostumbro. Lo de la depresión es que en la vida logro muy poca cosa y por acá parece que todo es extra complicado, por poner un ejemplo ya van 3 pantalones que compro y los 3 se caen, no puede uno moverse sin tener que estar levantándose los pantalones a cada rato. Acá la IA hizo un top 10 de ejercicios sencillos sobre el tema y una idea de cómo resolver el 1ero: https://share.google/aimode/QG02jjyEF3qMqyK49Acá hice una versión que prueba más números, pero solo 1 operador: // Se buscará fórmula para obtener un número N... // a partir de él mismo usando +PostOperador: // ¿Cuánto debe ser PostOperador para que... // N+PostOperador == N? PostOperador = 9; N = 0; do { trace("Probando PostOperador "+PostOperador+"; N "+N); // Vemos si PostOperador sirve al actual valor de N: Resultado = N+PostOperador; if (Resultado == N) { trace("PostOperador "+PostOperador+" sirvió para N "+N); // Sí, cambiamos N para ver si así también sirve: N++; } else { trace("PostOperador "+PostOperador+" FALLó para N "+N); // No, probaremos Ns desde el inicio, // con otro PostOperador: PostOperador--; N = 0; } } while (N<10); trace ("El PostOperador útil parece ser "+PostOperador);
Me parece que se puede hacer con 2 whiles y que queda mejor de ese modo ¿cómo sería?
|
|
|
|
|
67
|
Programación / Programación General / ¿Top 10 ejercicios más sencillos sobre fuerza bruta "de métodos"?
|
en: 6 Julio 2026, 03:53 am
|
Una fuerza bruta "de valores" prueba valores, así que si hay millones de situaciones posibles puede que necesites guardar millones de variables. Ejemplo: Se le muestra el número 0 y debe decir el mismo número pero el programa no sabe eso. Prueba el 0, sirve, crea la variable Situacion0=0, o sea, cuando el número es 0 decir 0. Se le muestra el número 1. Prueba el 0, no sirve, prueba el 1, crea la variable Situacion1 = 1, etc, etc. En cambio una "de métodos" prueba métodos, lo cual supongo reduce la cantidad de información que debe quedar guardada. Ejemplo: Se le muestra el número 0 y debe decir eso*3 pero el programa no lo sabe. Prueba hacerle *0, sirve (porque 0*3 también es 0). Siguiente situación, se le muestra 1. Le hace *0, no sirve. Se vuelve a la 1er situación, pero ahora prueba *1. Sirve. Siguiente situación: 1, le hace *1, no sirve. Se vuelve a la 1er situación, pero ahora prueba *2. Sirve. Siguiente situación: 1, le hace *2, no sirve. Se vuelve a la 1er situación, pero ahora prueba *3. Sirve. Siguiente situación: 1, le hace *3, sirve. Y así va a seguir probando todas las situaciones que se requieran, siempre va a servir y entonces la fuerza  crea Solucion = Numero*3 Quiero aprender a programar fuerza bruta "de métodos" y por eso pregunto cuales serían los ejercicios más sencillos para empezar. Lo había hablado con la IA pero necesito algo más sencillo. Lo 1ero que me dijo fue un robot en un laberinto pero supongo que hay cosas más sencillas. https://share.google/aimode/ZojJzrjPaAkS3xcgK
|
|
|
|
|
68
|
Foros Generales / Foro Libre / Ya que conseguir teclados más grandes es muy complicado... ¿qué puedo poner en mis dedos?
|
en: 6 Julio 2026, 02:21 am
|
No es que haya buscado mucho, pero bueno, la mayoría de los que vi desde que empecé a usar PC son iguales, los muy antiguos eran un poquito más grandes me parece, y los de laptop son más pequeños. ¿Cual es el problema? Las faltas de ortografía que cometo porque presiono una tecla extra sin querer o la de al lado. En foros también a veces al presionar mayúscula presiono tab, el cursor se va a enviar, y yo no puedo darme cuenta a tiempo así que el mensaje se envía. Puedo editarlo, pero es molesto. Entonces acabo de pensar en ponerme algo en los dedos, quizá un guante con esas "cositas" pegadas. ¿Qué cositas? No sé ¿unos cubitos diminutos? ¿han visto algo así? ¿qué se les ocurre? O podría empezar a intentar que la PC escriba lo que yo diga en voz alta. ¿Cómo es eso? Los correctores automáticos no creo que puedan ser suficientemente buenos, además donde más escribo es en el bloc de notas común y corriente. https://share.google/aimode/5qoBZFpShQp5CmDR1No era tan loco como pensaba. Y eso de las teclas cóncavas no me había dado mucho cuenta, antes eran así, las mías son planas.
|
|
|
|
|
69
|
Programación / Python / Re: No se genera el archivo.
|
en: 5 Julio 2026, 06:29 am
|
Qué bueno que ya pudiste comprobar que tu código funciona perfectamente cuando se ejecuta desde la consola. La razón por la que se cierra rápido y no genera el archivo al hacerle doble clic normal es que Windows y Python manejan de forma muy distinta la ruta donde se guardan las cosas en cada caso: ## El motivo del problema
* Al usar la consola (cmd): El sistema sabe exactamente en qué carpeta estás parado, por lo que crea Mywords.txt ahí mismo. * Al hacer doble clic: Windows abre el intérprete de Python (el archivo python.exe general del sistema). Para Python, la "carpeta actual" pasa a ser la carpeta del sistema de Windows (como C:\Windows\System32 o tu carpeta de usuario principal C:\Users\TuUsuario), y no la carpeta donde está tu script.
Al intentar crear el archivo de texto en una carpeta del sistema, Windows bloquea la acción por falta de permisos de administrador, Python lanza un error de acceso denegado y la ventana se cierra de golpe instantáneamente sin escribir nada. ------------------------------ ## La Solución Definitiva (Modifica tu código) Para que el programa funcione con doble clic desde cualquier lugar, debes decirle a Python que busque la ruta exacta donde está guardado el script y cree el archivo de texto ahí mismo. Reemplaza tu código actual por este (solo agregamos la librería os para detectar la ruta):
# -*- coding: utf-8 -*-import os charset = "abcdefghijklmnñopqrstuvwxyz" def has_three_consecutive_same_chars(word): """Función para verificar si hay tres caracteres consecutivos iguales.""" for i in range(len(word) - 2): if word == word[i + 1] == word[i + 2]: return True return False # Esto detecta automáticamente la carpeta real donde está este archivo .pydirectorio_actual = os.path.dirname(os.path.abspath(__file__))ruta_archivo = os.path.join(directorio_actual, "Mywords.txt") # Guardamos el archivo usando la ruta absoluta correctawith open(ruta_archivo, "w", encoding="utf-8") as txt: for a in charset: for b in charset: for c in charset: for d in charset: word = "K" + a + b + c + d if not has_three_consecutive_same_chars(word): txt.write(word + "\n")
print("¡Proceso terminado con éxito!") print(f"Archivo guardado en: {ruta_archivo}") input("\nPresiona Enter para salir...")Funcionó pero creo que antes no era tan complicado... ¿no se puede simplificar?
|
|
|
|
|
70
|
Programación / Programación General / Re: ¿Top 10 programas más fáciles de hacer?
|
en: 4 Julio 2026, 21:48 pm
|
|
Pero Python: - No fue tan fácil de instalar. - No viene con algo donde puedas dibujar o insertar dibujos normales, es tipo DOS, probablemente haya que buscar, y puede que no sea fácil saber cual es el adecuado y hacer que funcione. - No permite concatenar un texto y un número, tienes que convertir el número en texto. - Hace años cuando intenté que un programa genere un archivo, no pude. - Aún tengo problemas para hacer que el programa más simple del mundo funcione, por problemas del formato, que no entiendo porque si lo grabo como py entonces el formato debería ajustarse a py, pero parece que hay un py UTF8 y otros tipos de py.
Tu respuesta no tiene mucho sentido para mí, si yo muestro un programa de ejemplo muestro código o un archivo que puede descargarse (aunque no debería ser necesario) donde esté el c´código; si al mostrar código o un ejemplo es una página que tienes que hacer un curso para poder entender qué es lo que muestra y ver el código, algo está mal en eso. Imaginate que en el foro en vez de poner códigos se pusieran archivos para descargar, junto con unos que tienes que hacer un curso para entender qué son ¿no te parece absurdamente burocrático?
Si la página esa no es capáz de mostrar códigos de forma normal, cómoda para el usuario, entonces diles "git gud" y cuando lo logren me avisan.
|
|
|
|
|
|
| |
|