Untitled
user_3431143
plain_text
2 years ago
2.6 kB
3
Indexable
import scapy.all as scapy import requests import json import time import threading WEBHOOK_URL = "https://your-webhook-url.com" JSON_FILE = "devices.json" BUFFER_FILE = "buffer.json" def get_mac(ip): arp_request = scapy.ARP(pdst=ip) broadcast = scapy.Ether(dst="ff:ff:ff:ff:ff:ff") arp_request_broadcast = broadcast/arp_request answered_list = scapy.srp(arp_request_broadcast, timeout=1, verbose=False)[0] return answered_list[0][1].hwsrc if answered_list else None def scan_network(): devices = [] ip_range = "192.168.1.0/24" # Replace with your network IP range arp_request = scapy.ARP(pdst=ip_range) broadcast = scapy.Ether(dst="ff:ff:ff:ff:ff:ff") arp_request_broadcast = broadcast/arp_request answered_list = scapy.srp(arp_request_broadcast, timeout=1, verbose=False)[0] for item in answered_list: mac_address = item[1].hwsrc ip_address = item[1].psrc device = {"ip": ip_address, "mac": mac_address, "status": "online"} devices.append(device) # Save devices information to JSON file with open(JSON_FILE, 'w') as f: json.dump(devices, f) return devices def send_webhook(devices): data = {"devices": devices} headers = {'Content-type': 'application/json'} response = requests.post(WEBHOOK_URL, data=json.dumps(data), headers=headers) if response.status_code == 200: print("Webhook sent successfully!") else: print(f"Failed to send webhook. Status code: {response.status_code}") def check_internet(): while True: try: response = requests.get('https://www.google.com') if response.status_code == 200: print("Internet is online.") with open(BUFFER_FILE, 'r') as f: data = json.load(f) if data: send_webhook(data) with open(BUFFER_FILE, 'w') as bf: json.dump([], bf) time.sleep(60) except: print("Internet is offline.") time.sleep(10) def buffer_data(devices): with open(BUFFER_FILE, 'r') as f: data = json.load(f) data.extend(devices) with open(BUFFER_FILE, 'w') as bf: json.dump(data, bf) def run(): devices = scan_network() buffer_data(devices) print(f"{len(devices)} devices found.") threading.Timer(5.0, run).start() if __name__ == "__main__": print("Starting network scanner...") threading.Timer(0, check_internet).start() run()
Editor is loading...