Я пытаюсь создать имитацию программного обеспечения на машине Ubuntu GNU/Linux, которая будет работать как PPPoE. Я хотел бы, чтобы этот симулятор принимал исходящие пакеты, отключал заголовок ethernet, вставлял флаги PPP (7E, FF, 03, 00 и 21) и размещал информацию об уровне IP в пакете PPP. У меня возникают проблемы с FCS, который идет после данных. Из того, что я могу сказать, модем ячейки, который я использую, имеет 2 байта FCS, используя метод CRC16-CCITT. Я нашел несколько программ, которые будут вычислять эту контрольную сумму, но ни один из них не производит то, что выходит из последовательной линии (у меня есть последовательный порт «сниффер», который показывает мне все, что отправляется модем).Как создать FCS для PPP-пакетов?
Я изучал источник pppd и самого ядра linux, и я вижу, что оба они имеют способ добавления FCS к данным. Это довольно сложно реализовать, поскольку у меня нет опыта в хакерстве ядра. Может ли кто-нибудь придумать простой способ (желательно на Python) вычисления FCS, который соответствует той, которую производит ядро?
Спасибо.
P.S. Если кто-то захочет, я могу добавить образец вывода данных, который я получаю к серийному модему.