网络扫描技术揭秘:原理、实践与扫描器的实现

网络扫描技术揭秘:原理、实践与扫描器的实现

原理、实践与扫描器的实现

暂无评价综合评分的显示会考虑用户真实性等多项因素,每部作品出现综合评分的时间不定。

作品简介

《网络扫描技术揭秘:原理、实践与扫描器的实现》系统地介绍网络扫描器的概念、原理与设计方法,饱含作者十几年来在网络技术应用实践中不断总结的经验与技巧。作者从网络协议这样的基本概念开始,细致深入地分析了网络扫描器的原理,并用自己制作的大量工程代码,揭示了网络扫描器的实现方法与最佳实践。

《网络扫描技术揭秘:原理、实践与扫描器的实现》首先介绍了网络扫描技术的概念、原理、算法等,以及网络协议的意义与编程概述,随后系统分析了各种扫描器的原理与设计方法,包括TCP/UDP端口、NetBIOS、SNMP、ICMP、基于协议的服务、基于应用的服务、命名管道、服务发现、漏洞扫描器等。书中在介绍每一种扫描器的时候,都是先介绍相应协议,然后对扫描器中要使用的API函数进行详细说明,使读者知道该扫描器的各种技术细节;还介绍了Windows中相关协议程序的安装、配置、测试和验证等,使读者有了演习场地;最后展示了扫描器的编程实例。这种循序渐进、逐步深入的方式,使读者不仅全面地了解扫描器的细节,而且在遇到新情况时,能举一反三,对代码进行修改或调整。随书光盘还包含了作者精心制作与调试好的工程代码,可帮助读者快速上手,设计出自己需要的扫描器。

《网络扫描技术揭秘:原理、实践与扫描器的实现》不仅是网管员和安全技术人员必备参考书,也适合于所有想深入理解计算机网络原理、全面了解网络扫描技术的学生、教师以及安全技术爱好者。

李瑞民 工学博士,资深网络安全专家兼高级系统架构师,多年来一直专注于计算机安全技术、网络设备与信号监控等领域的研究与应用。对网络扫描技术以及串口监控、网口监控等设备类监控技术有深刻的认识,并在实践中总结出了串口通信中的嗅探技术以及通用串口协议语法。曾参与多个网络应用软件项目的研发,涉及网络安全、广播电视、通信等多个行业。曾发表论文二十余篇,拥有专利和著作权六项。此外,还积极倡导和推动开源事业,将自己精心编写的扫描器代码全部开源,旨在推动我国软件事业的发展。

