ChinaUnix.net
首页 | 论坛 | 精华 | 博客 | 人才 | 沙龙 | 搜索
您好,xxbview,欢迎进入ChinaUnix论坛
我的博客 | 收藏夹 | 个人专集
个人资料 | 您没有新的站内信件 | 注销登录
高级搜索

金笛邮件系统-因Linux而精彩
JSP PHP虚拟主机,自由绑定域名,多个上存目录

给出一个 netdump 程序, 抓包用的. 如果改进了,也希望贴出
前往页面 1, 2, 3   下一页
 
       ChinaUnix.net首页 -> 论坛首页 -> C/C++ 添加到我的收藏夹
阅读上一个主题 :: 阅读下一个主题  
作者 留言
思一克     
版主 - 天使


注册时间: 2003-08-25
最后登录: 2005-01-10
帖子总数: 1165
精华帖子: 1
原创精华: 0
来自: 东城

在线状态: ...保密...

发表于: 2005-01-07 15:01    发表主题: 给出一个 netdump 程序, 抓包用的. 如果改进了,也希望贴出

最基本的,在linux i386上

代码:

//netdump.c

#include <stdio.h>   
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h> 
#include <netinet/ip.h>
#include <string.h>
#include <netdb.h>
#include <netinet/tcp.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <fcntl.h>

void die(char *why, int n)
{
  perror(why);
  exit(n);
}

int do_promisc(char *nif, int sock )
{
struct ifreq ifr;
 
  strncpy(ifr.ifr_name, nif,strlen(nif)+1);
  if((ioctl(sock, SIOCGIFFLAGS, &ifr) == -1)) {       
    die("ioctl", 2);
  }
  ifr.ifr_flags |= IFF_PROMISC;
  if(ioctl(sock, SIOCSIFFLAGS, &ifr) == -1 ) {
    die("ioctl", 3);
  }
}

char buf[2*32767];

main()
{
struct sockaddr_in addr;
struct iphdr *ip;
struct tcphdr *tcp;
int sock, r, len;
char *data;
char ss[32], dd[32];

if((sock = socket(AF_INET,SOCK_RAW,IPPROTO_TCP)) == -1) die("socket", 1);
  do_promisc("eth0", sock);
 
  for(;;) {
    len = sizeof(addr);
    r = recvfrom(sock,(char *)buf,sizeof(buf),0,(struct sockaddr *)&addr,&len);
    buf[r] = 0;
    ip = (struct iphdr *)buf;
    tcp = (struct tcphdr *)(buf + sizeof(struct iphdr));

printf("PktSize: %d IPLEN %d PROT %d  %s:%d-->%s:%d %d /n",
   r, ip->tot_len,
   ip->protocol,
   strcpy(ss, inet_ntoa(*(struct in_addr*)&(ip->saddr))),
   ntohs(tcp->source),
   strcpy(dd, inet_ntoa(*(struct in_addr*)&(ip->daddr))),
   ntohs(tcp->dest),
   tcp->doff
   );
    data = (char*)tcp + 4*tcp->doff;
    printf("data = %s/n", data);
  }

}

_________________
提供QMAIL系统技术支持。构建更完美的MAIL系统。Email: cindy_f_ye@yahoo.com.cn

返回页首
北京网通IDC主机托管,CU会员优惠中!
win_hate     
版主 - 大天使



注册时间: 2003-05-14
最后登录: 2005-01-10
帖子总数: 1813
精华帖子: 1
原创精华: 1
来自: 广东广州
BLOG主页:进入
在线状态: ...保密...

发表于: 2005-01-07 15:01    发表主题:

_________________
闭关中......偶尔冒泡...各位多担待。

In computing, turning the obvious into the useful is living definition of the word "frustration".

http://my.chinaunix.net/win_hate/ || http://www.gzisi.com/

返回页首
北京网通IDC主机托管,CU会员优惠中!
思一克     
版主 - 天使


注册时间: 2003-08-25
最后登录: 2005-01-10
帖子总数: 1165
精华帖子: 1
原创精华: 0
来自: 东城

在线状态: ...保密...

发表于: 2005-01-07 15:01    发表主题:

那符号, 是飘扬,还是批评?

_________________
提供QMAIL系统技术支持。构建更完美的MAIL系统。Email: cindy_f_ye@yahoo.com.cn

返回页首
北京网通IDC主机托管,CU会员优惠中!
win_hate     
版主 - 大天使



