• 实践三 网络嗅探与协议分析


    任务一:

    问题: 根据教材参考代码,编写有个简单网络抓包工具。要求核心代码和运行结果截图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,定位到了inAPP,于是我注册并登录app,并在windowns端查看wireshark抓取的数据包,我们在http流中可以看到我手机的型号,系统版本号等等信息,过程截图如下:

    3.我想通过wireshark来查看是否将我输入的帐号密码明文显示,结果发现并不是,是采用了加密算法的,我目前没有能力去破解,截图如下:

    4.于是,我通过查看建国同学的博客得知,合肥轨道 app是可以铭文获取账号的,然后密码是采用base64加密,我便去尝试一番,过程截图如下:

    果不其然,通过wirdshark可以看到,该app账号采用明文传输,密码采用base64加密:

    5.在网址https://base64.supfree.net/中,将上面的经过加密的密码进行解码,在第二次就能得到我的密码,可见这个app安全防范是很一般的。

  • 相关阅读:
    基础语法;
    layabox里面的ui组件之RadioGroup
    github删除带有文件的文件夹
    【转】NHibernate:no persister for 异常
    MVC乱码可能的原因
    【转】局域网内访问VS2012 调试的IIS Express web服务器
    Hightchart y轴不允许显示小数
    WCF 断点不会命中
    Web Form 取消手机端自动转换
    Sharepoint的javascript客户端对象模型获取其他站点的list
  • 原文地址:https://www.cnblogs.com/j1551163790/p/12586692.html
Copyright © 2020-2023  润新知