% 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