File size: 2,463 Bytes
6969871
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
49
50
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}")