博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sniffer
阅读量:5372 次
发布时间:2019-06-15

本文共 2644 字,大约阅读时间需要 8 分钟。

一、将网卡设置在混杂模式

su

密码:
bogon:/home/lonely/code/sniffer# ifconfig eth0 promisc
bogon:/home/lonely/code/sniffer# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:14:31:2c
          inet addr:192.168.26.128  Bcast:192.168.26.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe14:312c/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:373 errors:0 dropped:0 overruns:0 frame:0
          TX packets:293 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:40867 (39.9 KiB)  TX bytes:41109 (40.1 KiB)
          Interrupt:19 Base address:0x2000

lo        Link encap:Local Loopback

          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:22 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1981 (1.9 KiB)  TX bytes:1981 (1.9 KiB)

 

cat headers.h

 

ExpandedBlockStart.gif
代码
struct
 ip{
        unsigned 
int
 ip_length:
4
;
        unsigned 
int
 ip_version:
4
;
        unsigned 
char
 ip_tos;
        unsigned 
short
 ip_total_length;
        unsigned 
short
 ip_id;
        unsigned 
short
 ip_flags;
        unsigned 
char
 ip_ttl;
        unsigned 
char
 ip_protocol;
        unsigned 
short
 ip_cksum;
        unsigned 
int
 ip_source;
        unsigned 
int
 ip_dest;
};
struct
 tcp{
        unsigned 
short
 tcp_source_port;
        unsigned 
short
 tcp_dest_port;
        unsigned 
int
 tcp_seqno;
        unsigned 
int
 tcp_ackno;
        unsigned 
int
 tcp_resl:
4
,tcp_hlen:
4
,tcp_fin:
1
,tcp_syn:
1
,tcp_rst:
1
,tcp_psh:
1
,tcp_ack:
1
,tcp_urg:
1
,tcp_res2:
2
;
        unsigned 
short
 tcp_winsize;
        unsigned 
short
 tcp_cksum;
        unsigned 
short
 tcp_urgent;
};

 

 

cat simple_tcp_sniff.c

ExpandedBlockStart.gif
代码
/*
 * stdio.h              printf和std_out之类的基本输入输出函数
 * sys/socket.h SOCK_RAW和IPPROT_TCP的定义
 * netinet/in.h 定义 sockaddr_in
 * arpa/inet.h  网络函数
 
*/
#include 
<
stdio.h
>
#include 
<
sys
/
socket.h
>
#include 
<
netinet
/
in
.h
>
#include 
<
arpa
/
inet.h
>
/*
 定义ip和tcp字段的结构 
*/
#include 
"
headers.h
"
int
 main()
{
        
int
 sock,bytes_recieved,fromlen;
        
char
 buffer[
65535
];
        
struct
 sockaddr_in from;
        
struct
 ip 
*
ip;
        
struct
 tcp 
*
tcp;
        sock
=
socket(AF_INET,SOCK_RAW,IPPROTO_TCP);
        
while
(
1
)
        {
                fromlen
=
sizeof
 from;
                bytes_recieved
=
recvfrom(sock,buffer,
sizeof
 buffer,
0
,(
struct
 sockaddr 
*
)
&
from,
&
fromlen);
                printf(
"
\nBytes received ::: %5d\n
"
,bytes_recieved);
                printf(
"
Source address ::: %s\n
"
,inet_ntoa(from.sin_addr));
                ip
=
(
struct
 ip 
*
)buffer;
                printf(
"
IP header length ::: %d\n
"
,ip
->
ip_length);
                printf(
"
Protocol ::: %d\n
"
,ip
->
ip_protocol);
                tcp
=
(
struct
 tcp 
*
)(buffer
+
(
4
*
ip
->
ip_length));
                printf(
"
Source port ::: %d\n
"
,ntohs(tcp
->
tcp_source_port));
                printf(
"
Dest port ::: %d\n
"
,ntohs(tcp
->
tcp_dest_port));
        }
}

 

 

转载于:https://www.cnblogs.com/zhangyingda/archive/2010/10/30/1864977.html

你可能感兴趣的文章
Linux下好用的简单实用命令
查看>>
描绘应用程序级的信息
查看>>
php环境搭建脚本
查看>>
MES架构
查看>>
hdu 2767(tarjan)
查看>>
sklearn之分类模型混淆矩阵和分类报告
查看>>
MySQL各存储引擎
查看>>
项目--简单导出CSV文件
查看>>
Oracle session相关数据字典(一)
查看>>
BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡(贪心)
查看>>
获取元素属性get_attribute
查看>>
在Flex中用Validator检测数字、字符串、Email.
查看>>
[leetcode]4Sum
查看>>
POJ1062 昂贵的聘礼
查看>>
【零基础学习iOS开发】【02-C语言】08-基本运算
查看>>
Java 将指定字符串连接到此字符串的结尾 concat()
查看>>
Hibernate Criterion
查看>>
Python知识
查看>>
我们为什么要搞长沙.NET技术社区(三)
查看>>
杭电acm Cake
查看>>