fcccode / libnet

windows user mode network library

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

libnet

windows network library

建立本工程的目的。
这是一个应用层的收集(本地/本机)各种网路操作的集合,主要是API的用法,枚举和信息的收集。
注意:这不是一个扫描器,可以说是本地(本机)网络信息查看器。

本仓库办包含的内容:

  1. socket(raw)
  2. Spi(lsp)
  3. wfp 应用层,不包含驱动层。
  4. wlan(wifi)
  5. winhttp(proxy)
  6. wininet
  7. netblos 不包含驱动层。
  8. IpHelper 不包含驱动层。
  9. html
  10. firewall
  11. Netapi
  12. netsh 有待添加。

本仓库不包含的内容:

  1. 命名管道
  2. 邮件槽
  3. TDI
  4. WSK
  5. WFP 的 驱动层
  6. NDIS
  7. SSPI 驱动层和应用层都不包含。

本库的设计的几个规则:

  1. 尽量不调用日志函数。
    刚开始的时候还考虑是否使用日志,以及何种日志。
  2. 因为上一条,所以代码失败要返回详细的信息,也就是失败的原因。
  3. 因为上两条的原因,所以使用者要检查返回值,并记录日志。
  4. 代码不会主动抛异常。代码尽量屏蔽异常。但是不代表代码中没有异常。
    代码尽量捕捉异常并返回信息。
  5. 导出(对外公开的)的函数都是NTAPI调用格式。
  6. 代码尽量使用SAL(source-code annotation language:源代码批注语言)。
  7. 代码格式类似go和python.
  8. 代码尽量不使用硬编码。
  9. 代码开启静态的语法检查(启用Microsoft Code Analysis, 关闭Clang-Tidy)。
  10. 警告的等级是4级,且将警告视为错误。
  11. 代码的运行要过:驱动程序校验器/应用程序校验器/gflags.exe.
  12. 禁止使用断言(估计现在代码中还有不少断言)。
  13. 接口的参数只有基本类型和指针(没有类,模板和引用)。
  14. 只依赖操作系统的库,不再依赖第三方的库(特指动态库),当然crt,wil不可免。
  15. 所有接口皆为C接口,即EXTERN_C。
  16. C语言标准选择:ISO C17 (2018)标准 (/std:c17)。
  17. C++语言标准选择:ISO C++17 标准 (/std:c++17) 或者:预览 - 最新 C++ 工作草案中的功能 (/std:c++latest)。

特别说明:
本库只提供c/c++/rust调用接口文档,
其他的,如:ASM,C#,GO,PYTHON,JAVA,PHP等自行定义。

注意:接口或者回调的调用方式。__stdcall or __cdecl or __fastcall。


为了彰显本程序库的力量,特添加一个工程:

  1. 利用本程序库的功能而制作一个程序。
  2. 这个程序主要是显示网络信息,但还有别的功能。
  3. 这个程序没有利用驱动。
  4. 这个程序的名字叫:NetTool.exe吧!叫NetInfo.exe的格局有点小。
  5. 重写操作系统自带的网络工具,添加或扩展功能,修改BUG,至少显示给改进下(对齐,错位)。

About

windows user mode network library

License:MIT License


Languages

Language:C++ 94.3%Language:C 5.5%Language:Rust 0.2%