diff options
-rw-r--r-- | usb/ncr-dispenser.lua | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/usb/ncr-dispenser.lua b/usb/ncr-dispenser.lua index c81b085..8494b11 100644 --- a/usb/ncr-dispenser.lua +++ b/usb/ncr-dispenser.lua @@ -1,4 +1,5 @@ -- declare some Fields to be read +usb_hl_f = Field.new("usb.usbpcap_header_len") usb_tt_f = Field.new("usb.transfer_type") usb_dl_f = Field.new("usb.data_len") @@ -31,18 +32,23 @@ dispenser_proto.fields = { -- create a function to "postdissect" each frame function dispenser_proto.dissector(buffer,pinfo,tree) -- obtain the current values the protocol fields + local usb_hl = usb_hl_f() local usb_tt = usb_tt_f() local usb_dl = usb_dl_f() if usb_tt.value == 0x01 and usb_dl.value >= 63 then - local magic = buffer(64 + 8,2) + local off = 64 + if usb_hl then + off = usb_hl.value + end + local magic = buffer(off + 8,2) if magic:le_uint() == 0xbeef then local subtree = tree:add(dispenser_proto, "NCR S1 Dispenser") - subtree:add(u00_00_F, buffer(64 + 0x00,1)) - subtree:add(u01_07_F, buffer(64 + 0x01,7)) - subtree:add_le( magic_F, magic) - subtree:add(u0a_0f_F, buffer(64 + 0x0a,6)) - subtree:add(u10_17_F, buffer(64 + 0x10,8)) - subtree:add(u18_1f_F, buffer(64 + 0x18,8)) + subtree:add(u00_00_F, buffer(off + 0x00,1)) + subtree:add(u01_07_F, buffer(off + 0x01,7)) + subtree:add_le(magic_F, magic) + subtree:add(u0a_0f_F, buffer(off + 0x0a,6)) + subtree:add(u10_17_F, buffer(off + 0x10,8)) + subtree:add(u18_1f_F, buffer(off + 0x18,8)) end end end |