资讯·论坛·笑话大全·QQ表情·设为首页
发新话题
打印

[网络安全] 另类ARP用法 探测网络中的黑客软件

另类ARP用法 探测网络中的黑客软件

嗅探器(Sniffer)一直以来都是一种让人恼火的黑客工具,因为它是一种静态的攻击软件,它的存在不会留下任何痕迹,因此人们很难将它揪出来。可是,它的危害性却又是相当大的(它就像一个监视器,你的“一举一动”都在它的监视之下,你说危害大不大)。所以,我们不能不要想个办法出来检查网络中是否存在Sniffer,这是非常必要的。; i. W3 H/ O; m. C+ g5 ?
1. Sniffer原理
: P7 r- ~9 B; Q0 o6 [  所谓知己知彼方能百战不殆,要了解探测Sniffer的方法,就先得了解Sniffer的原理。首先,让我们来看一看局域网中是怎样传输数据的。当一个数据包的目的地是局域网内的某台计算机时,此数据包将以广播的形式被发送到网内每一台计算机上。而每台计算机的网卡将分析数据包中的目的Mac地址(即以太网地址),如果此地址为本计算机Mac地址或为广播地址(FF-FF-FF-FF-FF-FF),那么,数据包将被接收,而如果不是,网卡将直接将其丢弃。但是,这里有一个前提,就是接收端计算机的网卡是在正常模式下工作的。而如果网卡被设置为混杂模式,那么它就可以接收所有经过的数据包了(当然也包括目的地不是本机的数据包)。就是说,只要是发送到局域网内的数据包,都会被设置成混杂模式的网卡所接收!这也就是Sniffer的基本原理了。至于Sniffer的具体实现和一些细节,这里就不多讲了,大家有兴趣可以参考相关资料。
* w8 Y9 n# ~2 W  s' }: s8 L我爱电脑技术社区--打造最好的电脑技术自学交流平台
8 }" q4 Y. m6 Q: m: c  2. 以太网中传输的ARP数据报电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站% G5 E. j& i9 f6 X( `. e. W

( @6 B% D8 u) t4 P打造最好的电脑自学交流论坛  知道了Sniffer的基本原理,现在,我们就要想想怎么才能将局域网中隐藏的Sniffer揪出来,这才是本篇文章的主题。这里,我们需要自己构造ARP数据包,所以,就先简单介绍一下ARP请求和应答数据报的结构:我爱电脑技术论坛+ C. c% H8 C1 d4 j) Y

* e8 q9 I* H8 k  d4 U我爱电脑技术论坛  typedef struct _et_header //以太网头部电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站$ o; b$ W/ K  W+ l. R1 \* P! g

