Трафик ModbusTCP отображается в WireShark как TCP-пакеты

Я использую pyModbusTCP для отправки пакетов ModbusTCP на моем локальном хосте. Кажется, мой код работает правильно, но в Wireshark мои пакеты отображаются как TCP вместо ModbusTCP. Когда я перехожу к «Анализировать> Включить протоколы», ModbusTCP включен. Еще одна странность заключается в том, что на прошлой неделе я следил за этим обучающим видео YouTube, и мне удалось заставить Wireshark распознавать пакеты ModbusTCP. Я попробовал это снова сегодня, и у меня была та же проблема, что и Wireshark пометил пакеты ModbusTCP как TCP. Понятия не имею, почему это происходит, и надеялся получить совет?

Код сервера:

      from pyModbusTCP.server import ModbusServer, DataBank
from time import sleep
from random import uniform

# set up server on Local Host port 12345
server = ModbusServer('127.0.0.1',12345, no_block=True)
# initialize register 0 with value of 80
DataBank.set_words(0, [80])

try:
        print("Start server...")
        server.start()
        print("Server is online...")
        # change register value every 5 seconds. 
        while True:
            # Set Register @ Address 0 to random int. value
            DataBank.set_words(0, [int(uniform(0,100))])
            sleep(5)
# when hit ctrl+C in CMD line, shut down server
except:
        print("Shutdown server....")
        server.stop()
        print("Server is offline...")
        sleep(0.5)

Код клиента:

      from pyModbusTCP.client import ModbusClient
from pyModbusTCP.server import ModbusServer, DataBank
import time

# Set up client, tell it to communicate with server on local host port 12345
c = ModbusClient()
c.host("127.0.0.1")
c.port(12345)

while True:
    if not c.is_open():
        if not c.open():
            print("Unable to connect to 127.0.0.1:12345")
    
    if c.is_open():
        # Read Register 0 and print it to cmd line
        regs = c.read_holding_registers(0, 1)
        if regs:
            print("Register #0: " + str(regs))
            
    time.sleep(2)

Изображение моего окна Wireshark : Вывод Wireshark

1 ответ

Я понял. Wireshark неправильно маркирует пакеты, потому что я переместил свой трафик с порта 502 на порт 12345, потому что мне потребовались права суперпользователя для разговора по порту 502. Я переключил его обратно на порт 502 в моем коде, и теперь Wireshark помечает их как пакеты ModbusTCP.

Другие вопросы по тегам