К сожалению, scapy в настоящее время не поддерживает OpcUa.
Однако вы можете достичь своей цели, используя стандартный фильтр op c ua для фильтрации, который равен 4840.
filter = "port 4840"
Это Также возможно проверить байты, содержащиеся в пакете, для более детальной фильтрации пакетов op c ua.
Например:
filter = "(port 4840) " \
"and (tcp[20:4] = 0x4d534746) " \
"and ((tcp[46:2] = 0x3a03) or (tcp[46:2] = 0x7702)) "
, который отфильтрует все пакеты Op c Ua whith message_type = "MSG" и chunk_type = "F", которые являются либо ReadRequests, либо PublishRequests.
В этом случае tcp[20:4]
означает «В пакете Tcp начинаются с байта 20 и принимают следующие 4 байта» и 0x4d534746
является шестнадцатеричным представлением MSGF
.
Более подробную информацию о синтаксисе фильтра пакетов Беркли можно найти здесь .