自己写的一个抓包程序
通过原始套接字抓包在分析tcp包的时候发现syn总是为0,请大家帮忙看看:-)下面是tcp头定义,有问题么?
struct TCPHeader
{
USHORT SourPort;
USHORT DestPort;
ULONG SeqNo;
ULONG AckNo;
USHORT
tcp_res1:4,
tcp_hlen:4,
tcp_fin:1,
tcp_syn:1,
tcp_rst:1,
tcp_psh:1,
tcp_ack:1,
tcp_urg:1,
tcp_res2:2;
USHORT WndSize;
USHORT UrgPtr;
USHORT ChkSum;
};pTcpHeader = (TCPHeader *)(recvbuf+IPHeaderLen);
syn = pTcpHeader->tcp_syn;
ack = pTcpHeader->tcp_ack;
fin = pTcpHeader->tcp_fin;
rst = pTcpHeader->tcp_rst;
psh = pTcpHeader->tcp_psh;
urg = pTcpHeader->tcp_urg;if((Param.syn == 1) && (Param.ack == 0))
{
//有关连接的代码
}采用单步调试,发现syn值总是为0,百思不得其解
通过原始套接字抓包在分析tcp包的时候发现syn总是为0,请大家帮忙看看:-)下面是tcp头定义,有问题么?
struct TCPHeader
{
USHORT SourPort;
USHORT DestPort;
ULONG SeqNo;
ULONG AckNo;
USHORT
tcp_res1:4,
tcp_hlen:4,
tcp_fin:1,
tcp_syn:1,
tcp_rst:1,
tcp_psh:1,
tcp_ack:1,
tcp_urg:1,
tcp_res2:2;
USHORT WndSize;
USHORT UrgPtr;
USHORT ChkSum;
};pTcpHeader = (TCPHeader *)(recvbuf+IPHeaderLen);
syn = pTcpHeader->tcp_syn;
ack = pTcpHeader->tcp_ack;
fin = pTcpHeader->tcp_fin;
rst = pTcpHeader->tcp_rst;
psh = pTcpHeader->tcp_psh;
urg = pTcpHeader->tcp_urg;if((Param.syn == 1) && (Param.ack == 0))
{
//有关连接的代码
}采用单步调试,发现syn值总是为0,百思不得其解
解决方案 »
- 在VC中,GDI+的几个函数
- 关于CListCtrl中的CheckBox的问题
- 模板资源编辑问题
- 数据库在英文版操作系统打开出错
- 急请问如何使用进展条?如何在需要的时候弹出一窗口,上面用一进展条显示进度,就像Windows中“复制”、“粘贴”文件后弹出的那个窗口上
- 不知道用那种语言好:(
- 我在win2000里写的透明位图的显示载win98里要透明的部分显示的乱七八糟的,怎么回事?
- 请bluebohe(薄荷):来住接分
- WIN7 下加载自己的DLL
- CStdioFile的问题
- 在使用WSASelectEvent模型时, 怎样会收到FD_WRITE消息?
- 关于OnAccept和OnReceive的问题
难道是因为我的防火墙拦截了这个包么?
不可能吧, 如果防火墙拦截了所有syn的包,
你还怎么建立连接?
TCP标志:S
该操作被拒绝并且确实收不到syn=1,ack=0的包,不过别的包都能收到关掉防火墙,则可以收到syn=1,ack=0的包哪位大虾能够解释一下这是什么原因?
但是我该怎么改进我的程序,让防火墙不会误认为我是扫描的呢还有,三次握手的时候总是抓到4个包: source IP dest IP syn ack sno ano
218.194.48.155 202.112.14.184 0 1 1730997270 175079361
202.112.14.184 218.194.48.155 1 1 158302145 1730997270
218.194.48.155 202.112.14.184 0 1 1730997270 175079361
218.194.48.155 202.112.14.184 1 0 1714220054 0连接任意一个网站的时候三次握手发的包都有4个,请大虾们多多指教