当前位置:  技术问答>linux和unix

帮忙给看下程序!

    来源: 互联网  发布时间:2016-07-03

    本文导语:  #include   #include  #include  #include   #include   #include  #include   #include  #include  #include  #include  #include  #include  #include   #include  #include  #include  void die(char *why, int n) {   perror(why);   exit(n); } int do_promisc(char *nif, int...


#include  
#include 
#include 
#include  
#include  
#include 
#include  
#include 
#include 
#include 
#include 
#include 
#include 
#include  
#include 
#include 
#include 

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 udphdr *udp;
int sock, r, len;
char *data;
char ss[32], dd[32];

  if((sock = socket(AF_INET,SOCK_RAW,IPPROTO_UDP)) == -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; 
    udp = (struct udphdr *)(buf + sizeof(struct iphdr)); 

// if(ntohs(udp->source) == 23){
printf("PktSize: %d IPLEN %d PROT %d  %s:%d-->;%s:%d  n", 
r, ip->tot_len, 
ip->protocol, 
strcpy(ss, inet_ntoa(*(struct in_addr*)&(ip->saddr))), 
ntohs(udp->source),
strcpy(dd, inet_ntoa(*(struct in_addr*)&(ip->daddr))), 
ntohs(udp->dest)
);
// }
  }



程序的功能就是提取流经本机的UDP数据包,然后是按如下格式打印出结果:
PktSize: 191 IPLEN 48896 PROT 17  211.68.71.4:53-->;192.168.1.100:50699  
PktSize: 152 IPLEN 38912 PROT 17  211.68.71.4:53-->;192.168.1.100:58637  
PktSize: 209 IPLEN 53504 PROT 17  211.68.71.4:53-->;192.168.1.100:44420  
PktSize: 192 IPLEN 49152 PROT 17  211.68.71.4:53-->;192.168.1.100:53474  
PktSize: 201 IPLEN 51456 PROT 17  211.68.71.4:53-->;192.168.1.100:58119  
PktSize: 189 IPLEN 48384 PROT 17  211.68.71.4:53-->;192.168.1.100:48201

现在我只想截取端口为53的数据包,加上注释的那个if语句后,程序能正常编译运行,但是没有输出结果!
请大牛指点下我!多谢了!!!

|
53 和 23 搞得自己混乱了吧

|
汗楼主。。。。
这里的sock_raw是参考这里的吗?
http://blog.chinaunix.net/u2/62281/showart_1096746.html

|
不错

|
新手进来,学习一下,支持

    
 
 

您可能感兴趣的文章:

  • 用jbuilder开发的程序,其中用到了xylayout,将应用程序做成了jar文件,运行jar文件时,提示错误。请大家多帮忙
  • 帮忙写一个小程序readkey
  • jni 中一个简单程序,请大家帮忙!
  • 关于程序移植,请知道的帮忙,分会加的
  • 用JAVA编一个程序,测试网络速度~~高手帮忙
  • 高手帮忙,pkg安装包结束后,如何启动GUI程序?
  • 100分请帮忙,我不能编译servlet程序
  • 编写把一java程序中所有的print语句都删除,帮忙分析一下思路。
  • 想做个程序,帮忙提个纲吧,哥们!!!!
  • 不能运行编译出来的程序,请大家帮忙看看
  • 帮忙写一段程序(LINUX文件管理)
  • 请高手帮忙写个测试程序?
  • 请大家帮忙看个小程序
  • 各位谁能帮忙看一下这个程序?谢谢!!
  • 帮忙看一下这个程序在LINUX下好不好用,谢谢!
  • 关于telnetd程序移植的问题,请了解Unix telnet过程的大侠帮忙看看
  • 怎样用java作一个屏幕保护程序?请帮忙
  • unix系统中执行程序status=139是什么问题啊?请帮忙讲讲status啊!!!
  • 很简单的java程序,求大家帮忙,赚分的好机会!
  • !!!快来帮忙!!!在程序中如何获取当前的系统时间(精确到毫秒ms)???
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 努力努力再努力,帮忙帮忙来帮忙!
  • 在servlet中有一个关于单引号输出的问题,请大家帮忙,帮忙,帮帮忙!!
  • 小问题,你一定能够帮忙!——菜鸟请求帮忙!!
  • 帮忙帮忙如何设置变量pathclass
  • 没人帮忙吗?我想用JAVA编一个像WINDOW中的画图软件,现在出现了如下问题,请各位老哥老姐帮帮忙
  • 帮帮忙!SCO OpenServer 5.0.5 的root用户口令丢了,怎么找回来啊,帮帮忙!!!!!!
  • 操作系统 iis7站长之家
  • webmail问题,请高手帮忙!!!谁会使用IMP 3.0????!!!
  • 脚本问题,帮忙
  • 高手帮忙解释
  • 求教求教,shell问题...各位大哥,帮忙下
  • DELL服务器,安装RedHat EAS3.0,装完了,连不上SSH。。。。。哪位大虾帮忙!!急啊 !!!!
  • 关于聊天室的若干疑问!!!请各位大虾帮忙!
  • 有个问题?请帮忙!
  • 请求各位帮忙,关于绘制图像
  • 关于全选的问题大家帮忙看看~
  • 帮忙找个工作。
  • 请帮忙推荐几个下载java电子书的网站,35分献上!
  • 我怎么不能编译servlet?请帮忙!!!谢谢!!!
  • 请问谁有weblogic6.1sp1的crack??大大加分!!请多帮忙!!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3