<!--
google_ad_client = "pub-2416224910262877";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_channel = "";
google_color_border = "E1771E";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_text = "000000";
google_color_url = "008000";
// -->
这两天在linux服务器上利用原始套接字搞了一个数据包监听转发工具,其中的关键代码摘抄如下:
...
m_sockid=::socket(PF_PACKET, SOCK_RAW,0);
if(m_sockid==INVALID_SOCKET)return false;
struct sockaddr_ll sll;
struct ifreq ifr;
sll.sll_family = AF_PACKET;
sll.sll_protocol = htons(ETH_P_IP);
if(dip!=INADDR_ANY)
{
for(int i=0;i<100;i++)
{
sprintf(ifr.ifr_name,"eth%d",i);
if(ioctl(m_sockid,SIOCGIFADDR,&ifr)<0)
{
::close(m_sockid);
return false;
}
if(((sockaddr_in*)&ifr.ifr_addr)->sin_addr.s_addr==dip)//dip是需要绑定的网卡地址
{
ioctl(m_sockid,SIOCGIFINDEX,&ifr);
sll.sll_ifindex = ifr.ifr_ifindex;
break;
}
}
}
else
{
sll.sll_ifindex = 0; //接收全部网卡数据包
}
if(::bind(m_sockid, (sockaddr *)&sll, sizeof(sockaddr_ll))!=0)//绑定网卡
{
::close(m_sockid);
return false;
}
else
{
return true;
}
...
如上,便建立了一个可以收听特定网卡全部ip数据包的原始套接字,其他略。
其他文章:
.NET 与安全性—— 数据加密算法
修改权限防止病毒或木马等破坏您的系统
常用木马病毒的通用解法
解禁注册表之三大散手
XP登陆口令破解
Hooks(钩子)监听消息的方法
asp清除网页历史记录2
<!--
google_ad_client = "pub-2416224910262877";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_channel = "";
google_color_border = "E1771E";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_text = "000000";
google_color_url = "008000";
// -->
分享到:
相关推荐
linux_sock_raw原始套接字编程
linux_sock_raw原始套接字编程
用SOCK_RAW编写的ping程序 C++语言 只有简单的ping功能
Raw_sock 实现监听原始套接字 主要是TCP通信间的套接字
linuxsock_raw原始套接字编程.pdf
Linux下SOCK_RAW原理和应用 Linux下SOCK_RAW原理和应用
sock_raw参考资料学习参考和linux char字符设备建立方法
Linux下SOCK_RAW原理和应用,自己尝试编的,还请各位高手多多指点。
Linux下SOCK_RAW原理和应用示例,比较有趣!建议大家看看玩
RawSocket基于MAC地址接收以太网数据帧例子。C++实现。与RawSend.zip匹配
RawSocket基于MAC地址发送以太网数据帧例子。C++实现。
从用户的角度来看,SOCK_STREAM、SOCK_DGRAM这两类套接字似乎的确涵盖了TCP/IP应用的全部,因为基于TCP/IP的应用,从协议栈的层次上讲,在传输层的确只可能建立于TCP或UDP协议之上(图1),而SOCK_STREAM、SOCK_...
原始套接字(SOCK_RAW);基于 TCP 的 socket 编程是采用的流式套接字。在这个程序中,将两个工 程添加到一个工作区。要链接一个 ws2_32.lib 的库文件(#pragma comment(lib,"ws2_32"))。
sock_raw_udp
raw_sock源始套接字和raw_sock编程说明
sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);基于TCP的socket编程是采用的流式套接字
if(-1 == (socket_msg->sd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP)))){ //创建套接字 SOCK_RAW为原始套接字 return -2; } socket_msg->addr.sll_ifindex = inject_pkt_interface_index(socket_msg->...
这里为客户端的代码可以编过,服务端的接口与客户端类似,可参考对应的文档完善接口,参考《原始套接字之简易通信实例》
私有协议用SOCK_RAW实现自定义协议栈使用sock_ Raw实现私有协议栈注意只适用于Linux系统用管理员权限执行如何使用代码对于没有socket编程经验的好兄弟建议先看一下standardUDP /文件夹下如何使用UDP协议实现客户端和...