File size: 1,655 Bytes
3cad9c7
 
 
 
 
9b126c8
 
 
 
 
 
 
 
 
 
 
 
a3d6b2a
fee25ce
3cad9c7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6ece9ae
3cad9c7
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
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
43
44
45
import gradio as gr
import joblib
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.calibration import CalibratedClassifierCV

# Attempt to load the model and vectorizer
try:
    model = joblib.load("helix-psa.pkl")
    print("Model loaded successfully:", type(model))
except Exception as e:
    print("Error loading model:", e)

try:
    vectorizer = joblib.load("helix-psa-vectorizer.pkl")
    print("Vectorizer loaded successfully:", type(vectorizer))
except Exception as e:
    print("Error loading vectorizer:", e)

def predictPasswordStrength(password_input):
    password_tfidf = vectorizer.transform([password_input])
    
    # Make predictions
    predicted_proba = model.predict_proba(password_tfidf)
    predicted_class = int(model.predict(password_tfidf)[0])  # Convert to Python integer
    output = ''
    if predicted_class == 0:
        output = "The password is very weak..."
    elif predicted_class == 1:
        output = "The password is average."
    else:
        output = "The password is strong. But alas, it is not unbreakable."

    confidence = float(predicted_proba.max())

    return password_input, output, confidence

demo = gr.Interface(
    fn=predictPasswordStrength,
    inputs=[gr.Textbox('Hello123', label='Password', info='The password to check the strength of', max_lines=1)],
    outputs=[gr.Dataframe(row_count = (2, "dynamic"), col_count=(3, "fixed"), label="Generated Names", headers=["Password", "Prediction", "Confidence"])],
    title='Helix - Password Strength Analyzer',
    description='A password strength analyzer, trained on over 10 million different passwords.'
)

demo.launch()