python kamena(scapy)修改pcap包

原本有人分析过viber的聊天报文,是两个字节开头,而后加上标准rtp流的,不知道新的viber是不是依旧这样,粗略从流量上看是的,但是不靠谱啊,怎么办呢,写个工具,把前面两个字节的头剥了,看看后面的能不能解析成rtp之后播放。

语言选择:python3.6 已有环境 anaconda3

先下载

pip install scapy-python3

这里下载完之后用不了,错误信息大概就是不支持我这个版本的python吧,看了下换了个下载:

pip3 install kamene 

成功了。而后进行读取后删除应用层数据前两个字节吧。

初始代码如下:

from kamene.all import *
with PcapReader('vibervoip.pcap') as pcap_reader:
    writers = PcapWriter('test.pcap')
    Raw = b'\x80'
    for pkt in pcap_reader:
        if 'UDP' in pkt:     
            if pkt.haslayer('Raw'):   #读取应用层数据
                Raw = bytes(pkt['Raw'])
                Raw2 = Raw[2:]     #分片的方式删除前两个字节
                pkt['Raw'] = Raw2      
                writers.write(pkt)       
    writers.flush()
    writers.close()     

   
    

结果切出来的有问题,打开之后发现是由于单纯的修改了应用层长度,其他相应的也要修改,如图:

再把另外两个地方的数据改了试试。

from kamene.all import *


with PcapReader('vibervoip.pcap') as pcap_reader:
    
    #writers = PcapWriter('test.pcap')
    writers2 = PcapWriter('test2.pcap')
    
    for pkt in pcap_reader:
        if 'UDP' in pkt:
            if pkt.haslayer('Raw'):
                Raw = bytes(pkt['Raw'])
                Raw2 = Raw[2:]
                temp = b'\xb2\x04\x80'
                Rawtemp = Raw[:3]
                if Rawtemp == temp:
                    pkt['Raw'] = Raw2
                    UDPtemp = bytes(pkt['UDP'])
                    UDPtemp2 = bytearray(UDPtemp)
                    UDPtemp2[5] = UDPtemp2[5] - 2
                    UDPtemp3 = bytes(UDPtemp2)
                    pkt['UDP'] = UDPtemp3
                    
                    
                    Iptemp = bytes(pkt['IP'])
                    Iptemp2 = bytearray(Iptemp)
                    Iptemp2[3] = Iptemp2[3] - 2
                    Iptemp3 = bytes(Iptemp2)             
                    pkt['IP'] = Iptemp3
                    
                    writers2.write(pkt)
                   
                
            
    writers2.flush()
    writers2.close() 

这里用的时候遇到一个问题,应该是库写的不完善吧,修改原来的包的时候,只能从下层往上层的顺序修改,如 raw-> UDP -> IP的顺序,否则会找不到层。后面具体再分析为什么吧有时间的话。

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值