作品目录

  1. 网络扫描技术揭秘:原理、实践与扫描器的实现
  2. 前言
  3. 声明
  4. 第1章 绪论
  5. 1.1 网络安全的概念
  6. 1.2 网络扫描的概念
  7. 1.2.1 服务和端口
  8. 1.2.2 网络扫描
  9. 1.3 网络扫描原理概述
  10. 1.4 扫描编程与客户端编程的区别
  11. 1.5 网络扫描的目的
  12. 1.6 网络扫描算法
  13. 1.6.1 非顺序扫描
  14. 1.6.2 高速扫描
  15. 1.6.3 分布式扫描
  16. 1.6.4 服务扫描
  17. 1.6.5 指纹识别算法
  18. 1.6.6 漏洞扫描
  19. 1.6.7 间接扫描
  20. 1.6.8 秘密扫描
  21. 1.6.9 认证扫描
  22. 1.6.10 代理扫描
  23. 1.6.11 手工扫描
  24. 1.6.12 被动扫描
  25. 1.7 网络扫描器的分类
  26. 1.8 网络扫描技术的发展史
  27. 1.8.1 手工扫描阶段
  28. 1.8.2 使用通用扫描器阶段
  29. 1.8.3 设计专用扫描器阶段
  30. 1.9 扫描器的限制
  31. 1.10 当前网络常见的漏洞
  32. 1.10.1 DOS和DDOS
  33. 1.10.2 缓冲区溢出
  34. 1.10.3 注入式攻击
  35. 1.10.4 明文传输
  36. 1.10.5 简单密码
  37. 第2章 网络协议和网络编程例程
  38. 2.1 常用的网络编程
  39. 2.1.1 TCP/IP协议编程
  40. 2.1.1.1 几个重要的概念
  41. 2.1.1.2 Windows Socket结构
  42. 2.1.1.3 Windows socket转换类函数
  43. 2.1.1.4 Windows Socket通信类函数
  44. 2.1.1.5 原始套接字
  45. 2.1.2 NetBIOS/NetBEUI协议编程
  46. 2.1.2.1 NetBIOS开发简介
  47. 2.1.2.2 NetBIOS的调用
  48. 2.1.3 Win Inet高层编程
  49. 2.1.4 命名管道和邮槽高层编程
  50. 2.2 扫描器中公用编程示例
  51. 2.2.1 CTreeCtrl控件的应用
  52. 2.2.2 CListCtrl控件的应用
  53. 2.2.3 INI文件的操作
  54. 2.2.4 数据库ADO的简单应用
  55. 2.2.4.1 ADO初始化
  56. 2.2.4.2 建立数据库连接
  57. 2.2.4.3 进行数据读写
  58. 2.2.5 IP格式的互换
  59. 2.2.6 Windows操作系统类型的判断
  60. 2.2.7 多线程的局限性和使用方式
  61. 2.2.8 VC++下Windows Socket的使用
  62. 2.2.8.1 CSocket的应用
  63. 2.2.8.2 Socket2的应用
  64. 2.2.8.3 CSocket和Socket2同时使用
  65. 2.2.9 网卡的混杂模式
  66. 2.2.9.1 混杂模式简介
  67. 2.2.9.2 混杂模式的意义
  68. 2.3 嵌入外部程序
  69. 2.3.1 可执行外部程序的几个函数
  70. 2.3.1.1 调用system函数
  71. 2.3.1.2 调用WinExec函数
  72. 2.3.1.3 调用ShellExecute函数和ShellExecuteEx函数
  73. 2.3.1.4 调用CreateProcess函数
  74. 2.3.2 编程实例:使用重定向接收外部程序运行结果
  75. 2.3.2.1 重定向技术
  76. 2.3.2.2 程序主界面
  77. 2.3.2.3 程序原理
  78. 2.3.2.4 程序代码
  79. 2.3.3 编程实例:使用管道接收外部程序运行结果
  80. 2.3.3.1 管道技术
  81. 2.3.3.2 程序主界面
  82. 2.3.3.3 程序代码
  83. 第3章 TCP/UDP端口扫描器的设计
  84. 3.1 端口扫描的概念
  85. 3.1.1 端口的概念
  86. 3.1.2 端口扫描原理
  87. 3.2 端口扫描技术
  88. 3.2.1 网络通信实例分析
  89. 3.2.1.1 IP包头数据格式
  90. 3.2.1.2 TCP包头数据格式及通信实例
  91. 3.2.1.3 UDP包头数据格式及通信实例
  92. 3.2.2 TCP扫描
  93. 3.2.2.1 TCP connect扫描
  94. 3.2.2.2 TCP SYN扫描
  95. 3.2.2.3 TCP ACK扫描
  96. 3.2.2.4 TCP NULL扫描
  97. 3.2.2.5 TCP FIN+URG+PSH扫描
  98. 3.2.2.6 TCP FIN扫描
  99. 3.2.2.7 TCP反向Ident扫描
  100. 3.2.3 UDP扫描
  101. 3.2.3.1 普通UDP扫描
  102. 3.2.3.2 UDP recvfrom和write扫描
  103. 3.2.3.3 高级UDP扫描技术
  104. 3.3 手工扫描
  105. 3.3.1 检测单主机单端口开与否
  106. 3.3.2 检测单主机单端口是否有相应服务
  107. 3.3.2.1 端口21
  108. 3.3.2.2 端口23
  109. 3.3.2.3 端口80
  110. 3.3.2.4 端口137、138、139、445
  111. 3.3.3 检测多主机或多端口
  112. 3.3.3.1 扫描本机正在使用的端口
  113. 3.3.3.2 扫描一段主机的特定端口
  114. 3.3.3.3 扫描某一指定主机的一段端口
  115. 3.3.3.4 扫描一个网段的所有端口
  116. 3.4 编程实例:TCP端口扫描器
  117. 3.4.1 程序主界面
  118. 3.4.2 程序代码
  119. 3.4.2.1 CSocket的connect扫描
  120. 3.4.2.2 Socket2的connect扫描
  121. 3.4.2.3 TCP SYN扫描
  122. 3.5 编程实例:UDP端口扫描器
  123. 3.5.1 程序主界面
  124. 3.5.2 程序代码
  125. 第4章 NetBIOS扫描器的设计
  126. 4.1 NetBIOS协议的使用
  127. 4.1.1 查看和修改NetBIOS配置
  128. 4.1.2 查看NetBIOS配置的命令
  129. 4.2 IP和主机名的互换
  130. 4.2.1 主机名转IP地址
  131. 4.2.2 IP地址转主机名
  132. 4.3 MAC地址的读取
  133. 4.4 本地域名、子网掩码、网卡类型的读取
  134. 4.5 用户名、共享目录、组列表的读取
  135. 4.5.1 Unicode编程与ANSI之间的互换
  136. 4.5.1.1 MultiByteToWideChar函数
  137. 4.5.1.2 WideCharToMultiByte函数
  138. 4.5.2 用户名列表的读取
  139. 4.5.2.1 USER_INFO_0结构
  140. 4.5.2.2 USER_INFO_1结构
  141. 4.5.2.3 USER_INFO_2结构
  142. 4.5.2.4 USER_INFO_3结构
  143. 4.5.2.5 USER_INFO_10结构
  144. 4.5.2.6 USER_INFO_11结构
  145. 4.5.2.7 USER_INFO_20结构
  146. 4.5.2.8 PBYTE结构与实际日期的换算公式
  147. 4.5.2.9 NetUserEnum函数使用注意事项
  148. 4.5.3 共享目录的读取
  149. 4.5.3.1 SHARE_INFO_0结构
  150. 4.5.3.2 SHARE_INFO_1结构
  151. 4.5.3.3 SHARE_INFO_2结构
  152. 4.5.3.4 SHARE_INFO_502结构
  153. 4.5.3.5 share_info_1结构
  154. 4.5.3.6 share_info_50结构
  155. 4.5.4 组列表的读取
  156. 4.5.4.1 GROUP_INFO_0结构
  157. 4.5.4.2 GROUP_INFO_1结构
  158. 4.5.4.3 GROUP_INFO_2结构
  159. 4.5.5 远端主机时间的读取
  160. 4.5.6 远端服务支持类型的读取
  161. 4.5.7 主机信息的读取
  162. 4.5.7.1 NET_DISPLAY_USER结构
  163. 4.5.7.2 NET_DISPLAY_MACHINE结构
  164. 4.5.7.3 NET_DISPLAY_GROUP结构
  165. 4.6 NetBIOS的安全性
  166. 4.7 编程实例:反“IP欺骗”——MAC地址扫描器的设计
  167. 4.7.1 反“IP欺骗”的原理
  168. 4.7.2 MAC地址扫描器的主界面
  169. 4.7.3 程序代码
  170. 4.8 编程实例:NetBIOS的通用扫描器
  171. 4.8.1 程序主界面
  172. 4.8.2 程序代码
  173. 第5章 SNMP扫描器的设计
  174. 5.1 SNMP协议
  175. 5.1.1 管理信息结构
  176. 5.1.2 管理信息库
  177. 5.1.2.1 MIB树
  178. 5.1.2.2 MIB对象
  179. 5.1.2.3 OID值
  180. 5.1.2.4 OID全局图
  181. 5.1.3 通信协议
  182. 5.1.3.1 命令
  183. 5.1.3.2 共同体(community)
  184. 5.1.3.3 SNMP版本
  185. 5.2 SNMP的API
  186. 5.2.1 数据类型和常用结构
  187. 5.2.1.1 数据类型
  188. 5.2.1.2 AsnAny结构
  189. 5.2.1.3 RFC1157VarBind结构
  190. 5.2.1.4 RFC1157VarBindList结构
  191. 5.2.2 管理程序API
  192. 5.2.2.1 SnmpMgrOpen函数
  193. 5.2.2.2 SnmpMgrClose函数
  194. 5.2.2.3 SnmpMgrRequest函数
  195. 5.2.2.4 SnmpMgrStrToOid函数
  196. 5.2.2.5 SnmpMgrOidToStr函数
  197. 5.2.2.6 SnmpMgrTrapListen函数
  198. 5.2.2.7 SnmpMgrGetTrap函数
  199. 5.2.2.8 SnmpUtilOidCpy函数
  200. 5.2.2.9 SnmpUtilOidAppend函数
  201. 5.2.2.10 SnmpUtilOidNCmp函数
  202. 5.2.2.11 SnmpUtilOidCmp函数
  203. 5.2.2.12 SnmpUtilOidFree函数
  204. 5.2.2.13 SnmpUtilVarBindListCpy函数
  205. 5.2.2.14 SnmpUtilVarBindCpy函数
  206. 5.2.2.15 SnmpUtilVarBindListFree函数
  207. 5.2.2.16 SnmpUtilVarBindFree函数
  208. 5.2.2.17 SnmpUtilPrintAsnAny函数
  209. 5.3 SNMP安装和验证
  210. 5.4 编程实例:SNMP通用读设工具
  211. 5.4.1 程序主界面
  212. 5.4.2 程序代码
  213. 5.5 编程实例:基于SNMP的主机扫描器
  214. 5.5.1 程序主界面
  215. 5.5.2 程序代码
  216. 第6章 ICMP扫描器的设计
  217. 6.1 ICMP协议简介
  218. 6.2 ping与tracert命令简介
  219. 6.2.1 ping程序使用
  220. 6.2.1.1 Windows下ping程序的用法
  221. 6.2.1.2 通过TTL值判断对方操作系统的简易方法
  222. 6.2.2 tracert程序使用
  223. 6.3 ICMP通信实例分析
  224. 6.4 ICMP协议内容
  225. 6.4.1 目的不可达消息
  226. 6.4.2 超时消息
  227. 6.4.3 参数问题消息
  228. 6.4.4 源拥塞消息
  229. 6.4.5 重定向消息
  230. 6.4.6 回送请求或回送响应消息
  231. 6.4.7 时间戳请求和时间戳响应消息
  232. 6.4.8 信息请求或信息响应消息
  233. 6.5 ICMP扫描的安全性
  234. 6.6 编程实例:快速多IP的ICMP扫描器
  235. 6.6.1 程序主界面
  236. 6.6.2 程序原理
  237. 6.6.3 程序代码
  238. 第7章 基于协议的服务扫描器的设计
  239. 7.1 WWW服务扫描
  240. 7.1.1 WWW服务器架构
  241. 7.1.1.1 超文本格式和HTML
  242. 7.1.1.2 发布方式
  243. 7.1.1.3 HTTP协议
  244. 7.1.2 协议消息格式
  245. 7.1.2.1 起始行
  246. 7.1.2.2 头域
  247. 7.1.2.3 空行和实体
  248. 7.1.2.4 通信实例
  249. 7.1.3 WWW服务器的安装与配置
  250. 7.2 编程实例:WWW服务扫描器
  251. 7.2.1 扫描原理
  252. 7.2.2 程序主界面
  253. 7.2.3 程序代码
  254. 7.3 FTP服务扫描
  255. 7.3.1 FTP简介
  256. 7.3.2 FTP服务器的安装与配置
  257. 7.4 编程实例:FTP服务扫描器
  258. 7.4.1 程序主界面
  259. 7.4.2 程序代码
  260. 7.5 Telnet服务扫描
  261. 7.5.1 Telnet协议简介
  262. 7.5.1.1 协议的命令
  263. 7.5.1.2 客户端的命令
  264. 7.5.2 Telnet的安装与配置
  265. 7.6 编程实例:Telnet服务扫描器
  266. 7.6.1 程序主界面
  267. 7.6.2 程序代码
  268. 7.7 Email服务扫描
  269. 7.7.1 电子邮件协议简介
  270. 7.7.1.1 SMTP协议
  271. 7.7.1.2 POP协议
  272. 7.7.1.3 IMAP协议
  273. 7.7.2 电子邮件服务器的安装与配置
  274. 7.8 编程实例:Email服务扫描器
  275. 7.8.1 程序主界面
  276. 7.8.2 程序代码
  277. 第8章 基于应用的服务扫描器的设计
  278. 8.1 Win Inet编程接口
  279. 8.1.1 CInternetSession类
  280. 8.1.1.1 CInternetSession构造函数
  281. 8.1.1.2 AfxParseURL函数和AfxParseURLEx函数
  282. 8.1.1.3 OpenURL方法
  283. 8.1.1.4 GetConnection方法
  284. 8.1.1.5 GetHttpConnection方法
  285. 8.1.1.6 GetFtpConnection方法
  286. 8.1.1.7 QueryOption方法
  287. 8.1.1.8 SetOption方法
  288. 8.1.1.9 GetCookie方法
  289. 8.1.1.10 SetCookie方法
  290. 8.1.1.11 Close方法
  291. 8.1.2 CInternetConnection类
  292. 8.1.2.1 GetSession方法
  293. 8.1.2.2 GetServerName方法
  294. 8.1.2.3 GetContext方法
  295. 8.1.3 CHttpConnection类
  296. 8.1.4 CFtpConnection类
  297. 8.1.4.1 GetCurrentDirectory方法
  298. 8.1.4.2 SetCurrentDirectory方法
  299. 8.1.4.3 CreateDirectory方法
  300. 8.1.4.4 RemoveDirectory方法
  301. 8.1.4.5 Rename方法
  302. 8.1.4.6 Remove方法
  303. 8.1.4.7 GetFile方法
  304. 8.1.4.8 PutFile方法
  305. 8.1.4.9 OpenFile方法
  306. 8.1.4.10 Close方法
  307. 8.1.5 CInternetFile类
  308. 8.1.5.1 Read方法
  309. 8.1.5.2 Write方法
  310. 8.1.5.3 ReadString方法
  311. 8.1.5.4 WriteString方法
  312. 8.1.5.5 Seek方法
  313. 8.1.5.6 Flush方法
  314. 8.1.5.7 Close方法
  315. 8.1.6 CInternetException类
  316. 8.2 编程实例:基于应用的WWW服务扫描器
  317. 8.3 编程实例:基于应用的FTP服务扫描器
  318. 8.4 网络资源协议
  319. 8.4.1 NETRESOURCE结构
  320. 8.4.2 WNetOpenEnum函数
  321. 8.4.3 WNetEnumResource函数
  322. 8.4.4 WNetCloseEnum函数
  323. 8.5 编程实例:网络资源扫描器
  324. 8.5.1 程序主界面
  325. 8.5.2 程序代码
  326. 第9章 命名管道扫描器的设计
  327. 9.1 命名管道
  328. 9.2 命名管道API
  329. 9.2.1 命名管道的UNC格式
  330. 9.2.2 命名管道编程的API
  331. 9.2.2.1 CreateNamedPipe函数
  332. 9.2.2.2 WaitNamedPipe函数
  333. 9.2.2.3 ConnectNamedPipe函数
  334. 9.2.2.4 DisconnectNamedPipe函数
  335. 9.2.2.5 CreateFile函数
  336. 9.2.2.6 OpenFile函数
  337. 9.2.2.7 ReadFile函数
  338. 9.2.2.8 WriteFile函数
  339. 9.2.2.9 CloseHandle函数
  340. 9.3 命名管道编程示例
  341. 9.3.1 命名管道服务器端
  342. 9.3.2 命名管道客户端
  343. 9.4 邮槽
  344. 9.4.1 邮槽的UNC格式
  345. 9.4.2 邮槽编程的API
  346. 9.4.2.1 CreateMailSlot函数
  347. 9.4.2.2 GetMailSlotInfo函数
  348. 9.4.2.3 SetMailSlotInfo函数
  349. 9.5 邮槽编程示例
  350. 9.5.1 邮槽服务器端编程
  351. 9.5.2 邮槽客户端编程
  352. 9.6 编程实例:SQL Server命名管道扫描器的设计
  353. 9.6.1 Microsoft SQL Server简介
  354. 9.6.2 程序主界面
  355. 9.6.3 程序代码
  356. 第10章 服务发现扫描器的设计
  357. 10.1 服务发现简介
  358. 10.2 UPnP协议
  359. 10.2.1 寻址
  360. 10.2.2 发现
  361. 10.2.3 描述
  362. 10.2.4 控制
  363. 10.2.5 事件
  364. 10.2.6 展示
  365. 10.3 XML协议
  366. 10.4 SSDP协议分析实例
  367. 10.4.1 设备类型
  368. 10.4.2 协议消息格式
  369. 10.4.2.1 设备端:设备在线
  370. 10.4.2.2 设备端:设备退出
  371. 10.4.2.3 控制点端:发现请求
  372. 10.4.2.4 设备端:发现回复
  373. 10.5 编程实例:服务发现扫描器
  374. 10.5.1 程序主界面
  375. 10.5.2 程序代码
  376. 第11章 漏洞扫描器的设计
  377. 11.1 注入式漏洞扫描器
  378. 11.1.1 SQL注入式攻击原理
  379. 11.1.2 注入式攻击的局限性
  380. 11.1.3 单机模式或C/S模式的攻击
  381. 11.1.4 B/S模式下扫描程序设计
  382. 11.2 主机弱密码扫描
  383. 11.2.1 网络连接的API
  384. 11.2.1.1 WNetAddConnection函数
  385. 11.2.1.2 WNetCancelConnection函数
  386. 11.2.1.3 WNetAddConnection2函数
  387. 11.2.1.4 WNetCancelConnection2函数
  388. 11.2.1.5 WNetAddConnection3函数
  389. 11.2.2 密码穷举分析
  390. 11.2.3 程序主界面
  391. 11.2.4 程序代码
  392. 11.3 DOS/DDOS攻击
  393. 11.3.1 程序主界面
  394. 11.3.2 程序代码
  395. 11.4 明文密码嗅探
  396. 11.4.1 程序主界面
  397. 11.4.2 程序代码
  398. 11.5 端口对照
  399. 11.5.1 程序主界面
  400. 11.5.2 程序代码
  401. 第12章 扫描防范技术的研究
  402. 12.1 更换端口
  403. 12.2 预留陷阱技术
  404. 12.3 基于哨兵的端口扫描监测
  405. 12.3.1 程序主界面
  406. 12.3.2 程序代码
  407. 12.4 基于嗅探的端口扫描监测及DDOS拒绝服务监测
  408. 12.4.1 程序主界面
  409. 12.4.2 程序代码
  410. 12.5 实时监测本地所有TCP/UDP连接及端口
  411. 12.5.1 程序主界面
  412. 12.5.2 结构与函数API
  413. 12.5.2.1 GetTcpTable函数
  414. 12.5.2.2 GetUdpTable函数
  415. 12.5.2.3 GetTcpEntry函数
  416. 12.5.3 程序代码
  417. 12.6 如何关闭端口
  418. 12.6.1 FTP端口
  419. 12.6.2 WWW端口
  420. 12.6.3 Telnet端口
  421. 12.6.4 NetBIOS端口
  422. 附录A 本书容易混淆概念解析
  423. A.1 同名不同义概念
  424. A.2 同义不同名概念
  425. A.3 易混概念
  426. 附录B Windows Socket错误返回码
  427. 附录C Win Inet错误返回码
  428. 附录D HTTP错误返回码
  429. 参考文献
  430. 后记
  431. 光盘内容
载入中

大家都喜欢