12-拓展:Wireshark抓包工具
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。
1. 安装wireshark¶
win10 下安装 wireshark
双击
开始安装,选择是,继续下一步
一路点击 next
会提示安装 winpcap 如下图
点击 next ,一路next 安装即可,最后点击finish 完成
然后继续安装 wireshark ,直到执行结束
2. wireshark的使用¶
软件启动后主界面
可以打开飞秋(端口:2425)测试,点击工具栏行的启动按钮,可以监听到当前计算机上已经建立连接的列表
查看端口为 2425 的连接情况
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()
查看抓取的数据包
User Datagram Protocol 是UDP的全称
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
2) 运行client 代码
4. ubuntu 下安装 wireshark¶
乌班图 wireshark安装步骤
sudo apt-get install wireshark
点击否后,继续安装
打开后报错,通过分析,大概意思是没有权限,是因为出于安全方面的考虑,普通用户不能够打开网卡设备进行抓包,wireshark不建议用户通过sudo在root权限下运行
解决办法:我们提供下面的方法来完成普通用户下的操作。
1)添加wireshark用户组
sudo groupadd wireshark
2.将dumpcap更改为wireshark用户组
#sudo chgrp wireshark /usr/bin/dumpcap
3.让wireshark用户组有root权限使用dumpcap
sudo chmod 4755 /usr/bin/dumpcap
4.将需要使用的普通用户名加入wireshark用户组
我的用户是“cai”(需要根据具体用户名修改!在#前面可以找到哟),则需要使用命令:
#sudo gpasswd -a cai wireshark
最终执行的指令:
5.接下来就可以使用Wireshark 了
接下来你就可以以普通用户登陆打开Wireshark,也会有权限进行抓包了。