要求的专业知识: 【扩展信息:使用xmanager访问linux图形界】
一: 精通osi参考模型,精通网络五层:物理层,数据链路层,网络层,传输层,应用层. 精通每一层的协议,数据报格式.精通网络拓扑结构,第一层,第二层,第三层的网 络互联,数据的转发与路由等. 二: 精通c语言程序设计,unix/linux程序设计,网络程序设计.熟悉unix/linux系 统操作,熟悉著名服务的基本配置,特性及使用的端口号.熟悉经典网络命令的使用, 如:netstat,ping,traceroute,netcat,arp等. 三: 精通标准sql语言,熟悉流行的数据库使用,如:oracle,mysql等.掌握数据库与 web语言的结合使用. 扫描通常是查看目标主机是否开机,对外开放了哪些服务及端口,服务的版本号,使用的是什么操作系 统及版本号. 更进一步的扫描通常是获得目标主机的系统漏洞,各种开放的服务漏洞,而这种漏洞扫描通常都是用程 序从一个已知的漏洞数据库里依次尝试.这里就跳过而不给出示例代码了.用于这类扫描的常用工具有: whisker(www.wiretrip.net),nikto(www.cirt.net)等,有兴趣的读者可以自行下载其源码阅 读.不过建议要有一点perl语言的基础. 现在来讲通常的端口扫描.使用传输层协议(tcp and udp)的应用,都会开一个端口号来listen,如 web通常开放80,ftp用21,telnet用23(现在几近不用了),ssh用22等.最简单的思想就是尝试去连 接目标主机的端口,如果可以建立连接,可推测某端口开放,如果是著名端口,则相应的服务是打开的. 我所要讲的是如何写程序去试图连接目标主机的目标端口.主要的方式有tcp与udp. 1:例如我们给目标主机上的某个端口发送一个udp数据报,如果目标端口没有开放,则目标主机会回应 一个端口不可达icmp报文,当我们的程序收到了这个icmp报文,则可认为此端口没有开放.这样依次 连接每个端口,则可判断目标主机开放了哪些端口了. 2:单纯的tcp方式扫描大概是最简单的了.建一个socket,然后调用connect去连接目标主机上的端口, 成功返回,则可判断端口开放. ... 下一页