Mostrar Mensajes

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

Mensajes - tincopasan

Páginas: [1]
1
no es necesario disculparse, cada uno codifica como quiere, de todas formas para mi gusto escribís código de más, lo haría así :
Código: Python
  1. #-*- coding: utf -8 -*-
  2. from os import system, name
  3.  
  4. def clear():
  5.     # Acá no haría falta que cree una variable, solo llame a la función system y estaría.
  6.     if name == 'nt':
  7.         system('cls')
  8.     else:
  9.         system('clear')
  10.    
  11. valores = {2:["kilobytes","bytes"],3:["megabytes","kilobytes"],4:["gigabytes","megabytes"],5:["terabytes","gigabytes"]}  
  12. # Función para verificar si el dato ingresado es un entero    
  13. def ingresar(text):
  14.     # Mientras se ingrese erróneamente
  15.     while True: # error==True:
  16.         try:
  17.             x = int(input(text))
  18.             # Si el dato es correcto, sale del bucle
  19.             break
  20.         except ValueError:
  21.             # Se manipula la salida del error en caso de que el dato no sea el correcto
  22.             print("Error, se debe ingresar un número entero.\n")
  23.     return x
  24.    
  25. # Todo lo que tenga que ver con el menu, esta colocado en esta funcion.
  26. def main():
  27.  
  28.     menu = """
  29.    [1] Convertir bits a bytes  
  30.    [2] Convertir kilobytes a bytes
  31.    [3] Convertir megabytes a kilobytes
  32.    [4] Convertir gigabytes a megabytes
  33.    [5] Convertir terabytes a gigabytes
  34.    [6] Salir
  35.    """
  36.    
  37.     print(menu)
  38.    
  39.     # Entrada de usuario
  40.     the = ingresar("Selecciona una opción: ")
  41.    # Al presionar 6, el programa finaliza
  42.     while the!=6:
  43.         if the == 1:
  44.             # Se le pide el ingreso de datos al usuario
  45.             x = ingresar("Cuantos bits? ")
  46.             print(f"{x//8} es la cantidad de bytes en {x} bits.")
  47.            
  48.         elif the in range(2,6):
  49.             texto= valores.get(the)
  50.             x = ingresar(f"Cuantos {texto[0]}? ")
  51.             print(f"{x * 1024 } es la cantidad de {texto[1]} en {x} {texto[0]}")
  52.            
  53.         else:
  54.             print("\nElije una opción valida. Intentelo nuevamente.")
  55.             #clear()
  56.        
  57.         input("\nPresione una tecla para continuar...\n")    
  58.         clear()
  59.         print(menu)
  60.         the = ingresar("Selecciona una opción: ")
  61.    
  62.     # Al salir del bucle, le mostrará el mensaje
  63.     print("\n\nHasta la próxima [url]https://underc0de.org/foro/Smileys/default/smiley.gif\n\n[/url]")
  64.    
  65. if __name__ == '__main__':
  66.     # Llamamos a la funcion menu
  67.     main()
  68.  

dejo tu código y comentarios en su mayoría y saco lo repetitivo

2
con que necesidad cuatro funciones que hacen lo mismo?
Código: Python
  1. def kbyte2byte(x):
  2.     y = x * 1024
  3.     return y
  4.  
  5. def mbyte2kbyte(x):
  6.     y = x * 1024
  7.     return y
  8.    
  9. def gbyte2mbyte(x):
  10.     y = x * 1024
  11.     return y
  12.    
  13. def tbyte2gbyte(x):
  14.     y = x * 1024
  15.     return y
  16.  

con una sola es lo mismo, total todas devuelven x * 1024
y deberían verificar que se puede pasar a entero lo ingresado, si el usuario es "malicioso" o "descuidado" si ingresa un valor no convertible qenerara un error no manejado.
además en los print deberían usar formateo de cadenas, si es por claridad de código.

3
Ingeniería Inversa / Re:Crackme_Roca By Flamer
« en: Diciembre 22, 2018, 02:30:36 pm »
Hola Flamer, por el simple hecho de que ya lo he resuelto, puedo decirte que es nivel 1, lo cual está muy bien para quien quiere ir desarrollandose en esto de la ingeniería inversa.Es solo cuestión de conocer lo básico e intentar hacerlo, de todas formas si alguien lo intenta y no puede que plantee sus dudas.
Saludos

4
Wargames y retos / Re:Keygenme v1 y v2 by AbelJM
« en: Septiembre 13, 2017, 11:20:30 pm »
estuve un rato al vicio y pasé por esta página que hace tiempo no visito y vi los retos, hice el primero y apenas tenga tiempo resuelvo el segundo
keygen del primero:
Código: [Seleccionar]
nombre=input("Ingrese su nombre: ")
inverso=nombre[::-1]
cadena=inverso + "-"
for n in inverso:
    cadena+=str(ord(n))
print("El serial es: ",cadena)
lo hago en python para no perder tiempo.

agrego el del segundo:
Código: [Seleccionar]
nombre=input("Ingrese su nombre: ")
nombre=nombre.upper()+"PERUCRACKERS"
cesar="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
def cifrar(cadena,lugar):
    resultado=""
    for letra in nombre:
        posicion = cesar.find(letra) + lugar
        modificada = int(posicion) % 26
        resultado = resultado + str(cesar[modificada])
    return resultado
