ntop / n2n

Peer-to-peer VPN
GNU General Public License v3.0
6.28k stars 943 forks source link

Edge on OpenWRT with encryption #922

Open siskai opened 2 years ago

siskai commented 2 years ago

I compiled last version of dev branch on Windows, Ubuntu (for OpenWRT and Android). Communication between Windows, Linux and Android works fine, but pinging to OpenWRT does not work. When I turn off encryption, then it works.

Log output:

...
04/Jan/2022 16:10:45 [edge_utils.c:1762] sending data of size 110 to TAP
04/Jan/2022 16:10:45 [edge_utils.c:2432] Rx N2N_UDP of size 172 from [<ip_address:port>]
04/Jan/2022 16:10:45 [edge_utils.c:2536] [pSp] from 00:FF:8D:8E:63:95 via [<ip_address:port>]
04/Jan/2022 16:10:45 [edge_utils.c:1646] handle_PACKET size 126 transform 4
04/Jan/2022 16:10:45 [transform_cc20.c:106] decode_cc20 126 bytes
04/Jan/2022 16:10:45 [network_traffic_filter.c:159] collect_packet_info stumbled across the unknown ether type 0xC269
04/Jan/2022 16:10:45 [edge_utils.c:1762] sending data of size 110 to TAP
04/Jan/2022 16:10:45 [edge_utils.c:2432] Rx N2N_UDP of size 172 from [<ip_address:port>]
04/Jan/2022 16:10:45 [edge_utils.c:2536] [pSp] from 00:FF:8D:8E:63:95 via [<ip_address:port>]
04/Jan/2022 16:10:45 [edge_utils.c:1646] handle_PACKET size 126 transform 4
04/Jan/2022 16:10:45 [transform_cc20.c:106] decode_cc20 126 bytes
04/Jan/2022 16:10:45 [network_traffic_filter.c:159] collect_packet_info stumbled across the unknown ether type 0xA7AC
04/Jan/2022 16:10:45 [edge_utils.c:1762] sending data of size 110 to TAP
04/Jan/2022 16:10:45 [edge_utils.c:2432] Rx N2N_UDP of size 172 from [<ip_address:port>]
04/Jan/2022 16:10:45 [edge_utils.c:2536] [pSp] from 00:FF:8D:8E:63:95 via [<ip_address:port>]
04/Jan/2022 16:10:45 [edge_utils.c:1646] handle_PACKET size 126 transform 4
04/Jan/2022 16:10:45 [transform_cc20.c:106] decode_cc20 126 bytes
04/Jan/2022 16:10:45 [network_traffic_filter.c:159] collect_packet_info stumbled across the unknown ether type 0xF41B
04/Jan/2022 16:10:45 [edge_utils.c:1762] sending data of size 110 to TAP
04/Jan/2022 16:10:46 [edge_utils.c:2432] Rx N2N_UDP of size 172 from [<ip_address:port>]
04/Jan/2022 16:10:46 [edge_utils.c:2536] [pSp] from 00:FF:8D:8E:63:95 via [<ip_address:port>]
04/Jan/2022 16:10:46 [edge_utils.c:1646] handle_PACKET size 126 transform 4
04/Jan/2022 16:10:46 [transform_cc20.c:106] decode_cc20 126 bytes
04/Jan/2022 16:10:46 [network_traffic_filter.c:159] collect_packet_info stumbled across the unknown ether type 0x9091
04/Jan/2022 16:10:46 [edge_utils.c:1762] sending data of size 110 to TAP
04/Jan/2022 16:10:46 [edge_utils.c:2432] Rx N2N_UDP of size 172 from [<ip_address:port>]
04/Jan/2022 16:10:46 [edge_utils.c:2536] [pSp] from 00:FF:8D:8E:63:95 via [<ip_address:port>]
04/Jan/2022 16:10:46 [edge_utils.c:1646] handle_PACKET size 126 transform 4
04/Jan/2022 16:10:46 [transform_cc20.c:106] decode_cc20 126 bytes
04/Jan/2022 16:10:46 [network_traffic_filter.c:159] collect_packet_info stumbled across the unknown ether type 0xB0B1
04/Jan/2022 16:10:46 [edge_utils.c:1762] sending data of size 110 to TAP
04/Jan/2022 16:10:46 [edge_utils.c:2432] Rx N2N_UDP of size 172 from [<ip_address:port>]
04/Jan/2022 16:10:46 [edge_utils.c:2536] [pSp] from 00:FF:8D:8E:63:95 via [<ip_address:port>]
04/Jan/2022 16:10:46 [edge_utils.c:1646] handle_PACKET size 126 transform 4
04/Jan/2022 16:10:46 [transform_cc20.c:106] decode_cc20 126 bytes
04/Jan/2022 16:10:46 [network_traffic_filter.c:159] collect_packet_info stumbled across the unknown ether type 0xBDAD
04/Jan/2022 16:10:46 [edge_utils.c:1762] sending data of size 110 to TAP
...

