66 lines
4.1 KiB
Text
66 lines
4.1 KiB
Text
|
% WireGuard tests
|
||
|
|
||
|
# Type the following command to launch start the tests:
|
||
|
# $ test/run_tests -P "load_contrib('wireguard')" -t scapy/contrib/wireguard.uts
|
||
|
|
||
|
+ Build packets & dissect
|
||
|
|
||
|
= Build and dissect Transport
|
||
|
wgTransport = Wireguard()/WireguardTransport(receiver_index=1234, counter=1337, encrypted_encapsulated_packet=b"test123")
|
||
|
assert bytes(wgTransport) == b'\x04\x00\x00\x00\xd2\x04\x00\x009\x05\x00\x00\x00\x00\x00\x00test123'
|
||
|
|
||
|
wgTransport = Wireguard(b'\x04\x00\x00\x00\xe1\x10\x00\x00\x9a\x02\x00\x00\x00\x00\x00\x00test123')
|
||
|
assert wgTransport.message_type == 4
|
||
|
assert wgTransport[WireguardTransport].receiver_index == 4321
|
||
|
assert wgTransport[WireguardTransport].counter == 666
|
||
|
assert wgTransport[WireguardTransport].encrypted_encapsulated_packet == b"test123"
|
||
|
|
||
|
= Build and dissect Init
|
||
|
wgInit = Wireguard()/WireguardInitiation(sender_index=12345,
|
||
|
unencrypted_ephemeral=b"\xaf\xfe"*16, encrypted_static=b"lul", encrypted_timestamp=b"kukuk", mac1="\x01"*16, mac2="\x02"*16
|
||
|
)
|
||
|
assert bytes(wgInit) == b'\x01\x00\x00\x0090\x00\x00\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfelul\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00kukuk\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x01' * 16 + b'\x02' * 16
|
||
|
|
||
|
wgInit = Wireguard(b'\x01\x00\x00\x0090\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffstatisch\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00nixgibts\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04')
|
||
|
|
||
|
assert wgInit.message_type == 1
|
||
|
assert wgInit[WireguardInitiation].sender_index == 12345
|
||
|
assert wgInit[WireguardInitiation].unencrypted_ephemeral == b"\xff"*32
|
||
|
assert wgInit[WireguardInitiation].encrypted_static == b"statisch" + b"\x00" * 40
|
||
|
assert wgInit[WireguardInitiation].encrypted_timestamp == b"nixgibts" + b"\x00" * 20
|
||
|
assert wgInit[WireguardInitiation].mac1 == b"\x03" * 16
|
||
|
assert wgInit[WireguardInitiation].mac2 == b"\x04" * 16
|
||
|
|
||
|
= Build and dissect Response
|
||
|
wgResp = Wireguard()/WireguardResponse(sender_index=12345, receiver_index=7878,
|
||
|
unencrypted_ephemeral=b"\x41"*32, encrypted_nothing=b"empty", mac1=b"mac1", mac2=b"mac2"
|
||
|
)
|
||
|
|
||
|
assert bytes(wgResp) == b'\x02\x00\x00\x0090\x00\x00\xc6\x1e\x00\x00AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAempty\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00mac1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00mac2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||
|
|
||
|
|
||
|
wgResp = Wireguard(b'\x02\x00\x00\x00W\x04\x00\x00\xae\x08\x00\x00BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBnotempty\x00\x00\x00\x00\x00\x00\x00\x00mac1lol\x00\x00\x00\x00\x00\x00\x00\x00\x00mac2lol\x00\x00\x00\x00\x00\x00\x00\x00\x00')
|
||
|
|
||
|
assert wgResp.message_type == 2
|
||
|
assert wgResp[WireguardResponse].sender_index == 1111
|
||
|
assert wgResp[WireguardResponse].receiver_index == 2222
|
||
|
assert wgResp[WireguardResponse].unencrypted_ephemeral == b"B"*32
|
||
|
assert wgResp[WireguardResponse].encrypted_nothing == b"notempty" + b"\x00" * 8
|
||
|
assert wgResp[WireguardResponse].mac1 == b"mac1lol" + b"\x00" * 9
|
||
|
assert wgResp[WireguardResponse].mac2 == b"mac2lol" + b"\x00" * 9
|
||
|
|
||
|
= Build and dissect Cookie Response
|
||
|
wgCookie = Wireguard()/WireguardCookieReply(receiver_index=3333,
|
||
|
nonce=b"C"*24, encrypted_cookie=b"D"*16 + b"E"*16
|
||
|
)
|
||
|
|
||
|
assert bytes(wgCookie) == b'\x03\x00\x00\x00\x05\r\x00\x00CCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEE'
|
||
|
|
||
|
|
||
|
wgCookie = Wireguard(b'\x03\x00\x00\x00\xb8"\x00\x00KKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMM')
|
||
|
|
||
|
assert wgCookie.message_type == 3
|
||
|
assert wgCookie[WireguardCookieReply].receiver_index == 8888
|
||
|
assert wgCookie[WireguardCookieReply].nonce == b"K"*24
|
||
|
assert wgCookie[WireguardCookieReply].encrypted_cookie == b"L" * 16 + b"M" * 16
|