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) return payload_text, prediction[0]['label'], prediction[0]['score'] * 100 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.Textbox(label="Model Prediction"), gr.Slider(0, 100, label="Score")] ) demo.launch(debug=True) # gr.Interface.load("models/ankush-003/nosqli_identifier").launch()