1.mystery引入
   1)系统入侵步骤:系统发现->漏洞探测->漏洞利用->痕迹清除
   2)扫描器分类:主机与网络扫描器;端口服务扫描器;服务漏洞扫描器
   3)TCP端口扫描技术分为三种:全连接扫描;SYN扫描以及FIN扫描
   4)UDP端口扫描技术一般采用ICMP报文端口不可达的信息来识别UDP端口是否开放
   5)全连接扫描利用connect()函数的返回值来判断端口是否开放
   6)SYN构造并发送一个SYN数据包,就是TCP三次握手建立连接的第一步
      若返回一个SYN|ACK的数据包,则端口表示处于监听状态
      若返回一个RST数据包,则表示端口没有处于侦听状态
   7)FIN扫描和SYN扫描类似,构造相应的数据包
      原理:关闭的端口会用RST数据包来回应FIN数据包,而开放的端口则会忽略这种报文


2.程序构造
   1)功能:实现一个可用的端口扫描程序,在扫描方式上,实现全连接扫描、SYN半连接扫描、多线程全连接扫描等方式
   2)使用方式:采用交互式命令,在配置待扫描的目标主机IP地址、端口范围等信息后,启动扫描
   3)交互式模块是整个系统的调试核心,也是控制系统运转的一条主线
   4)交互式模块通过命令驱动,要调用3个扫描模块。扫描模块要求的心要参数信息为:IP地址、端口的下限及端口的上限;
     针对多线程扫描全连接扫描,还要增加线程数这一参数信息
   5)半连接扫描的基本原理是采用原始套接字技术,构造相应格式的SYN数据包,发送目标主机
       然后根据目标主机的响应信息,判断扫描端口的状态
因为是采用原始套接字,所以需要root权限


3.程序测试

  1)程序功能清单

  2)本机测试全连接扫描

  3)远程主机测试全连接扫描

  4)其它两种扫描方式类似,这里就不截图了,另外SYN扫描需要root权限


4.源代码

//scantool.c,见原博客附件http://infohacker.blog.51cto.com/6751239/1155170
 
 
 
 

【Socket】linux网络扫描程序开发的更多相关文章

  1. Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇)  作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/bee ...

  2. 【Linux开发】Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/beer ...

  3. Kali Linux 网络扫描秘籍 翻译完成!

    Kali Linux 网络扫描秘籍 翻译完成! 原书:Kali Linux Network Scanning Cookbook 译者:飞龙 在线阅读 PDF格式 EPUB格式 MOBI格式 代码仓库 ...

  4. 初识linux端c++程序开发

    关于linux端程序开发,我以前一直不知道是做些什么,只是感觉听高端的.最近接触了一些,有了一些初步的认识. 首先,linux是一个操作系统,跟windows一样:接通电源.按下电脑开机,电脑就会自动 ...

  5. 搭建Linux下Android程序开发环境

    从AndroidStudio中文社区下载SDK压缩包,http://dl.google.com/android/android-sdk_r24.2-linux.tgz. 解压到某个目录,比如我的~/p ...

  6. Linux/Windows 应用程序开发

    一.基础知识 虽然写的都是代码,但是代码运行在哪个级别什么位置,还是需要做好定位,这样才心中有数. 1.1 Linux [转载]讲述了中断.系统调用.Linux APIs和Shell的基本知识. 1 ...

  7. C# 异步通信 网络聊天程序开发 局域网聊天室开发

    Prepare 本文将使用一个NuGet公开的组件技术来实现一个局域网聊天程序,利用组件提供的高性能异步网络机制实现,免去了手动编写底层的困扰,易于二次开发,扩展自己的功能. 在Visual Stud ...

  8. Kali Linux 网络扫描秘籍

    第三章 端口扫描(二) 作者:Justin Hutchens 译者:飞龙 协议:CC BY-NC-SA 4.0 3.6 Scapy 隐秘扫描 执行 TCP 端口扫描的一种方式就是执行一部分.目标端口上 ...

  9. Linux网络编程:基于TCP的程序开发回顾篇《转》

    面向连接的TCP程序设计 基于TCP的程序开发分为服务器端和客户端两部分,常见的核心步骤和流程: 其实按照上面这个流程调用系统API确实可以完全实现应用层程序的开发,一点问题没有.可随着时间的推移,你 ...

随机推荐

  1. linux(ubuntu) 查看系统设备信息 命令

    时间:2012-08-02 00:12   ubuntu查看版本命令 方法一: 在终端中执行下列指令: cat /etc/issue 方法二: 使用 lsb_release 命令也可以查看 Ubunt ...

  2. 从html加载json文件想起

    原文来自:https://www.cnblogs.com/dibaosong/p/4572274.html#top 文中给出了data.json文件内容 还给出了html文件内容 ok. 1.新建工程 ...

  3. C++ map,set内部数据结构

    1)Set是一种关联容器,它用于存储数据,并且能从一个数据集合中取出数据.它的每个元素的值必须唯一,而且系统会根据该值来自动将数据排序.每个元素的值不能直接被改变.[重点]内部结构采用红黑树的平衡二叉 ...

  4. SpringBoot配置属性之MVC

    SpringBoot配置属性系列 SpringBoot配置属性之MVC SpringBoot配置属性之Server SpringBoot配置属性之DataSource SpringBoot配置属性之N ...

  5. 【Java】Swing中JTextPane中如何绘制行号

    Oracle在JTextPane类中并没有直接提供显示行号的方法,所以这个功能应该由程序员自己来完成,笔者发现网上很多的显示行号的代码都存在一个问题,就是不准确,特别是在行数变多了以后. 笔者先贴出代 ...

  6. 【struts2】名为redirect的ResultType

    1)基本使用 名称为“redirect”的ResultType,在struts-default.xml里的配置如下: <result-type name="redirect" ...

  7. Python读文本文件中文乱问题

    file_object = open('thefile.txt')try: all_the_text = file_object.read().decode("gb2312")fi ...

  8. Oracle 12C -- Unified Auditing Policy

    1.审计策略是一组审计选项,用来审计数据库用户 2.创建审计策略需要被授予audit_admin角色(create audit policy ...) 3.可以在CDB.PDB级别创建创建审计策略 4 ...

  9. 使用Openssl的AES加密算法

    原文链接: http://blog.csdn.net/yasi_xi/article/details/13997337 Openssl是很常见的C接口的库,个人觉得易用.以下是AES加密的使用备忘.如 ...

  10. stm8 io口重映射

    STM8S003F3端口可以设置重映射,如pin16的PC6管脚,默认复用功能是SPI_MOSI功能,可以重映射为TIM1_CH1,也就是timer1的1通道.映射方式并不像STM32那样有个AFR寄 ...