Merhaba, yoğunluğum dolayısıyla ufak bir konu ile karşınızdayım.
Evet tahmininiz üzere scapy kütüphanesi ile "local ağ" içinde bağlı olan cihazların mac adreslerini ve
local ip adreslerini bulan ufak bir modül ile karşınızdayım.
Kütüphaneyi indirmek için:
- Kütüphaneleri Aktardık -
- Zamanlayıcıyı -
- Interface Algılama -
Şuan için bir girdi yöntemi ile ayarlamak mevcut değildir.
Evet tahmininiz üzere scapy kütüphanesi ile "local ağ" içinde bağlı olan cihazların mac adreslerini ve
local ip adreslerini bulan ufak bir modül ile karşınızdayım.
Kütüphaneyi indirmek için:
Rich (BB code):
pip install scapy
- Kütüphaneleri Aktardık -
Python:
from scapy.all import ARP, Ether, srp, get_if_list
import timeit
# kütüphaneleri aktardık
- Zamanlayıcıyı -
Python:
time1 = timeit.default_timer()
- Interface Algılama -
Şuan için bir girdi yöntemi ile ayarlamak mevcut değildir.
Python:
def get_default_interface():
interfaces = get_if_list() # Ağ arayüzlerini almak
if interfaces:
return interfaces[2] # 2. arayüzü seçmek
else:
return None # eğer ulaşılamazsa boş döndür
- ARP İsteği Fonksiyonu -
Python:
def scan(ip, interface):
arp_request = ARP(pdst=ip) # arp isteğini tanımladık
ether = Ether(dst="ff:ff:ff:ff:ff:ff") # ether tanımladık
packet = ether / arp_request
result = srp(packet, timeout=3, verbose=0, iface=interface)[0] # paketi yolladık
devices = []
for sent, received in result:
devices.append({'ip': received.psrc, 'mac': received.hwsrc}) # çıktı kontrolü
return devices
- Çıktı -
Python:
def print_result(devices):
print("IP Address\tMAC Address")
print("+-" * 25)
for device in devices:
print(f"{device['ip']}\t{device['mac']}") # ekrana cihazları yazdırmak
- Ana Fonksiyon -
Python:
if __name__ == "__main__":
default_interface = get_default_interface()
if default_interface:
print(f"Interface: {default_interface}") # kullanılan ağ arayüzü
target_ip = "192.168.1.1/24"
devices = scan(target_ip, default_interface)
print_result(devices)
time2 = timeit.default_timer()
print("\nTime: {}".format(time2 - time1))
else:
print("No interface found.") # ağ arayüzü bulunamazsa
- Tüm Kod -
Python:
from scapy.all import ARP, Ether, srp, get_if_list
import timeit
# kütüphaneleri aktardık
time1 = timeit.default_timer()
def get_default_interface():
interfaces = get_if_list() # Ağ arayüzlerini almak
if interfaces:
return interfaces[2] # 2. arayüzü seçmek
else:
return None # eğer ulaşılamazsa boş döndür
def scan(ip, interface):
arp_request = ARP(pdst=ip) # arp isteğini tanımladık
ether = Ether(dst="ff:ff:ff:ff:ff:ff") # ether tanımladık
packet = ether / arp_request
result = srp(packet, timeout=3, verbose=0, iface=interface)[0] # paketi yolladık
devices = []
for sent, received in result:
devices.append({'ip': received.psrc, 'mac': received.hwsrc}) # çıktı kontrolü
return devices
def print_result(devices):
print("IP Address\tMAC Address")
print("+-" * 25)
for device in devices:
print(f"{device['ip']}\t{device['mac']}") # ekrana cihazları yazdırmak
if __name__ == "__main__":
default_interface = get_default_interface()
if default_interface:
print(f"Interface: {default_interface}") # kullanılan ağ arayüzü
target_ip = "192.168.1.1/24"
devices = scan(target_ip, default_interface)
print_result(devices)
time2 = timeit.default_timer()
print("\nTime: {}".format(time2 - time1))
else:
print("No interface found.") # ağ arayüzü bulunamazsa
- Kullanım Örneği -
Cihazların hepsi bana ait olmadığı için gizledim.
Not: Giriş aşamasıydı bu üst düzey bir ağ tarayıcısı kodlamayı ve kodda bulunan kavarmları anlatmadım burada, yakın zamanda kodu geliştirip kullanıcıdan argümanlar ile; "wlan0", "eth0" kullan, şu ip aralığınıda taramayı yap ve timeout süresi ekle gibi gibi özellikler ekleyeceğim kısacası "netdiscover" aracını andıracak bir biçimde olacak. Şimdilik zihninizde bir şeyler canlansın diye bu kadar anlattım.
Okuduğunuz için teşekkür ederim.
Cihazların hepsi bana ait olmadığı için gizledim.
Not: Giriş aşamasıydı bu üst düzey bir ağ tarayıcısı kodlamayı ve kodda bulunan kavarmları anlatmadım burada, yakın zamanda kodu geliştirip kullanıcıdan argümanlar ile; "wlan0", "eth0" kullan, şu ip aralığınıda taramayı yap ve timeout süresi ekle gibi gibi özellikler ekleyeceğim kısacası "netdiscover" aracını andıracak bir biçimde olacak. Şimdilik zihninizde bir şeyler canlansın diye bu kadar anlattım.
Okuduğunuz için teşekkür ederim.
Son düzenleme: