{"id":13748509,"url":"https://github.com/waderwu/wsniffer","last_synced_at":"2025-05-09T11:30:44.592Z","repository":{"id":134674511,"uuid":"111935309","full_name":"waderwu/wsniffer","owner":"waderwu","description":"sniffer by raw socket","archived":false,"fork":false,"pushed_at":"2018-01-20T18:19:14.000Z","size":12354,"stargazers_count":2,"open_issues_count":1,"forks_count":5,"subscribers_count":0,"default_branch":"master","last_synced_at":"2024-05-22T19:33:36.518Z","etag":null,"topics":["arpspoof","nat-traversal","raw-socket","sniffer","synflood-dos","tcp-server","udp-server"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/waderwu.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-11-24T15:59:22.000Z","updated_at":"2020-09-29T09:23:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"2fe81ba0-20c7-4330-a504-6cd2ae054585","html_url":"https://github.com/waderwu/wsniffer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waderwu%2Fwsniffer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waderwu%2Fwsniffer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waderwu%2Fwsniffer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waderwu%2Fwsniffer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/waderwu","download_url":"https://codeload.github.com/waderwu/wsniffer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253240350,"owners_count":21876593,"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":["arpspoof","nat-traversal","raw-socket","sniffer","synflood-dos","tcp-server","udp-server"],"created_at":"2024-08-03T07:00:43.352Z","updated_at":"2025-05-09T11:30:44.246Z","avatar_url":"https://github.com/waderwu.png","language":"Python","funding_links":[],"categories":["资源清单"],"sub_categories":["Computer Communication and Network"],"readme":"# 计算机网络相关代码\n- sniffer\n- arpspoof\n- synflood-dos\n- endtoend\n\n## sniffer\n抓包只使用了socket标准库，自己解析包\n### Prerequisites\n- Ubuntu (16.04 LTS)\n- Python (3.5)\n- Django (1.11.7)\n\n### Usage\n```\npip3 install django\n\npython3 manage.py makemigrations\n\npython3 manage.py migrate\n\nsudo python3 manage.py runserver\n\nopen browser http://127.0.0.0:8000/wshark\n\n```\n\n### Feature\n- 抓包，解析（只支持arp，tcp，udp，ftp）(dns，icmp，https只解析了部分)\n- 包过滤，协议，端口\n- 关键字搜索\n- follow tcp stream\n- 文件重组（目前只支持http和ftp）\n\n### To Do\n- 将django换成qt5\n - 因为网页版有缺陷，不能实时刷新（用ajax也应该能伪造出实时刷新的假象），当包过多时传输会较慢\n - 如果想抓lo网卡，本身会造成干扰\n- 完善包的解析\n- 界面优化\n\n## arpspoof\n用socket构造arp包，进行arp欺骗\n\n（高级路由器可能会有防止arp欺骗的功能，实验可能不成功）\n### Prerequisites\n- Ubuntu (16.04 LTS)\n- Python (3.5)\n\n### can do\n- 能让你室友上不了网\n- 配合sniffer抓自己手机的包\n- 能嗅探你室友的包（他不会有任何知觉）（和上面的原理一样）\n\n### Usage\n- 让室友上不了网\n - 先检测局域网下面的存活主机可以用nmap，也可以暴力循环发arp请求包，然后抓包查看回应包，拿到受害target_ip和target_mac\n - 修改sendarp.py 里面的相关ip和mac（为了防止脚本小子，此处不是很详细）\n - `sudo python3 sendarp.py`\n- 配合sniffer手机抓包\n  - 查看手机的ip和mac，然后修改sendarp.py相应的部分,运行。此时你的手机是上不了网的。\n  - `sudo bash arp.sh` 配置iptables实现包转发，让手机能上网。\n  - 打开wireshark开始抓包（打开wsniffer可行hhh）\n  - 操作完成后`sudo bash recover.sh` 恢复iptables配置\n- 嗅探室友的包\n  - 操作和上面基本一样，只是将自己手机的ip，mac换成室友的即可\n### To Do\n- 不单纯转发包，可以先拦下包，修改后再转发，dns挟持，tcp挟持，替换网页内容\n\n## synflood-dos\n用socket构造tcp包，设置flag为syn然后发送（可以认为就是个tcp发包器）\n\n### Prerequisites\n- Ubuntu (16.04 LTS)\n- Python (3.5)\n\n### Usage\n- 修改syndos.py里面的source ip 和 destination ip即可,然后`sudo python3 syndos.py`\n- `sudo bash rst.sh` 组织本机发送rst包\n- 操作完成后`sudo bash recover.sh` 恢复iptables配置\n\n### To Do\n- 经测试确实能够占据所有的tcp链接，但是还是能访问网站（在自己的网站进行的测试）原因不明（但是确实能让自己寝室的路由器崩掉，上不了网）\n\n## endtoend\n原本想做一个在nat下面的两台主机进行端对端直接通信，后来通过搜索找到了关键词nat traversal，就是nat 打洞。我选择了最简单的udp打洞进行实验，结果由于学校的nat是对称类型的，真正的端到端并没有实现。把我的一些实验代码放到endtoend目录下面。\n\n### To Do\n- 继续搞\n\n### nat traversal参考链接\n- http://lifeofzjs.com/blog/2014/07/19/how-p2p-in-symmetric-nat/\n- http://blog.csdn.net/njupt_t/article/details/51170623\n- https://github.com/laike9m/PyPunchP2P\n- http://www.bford.info/pub/net/p2pnat/index.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaderwu%2Fwsniffer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwaderwu%2Fwsniffer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaderwu%2Fwsniffer/lists"}