文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发数据结构原始套接字透析之Raw Socket基础
精品推荐
特别推荐
·网游外挂编写完全攻略
·开发WDM型的USB设备驱动程序
·数据库设计范式深入浅出
·理解软件保护技术之序列号方式
·大型网站必鉴:分销渠道的结构
·你的代码真的很健壮吗
·利用HOOK拦截封包原理
·四种网络游戏外挂的设计方法
·程序语言效率比较
·五子棋算法
·正则表达式从入门到精通
·SQL Server不能启动的常见故障
·Windows应用程序设计的基本术语
·软件本地化与汉化
·Windows中断编程
·windows nt 4.0中文版的开机过程
热点TOP10
·兵之利器 软件开发辅助工具纵览
·网游外挂编写完全攻略
·开发WDM型的USB设备驱动程序
·DCOM揭秘之六
·VS2008 第一次安装心得及使用
·游戏外挂设计技术探讨
·饺子馆的物流故事之二——供应链视角下的缺货及品类管理
·《数据结构》试题下载2004
·代码静态分析工具PC-LINT安装配置
·使用BHO定制你的IE浏览器
·原始套接字透析之Raw Socket基础
·基于CS模式的Winsock网络通讯程序
·程序语言效率比较
·《Windows程序设计》读书笔记之六
·四种网络游戏外挂的设计方法
·用CVSNT与WINCVS实现CVS的架设
·利用HOOK拦截封包原理
·简单对象访问协议(SOAP)初级指南
·带你全面了解数据库应用系统的开发步骤
·UML业务建模实例分析

原始套接字透析之Raw Socket基础

日期:2007年7月27日 作者: 查看:[大字体 中字体 小字体]



  在利用Raw Socket发送报文时,报文的IP头、TCP头、UDP头等需要程序员亲自赋值,从而达到极大的灵活性。下面的程序利用Raw Socket发送TCP报文,并完全手工建立报头:

int sendTcp(unsigned short desPort, unsigned long desIP)
{
 WSADATA WSAData;
 SOCKET sock;
 SOCKADDR_IN addr_in;
 IPHEADER ipHeader;
 TCPHEADER tcpHeader;
 PSDHEADER psdHeader;

 char szSendBuf[MAX_LEN] = { 0 };
 BOOL flag;
 int rect, nTimeOver;

 if (WSAStartup(MAKEWORD(2, 2), &WSAData) != 0)
 {
  printf("WSAStartup Error!\n");
  return false;
 }

 if ((sock = WSASocket(AF_INET, SOCK_RAW, IPPROTO_RAW, NULL, 0,
WSA_FLAG_OVERLAPPED)) == INVALID_SOCKET)
 {
  printf("Socket Setup Error!\n");
  return false;
 }
 flag = true;
 if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char*) &flag, sizeof(flag)) ==SOCKET_ERROR)
 {
  printf("setsockopt IP_HDRINCL error!\n");
  return false;
 }

 nTimeOver = 1000;
 if (setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char*) &nTimeOver, sizeof
(nTimeOver)) == SOCKET_ERROR)
 {
  printf("setsockopt SO_SNDTIMEO error!\n");
  return false;
 }
 addr_in.sin_family = AF_INET;
 addr_in.sin_port = htons(desPort);
 addr_in.sin_addr.S_un.S_addr = inet_addr(desIP);

 //填充IP报头
 ipHeader.h_verlen = (4 << 4 sizeof(ipHeader) / sizeof(unsigned long));
 // ipHeader.tos=0;
 ipHeader.total_len = htons(sizeof(ipHeader) + sizeof(tcpHeader));
 ipHeader.ident = 1;
 ipHeader.frag_and_flags = 0;
 ipHeader.ttl = 128;
 ipHeader.proto = IPPROTO_TCP;
 ipHeader.checksum = 0;
 ipHeader.sourceIP = inet_addr("localhost");
 ipHeader.destIP = desIP;

 //填充TCP报头
 tcpHeader.th_dport = htons(desPort);
 tcpHeader.th_sport = htons(SOURCE_PORT); //源端口号
 tcpHeader.th_seq = htonl(0x12345678);
 tcpHeader.th_ack = 0;
 tcpHeader.th_lenres = (sizeof(tcpHeader) / 4 << 4 0);
 tcpHeader.th_flag = 2; //标志位探测,2是SYN
 tcpHeader.th_win = htons(512);
 tcpHeader.th_urp = 0;
 tcpHeader.th_sum = 0;

 psdHeader.saddr = ipHeader.sourceIP;
 psdHeader.daddr = ipHeader.destIP;
 psdHeader.mbz = 0;
 psdHeader.ptcl = IPPROTO_TCP;
 psdHeader.tcpl = htons(sizeof(tcpHeader));

 //计算校验和
 memcpy(szSendBuf, &psdHeader, sizeof(psdHeader));
 memcpy(szSendBuf + sizeof(psdHeader), &tcpHeader, sizeof(tcpHeader));
 tcpHeader.th_sum = checksum((unsigned short*)szSendBuf, sizeof(psdHeader) + sizeof
(tcpHeader));
 
 memcpy(szSendBuf, &ipHeader, sizeof(ipHeader));

上一页 [1] [2] [3] [4] 下一页 




上一篇:黑客之旅――原始套接字透析之前言

下一篇:原始套接字透析之ICMP拒绝服务攻击

原始套接字透析之Raw Socket基础 相关文章:
·破解基础知识汇编
·socket编程原理
·基础知识 初级黑客安全技术命令详解
·网络组建大全(包括企业网、校园网、网吧和基础知识)
·Windows黑客编程基础
·用Photoshop画漫画教程之基础入门
·C#基础概念二十五问
·Flash AS基础精典教程
·网络游戏封包基础
·CAD三维基础实例教程
原始套接字透析之Raw Socket基础 相关软件:
·SQL Server 2000 基础系列课程视频
·计算机基础知识教程
·鸟哥的linux私房菜:基础学习篇
·会计学基础
·计算机应用基础(视频)教程(6-10)
·Flash MX基础教程 v2.0.0
·计算机基础知识
·东南大学SQL数据库基础视频教学全42讲 CSF 详见查看
·windows 95基础入门
·全国导游基础知识汇总

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot