laforge has posted comments on this change by laforge. ( https://gerrit.osmocom.org/c/pysim/+/41973?usp=email )
Change subject: es9p_client: Fix type conversion in installation result notification
......................................................................
Patch Set 1: Code-Review+2
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/41973?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I83ad047e043dc6b3462b188ce6dd0b2cc0e52e87
Gerrit-Change-Number: 41973
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Comment-Date: Sat, 31 Jan 2026 01:23:09 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
laforge has submitted this change. ( https://gerrit.osmocom.org/c/pysim/+/37925?usp=email )
Change subject: pySim-trace: pySim.apdu_source.stdin_hex
......................................................................
pySim-trace: pySim.apdu_source.stdin_hex
This introduces an "APDU source" for pySim-trace which enables the
decoding of APDUs that are copy+pasted from elsewhere, for example
APDU logs in text form created by proprietary tools, or to decode
personalization scripts or the like.
Change-Id: I5aacf13b7c27cea9efd42f01dacca61068c3aa33
---
M pySim-trace.py
A pySim/apdu_source/stdin_hex.py
2 files changed, 46 insertions(+), 0 deletions(-)
Approvals:
dexter: Looks good to me, approved; Verified
laforge: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/pySim-trace.py b/pySim-trace.py
index 09e9584..0aa1e9c 100755
--- a/pySim-trace.py
+++ b/pySim-trace.py
@@ -23,6 +23,7 @@
from pySim.apdu_source.pyshark_rspro import PysharkRsproPcap, PysharkRsproLive
from pySim.apdu_source.pyshark_gsmtap import PysharkGsmtapPcap
from pySim.apdu_source.tca_loader_log import TcaLoaderLogApduSource
+from pySim.apdu_source.stdin_hex import StdinHexApduSource
from pySim.apdu.ts_102_221 import UiccSelect, UiccStatus
@@ -190,6 +191,10 @@
parser_tcaloader_log.add_argument('-f', '--log-file', required=True,
help='Name of the log file to be read')
+parser_stdin_hex = subparsers.add_parser('stdin-hex', help="""
+ Read APDUs as hex-string from stdin.""")
+
+
if __name__ == '__main__':
opts = option_parser.parse_args()
@@ -205,6 +210,8 @@
s = PysharkGsmtapPcap(opts.pcap_file)
elif opts.source == 'tca-loader-log':
s = TcaLoaderLogApduSource(opts.log_file)
+ elif opts.source == 'stdin-hex':
+ s = StdinHexApduSource()
else:
raise ValueError("unsupported source %s", opts.source)
diff --git a/pySim/apdu_source/stdin_hex.py b/pySim/apdu_source/stdin_hex.py
new file mode 100644
index 0000000..67eeb7d
--- /dev/null
+++ b/pySim/apdu_source/stdin_hex.py
@@ -0,0 +1,39 @@
+# coding=utf-8
+
+# (C) 2024 by Harald Welte <laforge(a)osmocom.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+from pySim.utils import h2b
+
+from pySim.apdu.ts_102_221 import ApduCommands as UiccApduCommands
+from pySim.apdu.ts_102_222 import ApduCommands as UiccAdmApduCommands
+from pySim.apdu.ts_31_102 import ApduCommands as UsimApduCommands
+from pySim.apdu.global_platform import ApduCommands as GpApduCommands
+
+from . import ApduSource, PacketType, CardReset
+
+ApduCommands = UiccApduCommands + UiccAdmApduCommands + UsimApduCommands + GpApduCommands
+
+class StdinHexApduSource(ApduSource):
+ """ApduSource for reading apdu hex-strings from stdin."""
+
+ def read_packet(self) -> PacketType:
+ while True:
+ command = input("C-APDU >")
+ if len(command) == 0:
+ continue
+ response = '9000'
+ return ApduCommands.parse_cmd_bytes(h2b(command) + h2b(response))
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/37925?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I5aacf13b7c27cea9efd42f01dacca61068c3aa33
Gerrit-Change-Number: 37925
Gerrit-PatchSet: 8
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Attention is currently required from: neels.
laforge has posted comments on this change by neels. ( https://gerrit.osmocom.org/c/pysim/+/40096?usp=email )
Change subject: personalization: add param_source.py, implement batch personalization
......................................................................
Patch Set 10:
(3 comments)
File pySim/esim/saip/param_source.py:
https://gerrit.osmocom.org/c/pysim/+/40096/comment/b72f1045_0a1b2da0?usp=em… :
PS10, Line 50:
This is dead code. You would just write `pass` here as it is impossible to instantiate an instance of an ABC-inheriting class without overriding all the abstractmethods in that derived class.
https://gerrit.osmocom.org/c/pysim/+/40096/comment/e47f088e_2679bd4c?usp=em… :
PS10, Line 84:
likewise here, just `pass` will do.
File pySim/esim/saip/personalization.py:
https://gerrit.osmocom.org/c/pysim/+/40096/comment/9c3482f5_4e1f1342?usp=em… :
PS10, Line 705: def __init__(self,
highly unusual formatting which we don't do this way in any other part o the code. Do we really need those kind of cosmetic experiments? Also, we use spaces between name of the parameter and the type annotation. I'm not sure why code added doesn't just by default always uses the surrounding style without any attempt to do something different.
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/40096?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I497c60c101ea0eea980e8b1a4b1f36c0eda39002
Gerrit-Change-Number: 40096
Gerrit-PatchSet: 10
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Comment-Date: Fri, 30 Jan 2026 19:38:26 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No