GSM SIM READ / UPDATE BINARY command has wrong offset
Summary
GSM SIM READ / UPDATE BINARY command has wrong offset
Sample capture file
Steps to reproduce
Open the attached file in wireshark
What is the current bug behavior?
The offset of the read binary command is wrong.
When the MSB of P1 byte is set to '1', then P1-P2 do not represent the offset., but the SFI (Short File Id)
APDU command:
00 b0 9e 00 12 0b f6 13 00 14 ff 49 e1 f6 a2 9e a3 13 00 14 98 0a 00 90 00
P1P2 = 0x9E00 MSB of P1 = '1'
So the SFI of the EF being read is 0x1E which correspond to '6FE3' EPS location information. A list of SFI can be obtain ETSI TS 131 102 V12.11.0 page 247.
What is the expected correct behavior?
Offset should be zero whenever the MSB of P1 is set to 1. we can display the SFI of the EF being read. Same apply to update binary command. Refer to ETSI TS 102 221 V17.1.0 page 97 for more info.
Build information
Version 4.0.10 (v4.0.10-0-gf5c7c25a81eb).
Compiled (64-bit) using Microsoft Visual Studio 2022 (VC++ 14.37, build 32822),
with GLib 2.72.3, with PCRE2, with zlib 1.2.12, with Qt 5.15.2, with libpcap,
with Lua 5.2.4, with GnuTLS 3.6.3 and PKCS #11 support, with Gcrypt 1.10.1, with
Kerberos (MIT), with MaxMind, with nghttp2 1.46.0, with brotli, with LZ4, with
Zstandard, with Snappy, with libxml2 2.9.14, with libsmi 0.4.8, with
QtMultimedia, with automatic updates using WinSparkle 0.8.0, with AirPcap, with
SpeexDSP (using bundled resampler), with Minizip, with binary plugins.
Running on 64-bit Windows 10 (22H2), build 19045, with Intel(R) Core(TM)
i5-8250U CPU @ 1.60GHz (with SSE4.2), with 16242 MB of physical memory, with
GLib 2.72.3, with PCRE2 10.40 2022-04-14, with Qt 5.15.2, with Npcap version
1.71, based on libpcap version 1.10.2-PRE-GIT, with c-ares 1.18.1, with GnuTLS
3.6.3, with Gcrypt 1.10.1, with nghttp2 1.46.0, with brotli 1.0.9, with LZ4
1.9.3, with Zstandard 1.5.2, without AirPcap, with light display mode, without
HiDPI, with LC_TYPE=English_Mauritius.utf8, binary plugins supported.