Beispiel #1
0
 def getifaces():
     global ifaces, desc
     iw = IW()
     for q in iw.get_interfaces_dump():
         phyname = 'phy%i' % int(q.get_attr('NL80211_ATTR_WIPHY'))
         ifname = q.get_attr('NL80211_ATTR_IFNAME')
         mac = q.get_attr('NL80211_ATTR_MAC')
         desc.append(
             '%s\t%s\t%s\t%s' %
             (q.get_attr('NL80211_ATTR_IFINDEX'), phyname, ifname, mac))
         i = {
             'NL80211_ATTR_WIPHY': int(q.get_attr('NL80211_ATTR_WIPHY')),
             'NL80211_ATTR_IFINDEX': q.get_attr('NL80211_ATTR_IFINDEX'),
             'NL80211_ATTR_IFNAME': ifname,
             'NL80211_ATTR_MAC': mac
         }
         ifaces[ifname] = i
         ifaces[phyname] = i
         ifaces[mac] = i
         iw.close()
Beispiel #2
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
from pyroute2.iwutil import IW

iw = IW()
for q in iw.get_interfaces_dump():
    phyname = 'phy%i' % int(q.get_attr('NL80211_ATTR_WIPHY'))
    print('%s\t%s\t%s\t%s' % (
        q.get_attr('NL80211_ATTR_IFINDEX'),
        phyname,
        q.get_attr('NL80211_ATTR_IFNAME'),
        q.get_attr('NL80211_ATTR_MAC'),
    ))
iw.close()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
from pyroute2.iwutil import IW

iw = IW()
for q in iw.get_interfaces_dump():
    phyname = 'phy%i' % int(q.get_attr('NL80211_ATTR_WIPHY'))
    print('%i\t%s\t%s\t%s' % (q.get_attr('NL80211_ATTR_IFINDEX'), phyname,
                              q.get_attr('NL80211_ATTR_IFNAME'),
                              q.get_attr('NL80211_ATTR_MAC')))
