Skip to content

Commit 61ea74e

Browse files
committed
fixing transport layer extraction issue
Signed-off-by: Jarry Shaw <jarryshaw@icloud.com>
1 parent d70b98e commit 61ea74e

File tree

4 files changed

+531
-79
lines changed

4 files changed

+531
-79
lines changed

pcapkit/protocols/internet/internet.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
from pcapkit.const.reg.transtype import TransType as Enum_TransType
1818
from pcapkit.corekit.module import ModuleDescriptor
1919
from pcapkit.corekit.protochain import ProtoChain
20-
from pcapkit.protocols.protocol import _PT, _ST
2120
from pcapkit.protocols.protocol import ProtocolBase as Protocol
21+
from pcapkit.protocols.protocol import _PT, _ST
2222
from pcapkit.utilities.decorators import beholder
2323
from pcapkit.utilities.exceptions import RegistryError
2424
from pcapkit.utilities.warnings import RegistryWarning, warn
@@ -227,7 +227,7 @@ def _import_next_layer(self, proto: 'int', length: 'Optional[int]' = None, *, #
227227
if TYPE_CHECKING:
228228
protocol: 'Type[Protocol]'
229229

230-
if payload is not None:
230+
if payload is None:
231231
file_ = self.__header__.get_payload()
232232
else:
233233
file_ = payload

sample/out.json

Lines changed: 163 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -177,13 +177,51 @@
177177
},
178178
"src": "123.129.210.135",
179179
"dst": "192.168.1.100",
180-
"raw": {
181-
"protocol": null,
182-
"error": "'int' object has no attribute 'port'",
180+
"tcp": {
181+
"srcport": {
182+
"enum": "AppType::www_http [www-http [80 - tcp|udp]]",
183+
"svc": "www-http",
184+
"port": 80,
185+
"proto": "TransportProtocol::tcp|udp [3]"
186+
},
187+
"dstport": {
188+
"enum": "AppType::PORT_55232_tcp [unknown [55232 - tcp]]",
189+
"svc": "unknown",
190+
"port": 55232,
191+
"proto": "TransportProtocol::tcp [1]"
192+
},
193+
"seq": 3584012628,
194+
"ack": 2793054463,
195+
"hdr_len": 20,
196+
"flags": {
197+
"cwr": false,
198+
"ece": false,
199+
"urg": false,
200+
"ack": true,
201+
"psh": false,
202+
"rst": false,
203+
"syn": false,
204+
"fin": true
205+
},
206+
"window_size": 31920,
207+
"checksum": {
208+
"type": "bytes",
209+
"value": "|\ufffd",
210+
"hex": "7c8e"
211+
},
212+
"urgent_pointer": 0,
213+
"connection": "Flags::ACK|FIN [34816]",
214+
"nopayload": {
215+
"packet": {
216+
"type": "bytes",
217+
"value": "",
218+
"hex": ""
219+
}
220+
},
183221
"packet": {
184222
"type": "bytes",
185-
"value": "\u0000P\ufffd\ufffd\u055f\ufffdT\ufffdz\ufffd\ufffdP\u0011|\ufffd|\ufffd\u0000\u0000",
186-
"hex": "0050d7c0d59fb154a67aa0ff50117cb07c8e0000"
223+
"value": "",
224+
"hex": ""
187225
}
188226
},
189227
"packet": {
@@ -198,7 +236,7 @@
198236
"hex": "45000028c53440002b067a867b81d287c0a801640050d7c0d59fb154a67aa0ff50117cb07c8e0000"
199237
}
200238
},
201-
"protocols": "Ethernet:IPv4:Raw",
239+
"protocols": "Ethernet:IPv4:TCP",
202240
"packet": {
203241
"type": "bytes",
204242
"value": "\ufffd\ufffd\u0011Z\ufffd\ufffd\u000b\u00006\u0000\u0000\u00006\u0000\u0000\u0000\ufffd\ufffd\ufffd\ufffd\ufffdG\ufffd^`\ufffdk\ufffd\u0008\u0000E\u0000\u0000(\u0000\u0000@\u0000@\u0006*\ufffd\ufffd\ufffd\u0001d{\ufffd\u0487\ufffd\ufffd\u0000P",
@@ -247,13 +285,51 @@
247285
},
248286
"src": "192.168.1.100",
249287
"dst": "123.129.210.135",
250-
"raw": {
251-
"protocol": null,
252-
"error": "'int' object has no attribute 'port'",
288+
"tcp": {
289+
"srcport": {
290+
"enum": "AppType::PORT_55232_tcp [unknown [55232 - tcp]]",
291+
"svc": "unknown",
292+
"port": 55232,
293+
"proto": "TransportProtocol::tcp [1]"
294+
},
295+
"dstport": {
296+
"enum": "AppType::www_http [www-http [80 - tcp|udp]]",
297+
"svc": "www-http",
298+
"port": 80,
299+
"proto": "TransportProtocol::tcp|udp [3]"
300+
},
301+
"seq": 2793054463,
302+
"ack": 3584012629,
303+
"hdr_len": 20,
304+
"flags": {
305+
"cwr": false,
306+
"ece": false,
307+
"urg": false,
308+
"ack": true,
309+
"psh": false,
310+
"rst": false,
311+
"syn": false,
312+
"fin": false
313+
},
314+
"window_size": 65535,
315+
"checksum": {
316+
"type": "bytes",
317+
"value": "\ufffd>",
318+
"hex": "f93e"
319+
},
320+
"urgent_pointer": 0,
321+
"connection": "Flags::ACK [2048]",
322+
"nopayload": {
323+
"packet": {
324+
"type": "bytes",
325+
"value": "",
326+
"hex": ""
327+
}
328+
},
253329
"packet": {
254330
"type": "bytes",
255-
"value": "\ufffd\ufffd\u0000P\ufffdz\ufffd\ufffd\u055f\ufffdUP\u0010\ufffd\ufffd\ufffd>\u0000\u0000",
256-
"hex": "d7c00050a67aa0ffd59fb1555010fffff93e0000"
331+
"value": "",
332+
"hex": ""
257333
}
258334
},
259335
"packet": {
@@ -268,7 +344,7 @@
268344
"hex": "450000280000400040062abbc0a801647b81d287d7c00050a67aa0ffd59fb1555010fffff93e0000"
269345
}
270346
},
271-
"protocols": "Ethernet:IPv4:Raw",
347+
"protocols": "Ethernet:IPv4:TCP",
272348
"packet": {
273349
"type": "bytes",
274350
"value": "\ufffd\ufffd\u0011Z8\ufffd\r\u00006\u0000\u0000\u00006\u0000\u0000\u0000\ufffd\ufffd\ufffd\ufffd\ufffdG\ufffd^`\ufffdk\ufffd\u0008\u0000E\u0000\u0000(\u0000\u0000@\u0000@\u0006*\ufffd\ufffd\ufffd\u0001d{\ufffd\u0487\u05f0\u0000P",
@@ -317,13 +393,51 @@
317393
},
318394
"src": "192.168.1.100",
319395
"dst": "123.129.210.135",
320-
"raw": {
321-
"protocol": null,
322-
"error": "'int' object has no attribute 'port'",
396+
"tcp": {
397+
"srcport": {
398+
"enum": "AppType::PORT_55216_tcp [unknown [55216 - tcp]]",
399+
"svc": "unknown",
400+
"port": 55216,
401+
"proto": "TransportProtocol::tcp [1]"
402+
},
403+
"dstport": {
404+
"enum": "AppType::www_http [www-http [80 - tcp|udp]]",
405+
"svc": "www-http",
406+
"port": 80,
407+
"proto": "TransportProtocol::tcp|udp [3]"
408+
},
409+
"seq": 768904481,
410+
"ack": 1835365486,
411+
"hdr_len": 20,
412+
"flags": {
413+
"cwr": false,
414+
"ece": false,
415+
"urg": false,
416+
"ack": true,
417+
"psh": false,
418+
"rst": false,
419+
"syn": false,
420+
"fin": true
421+
},
422+
"window_size": 65535,
423+
"checksum": {
424+
"type": "bytes",
425+
"value": "*\ufffd",
426+
"hex": "2af4"
427+
},
428+
"urgent_pointer": 0,
429+
"connection": "Flags::ACK|FIN [34816]",
430+
"nopayload": {
431+
"packet": {
432+
"type": "bytes",
433+
"value": "",
434+
"hex": ""
435+
}
436+
},
323437
"packet": {
324438
"type": "bytes",
325-
"value": "\u05f0\u0000P-\u050d!metnP\u0011\ufffd\ufffd*\ufffd\u0000\u0000",
326-
"hex": "d7b000502dd48d216d65746e5011ffff2af40000"
439+
"value": "",
440+
"hex": ""
327441
}
328442
},
329443
"packet": {
@@ -338,7 +452,7 @@
338452
"hex": "450000280000400040062abbc0a801647b81d287d7b000502dd48d216d65746e5011ffff2af40000"
339453
}
340454
},
341-
"protocols": "Ethernet:IPv4:Raw",
455+
"protocols": "Ethernet:IPv4:TCP",
342456
"packet": {
343457
"type": "bytes",
344458
"value": "\ufffd\ufffd\u0011Z\u0013\u0005\u0001\u0000\ufffd\u0000\u0000\u0000\ufffd\u0000\u0000\u0000\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdG\u0008\u0000E\u0000\u0000\ufffd\u0000\u0000@\u0000@\u0011x\ufffd\ufffd\ufffd\u0001\u0001\ufffd\ufffd\ufffd\ufffd\ufffdD\u0013\ufffd",
@@ -387,13 +501,38 @@
387501
},
388502
"src": "192.168.1.1",
389503
"dst": "255.255.255.255",
390-
"raw": {
391-
"protocol": null,
392-
"error": "'int' object has no attribute 'port'",
504+
"udp": {
505+
"srcport": {
506+
"enum": "AppType::unassigned_37444 [unassigned [37444 - undefined]]",
507+
"svc": "unassigned",
508+
"port": 37444,
509+
"proto": "TransportProtocol::undefined [0]"
510+
},
511+
"dstport": {
512+
"enum": "AppType::commplex_link [commplex-link [5001 - tcp|udp]]",
513+
"svc": "commplex-link",
514+
"port": 5001,
515+
"proto": "TransportProtocol::tcp|udp [3]"
516+
},
517+
"len": 125,
518+
"checksum": {
519+
"type": "bytes",
520+
"value": "c\ufffd",
521+
"hex": "63b1"
522+
},
523+
"raw": {
524+
"protocol": null,
525+
"error": null,
526+
"packet": {
527+
"type": "bytes",
528+
"value": "\u0001\u0001\u000e\u0000\ufffd+\ufffd\ufffd\ufffd\ufffd\u0000g\u0000\u0000\u0000\u0006\u0000\nTL-WDR6300\u0000\u000b\u0000\u00036.0\u0000\u0007\u0000\u0001\u0001\u0000\u0005\u0000\u0011B8-F8-83-A5-F9-47\u0000\u0008\u0000\u000b192.168.1.1\u0000\t\u0000\ntplogin.cn\u0000\n\u0000\u000eTL-WDR6300 6.0\u0000\f\u0000\u00051.7.4",
529+
"hex": "01010e00e12b83c7f98b006700000006000a544c2d57445236333030000b0003362e3000070001010005001142382d46382d38332d41352d46392d34370008000b3139322e3136382e312e310009000a74706c6f67696e2e636e000a000e544c2d5744523633303020362e30000c0005312e372e34"
530+
}
531+
},
393532
"packet": {
394533
"type": "bytes",
395-
"value": "\ufffdD\u0013\ufffd\u0000}c\ufffd\u0001\u0001\u000e\u0000\ufffd+\ufffd\ufffd\ufffd\ufffd\u0000g\u0000\u0000\u0000\u0006\u0000\nTL-WDR6300\u0000\u000b\u0000\u00036.0\u0000\u0007\u0000\u0001\u0001\u0000\u0005\u0000\u0011B8-F8-83-A5-F9-47\u0000\u0008\u0000\u000b192.168.1.1\u0000\t\u0000\ntplogin.cn\u0000\n\u0000\u000eTL-WDR6300 6.0\u0000\f\u0000\u00051.7.4",
396-
"hex": "92441389007d63b101010e00e12b83c7f98b006700000006000a544c2d57445236333030000b0003362e3000070001010005001142382d46382d38332d41352d46392d34370008000b3139322e3136382e312e310009000a74706c6f67696e2e636e000a000e544c2d5744523633303020362e30000c0005312e372e34"
534+
"value": "\u0001\u0001\u000e\u0000\ufffd+\ufffd\ufffd\ufffd\ufffd\u0000g\u0000\u0000\u0000\u0006\u0000\nTL-WDR6300\u0000\u000b\u0000\u00036.0\u0000\u0007\u0000\u0001\u0001\u0000\u0005\u0000\u0011B8-F8-83-A5-F9-47\u0000\u0008\u0000\u000b192.168.1.1\u0000\t\u0000\ntplogin.cn\u0000\n\u0000\u000eTL-WDR6300 6.0\u0000\f\u0000\u00051.7.4",
535+
"hex": "01010e00e12b83c7f98b006700000006000a544c2d57445236333030000b0003362e3000070001010005001142382d46382d38332d41352d46392d34370008000b3139322e3136382e312e310009000a74706c6f67696e2e636e000a000e544c2d5744523633303020362e30000c0005312e372e34"
397536
}
398537
},
399538
"packet": {
@@ -408,7 +547,7 @@
408547
"hex": "4500009100004000401178b3c0a80101ffffffff92441389007d63b101010e00e12b83c7f98b006700000006000a544c2d57445236333030000b0003362e3000070001010005001142382d46382d38332d41352d46392d34370008000b3139322e3136382e312e310009000a74706c6f67696e2e636e000a000e544c2d5744523633303020362e30000c0005312e372e34"
409548
}
410549
},
411-
"protocols": "Ethernet:IPv4:Raw",
550+
"protocols": "Ethernet:IPv4:UDP:Raw",
412551
"packet": {
413552
"type": "bytes",
414553
"value": "",

0 commit comments

Comments
 (0)