Я получил этот пакет с помощью tcpdump, но я не уверен, как использовать параметр --hex-string для сопоставления с пакетом. Может кто-нибудь подскажет, как это сделать?
11:18:26.614537 IP (tos 0x0, ttl 17, id 19245, offset 0, flags [DF], proto UDP (17), length 37)
x.x.187.207.1234 > x.x.152.202.6543: [no cksum] UDP, length 9
0x0000: f46d 0425 b202 000a b853 22cc 0800 4500 .m.%.....S"...E.
0x0010: 0025 4b2d 4000 1111 0442 5ebe bbcf 6701 .%K-@....B^...g.
0x0020: 98ca 697d 6989 0011 0000 ffff ffff 5630 ..i}i.........V0
0x0030: 3230 3300 0000 0000 0000 0000 203.........
Шестнадцатеричная строка должна быть окружена |
символы. Пробелы необязательны
iptables --append INPUT --match string --algo kmp --hex-string '|f4 6d 04 25 b2 02 00 0a|' --jump ACCEPT
Обратите внимание, что сопоставление строк должно использоваться в крайнем случае. Это интенсивно и ненадежно, потому что работает с пакетами, а не с соединениями. Он также начинает работать только с третьим пакетом в TCP-соединении, что ограничивает то, какие действия вы можете использовать (например, вы не можете использовать NAT-соединение).