% |9 {  o* z! ^/ j7 o+ B打造最好的电脑自学交流论坛  以下是引用片段:打造最好的电脑自学交流论坛9 H& g/ g% g9 d
  {打造最好的电脑自学交流论坛: z. s3 R- J- ^/ [- r0 Q& F
  unsigned char eh_dst[6];
8 ^8 M! P7 ?( i- M6 Vwww.520diannao.com  unsigned char eh_src[6];www.520diannao.com/ h! v; g6 J! v6 n
  unsigned short eh_type;
7 u( d* k4 b8 z# [+ P& _; L打造最好的电脑自学交流论坛  }ET_HEADER;  typedef struct _arp_header //ARP头部
( J  u6 \  ~+ t9 Y& ?打造最好的电脑自学交流论坛
! z! P1 V9 x! Z( A  以下是引用片段:www.520diannao.com% C, {- X$ A3 ]6 |3 u7 x
  {www.520diannao.com. K1 s' c& I/ l( o
  unsigned short arp_hdr;www.520diannao.com- o" v2 q/ z- ?# M  s
  unsigned short arp_pro;
) ^5 J) j, ^0 u我爱电脑技术论坛  unsigned char arp_hln;www.520diannao.com9 N. e# ]8 c+ L) a% k
  unsigned char arp_pln;- @( [& h) F8 r8 q4 t9 r
  unsigned short arp_opt;
# ^8 n3 w! {3 Y$ ^# j% g2 pwww.520diannao.com  unsigned char arp_sha[6];6 T  X' b# i: O
  unsigned long arp_spa;
8 }+ r& j! Q' \4 {我爱电脑技术论坛  unsigned char arp_tha[6];电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站9 i* K# ^/ Q3 _9 y) S
  unsigned long arp_tpa;
& G; h1 I8 E, a; B电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站  }ARP_HEADER;我爱电脑技术论坛+ M8 ?, g/ Y) z4 g8 E, j: x+ \

8 K( B9 E' |9 ~  J: Q- I  以上就是网络中传输的ARP数据包的结构了。至于结构中每个字段所表示的具体含义以及如何初始化,超出了本文章的讨论范围,大家有兴趣可以参看《TCP-IP协议详解》一书。www.520diannao.com/ c8 L6 Q5 V) E% F1 h% B
www.520diannao.com) b" J2 |$ ~: @3 ~. b
  

TOP

3. 探测局域网中的Sniffer
3 b* f0 C4 \- }0 ?! g2 T. o4 H我爱电脑技术社区--打造最好的电脑技术自学交流平台www.520diannao.com& B9 d% d' l, @! F0 E; c
  终于进入主题了。既然Sniffer是一种静态的黑软,不会留下任何日志,那么我们就要主动的去探测它。鉴于Sniffer的原理是设置网卡为混杂模式,那么,我们就可以想办法探测网络中被设置为混杂模式的网卡,以此来判断是否存在Sniffer。
7 X$ Q/ ]* T0 O0 kwww.520diannao.com6 b9 N$ d' \" n  V2 T9 g$ I, m; d
  这里,让我们再来看看计算机接收数据包的规则。前面已经讲过,在正常模式下,首先由网卡判断数据包的目的Mac地址,如果为本机Mac地址或为广播地址,那么数据包将被接收进入系统核心,否则将被丢弃。而如果网卡被设置为混杂模式,那么所有的数据包都将直接进入系统核心。数据包到达系统核心后,系统还将进一步对数据包进行筛选:系统只会对目的Mac地址为本机Mac地址或广播地址的数据包做出响应――如果接收到的是ARP请求报文,那么系统将回馈一个ARP应答报文。但是,不同的是,系统核心和网卡对广播地址的判断有些不一样:以Windows系统为例,网卡会判断Mac地址的所有六位,而系统核心只判断Mac地址的前两位(Win98甚至只判断前一位),也就是说,对于系统核心而言,正确的广播地址FF-FF-FF-FF-FF-FF和错误的广播地址FF-FF-FF-FF-FF-FE是一样的,都被认为是广播地址,甚至FF-FF-00-00-00-00也会被系统核心认为是广播地址!www.520diannao.com8 c# q" J" ~8 {# n4 A) }, O

1 i0 n3 c; ~, I- }0 F打造最好的电脑自学交流论坛  写到这里,聪明的读者大概已经知道该怎么做了。如果我们构造一个目的Mac地址为FF-FF-FF-FF-FF-FE的ARP请求报文,那么,对于在正常工作模式下的网卡,数据包将被丢弃,当然也就不会回馈任何报文;而对于在混杂模式下网卡,数据包将被接收进入系统核心。而系统核心会认为这个Mac地址是广播地址,因此就会回馈一个ARP应答报文。这样,我们就可以判断出这台机器上存在Sniffer了。
/ i' {$ o8 C( P. e6 B8 o* ]电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
/ b0 S0 j8 {1 J* i8 E( Q& [我爱电脑技术论坛www.520diannao.com% {. |0 U: D) T  M! v& C
  4. 主要源码分析我爱电脑技术论坛( u1 @- g5 I" g1 g+ E

+ \9 x& c- V  |! t+ {8 {# k; F* c" a电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站  由以上分析可知,程序大概分为两个模块,一个是发送伪装广播地址的ARP请求报文,另一个是接收回馈的ARP应答报文并做出分析。我们就分别用两个线程来实现。主线程负责发送,监听线程负责接收。我爱电脑技术社区--打造最好的电脑技术自学交流平台; b! M! j5 Z& Y
我爱电脑技术论坛3 z5 b! Z! q$ O/ v0 X  F
  首先是创建以太网头部和ARP头部的结构:
8 q% y" Z$ W. g8 l我爱电脑技术社区--打造最好的电脑技术自学交流平台电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站  I+ t6 j7 n6 A  ~% V3 i
  typedef struct _et_header //以太网头部
( [, a9 E# {$ Q4 N0 s0 J. _- W, b: j& ?我爱电脑技术论坛  @& ^% I5 S/ }0 G& p
  以下是引用片段:
$ ]' Q) w0 K; G- s8 a- ?6 K6 ^www.520diannao.com  {8 k& k5 e$ D  N' ~, m4 o0 \
  unsigned char eh_dst[6];
: G% g& f4 g1 z9 O5 z& g7 i打造最好的电脑自学交流论坛  unsigned char eh_src[6];
, Y& @1 L5 x$ e  l6 \: K打造最好的电脑自学交流论坛  unsigned short eh_type;
/ B! O- S1 G, Z2 V4 B电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站  }ET_HEADER;  typedef struct _arp_header //ARP头部
  C& W5 G2 Y1 d0 A/ R8 J/ ?打造最好的电脑自学交流论坛
9 }) N9 d3 k! {0 P我爱电脑技术论坛  以下是引用片段:
9 ?8 Y) @( O2 _9 T7 ]5 k, |我爱电脑技术社区--打造最好的电脑技术自学交流平台  {
" Q0 B' g- T/ ^* G我爱电脑技术论坛  unsigned short arp_hdr;www.520diannao.com" y  [9 ~/ \: W! W8 @0 P
  unsigned short arp_pro;打造最好的电脑自学交流论坛' @/ E1 n5 H" v, ]$ i/ }
  unsigned char arp_hln;
4 n# ?* r! }7 m. e8 T( k2 H  unsigned char arp_pln;
0 L$ v: n/ t! a2 v) B9 a电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站  unsigned short arp_opt;
2 w' I  V/ M% Q3 c/ |打造最好的电脑自学交流论坛  unsigned char arp_sha[6];www.520diannao.com, _3 L0 M' Z6 J, W- F
  unsigned long arp_spa;打造最好的电脑自学交流论坛% p: c1 F4 b# \: H' b5 P. m! _& t: M
  unsigned char arp_tha[6];) k( k7 S* ~+ P7 i! W
  unsigned long arp_tpa;
$ d+ K! S4 I+ E- b  ^1 j我爱电脑技术论坛  }ARP_HEADER;打造最好的电脑自学交流论坛) [3 z4 p' W. Q! {) L7 p, M  [

4 T; C. t. j+ H" A6 ]2 k& Y2 n我爱电脑技术社区--打造最好的电脑技术自学交流平台  然后是发送ARP请求报文的主线程,取得所有适配器的名字。其中,“adapter_name”表示一个用于存放适配器名字的缓冲区,而这些适配器名字将以UNICODE编码方式存入此缓冲区中。UNICODE编码方式就是用一个字的空间(两个字节)来存放一个字符。这样,每个字符间自然会出现一个'\0'。而两个适配器名字之间将会有一个字为'\0'作为间隔。adapter_length:这个缓冲区的大小:

TOP

以下是引用片段:电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站" E# H2 w- |& ~' \" T) k
  if(PacketGetAdapterNames((char*)adapter_name, &adapter_length)==FALSE)2 i8 u* t( k6 {
  {
* s. W. X% I# J: N8 e0 p4 E! X我爱电脑技术社区--打造最好的电脑技术自学交流平台  printf("PacketGetAdapterNames error:%d\n",GetLastError());我爱电脑技术社区--打造最好的电脑技术自学交流平台$ _7 N! }% V% ~! g" w
  return 0;
4 ^, r" f$ ^- h5 q+ K/ e我爱电脑技术论坛  }
, |; X3 ~* R7 L0 w4 E. b0 ]我爱电脑技术社区--打造最好的电脑技术自学交流平台
/ ?4 ^$ X; [9 k+ g, ~$ c8 X电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站  打开适配器,此处我默认打开第一块适配器:
$ U. k0 T5 I) g4 L( m我爱电脑技术论坛
! N2 H- V& Y' g7 ?5 \" uwww.520diannao.com  以下是引用片段:
! h3 @' ]7 I$ \2 t我爱电脑技术论坛  lpAdapter=(LPADAPTER)PacketOpenAdapter((LPTSTR)adapter_list[0]);电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站$ C" q) A' U) H
  if (!lpAdapter||(lpAdapter->hFile==INVALID_HANDLE_VALUE))我爱电脑技术社区--打造最好的电脑技术自学交流平台0 c8 s$ \+ M) A2 C# o  l( C& N
  {( z/ ~- n* q) f8 n. ~$ ]4 c: l
  printf("Unable to open the driver, Error Code : %lx\n", GetLastError());
- D/ S- g5 j) ^: {打造最好的电脑自学交流论坛  return 0;
; n% m0 a2 D5 q5 [0 Y打造最好的电脑自学交流论坛  }www.520diannao.com- _8 {- L5 p1 @2 ^4 q) a

0 l6 U) G8 F+ ~/ l0 o1 L我爱电脑技术论坛  以太网头部和ARP头部结构赋值,StrToMac函数是笔者自定义的字符串转换为Mac地址的函数:
7 p# q+ U5 O" A7 n% K
5 s. L! K- G( [, y3 N打造最好的电脑自学交流论坛  StrToMac("00E06E41508F",s_Mac); //"00E06E41508F"是笔者测试程序所用的本地机的网卡地址,测试者应将其改为测试机网卡地址我爱电脑技术论坛. a: t6 E& {6 \4 S6 Q) H% S, i5 H
www.520diannao.com" i' N) C) N1 a
  memcpy(et_header.eh_src,s_Mac,6);
; d& p& ]8 k% L/ h打造最好的电脑自学交流论坛
/ G5 f; a9 X. o6 h3 L电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站  StrToMac("FFFFFFFFFFFE",d_Mac); //目的物理地址设置为FFFFFFFFFFFE。
, P0 H) ?: ]; \# a, Y  R电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站我爱电脑技术论坛7 q& E/ Q- u. P+ \$ z: f6 K
  memcpy(et_header.eh_dst,d_Mac,6);
9 U8 F% x- j2 ^: A- N电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站; D. d+ ^8 ~, |! n* H
  et_header.eh_type=htons(0x0806); //类型为0x0806表示这是ARP包
; ^" V! ~, i/ H( Q) C  Twww.520diannao.com我爱电脑技术论坛& J3 C/ j$ l! ]' i
  arp_header.arp_hdr=htons(0x0001); //硬件地址类型以太网地址www.520diannao.com: F- V9 ^: @: ^& h; C$ C6 e. n1 m
www.520diannao.com7 H% Z# P7 t( H4 U
  arp_header.arp_pro=htons(0x0800); //协议地址类型为IP协议www.520diannao.com" g9 D+ H. z# ~( ^5 ]4 E

6 k0 ]: A3 Q4 f4 u* X; E& k* A我爱电脑技术社区--打造最好的电脑技术自学交流平台  arp_header.arp_hln=6; //硬件地址长度为6
! q: Y3 h5 W/ J7 H# E电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
. Q8 q/ b2 O. r+ _3 ^" r我爱电脑技术社区--打造最好的电脑技术自学交流平台  arp_header.arp_pln=4; //协议地址长度为4打造最好的电脑自学交流论坛# H3 [. ?  N' n3 ^- S
# R/ J' K; i. k& X
  arp_header.arp_opt=htons(0x0001); //标识为ARP请求电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站0 F$ k5 B5 }2 G* [$ }' Z4 Q) E$ |
我爱电脑技术社区--打造最好的电脑技术自学交流平台0 i+ g% f) S& f
  arp_header.arp_spa=inet_addr("172.24.21.10"); //"172.24.21.10"是我测试程序所用的本地机的IP,测试者应将其改为测试机IP
+ c- N1 a0 b! Y: Ewww.520diannao.com
0 t) _6 ~0 ~) b- d* U我爱电脑技术社区--打造最好的电脑技术自学交流平台  memcpy(arp_header.arp_sha,et_header.eh_src,6);
1 _6 Z6 v9 |. m我爱电脑技术论坛我爱电脑技术社区--打造最好的电脑技术自学交流平台0 Z* [1 Y* e- k" H% Z* y: x+ c  x) J# l
  arp_header.arp_tpa=inet_addr(argv[1]);
! p5 g' T; G( R  ?www.520diannao.com
  n( L9 \1 n# R( Y, |' Q; K, f我爱电脑技术社区--打造最好的电脑技术自学交流平台  memcpy(arp_header.arp_tha,et_header.eh_dst,6);7 H, d2 K9 T$ E
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站2 ]. s5 z% L9 S5 L5 @  [3 ?7 }
  发送数据包:我爱电脑技术社区--打造最好的电脑技术自学交流平台- k) N' ~9 s* ^# O$ r% b+ h
