2016-03-20 26 views
0

Geçenlerde kitabın, "Siyah şapka piton" aracılığıyla takip ediyorum tanımlanmamış, sorun olmuştur ama get_mac işlevini çalıştığınızda konsol özellikle bir hata tükürür:Ubuntu Python: "get_mac" fonksiyonu

NameError: name 'get_mac' is not defined". 

Bunun sadece Linux tabanlı bir sorun olup olmadığından emin değilim.

Kodu:

from scapy.all import * 
import os 
import sys 
import threading 
import signal 

interface="en1" 
target_ip="10.0.0.17" 
gateway_ip="10.0.0.138" 
packet_count=1000 

# set up our interface 
conf.iface=interface 

# turn off input 
conf.verg=0 

print"[*] Setting up %s"%interface 

gateway_mac=get_mac(gateway_ip) 
+0

Böyle bir işlev yok. Belki daha önce kitapta tanımlanmış mıydı? –

cevap

1

Sen kitaptan script sadece bir kısmını yazıya sahip: Bu stackoverflow soru tarifi denemek seçilen ip bir arp-adresi gerekiyorsa

. Metin, açıklamada daha sonra get_mac işlevinin tanımlanacağını açıklar.

We start by resolving the gateway (1) and target IP (2) address's corresponding MAC addresses using a function called get_mac that we'll plumb in shortly.

fonksiyon sayfa 53 sonradan tanımlanır ve

def get_mac(ip_address): 
    responses, unanswered = 
     srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst_ip_address), 
      timeout=2, retry=10) 
    for s, r in responses: 
     return r[Ether].src 
    return None 

Bu kod birden sorunları var miktarlar;: Sayfanın 53 günü

, sağ kodundan sonra, yazar açıklıyor İlk return ifadesinin girintilemediği bir girinti hatasını düzeltmem gerekiyordu ve tabiki sadece bir kez return olabilir, böylece döngü ve son return etkili ölü koddur. Belki de yazar uyanık olduğundan emin olmaya çalışıyor.

The book is available from Google Books, bu yüzden kullandım. Farklı bir baskıya veya başka bir şeye sahiplerse, belki sizinki biraz farklıdır.

+0

Ayrıca 'conf.verb' (* verbose'da olduğu gibi) * yanlış yazdığınızı fark ettim. – tripleee

+0

'Import *' açıkçası aynı zamanda zayıf bir stil. – tripleee

-1

Sadece benim ubuntu 14.04 bu kodu deneyin:

from uuid import getnode as get_mac 
mac = get_mac() 

Tüm mükemmel yapıyor. Obtain MAC Address from Devices using Python

+0

Geçerli koduma eklediğimde bu çalışmaz, bu hatayı alıyorum: "TypeError: getnode() hiçbir argüman almıyor (1 verilen)" – Boris

+0

Başka bir tarifle stackoverflow'ta benzer sorulara bir bağlantı ekliyorum. Bunu dene. –