1 Commits
Author SHA1 Message Date
catarrh 5fcd8e9fd6 Relicense to MIT (v2.7.13)
Release / release (push) Waiting to run
The project's only runtime dependency is PyUSB (BSD-3-Clause) and it bundles
no third-party code (the PWA's DES/3DES is written from the FIPS 46-3 tables,
AES uses WebCrypto, the decoders come from the ISO 7816/ETSI/3GPP specs), so
nothing forced GPL; the GPL-2.0-or-later declaration is replaced with MIT.

- LICENSE: the MIT text, Copyright (c) 2026 Anton Troshin.
- pyproject: license = "MIT" + license-files = ["LICENSE"] (PEP 639), and the
  build requirement moves to setuptools>=77 for the SPDX form.  The wheel now
  carries dist-info/licenses/LICENSE and License-Expression: MIT, the sdist
  and the runtime zip carry LICENSE at the top.
- READMEs (EN/RU): a License section (original decoders/DES implementation,
  PyUSB as the only runtime dependency).
- tests: the packaging test pins the MIT declaration and the LICENSE text;
  the release-zip test requires LICENSE in the archive.
- version 2.7.13; SW cache v95.

Copies published before this tag (v2.7.10-v2.7.12) remain under the license
they were released with.
2026-10-21 01:03:55 +03:00
12 changed files with 62 additions and 13 deletions

No files matched your search

