У меня есть простая проблема, которую я уверен, что кто-то здесь сделал это раньше...
Я хочу переписать потоки TCP/IP 4-го уровня (отдельные пакеты или фреймы не более низкого уровня). Команда Ettercap etterfilter
позволяет выполнять простые замены в реальном времени потоками TCP/IP уровня 4 на основе фиксированных строк или регулярных выражений. Пример кода сценария ettercap:
if (ip.proto == TCP && tcp.dst == 80) {
if (search(DATA.data, "gzip")) {
replace("gzip", " ");
msg("whited out gzip\n");
}
}
if (ip.proto == TCP && tcp.dst == 80) {
if (search(DATA.data, "deflate")) {
replace("deflate", " ");
msg("whited out deflate\n");
}
}
http://ettercap.sourceforge.net/forum/viewtopic.php?t=2833
Я бы хотел переписать потоки на основе моей собственной программы фильтров вместо простой замены строк. У кого-нибудь есть идея, как это сделать? Есть ли что-то другое, кроме Ettercap, которое может делать живую замену, как это, возможно, как плагин для программного обеспечения VPN или что-то в этом роде?
Я хотел бы иметь конфигурацию, похожую на конфигурацию ettercap с тихим мостовым обнюхиванием между двумя интерфейсами Ethernet. Таким образом, я могу тихо фильтровать трафик, идущий с любого направления без проблем с NAT. Обратите внимание, что мой фильтр - это приложение, которое действует как фильтр каналов, аналогично дизайну фильтров командной строки unix:
>[eth0] <----------> [my filter] <----------> [eth1]<
Мой фильтр будет функцией Python для пользовательского пространства.
То, что я уже знаю, но не подходит:
-
Tun/Tap - работает на более низком слое пакета, мне нужно работать с потоками более высокого уровня.
-
Ettercap - я не могу найти способ сделать замены, кроме ограниченных возможностей в приведенном выше примере.
-
Включение в какое-то программное обеспечение VPN? - Я просто не могу понять, что именно так.
-
libnetfilter_queue - работает с более низкими пакетами, а не потоками TCP/IP.
Опять же, переписывание должно происходить на транспортном уровне (уровень 4), как в этом примере, вместо подхода на основе пакетов на более низком уровне. Точный код очень поможет!
Спасибо!