注册时间: 2003-05-14
最后登录: 2005-01-10
帖子总数: 1813
精华帖子: 1
原创精华: 1
来自: 广东广州
BLOG主页:进入
在线状态: ...保密...

发表于: 2005-01-07 15:01    发表主题:

是这个:

我只会用 libpcap 抓,

_________________
闭关中......偶尔冒泡...各位多担待。

In computing, turning the obvious into the useful is living definition of the word "frustration".

http://my.chinaunix.net/win_hate/ || http://www.gzisi.com/

最后进行编辑的是 win_hate on 2005-01-07 15:01, 总计第 1 次编辑

返回页首
北京网通IDC主机托管,CU会员优惠中!
superdoctor     
风云使者



注册时间: 2003-01-16
最后登录: 2005-01-10
帖子总数: 474
精华帖子: 0
原创精华: 0
来自: beijing city
BLOG主页:进入
在线状态: ...离线...

发表于: 2005-01-07 15:01    发表主题:

不仅仅是表扬!
已经精华了,此时无声胜有声

_________________
please click this link for detail:
www.supermail.cn

Don't touch me!

返回页首
北京网通IDC主机托管,CU会员优惠中!
思一克     
版主 - 天使


注册时间: 2003-08-25
最后登录: 2005-01-10
帖子总数: 1165
精华帖子: 1
原创精华: 0
来自: 东城

在线状态: ...保密...

发表于: 2005-01-07 15:01    发表主题:

精华什么。我就胡乱搞一个,因为看这几天总有问的帖子。
没有放回贴是因为怕一会就消失了

_________________
提供QMAIL系统技术支持。构建更完美的MAIL系统。Email: cindy_f_ye@yahoo.com.cn

返回页首
北京网通IDC主机托管,CU会员优惠中!
黄山松     
圣骑士


注册时间: 2004-09-16
最后登录: 2005-01-10
帖子总数: 92
精华帖子: 0
原创精华: 0

在线状态: ...离线...

发表于: 2005-01-07 20:01    发表主题:

还不错,呵呵
不过你这个功能稍微太弱了点
我帮你改了改,你原来的只能收到IP层的数据,而且只能有针对性的收,现在可以收链路层也就是以太网包
而且是大小各个类型统吃,呵呵

代码:
#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h> 
#include <netinet/ip.h>
#include <string.h>
#include <netdb.h>
#include <netinet/tcp.h>
#include <netinet/udp.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/if_ether.h>

void die(char *why, int n)
{
  perror(why);
  exit(n);
}

int do_promisc(char *nif, int sock )
{
   struct ifreq ifr;
   
   strncpy(ifr.ifr_name, nif,strlen(nif)+1);
     if((ioctl(sock, SIOCGIFFLAGS, &ifr) == -1))
     {       
       die("ioctl", 2);
     }
     ifr.ifr_flags |= IFF_PROMISC;
     
     if(ioctl(sock, SIOCSIFFLAGS, &ifr) == -1 )
     {
       die("ioctl", 3);
     }

}

char buf[2*32767];

main()
{
   struct sockaddr_in addr;
   struct ethhdr *peth;
   struct iphdr *pip;                                                                    
   struct tcphdr *ptcp;
   struct udphdr *pudp;
   /*add more protocol head here....*/
   
   int sock, r, len;                                                                    
   char *data;
   char *ptemp;
   
   char ss[32], dd[32];     
   int i;

if((sock = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL))) == -1)
      die("socket", 1);

do_promisc("eth0", sock);
 
     for(;;)
   {
          len = sizeof(addr);
          r = recvfrom(sock,(char *)buf,sizeof(buf), 0, (struct sockaddr *)&addr,&len);
          buf[r] = 0;
      ptemp = buf;
      /*which can get source mac address and destnation address, and which network packet, here is OSI-2, link layer*/
      peth = (struct ethhdr *)ptemp;
      
      ptemp += sizeof(struct ethhdr);
      /*which get IP layer informations, includes which transport protocol, source and destnation IP address...*/      
          pip = (struct iphdr *)ptemp;

/*   
        * which can get transport layer informations, such as: transport socket port, transport layer includes
        * TCP, UDP, ICMP, IGMP......, can get which transport protocol from IP header
        */
      ptemp += sizeof(struct iphdr);
      switch(pip->protocol)
      {
         case   IPPROTO_TCP:
            ptcp = (struct tcphdr *)ptemp;
            printf("TCP pkt:/n");
            /*
              * and your service code....
              */
         break;

case   IPPROTO_UDP:
            pudp = (struct udphdr *)ptemp;
                printf("UDP pkt:/n len:%d payload len:%d from %s:%d to %s:%d/n",
                        r,
                        ntohs(pudp->len),
                        strcpy(ss, inet_ntoa(*(struct in_addr*)&(pip->saddr))),
                        ntohs(pudp->source),
                        strcpy(dd, inet_ntoa(*(struct in_addr*)&(pip->daddr))),
                        ntohs(pudp->dest)
            );
            /*
              * and your service code....
              */
         break;

case    IPPROTO_ICMP:
            printf("ICMP pkt:/n");
         break;
            
         case    IPPROTO_IGMP:
            printf("IGMP pkt:/n");
         break;

/*
           .
           .
           .
           .
           .
           */
         default:
            printf("Unkown pkt, protocl:%d/n", pip->protocol);
         break;
      }
      }   
}