打造最好的电脑自学交流论坛! j1 M( B: m0 f
  lpPacket=PacketAllocatePacket(); //给PACKET结构指针分配内存
- b4 b, \, C6 y7 G. z  Pwww.520diannao.com打造最好的电脑自学交流论坛: P; ]5 f& C1 d( ]- b7 R  I
  PacketInitPacket(lpPacket,buffer,512); //初始化PACKET结构指针
! K+ b; b4 }5 F: K我爱电脑技术社区--打造最好的电脑技术自学交流平台
6 I0 b9 Y+ _0 D6 B/ {  v电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站  PacketSetNumWrites(lpAdapter,5); //设置发送次数打造最好的电脑自学交流论坛$ @2 A5 S8 j* j

: j  z: o, A( h9 W4 F+ t打造最好的电脑自学交流论坛  PacketSendPacket(lpAdapter,lpPacket,TRUE);//发送ARP请求包www.520diannao.com; F  a, Z' K/ t4 _. f

- j6 x1 z' o$ _- w! n我爱电脑技术论坛  最后别忘了扫尾工作:# j; b( t$ W& N2 ?* Q

; c! k& s" E  H' Q' g我爱电脑技术论坛  PacketFreePacket(lpPacket); //释放PACKET结构指针
! H6 z& q2 j6 Y( \+ f: s/ {我爱电脑技术社区--打造最好的电脑技术自学交流平台打造最好的电脑自学交流论坛  L- f- N; r* ~- m% U; M" z
  PacketCloseAdapter(lpAdapter); //关闭适配器我爱电脑技术社区--打造最好的电脑技术自学交流平台' A1 b  ]) U1 U7 E0 @4 {8 f4 r

7 z# C( r5 x! V+ N/ k6 o* R  最后是监听线程,设置接收数据包的系列参数:我爱电脑技术社区--打造最好的电脑技术自学交流平台% ?# U% ~3 z4 r9 S# G/ x
www.520diannao.com& ?2 B2 A; |' L6 z/ v) l
  PacketSetHwFilter(lpAdapter, NDIS_PACKET_TYPE_DIRECTED); //设置网卡为直接模式我爱电脑技术社区--打造最好的电脑技术自学交流平台3 b& p: C0 e" n- S" f7 q
' l2 r& s' y$ `* t" n! H
  PacketSetBuff(lpAdapter,1024); //设置网卡接收数据包的缓冲区大小/ F: F6 P5 C1 T2 p: n8 V( I6 C
我爱电脑技术社区--打造最好的电脑技术自学交流平台  ^/ W3 R# |3 b# U0 Q% H9 f
  PacketSetReadTimeout(lpAdapter,2); //设置接收到一个包后的“休息”时间
8 e: p& o, D, B+ f/ H: h
7 o; b& `6 B# B# E, R  接收数据包:
+ p- W# Y- ^/ O% Zwww.520diannao.com电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站  H- B3 \( G# O: J) f5 M. w  w
  PacketReceivePacket(lpAdapter, lpPacket, TRUE); //接收数据包我爱电脑技术论坛( w4 I4 b- u+ @3 p" V, u2 U3 [
' [9 y" W8 w2 C
  对数据包进行分析,以得出结论:
7 d. |' ~8 u$ P$ r7 P% b我爱电脑技术社区--打造最好的电脑技术自学交流平台www.520diannao.com9 s2 X2 V7 t- M- W# ~
  char *buf;我爱电脑技术论坛9 R1 b% a0 v; ~" i  P1 _: H9 t

& C( D# a0 G8 d3 ]$ l  bpf_hdr *lpBpfhdr;
& ]" |& L% H  Z4 e1 C1 ?打造最好的电脑自学交流论坛) N/ L- {! G$ {$ B
  ET_HEADER *lpEthdr;( N. R  H) F0 }% a' A

  v7 d* U) R* B( ^* Gwww.520diannao.com  in_addr addr={0};www.520diannao.com8 {, R0 y& Z( O7 ~
我爱电脑技术论坛: V( c: z& L# Z( z/ y
  buf=(char *)lpPacket->Buffer;
! K1 D" b. T2 o% ], i打造最好的电脑自学交流论坛电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站, L" a* _3 o5 h; r( @, D2 Q: J
  lpBpfhdr=(bpf_hdr *)buf;www.520diannao.com9 Z; ?& M" j4 b0 {# x4 o
打造最好的电脑自学交流论坛& I6 `, M8 t% }( S  R
  lpEthdr=(ET_HEADER *)(buf+lpBpfhdr->bh_hdrlen);
6 P8 q3 w2 ?5 \我爱电脑技术论坛
: u/ Z9 N& |7 E1 m电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站  if(lpEthdr->eh_type==htons(0x0806)) //判断是否为ARP包我爱电脑技术论坛. v% K$ m! z  |3 Y) p  Y# `) a
www.520diannao.com% R; B2 T; k- f9 y0 a
  {
8 W& ~4 c: ], o* T7 c我爱电脑技术社区--打造最好的电脑技术自学交流平台
$ }0 n- R7 V; M$ t电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站  ARP_HEADER *lpArphdr=(ARP_HEADER*)(buf+lpBpfhdr->bh_hdrlen+sizeof(ET_HEADER));
5 l0 j9 E  f- z. G5 M我爱电脑技术社区--打造最好的电脑技术自学交流平台
6 y6 P9 i! `& s4 Q打造最好的电脑自学交流论坛  char source_ip[20]={0},dest_ip[20]={0};
$ n1 X7 C0 ?" w+ v! ~, R# Z8 Fwww.520diannao.com我爱电脑技术社区--打造最好的电脑技术自学交流平台. X! g$ d$ i  y, l' Z' u
  addr.S_un.S_addr=lpArphdr->arp_spa;电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站+ `6 J& k- D( }; w" O) n4 B! K
我爱电脑技术社区--打造最好的电脑技术自学交流平台' h* [! g0 x- V6 D+ d( v
  memcpy(source_ip,inet_ntoa(addr),strlen(inet_ntoa(addr)));/ Z% k2 v' t, }# Y7 o1 h5 b
打造最好的电脑自学交流论坛* Z! c" {* Q9 t* m/ \) n
  memset(&addr,0,sizeof(in_addr));我爱电脑技术社区--打造最好的电脑技术自学交流平台9 h. z  m! q. K
7 N& T+ L( s* _1 q- n1 a+ D
  addr.S_un.S_addr=lpArphdr->arp_tpa;
% U8 m3 e# n6 m" |* y5 u0 b打造最好的电脑自学交流论坛! A6 ~4 \% s7 j7 a/ P! p/ @% a( l
  memcpy(dest_ip,inet_ntoa(addr),strlen(inet_ntoa(addr)));我爱电脑技术社区--打造最好的电脑技术自学交流平台1 ]! [& n5 N$ O. U% p

8 b# S$ Z2 c% ?8 O& i( s3 |3 _  if(!strcmp(source_ip,ip) && !strcmp(dest_ip,"172.24.21.10")) //判断接收到的包的源IP与目的IP是否正确(字符串变量ip是从主线程传递过来的被探测机的ip)
3 N/ X* G! u0 A( B8 gwww.520diannao.com
5 Z- o: a; O$ V8 ]- V  {电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站/ C: `# L3 ~5 _6 X

8 s) U7 }5 K1 N3 e  Z4 V( Iwww.520diannao.com  if(lpArphdr->arp_opt==htons(0x0002)) //判断是否为ARP应答+ Q8 q! G8 F+ b4 ?
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站" h! S/ v" v& M) r
  {
9 O5 t4 N7 \+ s  ?我爱电脑技术论坛- }" ?0 g- ?2 \) V' S( g" U
  printf("There is a Sniffer!\n");我爱电脑技术论坛" [* M' S# a$ S  k: [1 E& O1 ~: _
. k, V8 _& R% b) m/ F5 q9 N% }
  }
7 q. C# X3 w- j0 b& T电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
3 ~2 z3 J5 S: C+ x- n" \www.520diannao.com  }电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站6 X! }5 Y4 w( C( X6 |- x$ X2 B

2 `3 t+ x( C: r! ]+ |www.520diannao.com  }

TOP

发新话题