Skip to content

Commit bad14cb

Browse files
authoredJan 10, 2019
Merge pull request #1776 from polybassa/gmlan_fixes
Fix a field in the GMLAN RDBPKTI packet
2 parents 3f7c190 + 6a4a1f7 commit bad14cb

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed
 

‎scapy/contrib/automotive/gm/gmlan.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,8 @@ class GMLAN_RDBPKTI(Packet):
324324

325325
fields_desc = [
326326
XByteEnumField('subfunction', 0, subfunctions),
327-
ConditionalField(StrField('request_DPIDs', b''),
327+
ConditionalField(FieldListField('request_DPIDs', [],
328+
XByteField("", 0)),
328329
lambda pkt: pkt.subfunction > 0x0)
329330
]
330331

‎scapy/contrib/automotive/gm/gmlan.uts

+23-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ load_contrib('automotive.gm.gmlan')
1313

1414
+ Basic Packet Tests()
1515
= Set GMLAN ECU AddressingScheme
16+
1617
conf.contribs['GMLAN']['GMLAN_ECU_AddressingScheme'] = 2
17-
conf.contribs['GMLAN']['GMLAN_ECU_AddressingScheme'] == 2
18+
19+
assert conf.contribs['GMLAN']['GMLAN_ECU_AddressingScheme'] == 2
1820

1921
= Craft Packet
2022
x = GMLAN(b'\x52\x02\x01\x16\x71\x00\x00\x0c\xaa\xbb')
@@ -37,6 +39,7 @@ x.memoryAddress == 0x1122
3739
x.dataRecord == b'\x44\x22'
3840

3941
= Craft Packet with ECU AddressingScheme2
42+
x = GMLAN() / GMLAN_RMBA(b'\x11\x22\x44\x22')
4043
y = GMLAN()/GMLAN_RMBA(memoryAddress=0x1122, memorySize=0x4422)
4144
bytes(x) == bytes(y)
4245

@@ -52,6 +55,7 @@ x.memoryAddress == 0x112244
5255
x.dataRecord == b'\x22\x11'
5356

5457
= Craft Packet with ECU AddressingScheme3
58+
x = GMLAN() / GMLAN_RMBA(b'\x11\x22\x44\x22\x11')
5559
y = GMLAN()/GMLAN_RMBA(memoryAddress=0x112244, memorySize=0x2211)
5660
bytes(x) == bytes(y)
5761

@@ -67,6 +71,7 @@ x.memoryAddress == 0x11224422
6771
x.dataRecord == b'\x11\x00'
6872

6973
= Craft Packet with ECU AddressingScheme4
74+
x = GMLAN() / GMLAN_RMBA(b'\x11\x22\x44\x22\x11\x00')
7075
y = GMLAN()/GMLAN_RMBA(memoryAddress=0x11224422, memorySize=0x1100)
7176
bytes(x) == bytes(y)
7277

@@ -189,13 +194,29 @@ x.load == b'deadbeef'
189194
x = GMLAN(b'\xAA\x01deadbeef')
190195
x.service == 0xAA
191196
x.subfunction == 0x01
192-
x.request_DPIDs == b'deadbeef'
197+
x.request_DPIDs == [0x64, 0x65, 0x61, 0x64, 0x62, 0x65, 0x65, 0x66]
198+
199+
= Craft Packet for GMLAN_RDBPKTI3
200+
x = GMLAN(b'\xAA\x02deadbeef')
201+
x.service == 0xAA
202+
x.subfunction == 0x02
203+
x.request_DPIDs == [0x64, 0x65, 0x61, 0x64, 0x62, 0x65, 0x65, 0x66]
204+
205+
= Craft Packet for GMLAN_RDBPKTI4
206+
x = GMLAN(b'\xAA\x03deadbeef')
207+
x.service == 0xAA
208+
x.subfunction == 0x03
209+
x.request_DPIDs == [0x64, 0x65, 0x61, 0x64, 0x62, 0x65, 0x65, 0x66]
193210

194211
= Craft Packet for GMLAN_RDBPKTI2
195212
x = GMLAN(b'\xAA\x00')
196213
x.service == 0xAA
197214
x.subfunction == 0
198215

216+
= Build GMLAN_RDBPKTI1
217+
x = GMLAN()/GMLAN_RDBPKTI(subfunction=1, request_DPIDs=[0x64, 0x65])
218+
assert b"\xaa\x01de" == bytes(x)
219+
199220
= Craft Packet for GMLAN_SA1
200221
x = GMLAN(b'\x27\x01')
201222
x.service == 0x27

0 commit comments

Comments
 (0)
Please sign in to comment.