mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-22 13:02:44 +01:00
auto-t: hwsim.py: convert addresses to 42:* format
mac80211_hwsim has a funny quirk with multiple addresses in radios. Some operations require address index zero, some index one. And these addresses (possibly a result of how test-runner initializes radios) sometimes get mixed up. For example scan results may show a BSS address as 02:00:00:00:00:00, while the next test run shows 42:00:00:00:00:00. Ultimately, sending out frames requires the first nibble of the address to be 0x4 so to handle both variants of addresses described above hwsim.py was updated to always bitwise OR the first byte with 0x40.
This commit is contained in:
parent
58d2814a92
commit
f6683bab75
@ -335,14 +335,26 @@ class Hwsim(iwd.AsyncOpAbstract):
|
||||
def object_manager(self):
|
||||
return self._object_manager_if
|
||||
|
||||
@staticmethod
|
||||
def _convert_address(address):
|
||||
first = int(address[0:2], base=16)
|
||||
first |= 0x40
|
||||
first = format(first, 'x')
|
||||
|
||||
address = first + address[2:]
|
||||
|
||||
return address
|
||||
|
||||
def spoof_disassociate(self, radio, freq, station):
|
||||
'''
|
||||
Send a spoofed disassociate frame to a station
|
||||
'''
|
||||
dest = self._convert_address(radio.addresses[0].replace(':', ''))
|
||||
|
||||
frame = 'a0 00 3a 01'
|
||||
frame += station.replace(':', '')
|
||||
frame += radio.addresses[0].replace(':', '')
|
||||
frame += radio.addresses[0].replace(':', '')
|
||||
frame += dest
|
||||
frame += dest
|
||||
frame += '30 01 07 00'
|
||||
self.spoof_frame(radio, freq, station, frame)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user