{"id":23690777,"url":"https://github.com/dispatchcode/lantern","last_synced_at":"2025-09-02T20:31:30.792Z","repository":{"id":257127473,"uuid":"816909993","full_name":"DispatchCode/lantern","owner":"DispatchCode","description":"Packet sniffer and analyzer: C Kernel module and C++ GUI application","archived":false,"fork":false,"pushed_at":"2024-11-16T23:56:30.000Z","size":83,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-17T00:29:37.005Z","etag":null,"topics":["kernel-module","networking","packet-analyser","tools"],"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/DispatchCode.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":"2024-06-18T16:21:41.000Z","updated_at":"2024-11-16T23:56:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"a3953beb-830f-433a-b4dd-56a95f690be1","html_url":"https://github.com/DispatchCode/lantern","commit_stats":null,"previous_names":["dispatchcode/lantern"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DispatchCode%2Flantern","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DispatchCode%2Flantern/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DispatchCode%2Flantern/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DispatchCode%2Flantern/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DispatchCode","download_url":"https://codeload.github.com/DispatchCode/lantern/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231807407,"owners_count":18429519,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["kernel-module","networking","packet-analyser","tools"],"created_at":"2024-12-30T02:52:05.317Z","updated_at":"2024-12-30T02:52:05.954Z","avatar_url":"https://github.com/DispatchCode.png","language":"C++","readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"https://github.com/user-attachments/assets/ddf2a8fe-4e77-468f-b514-c18a27736141\"\u003e\u003c/p\u003e\n\n___\n\n*Lantern* is a lightweight packet analyzer that also supports blocking source and destination IP addresses. \nThis is achieved through the interaction between a kernel module and a GUI application\n\n## Features\n✅ IPv4 \u0026 IPv6 \u003cbr\u003e\n✅ TCP \u0026 UDP \u003cbr\u003e\n✅ ICMPv6 \u0026 IGMP \u003cbr\u003e\n❌ All other protocols not mentioned above \u003cbr\u003e\n\n## Planned feature / changes\n🎯 Block/unblock IPs (currently only a context menu and message box are available) \u003cbr\u003e \n🎯 Implement proper multithreading in the user-mode application (using thread pools) \u003cbr\u003e\n🎯 Support for additional protocols \u003cbr\u003e \n🎯 Display more detailed information when a packet is selected \u003cbr\u003e\n\n![packet_sniffer](https://github.com/user-attachments/assets/fa0c6bae-a591-4f17-821b-b4e540faf3f7)\n\n\u003e The column \"CPU #\" shows the cpu that called the hook function (`capture()`, in the driver source code)\n\n## How it works?\nThe driver, currently named packet_sniffer.c, is responsible for reading network packets using a Netfilter hook. This hook, called NF_INET_PRE_ROUTING, is triggered right after packets enter the kernel's network stack. With this hook, it's possible to re-route, accept, or drop the packet.\n\nEach packet is collected in a buffer, which is then copied to a user-space buffer using device_read (via a character device).\n\nThe user-mode application reads a specified number of bytes from the character device, with the kernel driver ensuring that only a fixed maximum amount of data is copied.\n\n## Let's *make* it!\n- Tested on Linux v6.9 and v6.10 (atm)\n- You will also need to have [wxWidget](https://www.wxwidgets.org/downloads/) installed\n\nCompile and execute with:\n\n```bash\nmake \u0026\u0026 make run\n```\nEach action requires `sudo` privileges - at least for now.\n\nYou can also remove the generated files:\n```bash\nmake clean\n```\n\nThe kernel module will be compiled, loaded and automatically unloaded when the application exits.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdispatchcode%2Flantern","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdispatchcode%2Flantern","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdispatchcode%2Flantern/lists"}