iw.close()
Beispiel #4
0
    def startap(self, ifindex=-1):

        if (ifindex == -1):

            n = None
            if isinstance(self.opts.iface, str):
                n = self.opts.iface
            elif len(self.opts.args) > 0:
                n = self.opts.args.pop(0)
            try:
                from pyroute2.iwutil import IW
                iw = IW()
                for q in iw.get_interfaces_dump():
                    ifname = q.get_attr('NL80211_ATTR_IFNAME')
                    phyname = 'phy%i' % int(q.get_attr('NL80211_ATTR_WIPHY'))
                    if ifname == n or phyname == n:
                        ifindex = q.get_attr('NL80211_ATTR_IFINDEX')
                        break
            finally:
                pass

        if ifindex == -1:
            raise AP.NoIface()

        print("Get interfaces")
        msg = nl80211cmd()
        msg['cmd'] = NL80211_CMD_GET_INTERFACE
        msg['attrs'] = [['NL80211_ATTR_IFINDEX', ifindex]]
        r = self.nlm_request(msg,
                             msg_type=28,
                             msg_flags=NLM_F_REQUEST | NLM_F_ACK)
        pprint(r)
        wiphy = r[0]['attrs'][2][1]  # 'NL80211_ATTR_WIPHY'
        print(" > wiphy: %d" % (wiphy))

        print("Proto featires")
        msg = nl80211cmd()
        msg['cmd'] = NL80211_CMD_GET_PROTOCOL_FEATURES
        msg['attrs'] = []
        r = self.nlm_request(msg,
                             msg_type=28,
                             msg_flags=NLM_F_REQUEST | NLM_F_ACK)
        pprint(r)

        print("Get wiphy")
        msg = nl80211cmd()
        msg['cmd'] = NL80211_CMD_GET_WIPHY
        msg['attrs'] = [['NL80211_ATTR_IFINDEX', ifindex],
                        ['NL80211_ATTR_SPLIT_WIPHY_DUMP', '']]
        r = self.nlm_request(msg,
                             msg_type=28,
                             msg_flags=NLM_F_REQUEST | NLM_F_ACK | NLM_F_DUMP)
        pprint(r)

        print("Get iface")
        msg = nl80211cmd()
        msg['cmd'] = NL80211_CMD_GET_INTERFACE
        msg['attrs'] = [['NL80211_ATTR_IFINDEX', ifindex]]
        r = self.nlm_request(msg,
                             msg_type=28,
                             msg_flags=NLM_F_REQUEST | NLM_F_ACK)
        pprint(r)

        print("Set iface")
        msg = nl80211cmd()
        msg['cmd'] = NL80211_CMD_SET_INTERFACE
        msg['attrs'] = [['NL80211_ATTR_IFINDEX', ifindex],
                        ['NL80211_ATTR_IFTYPE', 3]]
        r = self.nlm_request(msg,
                             msg_type=28,
                             msg_flags=NLM_F_REQUEST | NLM_F_ACK)
        pprint(r)
        time.sleep(1)

        #for i in [ 'b0:00', '00:00', '20:00', 'a0:00', 'c0:00', 'd0:00', '40:00']:
        print("Register Actions %d" % (ifindex))
        msg = nl80211cmd()
        msg['cmd'] = NL80211_CMD_REGISTER_FRAME
        msg['attrs'] = [['NL80211_ATTR_IFINDEX', ifindex],
                        ['NL80211_ATTR_FRAME_TYPE', 'b0:00'],
                        ['NL80211_ATTR_FRAME_MATCH', '']]
        r = self.nlm_request(msg,
                             msg_type=28,
                             msg_flags=NLM_F_REQUEST | NLM_F_ACK)
        pprint(r)

        # NL80211_CMD_UNEXPECTED_FRAME

        print("Register beacon")
        msg = nl80211cmd()
        msg['cmd'] = NL80211_CMD_REGISTER_BEACONS
        msg['attrs'] = [['NL80211_ATTR_WIPHY', wiphy]]
        r = self.nlm_request(msg,
                             msg_type=28,
                             msg_flags=NLM_F_REQUEST | NLM_F_ACK)
        pprint(r)

        print("Start ap")
        msg = nl80211cmd()
        msg['cmd'] = NL80211_CMD_START_AP
        msg['attrs'] = [
            ['NL80211_ATTR_IFINDEX', ifindex],
            [
                'NL80211_ATTR_BEACON_HEAD',
                '80:00:00:00:ff:ff:ff:ff:ff:ff:f4:f2:6d:1c:df:6a:f4:f2:6d:1c:df:6a:00:00:00:00:00:00:00:00:00:00:64:00:01:04:00:0a:68:6f:73:74:61:70:50:61:73:73:01:08:82:84:8b:96:0c:12:18:24:03:01:06'
            ],
            [
                'NL80211_ATTR_BEACON_TAIL',
                '2a:01:04:32:04:30:48:60:6c:7f:08:00:00:00:02:00:00:00:40'
            ], ['NL80211_ATTR_BEACON_INTERVAL', '64:00:00:00'],
            ['NL80211_ATTR_DTIM_PERIOD', '02:00:00:00'],
            ['NL80211_ATTR_SSID', 'hostapPass'],
            ['NL80211_ATTR_HIDDEN_SSID', '00:00:00:00'],
            ['NL80211_ATTR_SMPS_MODE', '00:00:00:00'],
            ['NL80211_ATTR_IE', '7f:08:00:00:00:02:00:00:00:40'],
            ['NL80211_ATTR_IE_PROBE_RESP', '7f:08:00:00:00:02:00:00:00:40'],
            ['NL80211_ATTR_IE_ASSOC_RESP', '7f:08:00:00:00:02:00:00:00:40']
        ]

        r = self.nlm_request(msg,
                             msg_type=28,
                             msg_flags=NLM_F_REQUEST | NLM_F_ACK)
        pprint(r)

        return