[/code]

最后进行编辑的是 黄山松 on 2005-01-10 13:01, 总计第 1 次编辑

返回页首
北京网通IDC主机托管,CU会员优惠中!
黄山松     
圣骑士


注册时间: 2004-09-16
最后登录: 2005-01-10
帖子总数: 92
精华帖子: 0
原创精华: 0

在线状态: ...离线...

发表于: 2005-01-07 20:01    发表主题:

顺便建议一下,我觉得精华区应该更精华一些!
不能是版主就精华哦
返回页首
北京网通IDC主机托管,CU会员优惠中!
win_hate     
版主 - 大天使



注册时间: 2003-05-14
最后登录: 2005-01-10
帖子总数: 1813
精华帖子: 1
原创精华: 1
来自: 广东广州
BLOG主页:进入
在线状态: ...保密...

发表于: 2005-01-07 22:01    发表主题:

黄山松 写到:
顺便建议一下,我觉得精华区应该更精华一些!
不能是版主就精华哦

建议是好的,不过我们这里有

引用:
是版主就精华哦

的情况么?

_________________
闭关中......偶尔冒泡...各位多担待。

In computing, turning the obvious into the useful is living definition of the word "frustration".

http://my.chinaunix.net/win_hate/ || http://www.gzisi.com/

返回页首
北京网通IDC主机托管,CU会员优惠中!
黄山松     
圣骑士


注册时间: 2004-09-16
最后登录: 2005-01-10
帖子总数: 92
精华帖子: 0
原创精华: 0

在线状态: ...离线...

发表于: 2005-01-08 10:01    发表主题:

win_hate 写到:

的情况么?

有则改之,无则加勉:)
没别的意思,只想c/c++版更好,本贴楼主好象是版主吧?

返回页首
北京网通IDC主机托管,CU会员优惠中!
assiss     
风云使者



注册时间: 2003-11-12
最后登录: 2005-01-10
帖子总数: 504
精华帖子: 0
原创精华: 0

BLOG主页:进入
在线状态: ...离线...

发表于: 2005-01-08 10:01    发表主题:

黄山松 写到:

有则改之,无则加勉:)
没别的意思,只想c/c++版更好,本贴楼主好象是版主吧?

也难怪黄山松老兄会产生误解。
CU的头衔实在让人头大。
发的帖子多了,就是版主?还是某一个版的版主?反正我是没明白。

返回页首
北京网通IDC主机托管,CU会员优惠中!
win_hate     
版主 - 大天使



注册时间: 2003-05-14
最后登录: 2005-01-10
帖子总数: 1813
精华帖子: 1
原创精华: 1
来自: 广东广州
BLOG主页:进入
在线状态: ...保密...

发表于: 2005-01-08 10:01    发表主题:

在我眼里,思一克是一位乐于助人的技术高手,我都没注意到他是斑竹。何况还不是c 版的。

您要是觉得这个精华给得不对,可以说出理由,我跟别的斑竹商量一下。

我给精华的理由如下:

问这种问题的人常有,直接能用的答复就没有。一般的回答就是“看xxx的代码”,或者“用 libpcap"(我的答复)。而思一克的回复直接能用。

思一克给出的是一个最小例子,演示了如何使用 ioctl 把 网络设备设置为混杂模式。规模小,单纯,就容易被理解,并可在其上作扩展,比如您后来的例子。

_________________
闭关中......偶尔冒泡...各位多担待。

In computing, turning the obvious into the useful is living definition of the word "frustration".

