{"id":20574784,"url":"https://github.com/sven4500/setfr","last_synced_at":"2026-04-17T22:32:21.319Z","repository":{"id":164937812,"uuid":"455998881","full_name":"sven4500/setfr","owner":"sven4500","description":"Утилита для отправки Ethernet фреймов","archived":false,"fork":false,"pushed_at":"2022-02-20T13:37:10.000Z","size":33,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-06T10:54:38.123Z","etag":null,"topics":["c-plus-plus","c-plusplus","cpp","ethernet","ethernet-frame","osi","tcp","udp"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sven4500.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-05T22:18:11.000Z","updated_at":"2023-12-07T01:34:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"0586a04e-87a0-4044-a5d8-0ce6dc00bfd9","html_url":"https://github.com/sven4500/setfr","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sven4500/setfr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sven4500%2Fsetfr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sven4500%2Fsetfr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sven4500%2Fsetfr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sven4500%2Fsetfr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sven4500","download_url":"https://codeload.github.com/sven4500/setfr/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sven4500%2Fsetfr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31948450,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T17:29:20.459Z","status":"ssl_error","status_checked_at":"2026-04-17T17:28:47.801Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","c-plusplus","cpp","ethernet","ethernet-frame","osi","tcp","udp"],"created_at":"2024-11-16T05:37:05.414Z","updated_at":"2026-04-17T22:32:21.303Z","avatar_url":"https://github.com/sven4500.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# setfr (send Ethernet frame)\n\nУтилита setfr предназначена для данных по каналу Ethernet. На данный момент реализована возможность отправлять пакеты на уровнях 2 и 3 модели OSI. Посредством командной строки программе передаётся путь к расположению бинарного файла содержащего заранее подготовленный кадр. Бинарный файл кадра помимо полезной нагрузки хранит также заголовки требуемых протоколов.\n\nНапример, если выбран режим работы на уровне линков (уровень 2 модели OSI), то файл кадра должен также содержать заголовок Ethernet, заголовок сетевого уровня, например IP, заголовок транспортного уровня, например, UDP, а также данные.\n\n## Параметры командной строки\n\nВ приведённой ниже таблице отмечены всё возможные на данный момент параметры командной строки.\n\n| Ключ | Значение | Описание                                                     |\n| ---- | -------- | ------------------------------------------------------------ |\n| -f   | Путь     | Путь к расположению бинарного файла содержащего кадр для отправки по каналу Ethernet |\n| -o   | 2..4     | Уровень на котором осуществляется отправка в соответствии с моделью OSI. (2) уровень линков, (3) сетевой уровень, (4) транспортный уровень. На данный момент реализована возможность отправки только на уровнях 2 и 3. |\n| -i   | IPv4     | IPv4 адрес машины получателя. Используется только в режиме работы на уровне 3. Кадр отправляется по указанному адресу игнорируя имеющуюся в кадре информацию. |\n| -p   | ..65535  | Номер порта машины получается. Используется только для работы на уровне 3. Кадр отправляется по указанному адресу игнорируя имеющуюся в кадре информацию. |\n| -d   | 1..      | Индекс сетевого адаптера. Используется только для работы на уровне 2. |\n| -m   | MAC      | MAC адрес машины получателя. Используется только для работы на уровне 2. Формат без разделительных символов, 12 шестнадцатеричных знака. |\n| -h   |          | Вывести на экран список возможных команд.                    |\n\nПример вызова программы для отправки кадра содержащего UDP пакет на 3 уровне:\n\n```shell\nsetfr -f ./udp-osi-lv-3.bin -o 3 -i 127.0.0.1 -p 8001\n```\n\nВо время вызова программе передаётся путь к бинарному файлу содержащему кадр для отправки, уровень модели OSI для которого был построен кадр, адрес машины получателя. Как уже было сказано выше не смотря на то что в кадре уже хранится заголовки IP и UDP содержащие информацию об адресе машины получается, кадр будет отправлен на адрес переданный в командной строке.\n\n```\nsetfr -f ./udp-osi-lv-2.bin -o 2 -d 2 -m 080027dc5db1\n```\n\nОтправка Ethernet кадра на указанный MAC адрес.\n\n## Структура проекта\n\nПроект разбит на несколько каталогов:\n\n- build хранятся проектные файлы (в дальнейшем возможно использование системы автоматизированный сборки, на данный момент не реализовано). На данный момент в каталоге хранятся проекты двух сред: Visual Studio 2015 Express и Qt Creator. Программа не использует Qt и проектный файл настроен на компиляцию без библиотек Qt (не было возможности установить что-либо другое, а отлаживаться в среде немного приятнее чем без неё);\n- frames хранятся примеры сетевых кадров. В каталоге находится readme с описанием содержимого кадров;\n- src исходный код программы.\n\n## Примечания\n\nРаботоспособность программы была проверена на UPD сокетах в ОС Ubuntu 5.11 и Windows 10. На ОС Windows 10 возможно использовать [Геркулес]([Hercules SETUP utility | HW-group.com](https://www.hw-group.com/software/hercules-setup-utility)) отправляя кадры на localhost.\n\n- Для запуска на Unix подобных, вероятно понадобятся права администратора.\n- Для запуска на Windows требуются права администратора.\n- На Windows запрещено всё что ниже 3 уровня.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsven4500%2Fsetfr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsven4500%2Fsetfr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsven4500%2Fsetfr/lists"}