Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - tincopasan

#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

#-*- coding: utf -8 -*-
from os import system, name

def clear():
    # Acá no haría falta que cree una variable, solo llame a la función system y estaría.
    if name == 'nt':
        system('cls')
    else:
        system('clear')
   
valores = {2:["kilobytes","bytes"],3:["megabytes","kilobytes"],4:["gigabytes","megabytes"],5:["terabytes","gigabytes"]}   
# Función para verificar si el dato ingresado es un entero   
def ingresar(text):
    # Mientras se ingrese erróneamente
    while True: # error==True:
        try:
            x = int(input(text))
            # Si el dato es correcto, sale del bucle
            break
        except ValueError:
            # Se manipula la salida del error en caso de que el dato no sea el correcto
            print("Error, se debe ingresar un número entero.\n")
    return x
   
# Todo lo que tenga que ver con el menu, esta colocado en esta funcion.
def main():

    menu = """
    [1] Convertir bits a bytes   
    [2] Convertir kilobytes a bytes
    [3] Convertir megabytes a kilobytes
    [4] Convertir gigabytes a megabytes
    [5] Convertir terabytes a gigabytes
    [6] Salir
    """
   
    print(menu)
   
    # Entrada de usuario
    the = ingresar("Selecciona una opción: ")
   # Al presionar 6, el programa finaliza
    while the!=6:
        if the == 1:
            # Se le pide el ingreso de datos al usuario
            x = ingresar("Cuantos bits? ")
            print(f"{x//8} es la cantidad de bytes en {x} bits.")
           
        elif the in range(2,6):
            texto= valores.get(the)
            x = ingresar(f"Cuantos {texto[0]}? ")
            print(f"{x * 1024 } es la cantidad de {texto[1]} en {x} {texto[0]}")
           
        else:
            print("\nElije una opción valida. Intentelo nuevamente.")
            #clear()
       
        input("\nPresione una tecla para continuar...\n")   
        clear()
        print(menu)
        the = ingresar("Selecciona una opción: ")
   
    # Al salir del bucle, le mostrará el mensaje
    print("\n\nHasta la próxima https://underc0de.org/foro/Smileys/default/smiley.gif\n\n")
   
if __name__ == '__main__':
    # Llamamos a la funcion menu
    main()


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

def kbyte2byte(x):
    y = x * 1024
    return y

def mbyte2kbyte(x):
    y = x * 1024
    return y
   
def gbyte2mbyte(x):
    y = x * 1024
    return y
   
def tbyte2gbyte(x):
    y = x * 1024
    return y


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
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 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta 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
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: php

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: php

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)
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
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

#código realizado por tincopasan
#-*- coding: utf -8 -*-
from tkinter import *
from tkinter import messagebox
import string
import random


def generar_pass():
    pass_may=cmay.get()
    pass_min=cmin.get()
    pass_num=cnum.get()
    pass_sim=csim.get()
   
    exito= 0
   
    global argumentos
    argumentos =""
   
    if pass_may == 1:
        mayusculas=string.ascii_uppercase
        argumentos = argumentos + mayusculas
        exito=1       
         
    if pass_min == 1:
        minusculas=string.ascii_lowercase
        argumentos = argumentos + minusculas
        exito = 1
     
    if pass_sim == 1:
        simbolos="@#\/¿?¡!.,+-_"
        argumentos=argumentos + simbolos
        exito = 1

    if pass_num == 1:
        numeros=string.digits
        argumentos= argumentos + numeros
        exito=1
   
    if exito == 0:
        messagebox.showinfo("¡Error!","Debes seleccionar por lo menos 1 argumento")
       
    if exito == 1:
        cuantas = 0
        total = arg_cantidad.get()
        dic = open("diccionario.txt", "a")
        while cuantas < total:
            cuantas = cuantas + 1         
            password =  "".join(random.SystemRandom().choice(argumentos) for _ in range(arg_largo.get()))
            dic.write(password + "\n")
       
        dic.close()
        messagebox.showinfo("¿Atención!","Archivo de claves generado exitosamente")     

   
ventana=Tk()
ventana.title("Generador de Passwords")
ventana.geometry("220x190+200+150")
eleccion=Label(ventana,text="Elija que argumentos utilizar").place(x=0,y=0)

cmay=IntVar()
chkmay=Checkbutton(ventana,text="Mayúsculas",variable=cmay,onvalue=1,offvalue=0).place(x=10,y=20)

cmin=IntVar()
chkmin=Checkbutton(ventana,text="Minúsculas",variable=cmin,onvalue=1,offvalue=0).place(x=10,y=40)

cnum=IntVar()
chknum=Checkbutton(ventana,text="Números",variable=cnum,onvalue=1,offvalue=0).place(x=10,y=60)

csim=IntVar()
chksim=Checkbutton(ventana,text="Símbolos",variable=csim,onvalue=1,offvalue=0).place(x=10,y=80)

largo=Label(ventana,text="¿Largo de la contraseña?: ").place(x=10,y=100)
cantidad=Label(ventana,text="¿Cantidad de contraseñas?: ").place(x=10,y=120)
arg_largo= IntVar()
inicio=Entry(ventana,textvariable= arg_largo, width=2).place(x=160,y=100)
arg_cantidad=IntVar()
cuantas=Entry(ventana,textvariable=arg_cantidad,width=2).place(x=160,y=120)

quien=Label(ventana,text="Realizado por tincopasan").place(x=10,y=170)
boton_generar=Button(ventana,text="Generar pass",command=generar_pass).place(x=130,y=140)
boton_salir=Button(ventana,text="Salir",command=ventana.quit).place(x=10,y=140)
arg_cantidad.set(1)
arg_largo.set(1)
ventana.resizable(0,0)
   
ventana.mainloop()