Changeset 3672
- Timestamp:
- 08/29/08 19:55:26 (5 years ago)
- Location:
- branch/PacketManipulator/PM/Backend/Scapy
- Files:
-
- 2 modified
-
Context/Sequence.py (modified) (3 diffs)
-
serialize.py (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branch/PacketManipulator/PM/Backend/Scapy/Context/Sequence.py
r3636 r3672 23 23 24 24 from PM.Core.I18N import _ 25 from PM.Backend.Scapy.serialize import load_sequence, save_sequence 25 26 from PM.Backend.Scapy.utils import execute_sequence 26 27 … … 28 29 29 30 class SequenceContext(BaseSequenceContext): 31 file_types = [(_('Scapy sequence'), '*.pms')] 32 30 33 def __init__(self, seq, count, inter, iface, strict, report_recv, report_sent, 31 34 scallback, rcallback, sudata=None, rudata=None): … … 40 43 self.title = _('Unsaved') 41 44 self.summary = _('Executing sequence (%d packets %d times)') % (self.tot_packet_count, count) 45 46 def save(self): 47 if self.cap_file: 48 self.seq = self.load_sequence(self.cap_file) 49 50 if self.seq is not None: 51 self.state = self.SAVED 52 return True 53 54 self.state = self.NOT_SAVED 55 return False 56 57 def load(self): 58 if self.cap_file and self.seq is not None and \ 59 save_sequence(self.cap_file, self.seq): 60 61 self.state = self.SAVED 62 return True 63 64 self.state = self.NOT_SAVED 65 return False 42 66 43 67 def get_all_data(self): -
branch/PacketManipulator/PM/Backend/Scapy/serialize.py
r3666 r3672 24 24 25 25 from PM.Core.Atoms import Node 26 27 from PM import Backend 26 from PM.Core.Logger import log 27 28 from PM.Backend.Scapy import * 28 29 from PM.Backend import SequencePacket 29 30 … … 62 63 self.protocol.time = self.current_protocol.time 63 64 64 self.current_node.data.packet = Backend.MetaPacket(self.protocol)65 self.current_node.data.packet = MetaPacket(self.protocol) 65 66 self.protocol = self.current_protocol = None 66 67 … … 92 93 proto_time = eval(attrs['time']) 93 94 94 protocol = Backend.get_proto(proto_id)()95 protocol = get_proto(proto_id)() 95 96 protocol.time = proto_time 96 97 … … 149 150 value = self.field_value 150 151 151 field = Backend.get_proto_field(self.current_protocol,152 field = get_proto_field(self.current_protocol, 152 153 self.field_id) 153 154 154 Backend.set_field_value(self.current_protocol, field, value)155 set_field_value(self.current_protocol, field, value) 155 156 156 157 class SequenceWriter(object): … … 237 238 238 239 for proto in protocols: 239 attr_vals = {(None, u'id') : Backend.get_proto_name(proto),240 attr_vals = {(None, u'id') : get_proto_name(proto), 240 241 (None, u'time') : "%.6f" % proto.time} 241 242 attr_qnames = {(None, u'id') : u'id', (None, u'time') : u'time'} … … 245 246 246 247 247 for field in Backend.get_proto_fields(proto):248 name = Backend.get_field_name(field)249 value = Backend.get_field_value(proto, field)248 for field in get_proto_fields(proto): 249 name = get_field_name(field) 250 value = get_field_value(proto, field) 250 251 251 252 attr_vals = {(None, u'id') : name} … … 262 263 self.endElementNS((None, 'proto'), 'proto') 263 264 265 def save_sequence(fname, sequence): 266 assert isinstance(sequence, Node) 267 268 try: 269 SequenceWriter(fname, sequence) 270 except Exception, err: 271 log.debug("Cannot save sequence to file %s (%s)" % (fname, str(err))) 272 return False 273 else: 274 return True 275 276 def load_sequence(fname): 277 try: 278 tree = SequenceLoader("test.xml").tree 279 return tree 280 except Exception, err: 281 log.debug("Cannot load sequence from file %s (%s)" % (fname, str(err))) 282 return None 283 264 284 if __name__ == "__main__": 265 285 tree = Node() 266 first = Node(SequencePacket( Backend.MetaPacket(Backend.Ether() / Backend.IP() / Backend.TCP())))267 first.append_node(Node(SequencePacket( Backend.MetaPacket(Backend.IP()))))286 first = Node(SequencePacket(MetaPacket(Ether() / IP() / TCP()))) 287 first.append_node(Node(SequencePacket(MetaPacket(IP())))) 268 288 269 289 tree.append_node(first)
