mirror of
https://github.com/BillyOutlast/shitav.git
synced 2026-02-04 03:01:18 +01:00
110 lines
3.6 KiB
Python
110 lines
3.6 KiB
Python
import os
|
|
import requests
|
|
import hashlib
|
|
import tkinter as tk
|
|
from tkinter import messagebox
|
|
import subprocess
|
|
|
|
|
|
def scan_directory(directory_path, api_key):
|
|
for root, dirs, files in os.walk(directory_path):
|
|
for file_name in files:
|
|
file_path = os.path.join(root, file_name)
|
|
scan_result = scan_file(file_path, api_key)
|
|
display_scan_result(file_path, scan_result)
|
|
|
|
def scan_file(file_path, api_key):
|
|
try:
|
|
with open(file_path, 'rb') as file:
|
|
md5_hash = hashlib.md5(file.read()).hexdigest()
|
|
|
|
url = f'https://www.virustotal.com/api/v3/files/{md5_hash}'
|
|
headers = {'x-apikey': api_key}
|
|
|
|
response = requests.get(url, headers=headers)
|
|
if response.status_code == 200:
|
|
result = response.json()
|
|
if result['data']['attributes']['last_analysis_stats']['malicious'] > 0:
|
|
return f'File {file_path} is malicious!'
|
|
else:
|
|
return f'File {file_path} is clean.'
|
|
else:
|
|
return 'Error occurred while scanning the file.'
|
|
except PermissionError:
|
|
return f'Permission denied for file {file_path}.'
|
|
|
|
def get_active_connections():
|
|
try:
|
|
result = subprocess.check_output(['netstat', '-ano']).decode('utf-8')
|
|
messagebox.showinfo('Active Connections', result)
|
|
except subprocess.CalledProcessError:
|
|
messagebox.showerror('Error', 'Error occurred while retrieving active connections.')
|
|
|
|
def scan_ip(ip_address, api_key):
|
|
try:
|
|
url = f'https://www.virustotal.com/api/v3/ip_addresses/{ip_address}'
|
|
headers = {'x-apikey': api_key}
|
|
|
|
response = requests.get(url, headers=headers)
|
|
if response.status_code == 200:
|
|
result = response.json()
|
|
if result['data']['attributes']['last_analysis_stats']['malicious'] > 0:
|
|
return f'IP {ip_address} is malicious!'
|
|
else:
|
|
return f'IP {ip_address} is clean.'
|
|
else:
|
|
return 'Error occurred while scanning the IP.'
|
|
except:
|
|
return 'Error occurred while scanning the IP.'
|
|
|
|
def scan_button_clicked():
|
|
directory_path = directory_path_entry.get()
|
|
api_key = api_key_entry.get()
|
|
scan_directory(directory_path, api_key)
|
|
|
|
def scan_ip_button_clicked():
|
|
ip_address = ip_address_entry.get()
|
|
api_key = api_key_entry.get()
|
|
scan_result = scan_ip(ip_address, api_key)
|
|
display_scan_result(ip_address, scan_result)
|
|
|
|
def display_scan_result(file_or_ip, result):
|
|
messagebox.showinfo('Scan Result', result)
|
|
|
|
# Create the main window
|
|
window = tk.Tk()
|
|
window.title('File Scanner')
|
|
|
|
# Create directory path label and entry
|
|
directory_path_label = tk.Label(window, text='Directory Path:')
|
|
directory_path_label.pack()
|
|
directory_path_entry = tk.Entry(window)
|
|
directory_path_entry.pack()
|
|
|
|
# Create API key label and entry
|
|
api_key_label = tk.Label(window, text='API Key:')
|
|
api_key_label.pack()
|
|
api_key_entry = tk.Entry(window)
|
|
api_key_entry.pack()
|
|
|
|
# Create scan button
|
|
scan_button = tk.Button(window, text='Scan Directory', command=scan_button_clicked)
|
|
scan_button.pack()
|
|
|
|
# Create IP address label and entry
|
|
ip_address_label = tk.Label(window, text='IP Address:')
|
|
ip_address_label.pack()
|
|
ip_address_entry = tk.Entry(window)
|
|
ip_address_entry.pack()
|
|
|
|
# Create scan IP button
|
|
scan_ip_button = tk.Button(window, text='Scan IP', command=scan_ip_button_clicked)
|
|
scan_ip_button.pack()
|
|
|
|
# Create get active connections button
|
|
get_connections_button = tk.Button(window, text='Get Active Connections', command=get_active_connections)
|
|
get_connections_button.pack()
|
|
|
|
# Start the main event loop
|
|
window.mainloop()
|