Public bug reported:
The scapy sniff() function loads a BPF program into the kernel which apparently
fails to load on s390x (Ubuntu 20.04).
Contact Information = Alexander Schmidt
---uname output---
Linux pok1-qz1-sr1-rk011-s21 5.4.0-51-generic #56-Ubuntu SMP Mon Oct 5 14:25:32
UTC 2020 s390x s390x s390x GNU/Linux
Machine Type = 8562
---Steps to Reproduce---
root@e4943f38d89b:/# cat /bin/tlb.py
#!/usr/bin/env python
import argparse
from scapy.all import scapy, sniff, Ether, IP, TCP
def tlb_sniff_cb(dip, dport):
def send_pkt_to_target_vm(x):
x[Ether].src = x[Ether].dst
x[Ether].dst = None
del x[IP].chksum
x[IP].dst = dip
if x.haslayer(TCP):
del x[TCP].chksum
x[TCP].dport = dport
scapy.sendrecv.sendp(x)
return send_pkt_to_target_vm
def main():
parser = argparse.ArgumentParser(description="TLB Simulator")
parser.add_argument("dip", help="IP address of the target VM")
parser.add_argument("dport", type=int, help="Dst port")
parser.add_argument("lport", type=int, help="lb listener port")
args = parser.parse_args()
sniff(filter="dst port " + str(args.lport),
prn=tlb_sniff_cb(args.dip, args.dport))
if __name__ == "__main__":
main()
root@e4943f38d89b:/# python /bin/tlb.py 191.168.100.100 81 2001
Traceback (most recent call last):
File "/bin/tlb.py", line 33, in <module>
main()
File "/bin/tlb.py", line 29, in main
sniff(filter="dst port " + str(args.lport), prn=tlb_sniff_cb(args.dip,
args.dport))
File "/usr/lib/python2.7/dist-packages/scapy/sendrecv.py", line 731, in sniff
*arg, **karg)] = iface
File "/usr/lib/python2.7/dist-packages/scapy/arch/linux.py", line 578, in
__init__
attach_filter(self.ins, filter, iface)
File "/usr/lib/python2.7/dist-packages/scapy/arch/linux.py", line 165, in
attach_filter
s.setsockopt(socket.SOL_SOCKET, SO_ATTACH_FILTER, bp)
File "/usr/lib/python2.7/socket.py", line 229, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 22] Invalid argument
Stack trace output:
no
Oops output:
no
System Dump Info:
The system is not configured to capture a system dump.
*Additional Instructions for Alexander Schmidt:
-Attach sysctl -a output output to the bug.
Upstream is fixed:
https://github.com/secdev/scapy/commit/474eb1f6930601e444227445f9e315b35c06a996.
It's a bit more complicated than s/int/ushort/, because that would break
FreeBSD.
This should be picked up by Canonical
** Affects: scapy (Ubuntu)
Importance: Undecided
Assignee: Skipper Bug Screeners (skipper-screen-team)
Status: New
** Tags: architecture-s39064 bugnameltc-188965 severity-medium
targetmilestone-inin20041
** Tags added: architecture-s39064 bugnameltc-188965 severity-medium
targetmilestone-inin20041
** Changed in: ubuntu
Assignee: (unassigned) => Skipper Bug Screeners (skipper-screen-team)
** Package changed: ubuntu => scapy (Ubuntu)
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1908280
Title:
Ubuntu 20.04: scapy fails to load BPF program
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/scapy/+bug/1908280/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs