YAMITEK's picture
Upload 7 files
6969871 verified
import streamlit as st
from joblib import load
import numpy as np
# App Title
st.title("Malware Detection")
# Load Model and Encoder
model = load('dbscan_model.joblib')
encoder = load("LabelEncoder.joblib")
# Input Fields
anomaly_score = st.number_input("Anomaly Score", min_value=0, max_value=100, step=1, help="Score indicating the level of anomaly (0-100).")
anomaly_score = anomaly_score / 100 # Normalize
suspicious_ip_count = st.number_input("Suspicious IP Count", min_value=0, max_value=9, help="Number of suspicious IPs detected.")
malicious_payload_indicator = st.selectbox("Malicious Payload Indicator", options=["Yes", "No"])
malicious_payload_indicator = 1 if malicious_payload_indicator == "Yes" else 0
reputation_score = st.number_input("Reputation Score", min_value=0, max_value=100, help="Reputation score of the source (0-100).")
behavioral_score = st.number_input("Behavioral Score", min_value=0, max_value=100, help="Behavioral score based on activity patterns (0-100).")
attack_type = st.selectbox("Attack Type", options=encoder["attack_type"].classes_, help="Type of attack detected.")
attack_type = encoder["attack_type"].transform([attack_type])[0]
signature_match = st.selectbox("Signature Match", options=["Yes", "No"], help="Does the payload match any known signatures?")
signature_match = 1 if signature_match == "Yes" else 0
sandbox_result = st.selectbox("Sandbox Result", options=encoder["sandbox_result"].classes_, help="Result from sandbox testing.")
sandbox_result = encoder["sandbox_result"].transform([sandbox_result])[0]
heuristic_score = st.number_input("Heuristic Score", min_value=0, max_value=100, help="Score based on heuristic analysis (0-100).")
traffic_pattern = st.selectbox("Traffic Pattern", options=encoder["traffic_pattern"].classes_, help="Detected traffic pattern.")
traffic_pattern = encoder["traffic_pattern"].transform([traffic_pattern])[0]
# Combine Features
values = [
anomaly_score, suspicious_ip_count, malicious_payload_indicator,
reputation_score, behavioral_score, attack_type, signature_match,
sandbox_result, heuristic_score, traffic_pattern
]
# Prediction
if st.button("Detect Malware"):
try:
label = model.fit_predict([values])[0]
if label == -1:
st.success("Malware Detected")
else:
st.success("No Malware Detected")
except Exception as e:
st.error(f"Error: {e}")