首页
社区
课程
招聘
[求助]请教一个网卡监听的问题
发表于: 2010-7-5 21:40 6637

[求助]请教一个网卡监听的问题

2010-7-5 21:40
6637
最近在学习收发包驱动,看到一个例程实现收包监听,但却没给出本机网卡发出去报文的监听例子,知道的大侠可否给个思路?功能类似于wireshake
收包监听程序如下:
void main()
{
        // 创建原始套节字
        SOCKET sRaw = socket(AF_INET, SOCK_RAW, IPPROTO_IP);

        // 获取本地IP地址
        char szHostName[56];
        SOCKADDR_IN addr_in;
        struct  hostent *pHost;
        gethostname(szHostName, 56);
        if((pHost = gethostbyname((char*)szHostName)) == NULL)       
                return ;

        // 在调用ioctl之前,套节字必须绑定
        addr_in.sin_family  = AF_INET;
        addr_in.sin_port    = htons(0);
        memcpy(&addr_in.sin_addr.S_un.S_addr, pHost->h_addr_list[0], pHost->h_length);

        printf(" Binding to interface : %s \n", ::inet_ntoa(addr_in.sin_addr));
        if(bind(sRaw, (PSOCKADDR)&addr_in, sizeof(addr_in)) == SOCKET_ERROR)
                return;

        // 设置SIO_RCVALL控制代码,以便接收所有的IP包       
        DWORD dwValue = 1;
        if(ioctlsocket(sRaw, SIO_RCVALL, &dwValue) != 0)       
                return ;
       
        // 开始接收封包
        char buff[1024];
        int nRet;
        while(TRUE)
        {
                nRet = recv(sRaw, buff, 1024, 0);
                if(nRet > 0)
                {
                        DecodeIPPacket(buff);
                }
        }
        closesocket(sRaw);
}

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
在线坐等各位大侠的赐教,谢谢!
2010-7-5 21:41
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看来这个帖子不该发在这啊,这边有的都是汇编的高手,缺乏网络技术的达人啊。。。。不等了,一夜没睡都没等来一个懂的人!
2010-7-6 11:44
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
无语,看雪上真是啥人都有,不过也懒得打击你了。

你的问题仔细看了几遍没看懂到底想问啥,你的代码里面哪里涉及到网络驱动了?
应该是想做抓包的程序吧?本机网卡出去的包?
抓包本来就能做到进出的包全部抓获,方法多的很

ring3有原始socket(你的代码就是),winpcap、HOOK==
ring0有过滤驱动、各种HOOK、协议驱动==
2010-7-6 12:03
0
雪    币: 81
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
话说我还真没看出来是驱动。。。
2010-7-8 10:38
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
貌似是高手嘛,说清楚点好吗?给断伪代码可否?
不需要网络驱动,写的有问题。就是实现网卡抓包,用过wireshark没?就那个简化
2010-7-8 12:04
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我是菜鸟,只不过看不惯你狂妄的口气,做人谦虚点。

WireShark用的应该是WinPcap,这个在ring3下应该算不错的解决方案了,相关代码自己去网上找吧。以后做人谦虚点。
2010-7-8 16:00
0
雪    币: 1787
活跃值: (340)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
去下载一个WinPcap 的开发包,里面就有基本抓包的例子~
2010-7-8 18:47
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
呵呵,我没看出我哪不谦虚。

你的口气很谦虚嘛?哥做人需要你教吗?

一副好为人师的架势,典型的肚里没货还看不惯这看不过那的小愤青
2010-7-8 21:25
0
雪    币: 66
活跃值: (16)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
10
楼主还是谦虚点吧,虽然我不知道你是哪来的大牛,但是毕竟你是在问问题,没必要还摆架子。

另外,没看出哪里跟驱动有关,楼主先回去补补基础再说别人怎么怎么的吧。
2010-7-9 23:37
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
11
去看 winpcap 吧.
BTW: 楼主可真没求学的态度.
2010-7-10 10:37
0
雪    币: 324
活跃值: (113)
能力值: ( LV15,RANK:280 )
在线值:
发帖
回帖
粉丝
12
复杂的驱动就不要去考虑了。
winpcap就能解决问题。另外有个叫winsniffer的东西有源码,是基于winpcap的,代码不多很好理解。
2010-7-12 00:45
0
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我是来围观的
2010-7-12 17:55
0
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
再回来,刚出去看到MJ的R3 HOOK NtDeviceIoControlFile的例子就在下面。
我继续围观。
2010-7-12 17:59
0
游客
登录 | 注册 方可回帖
返回
//