c语言fin,关于FIN扫描编程解决思路

本文探讨了如何使用C语言进行FIN扫描编程。通过创建原始套接字并构造TCP头部,实现对目标IP地址特定端口范围的FIN扫描。代码示例展示了如何设置和发送包含FIN标志的数据包。
摘要由CSDN通过智能技术生成

关于FIN扫描编程

有没有哪位大神懂得C语言的FIN扫描编程?求思路!

------解决方案--------------------

#include "stdio.h"

#include "Winsock2.h"

#include 

#include "mstcpip.h"

#pragma comment(lib,"WS2_32.lib")

int Stop = 0;

int PortStart = 80;

int PortEnd = 81;

char *DestIpAddr = "192.168.1.3";

typedef struct IpHeader

{

unsigned char Version_HLen;

unsigned char TOS;

unsigned short Length;

unsigned short Ident;

unsigned short Flags_Offset;

unsigned char TTL;

unsigned char Protocol;

unsigned short Checksum;

unsigned int SourceAddr;

unsigned int DestinationAddr;

} Ip_Header;

#define URG 0x20

#define ACK 0x10

#define PSH 0x08

#define RST 0x04

#define SYN 0x02

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FIN扫描 时,可以利用 抓包 程序抓取发送的数据包和 接收的数据包 ,FIN扫描的结果 并不在列表控件中显示!! TCP connect() 扫描: 这是最基本的TCP扫描。操作系统提供的connect()系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度。如果对每个目标端口以线性的方式,使用单独的connect()调用,那么将会花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫描。使用非阻塞I/O允许你设置一个低的时间用尽周期,同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且被过滤掉。目标计算机的logs文件会显示一连串的连接和连接是出错的服务消息,并且能很快的使它关闭。 TCP SYN扫描: 这种技术通常认为是“半开放”扫描,这是因为扫描程序不必要打开一个完全的TCP连接。扫描程序发送的是一个SYN数据包,好象准备打开一个实际的连接并等待反应一样(参考TCP的三次握手建立一个TCP连接的过程)。一个SYN|ACK的返回信息表示端口处于侦听状态。一个RST返回,表示端口没有处于侦听态。如果收到一个SYN|ACK,则扫描程序必须再发送一个RST信号,来关闭这个连接过程。这种扫描技术的优点在于一般不会在目标计算机上留下记录。但这种方法的一个缺点是,必须要有root权限才能建立自己的SYN数据包。 TCP FIN 扫描: 有的时候有可能SYN扫描都不够秘密。一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN数据包可能会没有任何麻烦的通过。这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包。另一方面,打开的端口会忽略对FIN数据包的回复。这种方法和系统的实现有一定的关系。有的系统不管端口是否打开,都回复RST,这样,这种扫描方法就不适用了。并且这种方法在区分Unix和NT时,是十分有用的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值