Learning UDP message

Can anyone te me how this works / use it in Node Red

in the 2 picture below you see a snap of wire shark.
in picture 1 i ask (with company software) 010101 from a DDC device (red understripe).
in picture 2 i ask (with company software) 010102 from de DDC device (red understripe)

the only thing that change in the 2 requests is de last part of the data (green understripe)
my question: how does the company software calculate the last part.. and the big question: can node red do the calculation?

There is absolutely no way we can help with this. We have no idea what is generating the data nor what it means.

thank you. I thought it was a reducible (calculated) value. it probably is but not standard in a UDP message ... unfortunate

UDP is just a protocol. It does not define the data.

indeed - you can see the UDP checksum a few lines earlier in your dump - nothing to do with the data. But if you use something like https://crccalc.com/ in CRC-16 mode and stick in the data part I'm sure you'll find it...

Hint - try CRC-16/XMODEM

thats it. the CRC-16/XMODEM . hit de string in https://crccalc.com/ and the correct value came up! thank you.. now trying in node red...

ok, now getting it done in node red is my next issue...
i found a funtion wat does the math. now i neet to paste the crc at the ens of the buffer (10 and 11).

[{"id":"95de803e.d9674","type":"tab","label":"Flow 3","disabled":false,"info":""},{"id":"272ea949.947526","type":"inject","z":"95de803e.d9674","name":"as hex string 745207020315d2","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"0251FA019A00000A6209","payload":"0251FA019A00000A6209","payloadType":"str","x":1190,"y":360,"wires":[["c493e18d.d3b86"]]},{"id":"70ac250.402efdc","type":"debug","z":"95de803e.d9674","name":"","active":true,"tosidebar":true,"console":true,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":1730,"y":360,"wires":[]},{"id":"c493e18d.d3b86","type":"function","z":"95de803e.d9674","name":"calculate CRC","func":"msg.payload = Buffer.from(msg.payload,\"hex\")\n\nconst ccitt_16 = [\n    0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,\n    0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,\n    0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,\n    0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,\n    0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,\n    0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,\n    0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,\n    0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,\n    0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,\n    0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,\n    0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,\n    0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,\n    0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,\n    0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,\n    0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,\n    0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,\n    0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,\n    0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,\n    0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,\n    0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,\n    0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,\n    0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,\n    0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,\n    0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,\n    0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,\n    0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,\n    0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,\n    0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,\n    0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,\n    0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,\n    0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,\n    0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0\n];\nfunction Hi(word){\n    return (word >> 8) \n}\nfunction Lo(word){\n    return (word & 0x00ff) \n}\nfunction CalculateCharacterCRC16(crc, byte){\n    let shifted8_int16 = ((crc << 8) & 0xffff);\n    let b = (Hi(crc) ^ byte);\n    let newCRC = (shifted8_int16 ^ ccitt_16[b]);\n    return newCRC;\n}\n\nvar data = msg.payload;\nvar crc = 0;\nfor (let i=0; i < data.length; i++) {\n    crc = CalculateCharacterCRC16(crc, data[i]);\n} \nmsg.crc = crc ;\n\nreturn msg;\n\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1520,"y":360,"wires":[["70ac250.402efdc"]]}]

does anyone know how to do this in one function code??