Otomatik Ağ Tarayıcı(tüm sistemler için)

  • Konuyu başlatan Konuyu başlatan nt
  • Başlama tarihi Başlama tarihi

nt

Emekli
Katılım
21 Nisan 2023
Mesajlar
1,231
Selam!

Geliştirdiğim otomatik ağ tarayıcıyı sizinle paylaşmak istiyorum. Bu araç, ağınızdaki cihazları tespit etmek için kullanışlıdır.

  • Kullanıcıdan IP aralığını sormadan otomatik olarak ağı tarar.
  • Bulunan cihazları IP ve MAC adresleriyle listeler.
  • Kullanıcı dostu bir menü arayüzüne sahiptir.
  • 1-2-3 diye seçim yapmanız yeterlidir.
  • linuxda sudo ile çalıştırmayı ve firewall kapatmayı unutmayın

Ekran Görüntüsü - 2023-12-24 13-26-08.png



Kod:
from scapy.all import ARP, Ether, srp
import platform
import os
import netifaces

class NetworkScanner:
    def __init__(self):
        self.devices = []

    def get_local_ip(self):
        try:
            ip = netifaces.ifaddresses(netifaces.gateways()['default'][netifaces.AF_INET][1])[netifaces.AF_INET][0]['addr']
            return ip
        except (OSError, KeyError):
            return None

    def discover_devices(self, ip_range):
        arp_request = ARP(pdst=ip_range)
        ether_frame = Ether(dst="ff:ff:ff:ff:ff:ff")
        packet = ether_frame / arp_request

        result = srp(packet, timeout=3, verbose=0)[0]

        self.devices = [{'ip': received.psrc, 'mac': received.hwsrc} for sent, received in result]

    def print_device_list(self):
        print("\nBulunan Cihazlar:")
        print("IP Adres\t\tMAC Adres")
        print("-----------------------------------------")
        for device in self.devices:
            print(f"{device['ip']}\t\t{device['mac']}")

    def clear_screen(self):
        os.system('cls' if platform.system() == 'Windows' else 'clear')

    def display_menu(self):
        print("\nMekatronik.org Ağ Tarayıcıya Hoş Geldiniz!")
        print("1. Cihazları Tara")
        print("2. Cihaz Listesini Göster")
        print("3. Programdan Çık")
  
    def get_user_choice(self):
        choice = input("Seçiminizi yapın (1-3): ")
        return choice

    def run(self):
        while True:
            self.clear_screen()
            self.display_menu()

            choice = self.get_user_choice()

            if choice == '1':
                local_ip = self.get_local_ip()
                if local_ip:
                    ip_range = local_ip.rsplit('.', 1)[0] + ".1/24"
                    self.discover_devices(ip_range)
                    input("Tarama tamamlandı. Devam etmek için Enter'a basın.")
                else:
                    print("Bağlı olduğunuz ağ adaptörünün IP adresi bulunamadı.")
                    input("Devam etmek için Enter'a basın.")
            elif choice == '2':
                self.clear_screen()
                self.print_device_list()
                input("Devam etmek için Enter'a basın.")
            elif choice == '3':
                print("Programdan çıkılıyor...")
                break
            else:
                print("Geçersiz seçenek. Tekrar deneyin.")
                input("Devam etmek için Enter'a basın.")

if __name__ == "__main__":
    scanner = NetworkScanner()
    scanner.run()
 
Son düzenleme:
Daha gelişmişi tüm sistemler için

Ekran Görüntüsü - 2023-12-28 04-21-44.png

Ekran Görüntüsü - 2023-12-28 04-21-49.png

3.png



Kod:
from scapy.all import ARP, Ether, srp
from tqdm import tqdm 
import platform
import os
import netifaces

