Я знаю о программе, которая может "вырезать" (искать) пакеты TCP IP из необработанных двоичных данных. Результаты, которые он представляет, представляют собой MAC-адреса источника и назначения, IP-адреса источника и назначения и несколько других битов (номера портов и т.д.).
Мне любопытно узнать, какие биты данных действуют как сигнатура \ флаг для идентификации таких данных среди массы других двоичных данных? Пример ниже - один из моих собственных IP-пакетов из теста. Первые 6 байтов = MAC-адрес назначения. Следующие 6 байтов, MAC-адрес источника. 0800 - это какой-то маркер, который я сейчас забуду. 45 AB F7 25 - это один IP-адрес, C0 A8 6F A0 - один из моих внутренних IP-адресов и т.д.
Но нет ничего до или после него, чтобы сказать: «Эй, это данные TCP IP». И есть сотни других подобных примеров. Итак, как программное обеспечение нашло его и другие, когда исходные данные - это просто MAC-адрес - а не то, что вы можете легко написать в программе для поиска (что я и хочу сделать сам)?
Какие-нибудь мысли?
Offset       0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15
000000000   00 0C 29 31 24 41 00 50  56 ED A5 46 08 00 45 00     )1$A PVí¥F  E 
000000016   00 28 C0 A8 00 00 80 06  0D 0E 45 AB F7 25 C0 A8    (À¨  €   E«÷%À¨
000000032   6F A0 01 BB 06 AF 7C 3E  0B 51 35 87 6B 87 50 10   o  » ¯|> Q5‡k‡P 
000000048   FA F0 16 C2 00 00 00 00  00 00 00 00 00 00 00 00   úð Â            
000000064   FD 0C AC 83 FB 0A B0 41  B3 B3 F8 71 88 1F 4C 8C   ý ¬ƒû °A³³øqˆ LŒ
