Script Python: deteksi_wifi.py E-3 jalankan (python deteksi_wifi.py)

import os import platform import subprocess from datetime import datetime import requests import pyperclip from mac_vendor_lookup import MacLookup from collections import defaultdict # Telegram config TELEGRAM_TOKEN = "7713956922:AAHzqYnxu6TBKNWGqIlUgLWjdfhM2pEDFC4" CHAT_ID = "1243483408" def send_telegram_alert(ip, mac, vendor, count): waktu = datetime.now().strftime("%d-%m-%Y %H:%M:%S") pesan = ( f"🚨 *PERANGKAT ASING TERDETEKSI* #{count}\n" f"šŸ“… Waktu: {waktu}\n" f"šŸ’» IP: `{ip}`\n" f"šŸ”Œ MAC: `{mac}`\n" f"šŸ¢ Vendor: {vendor}" ) url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage" data = {"chat_id": CHAT_ID, "text": pesan, "parse_mode": "Markdown"} try: requests.post(url, data=data) except Exception as e: print(f"❌ Error Telegram: {e}") def get_arp_table(): if platform.system() == "Windows": output = subprocess.check_output("arp -a", shell=True, encoding='utf-8') else: output = subprocess.check_output(["arp", "-a"], encoding='utf-8') return output def is_valid_mac(mac): # Hindari multicast/broadcast if mac.startswith(("ff:ff", "01:00:5e")): return False return True def parse_arp_output(arp_output): devices = [] for line in arp_output.splitlines(): if "-" in line or ":" in line: parts = line.split() if len(parts) >= 2: ip = parts[0] mac = parts[1].lower().replace("-", ":") if is_valid_mac(mac): devices.append((ip, mac)) return devices def load_whitelist(): try: with open("whitelist.txt", "r") as f: return [line.strip().lower() for line in f if line.strip()] except FileNotFoundError: return [] def read_blocklist(): try: with open("blocklist.txt", "r") as f: return set(line.strip().lower() for line in f if line.strip()) except FileNotFoundError: return set() def log_detection(ip, mac, vendor, count): waktu = datetime.now().strftime("%d-%m-%Y %H:%M:%S") with open("log_deteksi.txt", "a") as f: f.write(f"[{waktu}] IP: {ip} | MAC: {mac} | Vendor: {vendor} | Ditemukan ke-{count}\n") def update_blocklist(mac): blocklist = read_blocklist() if mac not in blocklist: with open("blocklist.txt", "a") as b: b.write(f"{mac}\n") def main(): whitelist = load_whitelist() arp_output = get_arp_table() devices = parse_arp_output(arp_output) mac_lookup = MacLookup() block_counts = defaultdict(int) foreign_macs = [] print("šŸ” Memindai jaringan...\n") for ip, mac in devices: if mac not in whitelist: block_counts[mac] += 1 try: vendor = mac_lookup.lookup(mac) except: vendor = "Tidak diketahui" count = block_counts[mac] print(f"🚨 PERANGKAT ASING #{count}!") print(f"❌ IP: {ip}") print(f"❌ MAC: {mac}") print(f"šŸ¢ Vendor: {vendor}\n") send_telegram_alert(ip, mac, vendor, count) log_detection(ip, mac, vendor, count) update_blocklist(mac) foreign_macs.append(mac) if foreign_macs: all_mac = "\n".join(sorted(set(foreign_macs))) pyperclip.copy(all_mac) print("šŸ“‹ Semua MAC asing disalin ke clipboard.") else: print("✅ Tidak ada perangkat asing ditemukan.") print("\nšŸ“¦ Selesai.") if __name__ == "__main__": main()

Comments

Popular posts from this blog

Contoh Pindah Lokasi di CMD, Folder & Drive C D E

Langkah Cek Instalasi Python

Perbedaan antara Nmap dan python-nmap