scapy
scapy copied to clipboard
RTCP improvements
Hey there! I'm improving #3460 with correct dissection of stacked packets and new RTCP types.
I encountered an issue with BitEnumField(ps_feedback_message_type) being always set to 0.
Here is an example:
from scapy.all import raw
from scapy.contrib.rtcp import RTCP
# ps_feedback_message_type
# (equals 1)
# |
# v
raw_pli = b"\x81\xce\x00\x02\x14\x03\x00\x02\x1a\x68\x98\xf9"
pli = RTCP(raw_pli)
pli.show()
print(raw(pli))
my_pli = RTCP(
version=2,
padding=0,
ps_feedback_message_type=0,
packet_type=206,
sender_ssrc=335740930,
media_source_ssrc= 443062521
)
my_pli.show()
print(raw(my_pli))
assert raw(pli) == raw(my_pli)
Which prints out:
###[ RTCP ]###
version = 2
padding = 0
ps_feedback_message_type= 0
packet_type= Payload-specific FB message
length = 2
sender_ssrc= 335740930
media_source_ssrc= 443062521
b'\x81\xce\x00\x02\x14\x03\x00\x02\x1ah\x98\xf9'
###[ RTCP ]###
version = 2
padding = 0
ps_feedback_message_type= 0
packet_type= Payload-specific FB message
length = None
sender_ssrc= 335740930
media_source_ssrc= 443062521
b'\x80\xce\x00\x02\x14\x03\x00\x02\x1ah\x98\xf9'
Traceback (most recent call last):
File "/home/pavel/work/src/scapy/test.py", line 23, in <module>
assert raw(pli) == raw(my_pli)
AssertionError
First bytes are different, because ps_feedback_message_type is actually equals to 1, but it's 0 in `pli.
What am I doing wrong?