I think the problem is similar to #642.

Logan007 commented 2 years ago

This reminds me of the byte-swap bug seen on Windows and as fixed with #830. For some reason, the 64-bit byte-swap (for endianess correction) did not work as expected on Windows.

It could be the same here on your platform. What is your CPU?

siskai commented 2 years ago

Core i7 4790S

Ubuntu is running on virtual machine. n2n on Ubuntu works fine, but n2n compiled for OpenWRT (MIPS 24Kc) does't work.

Version 2.8 works everywhere without problems.

Logan007 commented 2 years ago

I do not have openWrt Platform / MIPS24Kc available here.

Anyone here who can verify if it is the same byte-swap issue in portable_endian.h as in seen with #830? Maybe running a short test progamm including the portable_endian.h from n2n's include/ folder – just checking the correct output of htobe64 and be64toh (and optionally htole64 as well as le64toh)?

Roughly speaking

include <stdint.h>
include <stdio.h>
include "portable_endian.h"

int main (void) {

    uint64_t x = 0x0102030405060708;

    printf("x = %016llx, htobe64(x) = %016llx, be64toh(x) = %016llx\n", 
           x, htobe64(x), be64toh(x));

    return 0;
}
siskai commented 2 years ago

Output: x = 0102030405060708, htobe64(x) = 0102030405060708, be64toh(x) = 0102030405060708

Logan007 commented 2 years ago

This looks good for a big endian machine... unfortunately... as it means some tough debugging at other places.

I shall try to emulate it in QEMU then one day. Any hints?

siskai commented 2 years ago

On Windows the result is different. x = 0102030405060708, htobe64(x) = 0807060504030201, be64toh(x) = 0807060504030201

Is it normal?

Logan007 commented 2 years ago

Yes, Windows on x86 is little endian. I was "hoping" for some result like "0x000000000005060708" clearly indicating a non-working 64-bit endianess conversion (which I suspected)... but well, I will have to take the deep-dive. :wink:

fengdaolong commented 2 years ago

It is recommended to manually implement reliable endian conversions yourself to avoid unexpected behavior. The following code is what I once wrote, it can implement byte order conversion of any length, for reference.

static int is_little_endian() {
        int a = 1; // big_endian: 0x00 0x00 0x00 0x01,little_endian: 0x01 0x00 0x00 0x00
        int b = (int) (*(char *) &a);
        return b;
}

static void endian_swap(void *dest, void *source, int len) {
        memset(dest, 0, len);

        for (int i = 0; i < len; ++i) {
                ((char *) dest)[i] = ((char *) source)[len - 1 - i];
        }
        return;
}
Logan007 commented 2 years ago

Thank you @fengdaolong. In this case, the endian-swaps do not seem to be the issue. At least not the one I was suspecting from an earlier issue.

@siskai, does any of the test output deviate?

siskai commented 2 years ago

b = 0

In second function I do not know what to put in the variables.

Logan007 commented 2 years ago

@siskai oh, no, I was thinking of the scripts/test_harness.sh tests. Sorry that I misled you.

hamishcoleman commented 2 years ago

The build environment for OpenWRT makes running the test harness a little difficult. I think the individual tools are still built, but they probably need to be run individually. (TODO: this needs testing / documenting!)

hamishcoleman commented 2 years ago

Well, I just tried to do an OpenWRT build to improve the documentation, but the upnp configuration and detection has broken the build.

siskai commented 2 years ago

tests-auth.out

bin_to_ascii: input size = 0x10
000: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
bin_to_ascii: output: 00420mG51WS82GeB30qE3m

