Maython: Timestamps bei Eingabe der Buchstaben des Passworts

Beitrag lesen

Guten Tag liebes Forum! :)

Ich bin sehr vertraut mit PHP und HTML, bin aber nie dazu gekommen JS zu benutzen, da es bisher nie notwendig war. Jetzt will ich aber für ein Projekt schauen, wie schnell Leute ihr Passwort eintippen. Also jedes einzelne Zeichen soll einen Timestamp zurückgeben und in ein Array geschrieben werden, welches später in eine Datenbank gespeichert wird.

Die Idee dahinter ist, dass ich später die Differenz der Timestamps ausrechne, damit ich weiß, wie lange jemand für den nächsten Buchstabe braucht. In Python habe ich den Code schon entwickelt.

import time as t
import keyboard
from pynput.keyboard import Key, Listener
import math
import json

chars=['a','b','c','d','e','f','g','h','i','j','k','l','m','n',
       'o','p','q','r','s','t','u','v','w','x','y','z']

global password, time, sr
password = []
time = []
Abweichung = 0.3


def Listen():
    
    with Listener(
            on_press=on_press,
            on_release=on_release) as listener:
        listener.join()
        
    
def on_press(key):
    global time

    
    if (str(key)[1].lower() in chars) and (len(str(key)) == 3):
        password.append(str(key)[1])
        time.append(t.time())

def on_release(key):
    global time

    if key == Key.esc:
        time = calc_time(time)
        if sr == 0:
            return save(password, time)
        elif sr == 1:
            return encoder(password, time)

def calc_time(time):
    shorttime = []

    for i in range(len(time)-1):
        shorttime.append(time[i+1] - time[i] )
    return shorttime


def save(password, time):

    file = open("password.txt", "w")
    file.writelines(str(password)+"\n")
    file.writelines(str(time))
    file.close()

    print("Password changed!")

    return False

            
def encoder(password, time):
    global password_read, time_read
    file = open("password.txt", "r")
    password_read = str(file.readline())
    time_read = str(file.readline())
    file.close()

   

    password_read = password_read.replace(" ",'').replace('"','').replace("'",'').replace("[",'').replace("\n",'').replace("]",'').split(',')
    time_read = time_read.replace(" ",'').replace('"','').replace("'",'').replace("[",'').replace("\n",'').replace("]",'').split(',')
    return False

def compare(p, t, p_r, t_r, abweichung):
    if len(p) != len(p_r):
        return False
    else:
        for i in range(len(p)-1):
            
            if p[i] != p_r[i]:
                
                return False
            else:
                if (t[i] * (1 + abweichung)) >= float(t_r[i]) and (t[i] * (1 - abweichung)) <= float(t_r[i]):

                else:
                    return False
        return True

    
sr = int(input("0: Passw. setzen, 1: Passw. testen\n"))
Listen()
if sr == 1:

    if compare(password, time, password_read, time_read, Abweichung) == False:
        print("Kein Zugriff")
    else:
        print("Zugriff gestattet")


Das Problem das ich habe ist: Ich möchte nur die Zeiten des Passworts zurück bekommen, also wenn jemand in das Textfeld Pw schreibt. Hat jemand eine Anregung?

akzeptierte Antworten