linux如何分析获取到的网卡数据包

mznxbc123456 2017-04-05 02:16:25
我socket先绑定本地网卡,然后recvfrom(fd, g_acRecvBuf, g_iRecvBufSize, 0, NULL, &stFromLen);
然后这个g_acRecvBuf我定义
struct ether_header *pstEthHead = NULL;
struct ip *pstIpHead = NULL;
能Ethnet帧头解析和ip数据包解析
struct ether_header *pstEthHead = NULL;
struct ip *pstIpHead = NULL;
//以太网数据,ip数据,TCP首部,应用数据,以太网尾部
//Ethnet帧头解析
pstEthHead = (struct ether_header*)pcFrameData;
iRet = parseEthHead(pstEthHead);
if (0 > iRet){
return iRet;
}
//IP数据包类型
pstIpHead = (struct ip *)(pstEthHead + 1);
iRet = parseIpHead(pstIpHead);
这样只是能获取到eth协议,接收发送的mac地址以及ip协议和接收发送的ip,我无法获取到数据,%S都是乱码。
我想获取http的url信息,我怎么打印这个g_acRecvBuf里的数据信息呢
...全文
711 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mznxbc123456 2017-04-05
  • 打赏
  • 举报
回复
我已经知道怎么获取信息了,ip下面还有一层tcp,跳过tcp就能进入数据区,这样就能打印出数据啦
赵4老师 2017-04-05
  • 打赏
  • 举报
回复
仅供参考:
void HexDump(char *buf,int len,int addr) {
    int i,j,k;
    char binstr[80];

    for (i=0;i<len;i++) {
        if (0==(i%16)) {
            sprintf(binstr,"%08x -",i+addr);
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        } else if (15==(i%16)) {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
            sprintf(binstr,"%s  ",binstr);
            for (j=i-15;j<=i;j++) {
                sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
            }
            printf("%s\n",binstr);
        } else {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        }
    }
    if (0!=(i%16)) {
        k=16-(i%16);
        for (j=0;j<k;j++) {
            sprintf(binstr,"%s   ",binstr);
        }
        sprintf(binstr,"%s  ",binstr);
        k=16-k;
        for (j=i-k;j<i;j++) {
            sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
        }
        printf("%s\n",binstr);
    }
}
mznxbc123456 2017-04-05
  • 打赏
  • 举报
回复
1111111111111SIZE=54,MESSAGE= SMAC=[00:0c:29:6d:a8:89] DMAC=[00:50:56:f9:e6:de] IP-Type:6(tcp) 我%s打印出g_acRecvBuf基本都是空,但是有大小是recvfrom的返回值是54

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