ascii_to_bin: input = 00420mG51WS82GeB30qE3m
ascii_to_bin: output:
000: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
010: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   |                |

generate_private_key: input = 00420mG51WS82GeB30qE3m
generate_private_key: output:
000: a4 f4 b5 1c 8a 0a 09 f9  7e 98 22 ca 8a cc b3 f9   |        ~ "     |
010: 4d 5a 0d 02 0b 9d 08 ea  03 9b 46 41 8e 3c 0d 49   |MZ        FA < I|

generate_public_key: input:
000: a4 f4 b5 1c 8a 0a 09 f9  7e 98 22 ca 8a cc b3 f9   |        ~ "     |
010: 4d 5a 0d 02 0b 9d 08 ea  03 9b 46 41 8e 3c 0d 49   |MZ        FA < I|
generate_public_key: output:
000: ca 58 61 6f f9 25 d0 cd  1d a5 62 48 a0 15 5e ad   | Xao %    bH  ^ |
010: a9 f3 5c 10 5f 20 b6 42  b0 a9 7c 1e 0e d7 e9 4b   |  \ _  B  |    K|

generate_shared_secret: input: prv
000: a4 f4 b5 1c 8a 0a 09 f9  7e 98 22 ca 8a cc b3 f9   |        ~ "     |
010: 4d 5a 0d 02 0b 9d 08 ea  03 9b 46 41 8e 3c 0d 49   |MZ        FA < I|
generate_shared_secret: input: pub
000: ca 58 61 6f f9 25 d0 cd  1d a5 62 48 a0 15 5e ad   | Xao %    bH  ^ |
010: a9 f3 5c 10 5f 20 b6 42  b0 a9 7c 1e 0e d7 e9 4b   |  \ _  B  |    K|
generate_shared_secret: output:
000: 5d 94 7b 0b db 54 e8 70  8a 09 b0 db 6f 0b 0d 31   |] {  T p    o  1|
010: 1b b8 5f ba 57 74 34 bd  3b c5 c4 6c d5 ae a4 84   |  _ Wt4 ;  l    |

tests-compress.out

original: input size = 0x20000000004
000: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
010: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
020: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
030: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
040: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
050: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
060: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
070: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
080: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
090: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0a0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0b0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0c0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0d0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0e0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0f0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
100: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
110: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
120: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
130: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
140: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
150: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
160: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
170: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
180: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
190: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1a0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1b0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1c0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1d0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1e0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1f0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |

lzo1x: output size = 0x2f7f90a6f4
000: 0d 00 01 02 03 04 05 06  07 08 09 0a 0b 0c 0d 0e   |                |
010: 0f 20 00 bc 3c 00 00 02  0c 0d 0e 0f 00 01 02 03   |    <           |
020: 04 05 06 07 08 09 0a 0b  0c 0d 0e 0f 11 00 00      |               |

zstd: output size = 0x21
000: 28 b5 2f fd 60 00 01 bd  00 00 80 00 01 02 03 04   |( / `           |
010: 05 06 07 08 09 0a 0b 0c  0d 0e 0f 01 00 da 47 9d   |              G |
020: 4b                                                 |K|

tests-elliptic.out

environment: input
000: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   |                |
010: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 09   |                |
environment: key
000: 55 55 55 55 55 55 55 55  55 55 55 55 55 55 55 55   |UUUUUUUUUUUUUUUU|
010: 55 55 55 55 55 55 55 55  55 55 55 55 55 55 55 55   |UUUUUUUUUUUUUUUU|

curve25519: output
000: 7f 42 1b f9 34 5a 59 84  4a 30 bc 53 64 74 fa 7c   | B  4ZY J0 Sdt ||
010: 15 81 77 a4 4d 34 6d 2f  8b c1 8c 05 d6 a9 44 54   |  w M4m/      DT|

tests-hashing.out

environment: input size = 0x20000000005
000: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
010: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
020: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
030: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
040: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
050: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
060: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
070: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
080: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
090: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0a0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0b0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0c0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0d0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0e0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0f0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
100: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
110: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
120: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
130: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
140: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
150: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
160: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
170: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
180: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
190: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1a0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1b0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1c0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1d0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1e0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1f0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |

pearson_hash_256: output:
000: 40 09 5c ca 28 6b fb 93  4c 4a f7 c0 79 a8 04 5a   |@ \ (k  LJ  y  Z|
010: b5 3d cf b3 a7 ed 18 56  b2 d9 8f a8 2e a1 08 be   | =     V    .   |

pearson_hash_128: output:
000: b5 3d cf b3 a7 ed 18 56  b2 d9 8f a8 2e a1 08 be   | =     V    .   |

pearson_hash_64: output = 0xb2d98fa82ea108be

pearson_hash_32: output = 0x2ea108be

pearson_hash_16: output = 0x8be

tests-transform.out

environment: community_name = "abc123def456"
environment: encrypt_key = "SoMEVer!S$cUREPassWORD"
environment: input size = 0x2000000000a
000: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
010: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
020: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
030: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
040: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
050: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
060: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
070: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
080: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
090: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0a0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0b0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0c0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0d0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0e0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
0f0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
100: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
110: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
120: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
130: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
140: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
150: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
160: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
170: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
180: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
190: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1a0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1b0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1c0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1d0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1e0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |
1f0: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f   |                |

null: output size = 0x2260000000e
000: 03 02 00 03 61 62 63 31  32 33 64 65 66 34 35 36   |    abc123def456|
010: 00 00 00 00 00 00 00 00  00 01 02 03 04 05 00 01   |                |
020: 02 03 04 05 00 00 00 01  02 03 04 05 06 07 08 09   |                |
030: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
040: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
050: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
060: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
070: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
080: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
090: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
0a0: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
0b0: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
0c0: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
0d0: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
0e0: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
0f0: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
100: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
110: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
120: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
130: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
140: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
150: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
160: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
170: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
180: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
190: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
1a0: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
1b0: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
1c0: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
1d0: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
1e0: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
1f0: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
200: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
210: 0a 0b 0c 0d 0e 0f 00 01  02 03 04 05 06 07 08 09   |                |
220: 0a 0b 0c 0d 0e 0f                                  |      |

tf: output size = 0x236004612d0
000: 03 02 00 03 61 62 63 31  32 33 64 65 66 34 35 36   |    abc123def456|
010: 00 00 00 00 00 00 00 00  00 01 02 03 04 05 00 01   |                |
020: 02 03 04 05 00 00 69 54  ba b7 b9 00 7e 1f 4e 43   |      iT    ~ NC|
030: 6b 6e c0 b7 5a bb e1 6a  7d 8b f6 41 9e fb 7e c1   |kn  Z  j}  A  ~ |
040: a8 6c 67 6b c7 27 17 32  9b 89 f2 5d 1d 67 49 de   | lgk ' 2   ] gI |
050: ab 5c d4 b7 a1 97 99 76  7d 90 8d 2c 7c 0d 65 66   | \     v}  ,| ef|
060: d5 7f 1a 3b bf 0c 52 b3  42 0d c8 c8 0d 62 8e 4b   |   ;  R B    b K|
070: 98 7b bc 0d 9c db bf 61  dc 9d 9f 44 a4 fc 8d 1a   | {     a   D    |
080: 70 f0 14 87 89 0e 4a b8  7e 66 72 7a 04 6e 9b 17   |p     J ~frz n  |
090: e1 2c 06 ce 52 04 2a a0  0f 7f 76 f4 5c c5 e2 09   | ,  R *   v \   |
0a0: f6 35 ff ad 87 ab 72 5a  6f bc 61 78 f6 3c 48 e2   | 5    rZo ax <H |
0b0: b2 a4 27 ae 74 03 c7 83  f4 af 5a 1e da b4 7e 8a   |  ' t     Z   ~ |
0c0: 25 87 45 d2 8e 97 2b c0  69 8f f3 6d e5 8f a5 7f   |% E   + i  m    |
0d0: 91 72 94 49 bc d8 0e 20  d0 ed 16 28 df 78 37 53   | r I       ( x7S|
0e0: 97 63 f9 9e 0a c1 4c 3c  98 a9 c3 79 5a 76 a0 c9   | c    L<   yZv  |
0f0: 34 f1 26 6e 66 27 a9 68  9d d1 24 26 e8 64 a4 a0   |4 &nf' h  $& d  |
100: 71 e1 37 9a c9 b2 d6 7b  1c 56 b3 9d ac b0 47 5d   |q 7    { V    G]|
110: 81 2f 12 c4 56 a7 61 8f  58 20 1d 91 a0 ff fa 43   | /  V a X      C|
120: 4c 46 77 9f 20 66 7f a1  1d 98 b3 c5 b4 36 dd 41   |LFw  f       6 A|
130: 42 f3 4f b0 65 65 aa 94  f0 42 aa 31 2f e3 de c0   |B O ee   B 1/   |
140: a0 d2 02 c4 a8 6c d2 81  56 d7 00 eb c5 1b 3f 10   |     l  V     ? |
150: bc ea 09 c9 b7 f7 9f 08  c4 80 55 b6 04 02 50 f4   |          U   P |
160: 6c 76 bb 70 a0 04 14 da  fd 13 d1 b0 cd cb a6 b2   |lv p            |
170: d0 3f 37 09 47 62 94 bf  39 f4 6b d6 fa 22 0c 23   | ?7 Gb  9 k  " #|
180: a6 07 9b 1e ee b6 ae f7  58 b0 dc a9 db 60 ff a2   |        X    `  |
190: b7 03 a1 a3 26 1b 5b 37  c6 69 43 6b bb 6c 03 3e   |    & [7 iCk l >|
1a0: a7 fc d2 83 5b 61 b1 e0  fd 28 d1 ec 65 a2 cf 6c   |    [a   (  e  l|
1b0: ef 3b ad cc 75 e3 f9 71  0f 90 71 a6 bc 1a d5 17   | ;  u  q  q     |
1c0: 65 64 3e 0c d2 c8 de bd  1f d5 af 84 fc fe aa bd   |ed>             |
1d0: c5 88 13 af 09 ee 8c c0  38 49 79 09 a7 7a 01 48   |        8Iy  z H|
1e0: 2e 3e 9a 38 1b c6 b8 c0  a9 4e 61 0f 19 2a 95 84   |.> 8     Na  *  |
1f0: 3b 53 1c db 9a ec af 8f  2d af 73 d5 cc 71 bd 42   |;S      - s  q B|
200: 4f e2 70 ca 45 b6 44 18  54 fe 6b 23 31 ba f4 b1   |O p E D T k#1   |
210: 02 a1 26 4f f1 a9 c0 78  e6 3b 11 9e d6 3c 61 e5   |  &O   x ;   <a |
220: 3b 6f f3 42 43 9f 77 cf  9e 0d 39 85 eb e0 ad db   |;o BC w   9     |
230: d6 40 b7 94 99 ca                                  | @    |

tests-wire.out

environment: common.ttl = 2
environment: common.flags = 0
environment: common.community = "abc123def456z"

REGISTER: common.pc = 1
REGISTER: reg.cookie = 0
REGISTER: reg.srcMac[] = 0:1:2:3:4:5
REGISTER: reg.dstMac[] = 10:11:12:13:14:15
REGISTER: reg.dev_addr.net_addr = 0x20212223
REGISTER: reg.dev_addr.net_bitlen = 25
REGISTER: reg.dev_desc = "Dummy_Dev_Desc"

REGISTER: output retval = 0x2400000000
REGISTER: output idx = 0x3d0000000a
000: 03 02 00 01 61 62 63 31  32 33 64 65 66 34 35 36   |    abc123def456|
010: 7a 00 00 00 00 00 00 00  00 00 00 00 00 01 02 03   |z               |
020: 04 05 10 11 12 13 14 15  20 21 22 23 19 44 75 6d   |         !"# Dum|
030: 6d 79 5f 44 65 76 5f 44  65 73 63 00 00            |my_Dev_Desc  |

REGISTER_SUPER: common.pc = 5
REGISTER_SUPER: reg.cookie = 0
REGISTER_SUPER: reg.edgeMac[] = 20:21:22:23:24:25
REGISTER_SUPER: reg.dev_addr.net_addr = 0x20212223
REGISTER_SUPER: reg.dev_addr.net_bitlen = 25
REGISTER_SUPER: reg.dev_desc = "Dummy_Dev_Desc"
REGISTER_SUPER: reg.auth.scheme = 1
REGISTER_SUPER: reg.auth.token_size = 16
REGISTER_SUPER: reg.auth.token[0] = 0xfe
REGISTER_SUPER: reg.key_time = 600

REGISTER_SUPER: output retval = 0x3600000000
REGISTER_SUPER: output idx = 0x4f0000000a
000: 03 02 00 05 61 62 63 31  32 33 64 65 66 34 35 36   |    abc123def456|
010: 7a 00 00 00 00 00 00 00  00 00 00 00 20 21 22 23   |z            !"#|
020: 24 25 20 21 22 23 19 44  75 6d 6d 79 5f 44 65 76   |$% !"# Dummy_Dev|
030: 5f 44 65 73 63 00 00 00  01 00 10 fe 00 00 00 fd   |_Desc           |
040: 00 00 00 fc 00 00 00 00  00 00 fb 00 00 02 58      |              X|

UNREGISTER_SUPER: common.pc = 6
UNREGISTER_SUPER: unreg.auth.scheme = 1
UNREGISTER_SUPER: unreg.auth.token_size = 16
UNREGISTER_SUPER: unreg.auth.token[0] = 0xfe
UNREGISTER_SUPER: unreg.srcMac[] = 30:31:32:33:34:35

UNREGISTER_SUPER: output retval = 0x1900000006
UNREGISTER_SUPER: output idx = 0x320000000a
000: 03 02 00 06 61 62 63 31  32 33 64 65 66 34 35 36   |    abc123def456|
010: 7a 00 00 00 00 00 00 00  00 01 00 10 fe 00 00 00   |z               |
020: fd 00 00 00 fc 00 00 00  00 00 00 fb 30 31 32 33   |            0123|
030: 34 35                                              |45|
Logan007 commented 2 years ago

Hmm... the test output all look good so far. Is there more output from the tests-transform.out, maybe the AES section?

siskai commented 2 years ago

When I run tests-transform, output in terminal constains

null: tested
tf: round-trip buffer mismatch

There are no other transform tests.

Logan007 commented 2 years ago

Have you tried to use the Twofish cipher for communication (-A2 at the edges)? Does that one work?

As a guess in the dark, could it be an openSSL issue? Do you compile with openSSL support? And if so, could you try to compile without openSSL support?

siskai commented 2 years ago

Twofish: Same issue

10/Jan/2022 17:01:39 [edge_utils.c:2419] Rx N2N_UDP of size 104 from [<ip_address:port>]
10/Jan/2022 17:01:39 [edge_utils.c:2522] [pSp] from 4E:30:6A:13:8F:9A via [<ip_address:port>]
10/Jan/2022 17:01:39 [edge_utils.c:1633] handle_PACKET size 58 transform 2
10/Jan/2022 17:01:39 [transform_tf.c:139] transop_decode_tf 58 bytes ciphertext
10/Jan/2022 17:01:39 [transform_tf.c:163] WARNING: transop_decode_tf payload decryption failed with unexpected cipher text stealing padding
10/Jan/2022 17:01:39 [network_traffic_filter.c:159] collect_packet_info stumbled across the unknown ether type 0x0000
10/Jan/2022 17:01:39 [edge_utils.c:1749] sending data of size 4294967295 to TAP
10/Jan/2022 17:01:40 [edge_utils.c:2419] Rx N2N_UDP of size 104 from [<ip_address:port>]
10/Jan/2022 17:01:40 [edge_utils.c:2522] [pSp] from 4E:30:6A:13:8F:9A via [<ip_address:port>]
10/Jan/2022 17:01:40 [edge_utils.c:1633] handle_PACKET size 58 transform 2
10/Jan/2022 17:01:40 [transform_tf.c:139] transop_decode_tf 58 bytes ciphertext
10/Jan/2022 17:01:40 [transform_tf.c:163] WARNING: transop_decode_tf payload decryption failed with unexpected cipher text stealing padding
10/Jan/2022 17:01:40 [network_traffic_filter.c:159] collect_packet_info stumbled across the unknown ether type 0x0000
10/Jan/2022 17:01:40 [edge_utils.c:1749] sending data of size 4294967295 to TAP

I compile with default settings, ie without OpenSSL support. Should I try to compile with OpenSSL support?

Logan007 commented 2 years ago

Should I try to compile with OpenSSL support?

No, please don't. I was suspecting maybe an issue with openSSL because it is the first cipher (counting TF, AES, ChaCha, SPECK) optionally supported by openSSL. And it still is strange that you only get TF output from tests... so, I will try to setup a VM some day and try to re-produce.

Anyone else experiencing this on openWRT?