12-拓展:Wireshark抓包工具

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。

1. 安装wireshark

win10 下安装 wireshark

双击

image-20180611234320538

开始安装,选择是,继续下一步

image-20180611234140677

一路点击 next

image-20180611234216669

会提示安装 winpcap 如下图

image-20180611234523585

点击 next ,一路next 安装即可,最后点击finish 完成

image-20180611234618555

然后继续安装 wireshark ,直到执行结束

image-20180611234728943

2. wireshark的使用

image-20180611235000166

软件启动后主界面

image-20180611235432496

image-20180611235930866

可以打开飞秋(端口:2425)测试,点击工具栏行的启动按钮,可以监听到当前计算机上已经建立连接的列表

image-20180612001000548

查看端口为 2425 的连接情况

image-20180612001234688

udp.port == xxxx 表示过滤 端口号等于 xxxx 的数据包

ip.addr == 192.168.1.123 表示过滤ip地址为 192.168.1.123 的数据包

ip.src == 192.168.31.221 表示源地址为 192.168.31.221 的包

Ip.dst == 192.168.31.221 表示目标地址为 192.168.31.221 的包

tcp 表示只显示tcp的包

udp 表示只显示udp的包

使用我们之前写的UDP通信代码,可以测试,抓包情况

# 导入socket模块
import socket

# 判断模块是否是程序的入口,判断整个模块是否是主模块
if __name__ == '__main__':

    # 创建socket
    # AF_INET 表示ip地址,也是internet互联网
    # SOCK_DGRAM 表示使用udp 协议
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    send_content = "hello"

    send_data = send_content.encode("utf-8")

    # 绑定端口
    # udp_socket.bind(("", 4545))

    udp_socket.sendto(send_data, ("192.168.31.221", 8082))

    # 接收数据
    recv_data = udp_socket.recvfrom(1024)

    # 打印接收的数据
    print(recv_data[0].decode("gbk"))

    # 关闭套接字
    udp_socket.close()
开启网络调试助手

image-20180612002904001

查看抓取的数据包

image-20180612003033401

User Datagram Protocol 是UDP的全称

image-20180612003343498

image-20180612004314276image-20180612004152389

image-20180630124911672

3. 使用wireshark测试TCP连接

使用如下代码当做 clinet 连接 网络连接助手 中的TCP服务器

# 导入模块
import socket

# 创建套接字
tcp_click_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 建立TCP连接
tcp_click_socket.connect(("192.168.31.221", 6666))

# 定义要发送的内容
send_content = "hi,I'm weige !"

# 对发送的内容进行转码
send_data = send_content.encode("utf-8")

# 发送数据
tcp_click_socket.send(send_data, )

# 关闭连接
tcp_click_socket.close()

第一步,打开网络调试助手,设置为TCP服务器,读端口为 6666

image-20180612004935962

2) 运行client 代码

image-20180612005912249

image-20180612005849837

4. ubuntu 下安装 wireshark

乌班图 wireshark安装步骤

sudo apt-get install wireshark

image-20180612090351497

点击否后,继续安装

image-20180612090535053

image-20180612090608226

打开后报错,通过分析,大概意思是没有权限,是因为出于安全方面的考虑,普通用户不能够打开网卡设备进行抓包,wireshark不建议用户通过sudo在root权限下运行

Snipaste_2018-07-20_00-27-04

解决办法:我们提供下面的方法来完成普通用户下的操作。

1)添加wireshark用户组

sudo groupadd  wireshark

image-20180612092510680

2.将dumpcap更改为wireshark用户组

#sudo chgrp wireshark /usr/bin/dumpcap 

image-20180612092629816

3.让wireshark用户组有root权限使用dumpcap

sudo chmod 4755 /usr/bin/dumpcap

image-20180612092755391

4.将需要使用的普通用户名加入wireshark用户组

我的用户是“cai”(需要根据具体用户名修改!在#前面可以找到哟),则需要使用命令:

#sudo gpasswd -a cai wireshark 

image-20180612092941234

最终执行的指令:

image-20180720003000048

5.接下来就可以使用Wireshark 了

接下来你就可以以普通用户登陆打开Wireshark,也会有权限进行抓包了。

image-20180612093159061