File size: 1,617 Bytes
b54e71a
93e018c
7944b71
309d442
 
e385089
309d442
0749cb7
309d442
e385089
 
99c7040
bb27896
0e7f3ec
93e018c
 
 
 
 
309d442
6ef3ddb
 
 
c5cc59e
282d4bf
b54e71a
269fec5
282d4bf
269fec5
6ef3ddb
 
269fec5
282d4bf
6ef3ddb
93b0079
6ef3ddb
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
import gradio as gr
import json
import tensorflow as tf
# from transformers import AutoTokenizer
# from transformers import TFAutoModelForSequenceClassification

# Load model directly
from transformers import AutoTokenizer, TFAutoModelForSequenceClassification

# tokenizer = AutoTokenizer.from_pretrained("ankush-003/nosqli_identifier")
tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased")
model = TFAutoModelForSequenceClassification.from_pretrained("ankush-003/nosqli_identifier")

def predict(username, pwd, label, payload_text = None):
    if(payload_text is None):
        payload["username"] = username
        payload["password"] = pwd
        payload_text = json.dumps(payload)
    inputs = tokenizer(payload_text, return_tensors="tf")
    # model = TFAutoModelForSequenceClassification.from_pretrained("ankush-003/nosqli_identifier")
    logits = model(**inputs).logits
    predicted_class_id = int(tf.math.argmax(logits, axis=-1)[0])
    # print(model.config.id2label[predicted_class_id])
    
    return model.config.id2label[predicted_class_id], payload_text

input_elements = [gr.Textbox(label="Enter Username"), gr.Textbox(label="Enter Password"), gr.Dropdown(["Malitious", "Benign"], label="Expected", info="Enter expected value"),
            gr.Textbox(label="Enter Payload", info="Optional if username and password entered already")]

demo = gr.Interface(
    fn=predict,
    inputs=input_elements,
    outputs=[gr.Textbox(label="Generated Payload"), gr.Textbox(label="Model Prediction")]
)
demo.launch(debug=True)
# gr.Interface.load("models/ankush-003/nosqli_identifier").launch()