MCPcopy Index your code
hub / github.com/secdev/scapy / HICPModuleScanResponse

Class HICPModuleScanResponse

scapy/contrib/hicp.py:187–225  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

185
186
187class HICPModuleScanResponse(Packet):
188 name = "Module scan response"
189 fields_desc = [
190 StrField("protocol_version", "1.00"),
191 StrField("fieldbus_type", ""),
192 StrField("module_version", ""),
193 MACField("mac_address", "ff:ff:ff:ff:ff:ff"),
194 IPField("ip_address", "255.255.255.255"),
195 IPField("subnet_mask", "255.255.255.0"),
196 IPField("gateway_address", "0.0.0.0"),
197 StrField("dhcp", "OFF"), # ON or OFF
198 StrField("password", "OFF"), # ON or OFF
199 StrField("hostname", ""),
200 IPField("dns1", "0.0.0.0"),
201 IPField("dns2", "0.0.0.0"),
202 ByteField("padding", 0)
203 ]
204
205 def post_build(self, p, pay):
206 p = []
207 for field in self.fields_desc:
208 if field.name in KEYS:
209 value = getattr(self, field.name)
210 if isinstance(value, bytes):
211 value = value.decode('utf-8')
212 p.append("{0} = {1};".format(KEYS[field.name], value))
213 return "".join(p).encode('utf-8') + b"\x00" + pay
214
215 def do_dissect(self, s):
216 for arg in s.split(b";"):
217 kv = [x.strip().replace(b"\x00", b"") for x in arg.split(b"=")]
218 if len(kv) != 2 or not kv[1]:
219 continue
220 kv[0] = kv[0].decode('utf-8')
221 if kv[0] in KEYS.values():
222 field = [x for x, y in KEYS.items() if y == kv[0]][0]
223 if field == "mac_address":
224 kv[1] = TO_MACFIELD(kv[1].decode('utf-8'))
225 setattr(self, field, kv[1])
226
227
228class HICPModuleScan(Packet):

Callers

nothing calls this directly

Calls 4

StrFieldClass · 0.90
MACFieldClass · 0.90
IPFieldClass · 0.90
ByteFieldClass · 0.90

Tested by

no test coverage detected