print(cifrar(nombre,len(nombre)))
dicho sea de paso tiene un bug el programa, si lo revisas verás que con el nombre santi genera un byte 00 y hace imposible la solución como el resto.[/code]

5
Gracias! a leer! siempre se aprende algo.

6
Python / Re:[Mini-Guia] Sockets en Python (3.4)
« en: Junio 02, 2016, 04:20:12 am »
Gracias, está muy bien detallado, ahora ya que hablás de comunicación entre dos máquinas, podrías agregar como enviar "ping"  en un segmento de red para saber si la máquina está inactiva o no!
Saludos y muy buen trabajo.

7
Python / Re:[Script] Pypass Generador de contraseñas
« en: Marzo 21, 2016, 02:38:37 am »
me pareció interesante para quienes estamos aprendiendo python, y como el autor no contestó al pedido de alguna mejora, me tomé el atrevimiento de hacerle unos cambios al código y agregarle un entorno visual sencillo con tkinter.Para que se aprecie mejor en vez de crear un archivo .py hay que hacerlo .pyw para que no moleste la consola.
Saludos.
Código: Python
  1. #código realizado por tincopasan
  2. #-*- coding: utf -8 -*-
  3. from tkinter import *
  4. from tkinter import messagebox
  5. import string
  6. import random
  7.  
  8.  
  9. def generar_pass():
  10.     pass_may=cmay.get()
  11.     pass_min=cmin.get()
  12.     pass_num=cnum.get()
  13.     pass_sim=csim.get()
  14.    
  15.     exito= 0
  16.    
  17.     global argumentos
  18.     argumentos =""
  19.    
  20.     if pass_may == 1:
  21.         mayusculas=string.ascii_uppercase
  22.         argumentos = argumentos + mayusculas
  23.         exito=1        
  24.          
  25.     if pass_min == 1:
  26.         minusculas=string.ascii_lowercase
  27.         argumentos = argumentos + minusculas
  28.         exito = 1
  29.      
  30.     if pass_sim == 1:
  31.         simbolos="@#\/¿?¡!.,+-_"
  32.         argumentos=argumentos + simbolos
  33.         exito = 1
  34.  
  35.     if pass_num == 1:
  36.         numeros=string.digits
  37.         argumentos= argumentos + numeros
  38.         exito=1
  39.    
  40.     if exito == 0:
  41.         messagebox.showinfo("¡Error!","Debes seleccionar por lo menos 1 argumento")
  42.        
  43.     if exito == 1:
  44.         cuantas = 0
  45.         total = arg_cantidad.get()
  46.         dic = open("diccionario.txt", "a")
  47.         while cuantas < total:
  48.             cuantas = cuantas + 1        
  49.             password =  "".join(random.SystemRandom().choice(argumentos) for _ in range(arg_largo.get()))
  50.             dic.write(password + "\n")
  51.        
  52.         dic.close()
  53.         messagebox.showinfo("¿Atención!","Archivo de claves generado exitosamente")    
  54.  
  55.    
  56. ventana=Tk()
  57. ventana.title("Generador de Passwords")
  58. ventana.geometry("220x190+200+150")
  59. eleccion=Label(ventana,text="Elija que argumentos utilizar").place(x=0,y=0)
  60.  
  61. cmay=IntVar()
  62. chkmay=Checkbutton(ventana,text="Mayúsculas",variable=cmay,onvalue=1,offvalue=0).place(x=10,y=20)
  63.  
  64. cmin=IntVar()
  65. chkmin=Checkbutton(ventana,text="Minúsculas",variable=cmin,onvalue=1,offvalue=0).place(x=10,y=40)
  66.  
  67. cnum=IntVar()
  68. chknum=Checkbutton(ventana,text="Números",variable=cnum,onvalue=1,offvalue=0).place(x=10,y=60)
  69.  
  70. csim=IntVar()
  71. chksim=Checkbutton(ventana,text="Símbolos",variable=csim,onvalue=1,offvalue=0).place(x=10,y=80)
  72.  
  73. largo=Label(ventana,text="¿Largo de la contraseña?: ").place(x=10,y=100)
  74. cantidad=Label(ventana,text="¿Cantidad de contraseñas?: ").place(x=10,y=120)
  75. arg_largo= IntVar()
  76. inicio=Entry(ventana,textvariable= arg_largo, width=2).place(x=160,y=100)
  77. arg_cantidad=IntVar()
  78. cuantas=Entry(ventana,textvariable=arg_cantidad,width=2).place(x=160,y=120)
  79.  
  80. quien=Label(ventana,text="Realizado por tincopasan").place(x=10,y=170)
  81. boton_generar=Button(ventana,text="Generar pass",command=generar_pass).place(x=130,y=140)
  82. boton_salir=Button(ventana,text="Salir",command=ventana.quit).place(x=10,y=140)
  83. arg_cantidad.set(1)
  84. arg_largo.set(1)
  85. ventana.resizable(0,0)
  86.    
  87. ventana.mainloop()
  88.  

Páginas: [1]