class NetworkScanner:
    def __init__(self):
        self.devices = []

    def get_local_ip(self):
        try:
            ip = netifaces.ifaddresses(netifaces.gateways()['default'][netifaces.AF_INET][1])[netifaces.AF_INET][0]['addr']
            return ip
        except (OSError, KeyError):
            return None

    def discover_devices(self, ip_range):
        arp_request = ARP(pdst=ip_range)
        ether_frame = Ether(dst="ff:ff:ff:ff:ff:ff")
        packet = ether_frame / arp_request

        result, unanswered = srp(packet, timeout=3, verbose=0)
        for sent, received in tqdm(result, desc="Taranıyor", unit="Cihaz"):
            self.devices.append({'ip': received.psrc,
                                 'mac': received.hwsrc,
                                 'vendor': self.get_vendor(received.hwsrc),
                                 'hostname': self.get_hostname(received.psrc)})

    def get_vendor(self, mac_address):
        return ''  #ekle

    def get_hostname(self, ip_address):
        return ''  #ekle

    def print_device_list(self):
        print(f"\nBulunan Cihazlar:")
        print(f"IP Adres\t\tMAC Adres\t\tÜretici\t\tHostname")
        print(f"---------------------------------------------------------------")
        for device in self.devices:
            print(f"{device['ip']}\t\t{device['mac']}\t\t{device['vendor']}\t\t{device['hostname']}")

    def show_device_details(self):
        if not self.devices:
            print(f"Önce cihazları taramanız gerekiyor.")
            return

        ip_to_check = input(f"Bilgilerini görmek istediğiniz cihazın IP adresini girin: ")
        found_device = next((device for device in self.devices if device['ip'] == ip_to_check), None)

        if found_device:
            print(f"\nCihaz Bilgileri:")
            print(f"IP Adres: {found_device['ip']}")
            print(f"MAC Adres: {found_device['mac']}")
            print(f"Üretici: {found_device['vendor']}")
            print(f"Hostname: {found_device['hostname']}")
        else:
            print(f"{ip_to_check} IP adresine sahip bir cihaz bulunamadı.")

    def clear_screen(self):
        os.system('cls' if platform.system() == 'Windows' else 'clear')

    def display_menu(self):
        print("""
              
 _ __                         __,                           
( /  )   _/_              /  (                             
 /  / __ /  , , , __ _   /<   `.  _, __,  _ _   _ _   _  _ 
/  (_(_)(__(_(_/_(_)/ (_/ |_(___)(__(_/(_/ / /_/ / /_(/_/ (_ 
              
               """)
        print(f"@ixnur/NotworkScanner")
        print("---------------------------")
        print("1. Cihazları Tara")
        print("2. Cihaz Listesini Göster")
        print("3. Cihaz Bilgilerini Göster")
        print("---------------------------")
        print(f"Q. Programdan Çık")
        print("---------------------------")

    def get_user_choice(self):
        print(f"Ağdaki cihazlar için sırası ile '1' - 'enter' - '2' ")
        print("ip no ile detay için 3")
        choice = input("Seçiminizi yapın (1-3): ")
        return choice

    def run(self):
        while True:
            self.clear_screen()
            self.display_menu()

            choice = self.get_user_choice()

            if choice == '1':
                local_ip = self.get_local_ip()
                if local_ip:
                    ip_range = local_ip.rsplit('.', 1)[0] + ".1/24"
                    self.discover_devices(ip_range)
                    input("Tarama tamamlandı. Devam etmek için Enter'a basın.")
                else:
                    print("Bağlı olduğunuz ağ adaptörünün IP adresi bulunamadı.")
                    input("Devam etmek için Enter'a basın.")
            elif choice == '2':
                self.clear_screen()
                self.print_device_list()
                input("Devam etmek için Enter'a basın.")
            elif choice == '3':
                self.clear_screen()
                self.show_device_details()
                input("Devam etmek için Enter'a basın.")
            elif choice.lower() == 'q':
                print("Programdan çıkılıyor...")
                break
            else:
                print("Geçersiz seçenek. Tekrar deneyin.")
                input("Devam etmek için Enter'a basın.")

if __name__ == "__main__":
    scanner = NetworkScanner()
    scanner.run()


scapy ve tqdm kütüphanelerini kullanır. Yüklü değillerse önce yüklemeniz gerekebilir
requirements.txt
scapy==2.4.5
tqdm==4.62.0
netifaces==0.11.0

Programın doğru çalışması için root veya admin yetkilerine ihtiyaç duyabilir.
 

Forum istatistikleri

Konular
8,363
Mesajlar
137,260
Üyeler
3,316
Son üye
Ahmet can

Son kaynaklar

Son profil mesajları

mechanic ayhanarican mechanic wrote on ayhanarican's profile.
https://www.allmystery.de almanca biliyorsan burada araştır. Yapay zekada çeviriyor gerçi.
Almanların matematik bilgisi daha iyi oluyor.
“Kendi yolunu çizen kişi, kimsenin izinden gitmez.” – Nietzsche
Kim İslâm’da güzel bir çığır açarsa (güzel bir alışkanlık başlatırsa), onun sevabı ve kendisinden sonra ona uyanların sevapları, onların sevaplarından hiçbir şey eksilmeksizin ona da yazılır.
erdemtr55 taydin erdemtr55 wrote on taydin's profile.
Merhaba Taydin bey,
Gruba spms serisi yapıcak mısınız?
ben 3 sargılı toroid ile 2 adet flyback sürücek bir devre yapmayı düşünüyorum.size soracak sorularım vardı?
Mutluluğun resmi illa güzel çizilmiş tablo olmak zorunda değil.Bazen basit bir çizgi,doğru bir renk,yada küçük bir detay
Back
Top