Я знаю о программе, которая может "вырезать" (искать) пакеты 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Œ