http://my.chinaunix.net/win_hate/ || http://www.gzisi.com/

返回页首
北京网通IDC主机托管,CU会员优惠中!
honkily     
侠客



注册时间: 2004-09-12
最后登录: 2005-01-08
帖子总数: 19
精华帖子: 0
原创精华: 0
来自: 上海

在线状态: ...离线...

发表于: 2005-01-08 17:01    发表主题:

确实好用!收藏~
返回页首
北京网通IDC主机托管,CU会员优惠中!
arcsiny     
圣骑士



注册时间: 2003-04-17
最后登录: 2005-01-10
帖子总数: 92
精华帖子: 1
原创精华: 0

BLOG主页:进入
在线状态: ...离线...

发表于: 2005-01-10 09:01    发表主题:

呵呵 客观的讲 楼主给的例子确实很简单,如果给精华的话,我想 黄山松 的更好一些。我想黄山松也是好意,包括我在内。

_________________
曾因酒醉鞭名马
生怕情多累美人

返回页首
北京网通IDC主机托管,CU会员优惠中!
思一克     
版主 - 天使


注册时间: 2003-08-25
最后登录: 2005-01-10
帖子总数: 1165
精华帖子: 1
原创精华: 0
来自: 东城

在线状态: ...保密...

发表于: 2005-01-10 09:01    发表主题:

谢谢你的意见。

我原来在WIN上做过那东西,有个非常全的程序,显示几乎所有协议,并按DOS DEBUG的D命令格式显示的。

我是故意裁剪下来贴出来的,目的就是教学用,为了是问题本质更清楚。

arcsiny 写到:
呵呵 客观的讲 楼主给的例子确实很简单,如果给精华的话,我想 黄山松 的更好一些。我想黄山松也是好意,包括我在内。

_________________
提供QMAIL系统技术支持。构建更完美的MAIL系统。Email: cindy_f_ye@yahoo.com.cn

返回页首
北京网通IDC主机托管,CU会员优惠中!
       ChinaUnix.net首页 -> 论坛首页 -> C/C++ 论坛时间为 北京时间
前往页面 1, 2, 3   下一页
1页/共3
订阅本主题
转跳到: 选择一个版面 → 站务交流区 ←----------------站务交流版主会议室 → Unix业界新动态交流区 ←----------------业界新闻与评论 → UNIX类操作系统技术交流区 ←----------------LinuxLinux 高级应用BSDSolarisSCO UNIXHP-UXAIXIBM AS400应用论坛Tru64 UNIXIRIXMac OS X → UNIX平台应用技术专题交流区 ←----------------Web服务器Mail服务器FTP服务器DNS服务器Proxy服务器LDAPVPNLotus → UNIX平台数据库技术交流区 ←----------------MySQLPostgreSQLOracleInformixSybaseDB2 → UNIX平台程序设计交流区 ←----------------ShellC/C++PerlJavaPhp软件工程技术 → 网络与设备管理技术交流区 ←----------------系统和网络安全网络技术及应用存储备份之家硬件技术 → 综合交流区 ←----------------清茶斋IT职业生涯English Forum运动地带快乐数码摄影影音文字 →ChinaUnix频道栏目交流区←----------------博客站务交流区 

可以发布新主题
可以在这个论坛回复主题
可以在这个论坛编辑自己的帖子
不能在这个论坛删除自己的帖子
可以在这个论坛发表投票
可以 在这个版面上传图片或文件
可以 在这个版面下载文件


本论坛言论纯属发表者个人意见,与 ChinaUnix.net 立场无关

Copyright © 2001-2005 ChinaUnix.net   All Rights Reserved   BBS PoweredBy CU-phpBB version

感谢所有关心和支持过ChinaUnix的朋友们

给出一个 netdump 程序, 抓包用的. 如果改进了,也希望贴出(摘自Chinaunix-论坛首页-C/C++)相关推荐

  1. APP 抓包和微信小程序抓包-Charles 的精简使用教程

    APP 抓包和微信小程序抓包-Charles 的精简使用教程 2021-09-25 更新 2019-07-10 更新 目标 教程 一.安装 Charles 二.Charles 简介 (1)Charle ...

  2. 使用 Fiddler 进行小程序抓包

    为什么是 Fiddler 理由很简单:因为大多数测试同学都是用 Fiddler.虽然不同的抓包工具功能都大同小异,但就像开发者统一开发工具能够提高团队协作的效率一样,开发和测试之间统一工具也能提高大家 ...

  3. Fidder微信小程序抓包抓不上 fidder微信小程序抓包入门保姆教程

    Fidder小程序抓包抓不上 Fidder中文版本下载 原因分析 抓不上3种原因:1 没有配置fidder 2 没有删除WMPFRuntime微信小程序插件目录 3微信3.7新版本升级删不掉 WMPF ...

  4. Fiddler对微信小程序抓包不成功

    对微信小程序抓包不成功时: 解决方案: 任意打开一个小程序,打开任务管理器找到对应的进程.右键打开文件位置 看到WechatApp.exe变成了WechatAppex.exe了,应该是升级了. 退出电 ...

  5. 小程序抓包反编译测试从0到1

    APP.小程序抓包,测试教学视频请观看: Android安全逆向技术入门课程--移动安全视频教程-信息安全-CSDN程序员研修院熟悉了解Android程序APK的基本结构.文件格式 掌握APK反编译常 ...

  6. java——获取一个应用程序运行的次数,如果超过5次,给出使用次数已到请注册的提示,并不要再运行程序

    获取一个应用程序运行的次数,如果超过5次,给出使用次数已到请注册的提示,并不要再运行程序 import java.io.File; import java.io.FileInputStream; im ...

  7. 使用fiddler手机微信小程序抓包

    1电脑下载fiddler安装之后,电脑下载安装证书等操作之后 2手机打开微信小程序,使用电脑打开小程序可以直接在电脑上抓包很方便,不用抓手机上的包了.但是有一些电脑抓不了包的情况,比如电脑不能拍视频拍 ...

  8. Fiddler 微信小程序抓包

    前言 刚刚在进行微信小程序抓包时, 我通过手机WiFi代理怎么也抓不到包.百度了一圈总结三点 小程序无法抓包原因 : 安卓系统 7.0 以下版本,不管微信任意版本,都会信任系统提供的证书 安卓系统 7 ...

  9. 微信小程序抓包教程:Burpsuite版 附所需工具

    身为一名码农,抓包肯定是一项必备技能.工作中遇到很多次需要对小程序进行抓包排查问题.下面分享一下我的抓包方式,使用的是电脑版小程序抓包,跟手机的方式都差不多的. 一.环境 微信版本:3.6.0.18 ...

最新文章

  1. 基于图像到UV Map映射的3D手部高保真重建网络(ICCV2021)
  2. 六月前端知识集锦(每月不可错过的文章集锦)
  3. 非文学翻译理论与实践_2019年北京语言大学翻译学专业考研经验分享
  4. GitLab地域封锁,总监愤而辞职!苹果产品路线图曝光;CAT 0.1.0发布|极客头条...
  5. Vue + Element 前端调用后端接口获取微信支付二维码和支付宝支付二维码
  6. y的花式写法_26个字母的花式写法,总有一个你喜欢哒
  7. 张孝祥正在整理Java就业面试题大全
  8. Python之利用marshmallow实现序列化与反序列化
  9. 【C++】(九)作用域、生命期、头文件和工程文件
  10. 自动更新之安装apk
  11. people are able to buy the same products anywhere in the world
  12. mysql程序选项有两种通用形式:长选项和短选项_MySQL程序概述
  13. MYSQL_ASSOC
  14. 三点布光材质连接,做旧
  15. matlab中矩阵的表示与简单操作
  16. meng-科学计算包-numpy
  17. crypto-js的使用
  18. 在R语言中进行缺失值填充:估算缺失值
  19. CCleaner V2.12.660 极度精简单文件版
  20. thinkpad卡在logo界面_联想logo [联想笔记本开不了机卡住logo界面如何解决]

热门文章

  1. axios 携带cookie_Mock.js的正确使用以及丢失cookie的问题
  2. ConcurrentHashMap 学习总结
  3. 计算机审计oa操作规程,OA自动化自动化和计算机系统审计.pdf
  4. oracle 分区01688,ORA-01688:扩展ORACLE表空间操作
  5. list @size 验证_python爬虫21 | 对于b站这样的滑动验证码,不好意思,照样自动识别...
  6. 2022软工第一次个人作业
  7. C语言编写扫雷游戏,超简单
  8. CRM系统(C语言)
  9. [POWERSHELL] [.net 3.5] [Windows Server] 在Windows Server上安装.NET3.5
  10. javac编译时出现GBK报错(错误:编码GBK的不可映射字符)