Skip to content
Snippets Groups Projects
Commit d88f0f11 authored by Phil's avatar Phil
Browse files

Changed default MTU to be 32767 and made supersocket.recv() argument optional

parent e118a231
No related branches found
No related tags found
No related merge requests found
...@@ -333,7 +333,7 @@ class L3PacketSocket(SuperSocket): ...@@ -333,7 +333,7 @@ class L3PacketSocket(SuperSocket):
for i in self.iff: for i in self.iff:
set_promisc(self.ins, i, 0) set_promisc(self.ins, i, 0)
SuperSocket.close(self) SuperSocket.close(self)
def recv(self, x): def recv(self, x=MTU):
pkt, sa_ll = self.ins.recvfrom(x) pkt, sa_ll = self.ins.recvfrom(x)
if sa_ll[2] == socket.PACKET_OUTGOING: if sa_ll[2] == socket.PACKET_OUTGOING:
return None return None
...@@ -419,7 +419,7 @@ class L2Socket(SuperSocket): ...@@ -419,7 +419,7 @@ class L2Socket(SuperSocket):
self.LL = conf.default_l2 self.LL = conf.default_l2
warning("Unable to guess type (interface=%s protocol=%#x family=%i). Using %s" % (sa_ll[0],sa_ll[1],sa_ll[3],self.LL.name)) warning("Unable to guess type (interface=%s protocol=%#x family=%i). Using %s" % (sa_ll[0],sa_ll[1],sa_ll[3],self.LL.name))
def recv(self, x): def recv(self, x=MTU):
pkt, sa_ll = self.ins.recvfrom(x) pkt, sa_ll = self.ins.recvfrom(x)
if sa_ll[2] == socket.PACKET_OUTGOING: if sa_ll[2] == socket.PACKET_OUTGOING:
return None return None
......
...@@ -101,7 +101,7 @@ if conf.use_pcap: ...@@ -101,7 +101,7 @@ if conf.use_pcap:
def close(self): def close(self):
del(self.ins) del(self.ins)
def recv(self, x): def recv(self, x=MTU):
ll = self.ins.datalink() ll = self.ins.datalink()
if ll in conf.l2types: if ll in conf.l2types:
cls = conf.l2types[ll] cls = conf.l2types[ll]
...@@ -291,7 +291,7 @@ if conf.use_pcap and conf.use_dnet: ...@@ -291,7 +291,7 @@ if conf.use_pcap and conf.use_dnet:
if filter: if filter:
self.ins.setfilter(filter) self.ins.setfilter(filter)
self.outs = dnet.eth(iface) self.outs = dnet.eth(iface)
def recv(self,x): def recv(self,x=MTU):
ll = self.ins.datalink() ll = self.ins.datalink()
if ll in conf.l2types: if ll in conf.l2types:
cls = conf.l2types[ll] cls = conf.l2types[ll]
......
...@@ -187,7 +187,7 @@ class _ATMT_supersocket(SuperSocket): ...@@ -187,7 +187,7 @@ class _ATMT_supersocket(SuperSocket):
if type(s) is not str: if type(s) is not str:
s = str(s) s = str(s)
return self.spa.send(s) return self.spa.send(s)
def recv(self, n=None): def recv(self, n=MTU):
r = self.spa.recv(n) r = self.spa.recv(n)
if self.proto is not None: if self.proto is not None:
r = self.proto(r) r = self.proto(r)
......
...@@ -44,7 +44,7 @@ IPV6_ADDR_UNSPECIFIED = 0x10000 ...@@ -44,7 +44,7 @@ IPV6_ADDR_UNSPECIFIED = 0x10000
MTU = 1600 MTU = 0x7fff # a.k.a give me all you have
# file parsing to get some values : # file parsing to get some values :
......
...@@ -9,6 +9,7 @@ from scapy.config import conf ...@@ -9,6 +9,7 @@ from scapy.config import conf
from scapy.packet import * from scapy.packet import *
from scapy.fields import * from scapy.fields import *
from scapy.supersocket import SuperSocket from scapy.supersocket import SuperSocket
from scapy.data import MTU
class HCI_Hdr(Packet): class HCI_Hdr(Packet):
...@@ -163,7 +164,7 @@ class BluetoothL2CAPSocket(SuperSocket): ...@@ -163,7 +164,7 @@ class BluetoothL2CAPSocket(SuperSocket):
self.ins = self.outs = s self.ins = self.outs = s
def recv(self, x): def recv(self, x=MTU):
return L2CAP_CmdHdr(self.ins.recv(x)) return L2CAP_CmdHdr(self.ins.recv(x))
......
...@@ -27,7 +27,7 @@ class SuperSocket: ...@@ -27,7 +27,7 @@ class SuperSocket:
sx = str(x) sx = str(x)
x.sent_time = time.time() x.sent_time = time.time()
return self.outs.send(sx) return self.outs.send(sx)
def recv(self, x): def recv(self, x=MTU):
return conf.raw_layer(self.ins.recv(x)) return conf.raw_layer(self.ins.recv(x))
def fileno(self): def fileno(self):
return self.ins.fileno() return self.ins.fileno()
...@@ -55,7 +55,7 @@ class L3RawSocket(SuperSocket): ...@@ -55,7 +55,7 @@ class L3RawSocket(SuperSocket):
self.outs = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW) self.outs = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
self.outs.setsockopt(socket.SOL_IP, socket.IP_HDRINCL, 1) self.outs.setsockopt(socket.SOL_IP, socket.IP_HDRINCL, 1)
self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type)) self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type))
def recv(self, x): def recv(self, x=MTU):
return Ether(self.ins.recv(x)).payload return Ether(self.ins.recv(x)).payload
def send(self, x): def send(self, x):
try: try:
......
...@@ -484,7 +484,7 @@ class RawPcapReader: ...@@ -484,7 +484,7 @@ class RawPcapReader:
return pkt return pkt
def read_packet(self): def read_packet(self, size=MTU):
"""return a single packet read from the file """return a single packet read from the file
returns None when no more packets are available returns None when no more packets are available
...@@ -493,7 +493,7 @@ class RawPcapReader: ...@@ -493,7 +493,7 @@ class RawPcapReader:
if len(hdr) < 16: if len(hdr) < 16:
return None return None
sec,usec,caplen,wirelen = struct.unpack(self.endian+"IIII", hdr) sec,usec,caplen,wirelen = struct.unpack(self.endian+"IIII", hdr)
s = self.f.read(caplen) s = self.f.read(caplen)[:MTU]
return s,(sec,usec,wirelen) # caplen = len(s) return s,(sec,usec,wirelen) # caplen = len(s)
...@@ -519,10 +519,10 @@ class RawPcapReader: ...@@ -519,10 +519,10 @@ class RawPcapReader:
res.append(p) res.append(p)
return res return res
def recv(self, size): def recv(self, size=MTU):
""" Emulate a socket """ Emulate a socket
""" """
return self.read_packet()[0] return self.read_packet(size)[0]
def fileno(self): def fileno(self):
return self.f.fileno() return self.f.fileno()
...@@ -540,8 +540,8 @@ class PcapReader(RawPcapReader): ...@@ -540,8 +540,8 @@ class PcapReader(RawPcapReader):
except KeyError: except KeyError:
warning("PcapReader: unknown LL type [%i]/[%#x]. Using Raw packets" % (self.linktype,self.linktype)) warning("PcapReader: unknown LL type [%i]/[%#x]. Using Raw packets" % (self.linktype,self.linktype))
self.LLcls = conf.raw_layer self.LLcls = conf.raw_layer
def read_packet(self): def read_packet(self, size=MTU):
rp = RawPcapReader.read_packet(self) rp = RawPcapReader.read_packet(self,size)
if rp is None: if rp is None:
return None return None
s,(sec,usec,wirelen) = rp s,(sec,usec,wirelen) = rp
...@@ -560,8 +560,8 @@ class PcapReader(RawPcapReader): ...@@ -560,8 +560,8 @@ class PcapReader(RawPcapReader):
res = RawPcapReader.read_all(self, count) res = RawPcapReader.read_all(self, count)
import plist import plist
return plist.PacketList(res,name = os.path.basename(self.filename)) return plist.PacketList(res,name = os.path.basename(self.filename))
def recv(self, size): def recv(self, size=MTU):
return self.read_packet() return self.read_packet(size)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment