Example #1
0
 def del_arp(self, ip):
     """Установить соответствие mac-ip в системной ARP-таблице"""
     if not self.ip:
         raise RuntimeError("MacAssoc.ip must be set first")
     arp = dnet.arp()
     _ip = dnet.addr(self.ip)
     deleted = arp.delete(_ip)
     return deleted
Example #2
0
 def del_arp(self, ip):
     """Установить соответствие mac-ip в системной ARP-таблице"""
     if not self.ip:
         raise RuntimeError("MacAssoc.ip must be set first")
     arp = dnet.arp()
     _ip = dnet.addr(self.ip)
     deleted = arp.delete(_ip)
     return deleted
Example #3
0
 def set_arp(self):
     """Установить соответствие mac-ip в системной ARP-таблице"""
     if not self.mac:
         raise RuntimeError("MacAssoc.mac must be set first")
     if not self.ip:
         raise RuntimeError("MacAssoc.ip must be set first")
     arp = dnet.arp()
     _ip = dnet.addr(self.ip)
     _mac = dnet.addr(self.mac)
     added = arp.add(_ip, _mac)
     return added
Example #4
0
 def set_arp(self):
     """Установить соответствие mac-ip в системной ARP-таблице"""
     if not self.mac:
         raise RuntimeError("MacAssoc.mac must be set first")
     if not self.ip:
         raise RuntimeError("MacAssoc.ip must be set first")
     arp = dnet.arp()
     _ip = dnet.addr(self.ip)
     _mac = dnet.addr(self.mac)
     added = arp.add(_ip, _mac)
     return added
Example #5
0
 def on_add_button_clicked(self, data):
     dialog = gtk.MessageDialog(
         self.parent.window,
         gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
         gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL,
         "Enter IP Address to add:")
     entry = gtk.Entry(0)
     dialog.vbox.pack_start(entry)
     entry.show()
     ret = dialog.run()
     dialog.destroy()
     if ret == gtk.RESPONSE_OK:
         try:
             peer = entry.get_text()
             arp = dnet.arp()
             mac = arp.get(dnet.addr(peer))
             if not mac:
                 raise Exception("Unable to get mac address")
             self.add_peer(mac.data, dnet.ip_aton(peer),
                           int(self.as_spinbutton.get_value()))
         except Exception, e:
             self.log("EIGRP: Cant add peer %s: %s" % (peer, e))
Example #6
0
 def on_add_button_clicked(self, data):
     dialog = gtk.MessageDialog(
         self.parent.window,
         gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
         gtk.MESSAGE_QUESTION,
         gtk.BUTTONS_OK_CANCEL,
         "Enter IP Address to add:",
     )
     entry = gtk.Entry(0)
     dialog.vbox.pack_start(entry)
     entry.show()
     ret = dialog.run()
     dialog.destroy()
     if ret == gtk.RESPONSE_OK:
         try:
             peer = entry.get_text()
             arp = dnet.arp()
             mac = arp.get(dnet.addr(peer))
             if not mac:
                 raise Exception("Unable to get mac address")
             self.add_peer(mac.data, dnet.ip_aton(peer), int(self.as_spinbutton.get_value()))
         except Exception, e:
             self.log("EIGRP: Cant add peer %s: %s" % (peer, e))
Example #7
0
 def setUp(self):
     self.arp = dnet.arp()
     self.failUnless(self.arp, "couldn't open ARP handle")
def getmac(theaddr):
	return dnet.arp().get(dnet.addr(theaddr))
Example #9
0
def getmac(theaddr):
    return dnet.arp().get(dnet.addr(theaddr))
Example #10
0
    def arptable(self):
        """Получить соответствия mac-ip из ARP таблицы"""
        arp = dnet.arp()

        def add_entry((pa, ha), arg):
            arg[str(pa)] = str(ha).upper()
Example #11
0
 def setUp(self):
     self.arp = dnet.arp()
     self.failUnless(self.arp, "couldn't open ARP handle")
Example #12
0
parser.add_argument('--mac', default='F4:6D:04:11:22:33')
parser.add_argument('--ip', default='192.168.1.46')
parser.add_argument('--port', default='9029')
parser.add_argument('--reset', default=3)
args = parser.parse_args()

print "Using the following parameters:"
print "filename :", args.filename
print "address  :", args.address
print "mac      :", args.mac
print "ip       :", args.ip
print "port     :", args.port
print "reset    :", args.reset

# Setup ARP (this requires root privilege)
arp = dnet.arp()
pa = dnet.addr(args.ip)
ha = dnet.addr(args.mac)
arp.add(pa, ha)

input_file = open(args.filename, "rb")
data = input_file.read()
input_file.close()

print "file length =", len(data)

assert len(data) == 4096

addr_lo = int(args.address, 16) & 0xFF
addr_hi = int(args.address, 16) / 256
Example #13
0
def gen_probes_raw():
    """ Pre-generate raw Ethernet packets and store these in the 
    array pkts.
    """
    from dpkt.ethernet import Ethernet
    from dpkt.ip import IP
    from dpkt.icmp import ICMP
    
    eth_info = dnet.intf().get_dst(options.net_info['ip_dst'])
    options.net_info['l2_src'] = eth_info['link_addr'].eth
    gw = dnet.route().get(options.net_info['ip_dst'])
    if gw:
        options.net_info['l2_dst'] = dnet.arp().get(gw).eth
    else:   # destination is in the same subnet
        options.net_info['l2_dst'] = dnet.arp().get(options.net_info['ip_dst']).eth


    try:
        icmp_data = ICMP(type=8, data=ICMP.Echo(seq=0, id=0,data = 'H'*(options.plen-ICMP_HDR_LEN-IP_HDR_LEN)))
        ip_data = IP(src=options.net_info['ip_src'].ip, dst=options.net_info['ip_dst'].ip, p=1, data=icmp_data)
        ip_data.len += len(ip_data.data)

        p0 = Ethernet(src=options.net_info['l2_src'], dst=options.net_info['l2_dst'], data=ip_data)
        str_p = str(p0)

        hdr = str_p[:ETHER_HDR_LEN+IP_HDR_LEN]
        pkt = str_p[ETHER_HDR_LEN+IP_HDR_LEN:]
        psize = options.plen + ETHER_HDR_LEN

        # packet and format 
        p = [ hdr, 
              pkt[:2], 
              struct.pack('<H', (0)),                           # p[2] = ICMP checksum
              pkt[4:16], 
              struct.pack('!L', (0) % 0xFFFFFFFF),              # p[4] = sequence number (4 bytes)
              struct.pack('!L', (0) % 0xFFFFFFFF),              # p[5] = slot number (4 bytes)
              pkt[16+4+4:]]                                     # payload

        ck = checksum(''.join(p[1:])) & 0xFFFF                  # calculate initial ICMP cksum
        p[2] = struct.pack('H', (ck))                           # update ICMP cksum

        M_ = sum(struct.unpack('HHHH',''.join(p[4:6])))
        j = 0
        for i in xrange(options.pnum):
            j=long(slottimes[i])
            p[4] = struct.pack('!L', (i) % 0xFFFFFFFF)          # increment 4 byte seq ID in ICMP payload
            p[5] = struct.pack('!L', (j) % 0xFFFFFFFF)          # increment 4 byte slot ID in ICMP payload
            M = sum(struct.unpack('HHHH', ''.join(p[4:6])))
            ck = ck + M_ - M

            p[2] = struct.pack('H', (ck) % 0xFFFF)               # update ICMP cksum
            pkts[i] = ''.join(p)[:PKT_ARRAY_WIDTH]                  # only store first 100 packet bytes 

            M_=M

    except (MemoryError, ValueError):
        ERROR("Not enough memory!",2)
    except KeyboardInterrupt:
        print 'terminated by user.'
        raise SystemExit(-1)

    print 'done.'
    try:
        po = pcap.pcap(options.net_info['eth'])
        return po
    except Exception as e:
        print e
Example #14
0
    def arptable(self):
        """Получить соответствия mac-ip из ARP таблицы"""
        arp = dnet.arp()

        def add_entry((pa, ha), arg):
            arg[str(pa)] = str(ha).upper()
Example #15
0
 def setUp(self):
     self.arp = dnet.arp()
     self.assertTrue(self.arp, "couldn't open ARP handle")