File size: 1,993 Bytes
b54e71a
93e018c
5fa11d7
309d442
 
e385089
309d442
92fdd7f
309d442
92fdd7f
 
 
 
 
 
 
bb27896
0e7f3ec
a8afce4
b2d6b51
 
 
 
93e018c
92fdd7f
309d442
92fdd7f
 
6ef3ddb
92fdd7f
e646e66
 
 
 
 
b54e71a
915d3e0
282d4bf
269fec5
6ef3ddb
f875dc5
a87481b
6ef3ddb
269fec5
e646e66
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
37
38
39
40
41
42
43
44
45
46
47
48
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")
from transformers import pipeline

classifier = pipeline("sentiment-analysis", model="ankush-003/nosqli_identifier")
# classifier(payload)

def predict(username, pwd, label, payload_text = None):
    if(payload_text is None or payload_text is ""):
        payload = {
            "username": username,
            "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])
    prediction = classifier(payload_text)    
    scores = {
        prediction[0]['label']: prediction[0]['score'] * 100

    }
    return payload_text, scores

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

demo = gr.Interface(
    title="NoSQLi Detector",
    description="DistilBERT-based NoSQL Injection Payload Detection Model",
    fn=predict,
    inputs=input_elements,
    outputs=[gr.Textbox(label="Generated Payload"), gr.Label(label="Scores")]
)
demo.launch(debug=True)
# gr.Interface.load("models/ankush-003/nosqli_identifier").launch()