+2
View File
@@ -18,3 +18,5 @@ is the runtime tree only (packages, PWA, launchers, docs — no tests, no git):
extract it anywhere and run `start.bat` (Windows) or `./start.sh` extract it anywhere and run `start.bat` (Windows) or `./start.sh`
(Linux/macOS). Python 3 has to be on `PATH`; `pip install pyusb` is only (Linux/macOS). Python 3 has to be on `PATH`; `pip install pyusb` is only
needed for direct SIMtrace2 capture. needed for direct SIMtrace2 capture.
The project is MIT-licensed (see `LICENSE`).
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Anton Troshin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+1
View File
@@ -1,3 +1,4 @@
graft frontend graft frontend
include LICENSE
include README.md README_RUS.md 70-simtrace2-pysniff.rules include README.md README_RUS.md 70-simtrace2-pysniff.rules
include start.sh start.bat sniff-start.sh sniff-start.bat include start.sh start.bat sniff-start.sh sniff-start.bat
+10 -3
View File
@@ -105,7 +105,7 @@ Everything is on the
**Wheel** (the PWA is inside the package): **Wheel** (the PWA is inside the package):
```sh ```sh
pip install ./simtrace_analyser-2.7.12-py3-none-any.whl pip install ./simtrace_analyser-2.7.13-py3-none-any.whl
# then run (the UI is served at http://127.0.0.1:8081/): # then run (the UI is served at http://127.0.0.1:8081/):
simtrace-analyser-server --capture gsmtap simtrace-analyser-server --capture gsmtap
@@ -119,7 +119,7 @@ Fedora), install into a virtual environment first:
shown there): shown there):
```sh ```sh
pip install https://github.com/anttro/simtrace-analyser/releases/download/v2.7.12/simtrace_analyser-2.7.12-py3-none-any.whl pip install https://github.com/anttro/simtrace-analyser/releases/download/v2.7.13/simtrace_analyser-2.7.13-py3-none-any.whl
``` ```
With the GitHub CLI, download the latest wheel without knowing the version: With the GitHub CLI, download the latest wheel without knowing the version:
@@ -133,7 +133,7 @@ pip install ./simtrace_analyser-*.whl
without the git history: unzip, `cd` into it and use the launchers below without the git history: unzip, `cd` into it and use the launchers below
(`./start.sh` on Linux/macOS, `start.bat` on Windows). (`./start.sh` on Linux/macOS, `start.bat` on Windows).
**Zip (Windows-friendly, no installer)** — `simtrace-analyser-2.7.12.zip` is **Zip (Windows-friendly, no installer)** — `simtrace-analyser-2.7.13.zip` is
the runtime tree only (packages, PWA, launchers, docs; no tests, no git): the runtime tree only (packages, PWA, launchers, docs; no tests, no git):
download it, extract it anywhere and run `start.bat` (Windows) or download it, extract it anywhere and run `start.bat` (Windows) or
`./start.sh` (Linux/macOS). Python 3 has to be on `PATH`; `pip install pyusb` `./start.sh` (Linux/macOS). Python 3 has to be on `PATH`; `pip install pyusb`
@@ -510,3 +510,10 @@ Use `--inactivity-timeout` to also trigger reconnect on silent firmware hangs.
- **[sigrok_iso7816_stream](https://github.com/anttro/sigrok_iso7816_stream)** — - **[sigrok_iso7816_stream](https://github.com/anttro/sigrok_iso7816_stream)** —
FX2LP-based passive ISO 7816 sniffer that emits the same GSMTAP-SIM stream FX2LP-based passive ISO 7816 sniffer that emits the same GSMTAP-SIM stream
on UDP 4729 (accepted by this project's GSMTAP listener). on UDP 4729 (accepted by this project's GSMTAP listener).
## License
MIT — see [LICENSE](LICENSE). The decoders and the PWA's DES/3DES
implementation are original, written from the ISO 7816, ETSI and 3GPP
specifications; no third-party code is bundled. PyUSB (BSD-3-Clause) is a
runtime dependency for direct hardware capture.
+10 -3
View File
@@ -111,7 +111,7 @@ git) или склонировать репозиторий для разраб
**Wheel** (PWA внутри пакета): **Wheel** (PWA внутри пакета):
```sh ```sh
pip install ./simtrace_analyser-2.7.12-py3-none-any.whl pip install ./simtrace_analyser-2.7.13-py3-none-any.whl
# затем запуск (интерфейс отдаётся на http://127.0.0.1:8081/): # затем запуск (интерфейс отдаётся на http://127.0.0.1:8081/):
simtrace-analyser-server --capture gsmtap simtrace-analyser-server --capture gsmtap
@@ -125,7 +125,7 @@ Fedora), сначала создайте виртуальное окружени
указанную там): указанную там):
```sh ```sh
pip install https://github.com/anttro/simtrace-analyser/releases/download/v2.7.12/simtrace_analyser-2.7.12-py3-none-any.whl pip install https://github.com/anttro/simtrace-analyser/releases/download/v2.7.13/simtrace_analyser-2.7.13-py3-none-any.whl
``` ```
С GitHub CLI можно скачать wheel последнего релиза, не зная версии: С GitHub CLI можно скачать wheel последнего релиза, не зная версии:
@@ -139,7 +139,7 @@ pip install ./simtrace_analyser-*.whl
дерево без истории git: распакуйте, перейдите в каталог и используйте скрипты дерево без истории git: распакуйте, перейдите в каталог и используйте скрипты
запуска ниже (`./start.sh` в Linux/macOS, `start.bat` в Windows). запуска ниже (`./start.sh` в Linux/macOS, `start.bat` в Windows).
**Zip (для Windows, без установки)** — `simtrace-analyser-2.7.12.zip` **Zip (для Windows, без установки)** — `simtrace-analyser-2.7.13.zip`
содержит только рабочее дерево (пакеты, PWA, скрипты запуска, документацию; содержит только рабочее дерево (пакеты, PWA, скрипты запуска, документацию;
без тестов и git): скачайте, распакуйте в любое место и запустите `start.bat` без тестов и git): скачайте, распакуйте в любое место и запустите `start.bat`
(Windows) или `./start.sh` (Linux/macOS). Python 3 должен быть в `PATH`; (Windows) или `./start.sh` (Linux/macOS). Python 3 должен быть в `PATH`;
@@ -530,3 +530,10 @@ for msg in session.iter_messages():
- **[sigrok_iso7816_stream](https://github.com/anttro/sigrok_iso7816_stream)** — - **[sigrok_iso7816_stream](https://github.com/anttro/sigrok_iso7816_stream)** —
пассивный ISO 7816 сниффер на базе FX2LP, выдающий такой же поток пассивный ISO 7816 сниффер на базе FX2LP, выдающий такой же поток
GSMTAP-SIM на UDP 4729 (принимается GSMTAP-листенером этого проекта). GSMTAP-SIM на UDP 4729 (принимается GSMTAP-листенером этого проекта).
## Лицензия
MIT — см. [LICENSE](LICENSE). Декодеры и реализация DES/3DES в PWA написаны
самостоятельно по спецификациям ISO 7816, ETSI и 3GPP; сторонний код в проект
не включён. PyUSB (BSD-3-Clause) — зависимость для прямого захвата с
оборудования.
+1 -1
View File
@@ -3389,7 +3389,7 @@ function onSearchChange() {
} }
// ──────────────────── Versioning ──────────────────── // ──────────────────── Versioning ────────────────────
const PWA_VERSION = '2.7.12'; const PWA_VERSION = '2.7.13';
const MIN_SERVER_VERSION = '2.3.0'; const MIN_SERVER_VERSION = '2.3.0';
function parseVersion(v) { function parseVersion(v) {
+1 -1
View File
@@ -1,4 +1,4 @@
const CACHE = 'simtrace-analyser-v94'; const CACHE = 'simtrace-analyser-v95';
const PRECACHE = [ const PRECACHE = [
'index.html', 'index.html',
+4 -3
View File
@@ -1,13 +1,14 @@
[build-system] [build-system]
requires = ["setuptools>=64"] requires = ["setuptools>=77"]
build-backend = "setuptools.build_meta" build-backend = "setuptools.build_meta"
[project] [project]
name = "simtrace-analyser" name = "simtrace-analyser"
version = "2.7.12" version = "2.7.13"
description = "SIMtrace Analyser — APDU trace analyser for GSMTAP/PCAP captures (bundles the simtrace2-pysniff utility)" description = "SIMtrace Analyser — APDU trace analyser for GSMTAP/PCAP captures (bundles the simtrace2-pysniff utility)"
readme = {file = "README.md", content-type = "text/markdown"} readme = {file = "README.md", content-type = "text/markdown"}
license = {text = "GPL-2.0-or-later"} license = "MIT"
license-files = ["LICENSE"]
requires-python = ">=3.9" requires-python = ">=3.9"
dependencies = [ dependencies = [
"pyusb>=1.2", "pyusb>=1.2",
+1 -1
View File
@@ -1,3 +1,3 @@
"""Single source of truth for the SIMtrace Analyser version.""" """Single source of truth for the SIMtrace Analyser version."""
__version__ = '2.7.12' __version__ = '2.7.13'
+9
View File
@@ -70,6 +70,15 @@ class TestDistributionMetadata(unittest.TestCase):
# The sdist carries frontend/, so a wheel built from it has the PWA. # The sdist carries frontend/, so a wheel built from it has the PWA.
self.assertIn('graft frontend', self._read('MANIFEST.in')) self.assertIn('graft frontend', self._read('MANIFEST.in'))
def test_license_is_mit(self):
# The project is MIT; the metadata and the file must not drift apart.
pyproject = self._read('pyproject.toml')
self.assertIn('license = "MIT"', pyproject)
self.assertIn('license-files = ["LICENSE"]', pyproject)
license_text = self._read('LICENSE')
self.assertTrue(license_text.startswith('MIT License\n'))
self.assertIn('Permission is hereby granted, free of charge', license_text)
def test_setup_py_bundles_the_pwa(self): def test_setup_py_bundles_the_pwa(self):
setup_py = self._read('setup.py') setup_py = self._read('setup.py')
self.assertIn('frontend', setup_py) self.assertIn('frontend', setup_py)
+1 -1
View File
@@ -224,7 +224,7 @@ class TestImportEndpoint(unittest.TestCase):
class TestVersion(unittest.TestCase): class TestVersion(unittest.TestCase):
def test_package_version(self): def test_package_version(self):
from simtrace2_pysniff import __version__ from simtrace2_pysniff import __version__
self.assertEqual(__version__, '2.7.12') self.assertEqual(__version__, '2.7.13')
def test_status_includes_version(self): def test_status_includes_version(self):
import os import os
+1
View File
@@ -51,6 +51,7 @@ class TestReleaseZip(unittest.TestCase):
'sniff-start.sh', 'sniff-start.sh',
'sniff-start.bat', 'sniff-start.bat',
'70-simtrace2-pysniff.rules', '70-simtrace2-pysniff.rules',
'LICENSE',
'README.md'): 'README.md'):
self.assertIn('%s/%s' % (top, rel), self.names) self.assertIn('%s/%s' % (top, rel), self.names)