任务一:
问题: 根据教材参考代码,编写有个简单网络抓包工具。要求核心代码和运行结果截图1-2张。
解决办法:
1.在拿到这个任务之后,我去查找如何去编写一个简单的抓包工具,发现python有一个抓包用的库scapy和解析包用到的库dpkt。于是我就打算使用python来进行编写。下面是安装这两个库的截图(由于pip版本不能更新问题导致无法导入库,将近耗费了我一整天的时间修复,头大!)
2.我将代码分为两个部分,一个是抓包文件grab packet.py和一个解析包文件Analysis packet.py,截图如下:
3.首先,抓包文件grab packet.py代码如下:
from scapy.all import * #导入scapy包
def packet_callback(packet): #输出格式
print(packet.show())
dpkt = sniff(filter="tcp src host 192.168.3.62", prn=packet_callback, count=30) #这里指定本地ip地址192.168.3.62,输出格式为上面的packet_callback函数,输出结果为30条
wrpcap("demo.pcap", dpkt) #将抓到的包存储到demo.pcap,是使用dpkt解析包
4.代码执行结果如图所示,我们可以看到生成的demo.pcap,并且从运行的结果中可以看到抓包的结果,其中ttl=128说明本地ip地址是与ip150.138.89.35直接通信,说明我们抓包是很成功的。
5.有了抓到的包的文件,我们就可以使用解析代码来进行数据包的解析了,解析包代码Analysis packet.py如下:
import dpkt
import socket
import datetime
def printPcap(pcap):
try:
for timestamp, buf in pcap: #在pcap文件中,以抓包时间为序显示如下信息
eth = dpkt.ethernet.Ethernet(buf) #获得以太包,即数据链路层包
print("网络层协议:"+eth.data.__class__.__name__) #以太包的数据既是网络层包
print("传输层协议:"+eth.data.data.__class__.__name__) #网络层包的数据既是传输层包
print('时间戳: ', str(datetime.datetime.utcfromtimestamp(timestamp))) #打印出包的抓取时间
if not isinstance(eth.data, dpkt.ip.IP): #出错反馈机制,没有检测到IP包的处理方式
print('无ip包 %s' % eth.data.__class__.__name__)
continue
ip = eth.data
do_not_fragment =bool(ip.off & dpkt.ip.IP_DF)
more_fragments =bool(ip.off & dpkt.ip.IP_MF)
fragment_offset = ip.off & dpkt.ip.IP_OFFMASK
print('IP: %s -> %s (len=%d ttl=%d DF=%d MF=%d offset=%d)' % (socket.inet_ntoa(ip.src), socket.inet_ntoa(ip.dst), ip.len, ip.ttl, do_not_fragment, more_fragments,fragment_offset))
except:
pass
def main():
f =open('demo.pcap','rb')
pcap = dpkt.pcap.Reader(f)
printPcap(pcap)
if __name__ =='__main__':
main()
6.解析包代码运行结果如下,我们可以看到它成功解析出了网络层和传输层的协议,并且正确显示了时间戳:
任务二:
问题: 找一个网站或者搭建一个本地网站,登录网站,并嗅探,分析出账号和密码,结果截图1-2张。可以用邮箱、各类博客、云班课,只能分析自己的账号,严禁做各类攻击,否则后果自负。
解决办法:
1.在网上搜了好久使用http明文网站,最终终于找到了一个龙珠直播,网站界面截图如下:
2.开启windows端的wireshark,并选取我正在使用的网络WLAN2,截图如下:
3.按要求注册时候,登录帐号,截图如下:
4.到wireshark进行查看http追踪流,发现帐号与密码,截图如下:
5.在实验完成后,安全起见,我修改了密码......
任务三:
问题: 加分项2分:注意本次加分项不加到额外10分里,加到本次实验中。例如,本次实验7分,算上加分可得9分。抓取手机App的登录过程数据包,分析账号和密码。
*解决办法:
1.首先开启win10自带的无线热点功能,手机关掉移动数据,连接电脑热点,再进行ip核对,过程截图如下:
2.和朋友打听那种不是大众知晓,需要账号密码登录的app,定位到了in
APP,于是我注册并登录app,并在windowns端查看wireshark抓取的数据包,我们在http流中可以看到我手机的型号,系统版本号等等信息,过程截图如下:
3.我想通过wireshark来查看是否将我输入的帐号密码明文显示,结果发现并不是,是采用了加密算法的,我目前没有能力去破解,截图如下:
4.于是,我通过查看建国同学的博客得知,合肥轨道 app是可以铭文获取账号的,然后密码是采用base64加密,我便去尝试一番,过程截图如下:
果不其然,通过wirdshark可以看到,该app账号采用明文传输,密码采用base64加密:
5.在网址https://base64.supfree.net/中,将上面的经过加密的密码进行解码,在第二次就能得到我的密码,可见这个app安全防范是很一般的。