TL; DR Я пытаюсь отправить сообщения системного журнала, которые я уже создал, на сервер системного журнала, используя поддельные IP-адреса источника, но я делаю это очень трудно для себя и могу сделать с кратким подходом
Большинство вопросов о системном журнале не включают проблему подделки IP, поэтому я спрашиваю заново.
Я пишу (хорошо обновляю) скрипт, который я написал давным-давно, который генерирует поддельные сообщения системного журнала (используя UDP). В настоящее время он использует Net :: RawIP, который ужасен для переносимости, а также код для передачи, которую я написал много лет назад, решил прекратить работу в Perl 5 (я не использовал это целую вечность, и я обновляю его). Я давно хотел избавиться от Net :: RawIP, но это единственный, который я знаю, как использовать!
Учитывая, что мне нужно это исправить, и у меня сейчас немного времени, я, вероятно, хочу перейти на использование возможности Socket, с чем я и играл - используя код из SO или gists или других мест, которые я могу найти - а не что-то вроде IO :: Socket, так как мне нужно разрешение на поддельные IP-адреса, учитывая низкую возможность записи в сокеты.
Тем не менее, я связал себя узами с этим, то, что я сейчас имею, формирует пакеты с нуля, а затем создает сокет и отправляет его, но в процессах обертывает лишний заголовок IPv4 (я вижу, используя wireshark) и без повторного запуска, я думаю, что он застрял так, поскольку имеет фундаментальный недостаток, поэтому я не делюсь старым кодом.
По сути, я могу продолжать играть с чрезмерно сложным кодом, который у меня есть, или попросить помощи, чтобы упростить его, так как я не знаю, как работают сокеты, и многие часы поиска в Google не сильно помогли. Я продолжаю находить код, который будет работать, но в некотором роде он не совместим - вероятно, это не проблема для того, для чего они обычно предназначены: для DDOS или для Syn-атак или для чего-либо другого.
Ключевыми требованиями для этого являются (которые каждая попытка, которую я предпринял, потерпела неудачу в той или иной форме!):
- должен исходить от поддельного IP-адреса источника и переходить к известному IP-адресу назначения
(следовательно, я использую UDP) (оба из которых у меня есть в переменных конфигурации), так что сервер системного журнала обрабатывает множество различных устройств, генерирующих журналы
- должен прийти с установленного порта и перейти на заданный порт (оба из которых у меня в
существующие переменные конфигурации)
- должен содержать сообщение, которое я уже сформировал, которое включает все содержимое системного журнала (PRI и содержимое сообщения системного журнала)
- должно быть полностью подано с контрольными суммами, длиной пакета и т. Д. При получении
- быть настолько переносимым, насколько это возможно (я, вероятно, включу его в свой основной скрипт, чтобы хранить все это в одном файле, которым я могу поделиться с другими).
Я просто чувствую, что должен быть простой и легкий способ сделать это, потому что все, что у меня есть, слишком гибкое и сложное и кошмар, чтобы расслабиться.
NB. В Sourceforge он используется как «must syslog», поэтому вы можете видеть, что я делал, но знать, что он перестал работать, поэтому он не будет работать, если вы запустите его сейчас! Как только я исправлю это, я загрузлю новую версию.
Приветствия, --Chris