Compare commits

...

80 commits

Author SHA1 Message Date
Cédric Bonhomme
bd3238acfa
chg: [dependencies] Updated dependencies.
Some checks are pending
Python application / build (3.10) (push) Waiting to run
Python application / build (3.11) (push) Waiting to run
Python application / build (3.12) (push) Waiting to run
2025-05-16 11:53:20 +02:00
Cédric Bonhomme
eb28c60d27
chg: [RELEASE] Bumped version number, improved packaging for the command line.
Some checks failed
Python application / build (3.10) (push) Has been cancelled
Python application / build (3.11) (push) Has been cancelled
Python application / build (3.12) (push) Has been cancelled
2025-05-03 23:15:52 +02:00
Cédric Bonhomme
7ba387ecdc
chg: [RELEASE] Updated documentation, updated dependencies, and bumped version number.
Some checks failed
Python application / build (3.10) (push) Has been cancelled
Python application / build (3.11) (push) Has been cancelled
Python application / build (3.12) (push) Has been cancelled
2025-04-26 23:28:17 +02:00
Cédric Bonhomme
ac66655ad8
chg: [dependencies] Updated dependencies.
Some checks failed
Python application / build (3.10) (push) Has been cancelled
Python application / build (3.11) (push) Has been cancelled
Python application / build (3.12) (push) Has been cancelled
2025-03-14 06:59:13 +01:00
Cédric Bonhomme
2e8b0fdec9
chg: [RELEASE] Bumped version number and aligned pyproject.toml file with standard specification.
Some checks failed
Python application / build (3.10) (push) Has been cancelled
Python application / build (3.11) (push) Has been cancelled
Python application / build (3.12) (push) Has been cancelled
2025-02-13 18:14:40 +01:00
Cédric Bonhomme
7849955cdb
chg: Updated pyproject.toml and dependencies.
Some checks failed
Python application / build (3.10) (push) Has been cancelled
Python application / build (3.11) (push) Has been cancelled
Python application / build (3.12) (push) Has been cancelled
2025-02-05 09:33:44 +01:00
Cédric Bonhomme
d6015157bf
chg: [packaging] Minor changes in the pryproject.toml file.
Some checks failed
Python application / build (3.10) (push) Has been cancelled
Python application / build (3.11) (push) Has been cancelled
Python application / build (3.12) (push) Has been cancelled
2025-01-30 14:55:46 +01:00
Cédric Bonhomme
43f02702f9
chg: Updated pyproject.toml for Poetry 2.0.
Some checks are pending
Python application / build (3.10) (push) Waiting to run
Python application / build (3.11) (push) Waiting to run
Python application / build (3.12) (push) Waiting to run
2025-01-30 08:02:09 +01:00
Cédric Bonhomme
9c69075d34
chg: [dependencies] Updated dependencies.
Some checks failed
Python application / build (3.10) (push) Has been cancelled
Python application / build (3.11) (push) Has been cancelled
Python application / build (3.12) (push) Has been cancelled
2025-01-03 13:18:47 +01:00
Cédric Bonhomme
10256ba28b
chg: Updated copyright years. 2025-01-03 13:17:58 +01:00
Cédric Bonhomme
70572bf047
chg: [dependencies] Updated dependencies.
Some checks failed
Python application / build (3.10) (push) Has been cancelled
Python application / build (3.11) (push) Has been cancelled
Python application / build (3.12) (push) Has been cancelled
2024-12-28 00:29:45 +01:00
Cédric Bonhomme
8ebd760f7e
chg: Updated README.
Some checks failed
Python application / build (3.10) (push) Has been cancelled
Python application / build (3.11) (push) Has been cancelled
Python application / build (3.12) (push) Has been cancelled
2024-10-05 16:47:41 +02:00
Cédric Bonhomme
0d0d328230
chg: Updated README.
Some checks are pending
Python application / build (3.10) (push) Waiting to run
Python application / build (3.11) (push) Waiting to run
Python application / build (3.12) (push) Waiting to run
2024-10-04 23:44:57 +02:00
Cédric Bonhomme
5a6e08232f
chg: [release] Bumped release number. 2024-09-07 23:55:55 +02:00
Cédric Bonhomme
6fac279580
chg: [dependencies] Updated dependencies. 2024-09-07 23:54:15 +02:00
Cédric Bonhomme
a6140fef36
chg: [lsb] Added a parameter, close_file, to lsb.reveal in order to specify if the file must be closed at the end of the processing. 2024-09-07 23:51:47 +02:00
Cédric Bonhomme
80d7e6c88a
chg: [dependencies] Updated dependencies. 2024-08-08 09:43:38 +02:00
Cédric Bonhomme
d078b7a734
chg: [dependencies] Updated dependencies. 2024-08-08 09:42:44 +02:00
Cédric Bonhomme
b4114bca00
Merge pull request #50 from cedricbonhomme/dependabot/pip/setuptools-70.0.0
build(deps-dev): bump setuptools from 69.5.1 to 70.0.0
2024-07-16 11:36:53 +02:00
dependabot[bot]
ada72ecb47
build(deps-dev): bump setuptools from 69.5.1 to 70.0.0
Bumps [setuptools](https://github.com/pypa/setuptools) from 69.5.1 to 70.0.0.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v69.5.1...v70.0.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-15 19:34:32 +00:00
Cédric Bonhomme
d8685270ff
Merge pull request #49 from cedricbonhomme/dependabot/pip/certifi-2024.7.4
build(deps-dev): bump certifi from 2024.2.2 to 2024.7.4
2024-07-08 07:07:24 +02:00
dependabot[bot]
924d8e4979
build(deps-dev): bump certifi from 2024.2.2 to 2024.7.4
Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.2.2 to 2024.7.4.
- [Commits](https://github.com/certifi/python-certifi/compare/2024.02.02...2024.07.04)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-06 01:46:39 +00:00
Cédric Bonhomme
40c0e83c88
Merge pull request #47 from cedricbonhomme/dependabot/pip/urllib3-2.2.2
build(deps-dev): bump urllib3 from 2.2.1 to 2.2.2
2024-06-18 07:06:37 +02:00
dependabot[bot]
20bb3dc6fc
build(deps-dev): bump urllib3 from 2.2.1 to 2.2.2
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.2.1 to 2.2.2.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.2.1...2.2.2)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-17 23:07:27 +00:00
Cédric Bonhomme
68b56779b1
Merge pull request #46 from cedricbonhomme/dependabot/pip/requests-2.32.0
build(deps-dev): bump requests from 2.31.0 to 2.32.0
2024-05-21 07:28:03 +02:00
dependabot[bot]
e41c5b7cb0
---
updated-dependencies:
- dependency-name: requests
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-21 05:26:24 +00:00
Cédric Bonhomme
00415e364d
chg: [dependencies] Updated Python dependencies. 2024-05-17 15:55:19 +02:00
Cédric Bonhomme
bd1a82f397
Merge pull request #45 from cedricbonhomme/dependabot/pip/jinja2-3.1.4
build(deps-dev): bump jinja2 from 3.1.3 to 3.1.4
2024-05-07 07:26:15 +02:00
dependabot[bot]
dfce98008c
build(deps-dev): bump jinja2 from 3.1.3 to 3.1.4
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.3...3.1.4)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-06 20:44:24 +00:00
Cédric Bonhomme
e0360062b5
chg: [dependencies] Updated dependencies. 2024-04-14 22:09:22 +02:00
Cédric Bonhomme
a660ff8628
Merge pull request #44 from cedricbonhomme/dependabot/pip/idna-3.7
build(deps-dev): bump idna from 3.6 to 3.7
2024-04-12 22:55:11 +02:00
dependabot[bot]
53d897b808
build(deps-dev): bump idna from 3.6 to 3.7
Bumps [idna](https://github.com/kjd/idna) from 3.6 to 3.7.
- [Release notes](https://github.com/kjd/idna/releases)
- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.rst)
- [Commits](https://github.com/kjd/idna/compare/v3.6...v3.7)

---
updated-dependencies:
- dependency-name: idna
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-12 04:23:27 +00:00
Cédric Bonhomme
fd2a784df3
Merge pull request #43 from cedricbonhomme/dependabot/pip/pillow-10.3.0
build(deps): bump pillow from 10.2.0 to 10.3.0
2024-04-04 07:21:18 +02:00
dependabot[bot]
136ce42ae9
build(deps): bump pillow from 10.2.0 to 10.3.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.2.0 to 10.3.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/10.2.0...10.3.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-03 16:04:32 +00:00
Cédric Bonhomme
c66a54875c
chg: [dependencies] Updated dependencies. 2024-03-24 11:37:33 +01:00
Cédric Bonhomme
b1133d8e35
chg: [pre-commit] Removed useless django-upgrade hook. 2024-03-12 08:22:40 +01:00
Cédric Bonhomme
a78c520058
Updated README. 2024-03-02 14:27:08 +01:00
Cédric Bonhomme
b592ce4bcb
chg: Updated repository default URL. 2024-03-01 10:14:10 +01:00
Cédric Bonhomme
0054c89b7d
chg: [dependencies] Fixed conflict. 2024-01-21 21:48:19 +01:00
Cédric Bonhomme
ab046d24f2
chg: [dependencies] Updated dependencies. 2024-01-21 21:27:50 +01:00
Cédric Bonhomme
1de253dd0a
Merge pull request #40 from cedricbonhomme/dependabot/pip/jinja2-3.1.3
build(deps-dev): bump jinja2 from 3.1.2 to 3.1.3
2024-01-11 22:23:44 +00:00
dependabot[bot]
a70b552cb8
build(deps-dev): bump jinja2 from 3.1.2 to 3.1.3
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.2...3.1.3)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-11 19:48:14 +00:00
Cédric Bonhomme
eae8ab29fc
Removed support of Python 3.9. 2024-01-04 02:22:33 +01:00
Cédric Bonhomme
0d20be7d82
chg: [sourcehut] Restored export of PATH. 2024-01-04 02:16:19 +01:00
Cédric Bonhomme
33c9cd55b1
chg: [sourcehut] Removed useless export of PATH. 2024-01-04 02:13:24 +01:00
Cédric Bonhomme
d02f8b8b14
install pipx from Debian packages. 2024-01-04 02:09:39 +01:00
Cédric Bonhomme
d0ca9322cc
install poetry with pipx. 2024-01-04 02:06:32 +01:00
Cédric Bonhomme
91fef6a178
chg: [sourcehut] Updated debian image to bookworm. 2024-01-04 02:00:18 +01:00
Cédric Bonhomme
178347f61f
chg: [GitHub workflox] Added Python 3.10 and 3.11. 2024-01-04 01:51:44 +01:00
Cédric Bonhomme
ed66aaa159
chg: [GitHub workflox] Removed Python 3.9. 2024-01-04 01:48:24 +01:00
Cédric Bonhomme
1293a3575b
chg: [GitHub workflox] Updated Python versions in the matrix strategy. 2024-01-02 23:48:04 +01:00
Cédric Bonhomme
1ef59ac80b
chg: [dependencies] Updated Numpy and Pillow. 2024-01-02 23:30:57 +01:00
Cédric Bonhomme
0ca92d1d3a
Exclude the directory tests from the pre-commit hook end-of-line-fixer. 2024-01-02 23:26:00 +01:00
Cédric Bonhomme
46da77ef1c
chg: [release] Bumped release number. 2024-01-02 10:12:21 +01:00
Cédric Bonhomme
5c94a790bc
Fixed mypy issue. 2024-01-02 10:06:04 +01:00
Cédric Bonhomme
220501adbc
Updated version of flake8. 2024-01-01 20:40:49 +01:00
Cédric Bonhomme
e253929ad6
Updated dependencies. 2024-01-01 20:32:36 +01:00
Cédric Bonhomme
d863dbfddb
Updated copyright years. 2024-01-01 20:32:02 +01:00
Cédric Bonhomme
0f550178ff
Moved the requirements file dedicated to the documentation. 2023-12-31 00:45:28 +01:00
Cédric Bonhomme
a3dd6be618
Dropped Python 3.8 support. 2023-12-31 00:38:32 +01:00
Cédric Bonhomme
29322e759a
Ensures compability with Python 3.12. 2023-12-31 00:28:36 +01:00
Cédric Bonhomme
c6437af0d1
chg: [dependencies] Updated Python dependencies. 2023-11-21 22:48:09 +01:00
Cédric Bonhomme
25447f88e9 Merge branch 'master' of github.com:cedricbonhomme/Stegano 2023-10-23 07:27:33 +02:00
Cédric Bonhomme
ad916563da
chg: [dependencies] Updated dependencies. 2023-10-23 07:27:02 +02:00
Cédric Bonhomme
88ce965e7c
Merge pull request #38 from cedricbonhomme/dependabot/pip/urllib3-2.0.7
build(deps-dev): bump urllib3 from 2.0.6 to 2.0.7
2023-10-17 21:15:13 +00:00
dependabot[bot]
25a7105487
build(deps-dev): bump urllib3 from 2.0.6 to 2.0.7
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.0.6 to 2.0.7.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.0.6...2.0.7)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 21:02:56 +00:00
Cédric Bonhomme
29d427afef Merge branch 'master' of github.com:cedricbonhomme/Stegano 2023-10-17 09:36:09 +02:00
Cédric Bonhomme
7434ed9a1e
Updated opencv-python. 2023-10-17 09:35:08 +02:00
Cédric Bonhomme
e3c1312d14
Merge pull request #37 from cedricbonhomme/dependabot/pip/pillow-10.0.1
build(deps): bump pillow from 9.5.0 to 10.0.1
2023-10-04 05:54:43 +00:00
dependabot[bot]
166d9d1291
build(deps): bump pillow from 9.5.0 to 10.0.1
Bumps [pillow](https://github.com/python-pillow/Pillow) from 9.5.0 to 10.0.1.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/9.5.0...10.0.1)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-04 01:32:15 +00:00
Cédric Bonhomme
556473c81d
Merge pull request #36 from cedricbonhomme/dependabot/pip/urllib3-2.0.6
build(deps-dev): bump urllib3 from 2.0.4 to 2.0.6
2023-10-03 00:31:42 +00:00
dependabot[bot]
84b1855130
build(deps-dev): bump urllib3 from 2.0.4 to 2.0.6
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.0.4 to 2.0.6.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.0.4...2.0.6)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-03 00:00:24 +00:00
Cédric Bonhomme
11348dda9a
Updated dependencies. 2023-09-10 23:56:36 +02:00
Cédric Bonhomme
c2168422df
Updated numpy and opencv. 2023-08-13 09:23:29 +02:00
Cédric Bonhomme
bd2835d7d0
Added new Read the Docs configuration file. 2023-08-10 09:52:22 +02:00
Cédric Bonhomme
116e011d37
Updated certifi. 2023-07-28 23:53:59 +02:00
Cédric Bonhomme
84a34d0bfa
Updated urllib3 dependency. 2023-07-20 00:42:12 +02:00
Cédric Bonhomme
8c14555adb
chg: [dependencies] updated dependencies. 2023-07-12 15:08:00 +02:00
Cédric Bonhomme
e33bebad46
chg: [dependencies] Updated Python dependencies. 2023-07-01 00:54:34 +02:00
Cédric Bonhomme
2a3b92e62a
chg: [dependencies] Updated Python dependencies. 2023-06-25 22:01:13 +02:00
39 changed files with 993 additions and 693 deletions

View file

@ -1,42 +0,0 @@
image: debian/bullseye
sources:
- https://git.sr.ht/~cedric/stegano
packages:
- python3
- python3-dev
- python3-pip
- python3-setuptools
- python3-venv
- rustc
- cargo
- libffi-dev
- libssl-dev
- libjpeg-dev
- libpng-dev
- libfreetype6-dev
- ffmpeg
- libsm6
- libxext6
environment:
project: stegano
tasks:
- dependencies: |
pip3 install --user poetry
export PATH="$PATH:/home/build/.local/bin"
cd ${project}
poetry install
- lint: |
export PATH="$PATH:/home/build/.local/bin"
cd ${project}
# stop the build if there are Python syntax errors or undefined names
poetry run flake8 stegano --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings.
poetry run flake8 stegano --count --max-complexity=10 --max-line-length=127 --statistics
- test: |
export PATH="$PATH:/home/build/.local/bin"
cd ${project}
poetry run nose2 -v --pretty-assert
- typecheck: |
export PATH="$PATH:/home/build/.local/bin"
cd ${project}
poetry run mypy .

View file

@ -9,7 +9,7 @@ jobs:
strategy:
matrix:
python-version: [3.8, 3.9]
python-version: ["3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v1
@ -22,7 +22,7 @@ jobs:
- name: Install dependencies
run: |
pip install poetry
poetry install
poetry install --with dev
- name: Lint with flake8
run: |
@ -37,6 +37,6 @@ jobs:
env:
testing: actions
- name: Type check with mypy
run: |
poetry run mypy .
# - name: Type check with mypy
# run: |
# poetry run mypy .

27
.github/workflows/release.yml vendored Normal file
View file

@ -0,0 +1,27 @@
on:
release:
types:
- published
name: release
jobs:
pypi-publish:
name: Upload release to PyPI
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/Stegano
permissions:
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Poetry
run: python -m pip install --upgrade pip poetry
- name: Build artifacts
run: poetry build
- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1

View file

@ -1,11 +1,6 @@
ci:
autoupdate_schedule: monthly
repos:
- repo: https://github.com/adamchainz/django-upgrade
rev: 1.13.0
hooks:
- id: django-upgrade
args: [--target-version, '4.2']
- repo: https://github.com/asottile/pyupgrade
rev: v3.3.1
hooks:
@ -19,12 +14,8 @@ repos:
rev: 22.3.0
hooks:
- id: black
- repo: https://github.com/asottile/blacken-docs
rev: 1.13.0
hooks:
- id: blacken-docs
- repo: https://github.com/PyCQA/flake8
rev: 4.0.1
rev: 6.1.0
hooks:
- id: flake8
additional_dependencies:
@ -36,8 +27,10 @@ repos:
hooks:
- id: fix-byte-order-marker
- id: trailing-whitespace
exclude: .md
- id: end-of-file-fixer
- repo: https://github.com/trailofbits/pip-audit
rev: v2.5.6
exclude: tests/.*
- repo: https://github.com/pypa/pip-audit
rev: v2.7.3
hooks:
- id: pip-audit

22
.readthedocs.yaml Normal file
View file

@ -0,0 +1,22 @@
# .readthedocs.yaml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Set the version of Python and other tools you might need
build:
os: ubuntu-22.04
tools:
python: "3.11"
# Build documentation in the docs/ directory with Sphinx
sphinx:
configuration: docs/conf.py
# We recommend specifying your dependencies to enable reproducible builds:
# https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- requirements: docs/requirements.txt

View file

@ -1,222 +1,251 @@
## Release History
### 1.0.1 (2025-05-03)
- Improved the packaging configuration for the command line (stegano.console).
### 1.0.0 (2025-04-26)
- Updated dependencies.
- Improved the packaging configuration.
- Fixed typing errors.
### 0.11.5 (2025-02-13)
- Updated dependencies.
- Aligned pyproject.toml with the standard specification.
- Publishing to PyPI using a Trusted Publisher.
### 0.11.4 (2024-09-07)
- Added a parameter, close_file, to lsb.reveal in order to
specify if the file must be closed at the end of the processing.
### 0.11.3 (2024-01-02)
- Stegano now supports Python 3.12. Support of Python 3.8 has been removed.
### 0.11.2 (2023-05-23)
* improved typing of various functions;
* updated dependencies.
- improved typing of various functions;
- updated dependencies.
### 0.11.1 (2022-11-20)
* Fixed a bug in the command line when no sub-command is specified.
- Fixed a bug in the command line when no sub-command is specified.
### 0.11.0 (2022-11-20)
* Reduced memory footprint and processing speed,
- Reduced memory footprint and processing speed,
the modules ``lsb`` and ``lsbset`` have been merged
([PR #34](https://github.com/cedricbonhomme/Stegano/pull/34)).
### 0.10.2 (2022-01-13)
* Stegano now uses Pillow 9.0.0 (CVE-2022-22815).
- Stegano now uses Pillow 9.0.0 (CVE-2022-22815).
### 0.10.1 (2021-11-30)
* Stegano now uses OpenCV Python 4.5.4 abd Numpy 1.21.4.
- Stegano now uses OpenCV Python 4.5.4 abd Numpy 1.21.4.
### 0.10.0 (2021-11-29)
* new: Implemented Shi-Tomashi corner generator
- new: Implemented Shi-Tomashi corner generator
([PR #32](https://github.com/cedricbonhomme/Stegano/pull/32)).
Implemented by thundersparkf (see CONTRIBUTORS.md file).
### 0.9.9 (2021-07-02)
* Stegano now uses Pillow 8.3.0.
- Stegano now uses Pillow 8.3.0.
### 0.9.8 (2019-12-20)
* Stegano is now using poetry;
* minor improvements to the command line.
- Stegano is now using poetry;
- minor improvements to the command line.
### 0.9.7 (2019-10-27)
* fixed markdown of the previous release.
- fixed markdown of the previous release.
### 0.9.6 (2019-10-27)
* fixed markdown of the previous release;
- fixed markdown of the previous release;
### 0.9.5 (2019-10-27)
* updated dependencies;
* home page of the project is now: https://git.sr.ht/~cedric/Stegano
- updated dependencies;
- home page of the project is now: https://github.com/cedricbonhomme/Stegano
### 0.9.4 (2019-06-05)
* new: Implemented LFSR generator (with tests and CLI)
- new: Implemented LFSR generator (with tests and CLI)
([PR #27](https://github.com/cedricbonhomme/Stegano/pull/27))
* new: Implemented Ackermann generators CLI interface
- new: Implemented Ackermann generators CLI interface
([PR #26](https://github.com/cedricbonhomme/Stegano/pull/26))
* new: The Ackermann functions are not actual generators
- new: The Ackermann functions are not actual generators
([#24](https://github.com/cedricbonhomme/Stegano/issues/24))
* new: add a shift parameter for the lsbmodule
- new: add a shift parameter for the lsbmodule
([#25](https://github.com/cedricbonhomme/Stegano/issues/25))
* fix: lsbset.hide cause .png transparent area lost
- fix: lsbset.hide cause .png transparent area lost
([#23](https://github.com/cedricbonhomme/Stegano/issues/23))
### 0.9.3 (2019-04-10)
* it is now possible to either pass the location of an image or directly pass
- it is now possible to either pass the location of an image or directly pass
an already opened Image.Image to the hide and reveal methods;
* code re-formatted a bit with black.
- code re-formatted a bit with black.
### 0.9.2 (2019-04-04)
* updated Pillow dependency to version 6.0.0 in order to fix a bug when opening
- updated Pillow dependency to version 6.0.0 in order to fix a bug when opening
some PNG files (https://github.com/python-pillow/Pillow/issues/3557).
### 0.9.1 (2019-03-06)
* updated Pillow dependency in order to fix a bug when opening some PNG files.
- updated Pillow dependency in order to fix a bug when opening some PNG files.
### 0.9.0 (2018-12-18)
* added the possibility to shift the encoded bits when using the lsbset module.
- added the possibility to shift the encoded bits when using the lsbset module.
### 0.8.6 (2018-11-05)
* fixed a potential security issue related to CVE-2018-18074.
- fixed a potential security issue related to CVE-2018-18074.
### 0.8.5 (2018-04-18)
* Fixed an encoding problem which occured on Windows during the installation
- Fixed an encoding problem which occured on Windows during the installation
of the module.
### 0.8.4 (2018-02-28)
* Stegano is ready for use with pipenv and pipsi.
- Stegano is ready for use with pipenv and pipsi.
### 0.8.3 (2018-02-23)
* the recommended way to install Stegano is now to use pipenv.
- the recommended way to install Stegano is now to use pipenv.
### 0.8.2 (2017-12-20)
* Fixed a bug with the new 'encoding' function when using Stegano as a command
- Fixed a bug with the new 'encoding' function when using Stegano as a command
line tool. No default value was set. Default value is UTF-8.
### 0.8.1 (2017-05-16)
* it is now possible to specify the encoding (UTF-8 or UTF-32LE) of the message
- it is now possible to specify the encoding (UTF-8 or UTF-32LE) of the message
to hide/reveal through the command line;
* the help of the command line now displays the available choices for the
- the help of the command line now displays the available choices for the
arguments, if it is necessary (list of available encodings, list of available
generators);
* tests expected results lies now in a dedicated folder;
* a script has been added in order to get proper exit code check for mypy.
- tests expected results lies now in a dedicated folder;
- a script has been added in order to get proper exit code check for mypy.
### 0.8 (2017-05-06)
* updated command line. All commands are now prefixed with *stegano-*;
* improved type hints;
* it is possible to load and save images from and to file objects (BytesIO);
* improved checks when revealing a message with the lsbset module fails.
- updated command line. All commands are now prefixed with *stegano-*;
- improved type hints;
- it is possible to load and save images from and to file objects (BytesIO);
- improved checks when revealing a message with the lsbset module fails.
### 0.7.1 (2017-05-05)
* improved generators for the lsb-set module;
* improved tests for the generators;
* improved type hints.
- improved generators for the lsb-set module;
- improved tests for the generators;
- improved type hints.
### 0.7 (2017-05-04)
* unicode is now supported. By default UTF-8 encoding is used. UTF-32LE can also
- unicode is now supported. By default UTF-8 encoding is used. UTF-32LE can also
be used to hide non-ASCII characters. UTF-8 (8 bits) is the default choice
since it is possible to hide longer messages with it.
* improved checks with type hints.
- improved checks with type hints.
### 0.6.9 (2017-03-10)
* introduces some type hints (PEP 484);
* more tests for the generators and for the tools module;
* updated descriptions of generators;
* fixed a bug with a generator that has been previously renamed.
- introduces some type hints (PEP 484);
- more tests for the generators and for the tools module;
- updated descriptions of generators;
- fixed a bug with a generator that has been previously renamed.
### 0.6.8 (2017-03-08)
* bugfix: fixed #12: Error when revealing a hidden binary file in an image.
- bugfix: fixed #12: Error when revealing a hidden binary file in an image.
### 0.6.7 (2017-02-21)
* bugfix: added missing dependency in the setup.py file.
- bugfix: added missing dependency in the setup.py file.
### 0.6.6 (2017-02-20)
* improved docstrings for the desciption of the generators;
* improved the command which displays the list of generators.
- improved docstrings for the desciption of the generators;
- improved the command which displays the list of generators.
### 0.6.5 (2017-02-16)
* added a command to list all available generators for the lsb-set module;
* test when the data image is coming via byte stream, for the lsb module.
- added a command to list all available generators for the lsb-set module;
- test when the data image is coming via byte stream, for the lsb module.
### 0.6.4 (2017-02-06)
* a command line for the 'red' module has been added;
* bugfix: fixed a bug in the lsb-set command line when the generator wasn't
- a command line for the 'red' module has been added;
- bugfix: fixed a bug in the lsb-set command line when the generator wasn't
specified by the user.
### 0.6.3 (2017-01-29)
* Support for transparent PNG images has been added (lsb and lsbset modules).
- Support for transparent PNG images has been added (lsb and lsbset modules).
### 0.6.2 (2017-01-19)
* bugfix: solved a bug when the image data is coming via byte streams (ByteIO),
- bugfix: solved a bug when the image data is coming via byte streams (ByteIO),
for the exifHeader hiding method.
### 0.6.1 (2016-08-25)
* reorganization of the steganalysis sub-module.
- reorganization of the steganalysis sub-module.
### 0.6 (2016-08-04)
* improvements of the command line of Stéganô. The use of Stéganô through the
- improvements of the command line of Stéganô. The use of Stéganô through the
command line has slightly changed ('hide' and 'reveal' are now sub-parameters
of the command line). No changes if you use Stéganô as a module in your
software. The documentation has been updated accordingly.
@ -224,66 +253,66 @@
### 0.5.5 (2016-08-03)
* bugfix: Incorrect padding size in `base642string` in tools.base642binary().
- bugfix: Incorrect padding size in `base642string` in tools.base642binary().
### 0.5.4 (2016-05-22)
* the generator provided to the functions lsbset.hide() and lsbset.reveal() is
- the generator provided to the functions lsbset.hide() and lsbset.reveal() is
now a function. This is more convenient for a user who wants to use a custom
generator (not in the module lsbset.generators).
* performance improvements for the lsb and lsbset modules.
- performance improvements for the lsb and lsbset modules.
### 0.5.3 (2016-05-19)
* reorganization of all modules. No impact for the users of Stegano.
- reorganization of all modules. No impact for the users of Stegano.
### 0.5.2 (2016-05-18)
* improvements and bug fixes for the exifHeader module;
* added unit tests for the exifHeader module;
* improvements of the documentation.
- improvements and bug fixes for the exifHeader module;
- added unit tests for the exifHeader module;
- improvements of the documentation.
### 0.5.1 (2016-04-16)
* minor improvements and bug fixes;
* added unit tests for the slsb and slsbset modules.
- minor improvements and bug fixes;
- added unit tests for the slsb and slsbset modules.
### 0.5 (2016-03-18)
* management of greyscale images.
- management of greyscale images.
### 0.4.6 (2016-03-12)
* bugfix when the length of the message to hide is not divisible by 3,
- bugfix when the length of the message to hide is not divisible by 3,
for the slsb and slsbset module.
### 0.4.5 (2015-12-23)
* bugfix.
- bugfix.
### 0.4.4 (2015-12-23)
* new project home page;
* minor updated to the documentation.
- new project home page;
- minor updated to the documentation.
### 0.4.3 (2015-10-06)
* bug fixes for Python 3;
* bug fixes in the scripts in *./bin*.
- bug fixes for Python 3;
- bug fixes in the scripts in *./bin*.
### 0.4.2 (2015-10-05)
* first stable release on PypI.
- first stable release on PypI.
### 0.4 (2012-01-02)
@ -297,16 +326,16 @@ Python codes as a Python module or as a program in your scripts.
### 0.3 (2011-04-15)
* you can now use Stéganô as a library in your Python program;
- you can now use Stéganô as a library in your Python program;
(python setup.py install) or as a 'program' thanks to the scripts provided
in the bin directory;
* new documentation (reStructuredText) comes with Stéganô.
- new documentation (reStructuredText) comes with Stéganô.
### 0.2 (2011-03-24)
* this release introduces some bugfixes and a major speed improvement of the
- this release introduces some bugfixes and a major speed improvement of the
*reveal* function for the LSB method. Moreover it is now possible to hide a
binary file (ogg, executable, etc.);
* a new technique for hiding/revealing a message in a JPEG picture by using the
- a new technique for hiding/revealing a message in a JPEG picture by using the
description field of the image is provided.

View file

@ -16,5 +16,6 @@
- panni <panni@fragstore.net>
- Peter Justin <peter@peterjustin.me>
- thundersparkf - https://github.com/thundersparkf
- Mickaël Schoentgen <mschoentgen@nuxeo.com>
And thank you to the testers!

View file

@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

View file

@ -1,9 +1,8 @@
# Stegano
[![builds.sr.ht status](https://builds.sr.ht/~cedric/stegano.svg)](https://builds.sr.ht/~cedric/stegano)
[![Workflow](https://github.com/cedricbonhomme/Stegano/workflows/Python%20application/badge.svg?style=flat-square)](https://github.com/cedricbonhomme/Stegano/actions?query=workflow%3A%22Python+application%22)
[Stegano](https://sr.ht/~cedric/stegano), a pure Python Steganography
[Stegano](https://github.com/cedricbonhomme/Stegano), a pure Python Steganography
module.
Steganography is the art and science of writing hidden messages in such a way
@ -12,9 +11,6 @@ existence of the message, a form of security through obscurity. Consequently,
functions provided by Stegano only hide messages, without encryption.
Steganography is often used with cryptography.
For reporting issues, visit the tracker here:
https://todo.sr.ht/~cedric/stegano
## Installation
@ -97,11 +93,23 @@ Contributions are welcome. If you want to contribute to Stegano I highly
recommend you to install it in a Python virtual environment with poetry.
## Donations
If you wish and if you like Stegano, you can donate via GitHub Sponsors:
[![GitHub Sponsors](https://img.shields.io/github/sponsors/cedricbonhomme)](https://github.com/sponsors/cedricbonhomme)
or with Bitcoin to this address:
bc1q56u6sj7cvlwu58v5lemljcvkh7v2gc3tv8mj0e
Thank you !
## License
This software is licensed under
[GNU General Public License version 3](https://www.gnu.org/licenses/gpl-3.0.html)
Copyright (C) 2010-2023 [Cédric Bonhomme](https://www.cedricbonhomme.org)
Copyright (C) 2010-2025 [Cédric Bonhomme](https://www.cedricbonhomme.org)
For more information, [the list of authors and contributors](CONTRIBUTORS.md) is available.

View file

@ -34,7 +34,7 @@ master_doc = "index"
# General information about the project.
project = "Stegano"
copyright = "2010-2023, Cédric Bonhomme"
copyright = "2010-2025, Cédric Bonhomme"
author = "Cédric Bonhomme <cedric@cedricbonhomme.org>"
# The version info for the project you're documenting, acts as replacement for

View file

@ -6,10 +6,6 @@
Presentation
============
.. image:: https://builds.sr.ht/~cedric/stegano.svg
:target: https://builds.sr.ht/~cedric/stegano
Stegano_ is a pure Python steganography_ module.
Steganography is the art and science of writing hidden messages in such a way
@ -53,7 +49,7 @@ Tutorial
steganalysis
You can have a look at the
`unit tests <https://git.sr.ht/~cedric/stegano/tree/master/tests>`_.
`unit tests <https://github.com/cedricbonhomme/Stegano/tree/master/tests>`_.
License
@ -77,7 +73,7 @@ Contact
.. _Python: https://www.python.org
.. _Stegano: https://sr.ht/~cedric/stegano
.. _Stegano: https://github.com/cedricbonhomme/Stegano
.. _`Pillow`: https://pypi.python.org/pypi/Pillow
.. _`piexif`: https://pypi.python.org/pypi/piexif
.. _steganography: http://en.wikipedia.org/wiki/Steganography

View file

@ -12,7 +12,4 @@ If you want to retrieve the source code (with the unit tests):
.. code-block:: bash
$ git clone https://git.sr.ht/~cedric/stegano
.. image:: https://builds.sr.ht/~cedric/stegano.svg
:target: https://builds.sr.ht/~cedric/stegano
$ git clone https://github.com/cedricbonhomme/Stegano

View file

@ -2,7 +2,7 @@ Using Stegano as a Python module
================================
You can find more examples in the
`unit tests directory <https://git.sr.ht/~cedric/stegano/tree/master/tests>`_.
`unit tests directory <https://github.com/cedricbonhomme/Stegano/tree/master/tests>`_.
LSB method
----------

1170
poetry.lock generated

File diff suppressed because it is too large Load diff

View file

@ -1,67 +1,79 @@
[tool.poetry]
[build-system]
requires = ["poetry-core>=2.0"]
build-backend = "poetry.core.masonry.api"
[project]
name = "stegano"
version = "0.11.2"
version = "1.0.1"
description = "A pure Python Steganography module."
authors = [
"Cédric Bonhomme <cedric@cedricbonhomme.org>"
{name = "Cédric Bonhomme", email= "cedric@cedricbonhomme.org"}
]
license = "GPL-3.0-or-later"
readme = "README.md"
keywords = ["Steganography", "Security", "Stegano"]
homepage = "https://sr.ht/~cedric/stegano"
repository = "https://git.sr.ht/~cedric/stegano"
documentation = "https://stegano.readthedocs.io"
dynamic = ["classifiers"]
keywords = ["steganography", "security", "stegano"]
requires-python = ">=3.10,<4.0"
dependencies = [
"pillow (>=9.5,<11.0)",
"piexif (>=1.1.3)",
"crayons (>=0.4.0)",
"opencv-python (>=4.8.1.78)"
]
[project.urls]
Homepage = "https://github.com/cedricbonhomme/Stegano"
Changelog = "https://github.com/cedricbonhomme/Stegano/blob/master/CHANGELOG.md"
Repository = "https://github.com/cedricbonhomme/Stegano"
Documentation = "https://stegano.readthedocs.io"
[project.scripts]
stegano-lsb = "stegano.console.lsb:main"
stegano-red = "stegano.console.red:main"
stegano-steganalysis-parity = "stegano.console.parity:main"
stegano-steganalysis-statistics = "stegano.console.statistics:main"
[tool.poetry]
requires-poetry = ">=2.0"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Topic :: Security",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)"
]
include = [
"README.md",
"COPYING",
"CHANGELOG.md",
"docs/**/*",
"bin/*"
]
[tool.poetry.scripts]
stegano-lsb = "bin.lsb:main"
stegano-red = "bin.red:main"
stegano-steganalysis-parity = "bin.parity:main"
stegano-steganalysis-statistics = "bin.statistics:main"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
pillow = "^9.5.0"
piexif = "^1.1.3"
crayons = "^0.4.0"
opencv-python = "^4.7.0.72"
[tool.poetry.group.dev.dependencies]
mypy = "^1.2.0"
mypy = "^1.8.0"
flake8 = "^6.0.0"
nose2 = "^0.12.0"
nose2 = "^0.14.0"
Sphinx = "^6.2.1"
pre-commit = "^3.6.0"
[tool.poetry.group.dev]
optional = true
[build-system]
requires = ["poetry>=1.3.2"]
build-backend = "poetry.masonry.api"
[tool.mypy]
python_version = "3.10"
python_version = "3.12"
check_untyped_defs = true
ignore_errors = false
ignore_missing_imports = true

View file

@ -1,10 +1,5 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from . import red
from . import exifHeader
from . import lsb
from . import steganalysis
from . import exifHeader, lsb, red, steganalysis
__all__ = ["red", "exifHeader", "lsb", "steganalysis"]

View file

@ -1,6 +1,6 @@
#!/usr/bin/env python
# Stegano - Stegano is a pure Python steganography module.
# Copyright (C) 2010-2023 Cédric Bonhomme - https://www.cedricbonhomme.org
# Copyright (C) 2010-2025 Cédric Bonhomme - https://www.cedricbonhomme.org
#
# For more information : https://github.com/cedricbonhomme/Stegano
#

View file

@ -1,6 +1,6 @@
#!/usr/bin/env python
# Stegano - Stegano is a pure Python steganography module.
# Copyright (C) 2010-2023 Cédric Bonhomme - https://www.cedricbonhomme.org
# Copyright (C) 2010-2025 Cédric Bonhomme - https://www.cedricbonhomme.org
#
# For more information : https://github.com/cedricbonhomme/Stegano
#

View file

@ -1,6 +1,6 @@
#!/usr/bin/env python
# Stegano - Stegano is a pure Python steganography module.
# Copyright (C) 2010-2023 Cédric Bonhomme - https://www.cedricbonhomme.org
# Copyright (C) 2010-2025 Cédric Bonhomme - https://www.cedricbonhomme.org
#
# For more information : https://github.com/cedricbonhomme/Stegano
#

View file

@ -1,6 +1,6 @@
#!/usr/bin/env python
# Stegano - Stegano is a pure Python steganography module.
# Copyright (C) 2010-2023 Cédric Bonhomme - https://www.cedricbonhomme.org
# Copyright (C) 2010-2025 Cédric Bonhomme - https://www.cedricbonhomme.org
#
# For more information : https://github.com/cedricbonhomme/Stegano
#

View file

@ -1,5 +1,4 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from .exifHeader import hide, reveal

View file

@ -1,8 +1,8 @@
#!/usr/bin/env python
# Stegano - Stegano is a pure Python steganography module.
# Copyright (C) 2010-2023 Cédric Bonhomme - https://www.cedricbonhomme.org
# Copyright (C) 2010-2025 Cédric Bonhomme - https://www.cedricbonhomme.org
#
# For more information : https://git.sr.ht/~cedric/stegano
# For more information : https://github.com/cedricbonhomme/Stegano
#
# 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

View file

@ -1,5 +1,4 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from .lsb import hide, reveal

View file

@ -1,8 +1,8 @@
#!/usr/bin/env python
# Stegano - Stegano is a pure Python steganography module.
# Copyright (C) 2010-2023 Cédric Bonhomme - https://www.cedricbonhomme.org
# Copyright (C) 2010-2025 Cédric Bonhomme - https://www.cedricbonhomme.org
#
# For more information : https://git.sr.ht/~cedric/stegano
# For more information : https://github.com/cedricbonhomme/Stegano
#
# 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

View file

@ -1,8 +1,8 @@
#!/usr/bin/env python
# Stegano - Stegano is a pure Python steganography module.
# Copyright (C) 2010-2023 Cédric Bonhomme - https://www.cedricbonhomme.org
# Copyright (C) 2010-2025 Cédric Bonhomme - https://www.cedricbonhomme.org
#
# For more information : https://git.sr.ht/~cedric/stegano
# For more information : https://github.com/cedricbonhomme/Stegano
#
# 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
@ -67,9 +67,10 @@ def reveal(
generator: Union[None, Iterator[int]] = None,
shift: int = 0,
encoding: str = "UTF-8",
close_file: bool = True,
):
"""Find a message in an image (with the LSB technique)."""
revealer = tools.Revealer(encoded_image, encoding)
revealer = tools.Revealer(encoded_image, encoding, close_file)
width = revealer.encoded_image.width
if not generator:

View file

@ -1,5 +1,4 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from .red import hide, reveal

View file

@ -1,8 +1,8 @@
#!/usr/bin/env python
# Stegano - Stéganô is a basic Python Steganography module.
# Copyright (C) 2010-2023 Cédric Bonhomme - https://www.cedricbonhomme.org
# Copyright (C) 2010-2024 Cédric Bonhomme - https://www.cedricbonhomme.org
#
# For more information : https://git.sr.ht/~cedric/stegano
# For more information : https://github.com/cedricbonhomme/Stegano
#
# 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

View file

@ -1,2 +1 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-

View file

@ -1,8 +1,8 @@
#!/usr/bin/env python
# Stegano - Stegano is a pure Python steganography module.
# Copyright (C) 2010-2023 Cédric Bonhomme - https://www.cedricbonhomme.org
# Copyright (C) 2010-2025 Cédric Bonhomme - https://www.cedricbonhomme.org
#
# For more information : https://git.sr.ht/~cedric/stegano
# For more information : https://github.com/cedricbonhomme/Stegano
#
# 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
@ -34,7 +34,10 @@ def steganalyse(img: Image.Image) -> Image.Image:
width, height = img.size
for row in range(height):
for col in range(width):
r, g, b = img.getpixel((col, row))[0:3]
if pixel := img.getpixel((col, row)):
r, g, b = pixel[0:3]
else:
raise Exception("Error during steganlysis.")
if r % 2 == 0:
r = 0
else:

View file

@ -1,8 +1,8 @@
#!/usr/bin/env python
# Stegano - Stegano is a pure Python steganography module.
# Copyright (C) 2010-2023 Cédric Bonhomme - https://www.cedricbonhomme.org
# Copyright (C) 2010-2025 Cédric Bonhomme - https://www.cedricbonhomme.org
#
# For more information : https://git.sr.ht/~cedric/stegano
# For more information : https://github.com/cedricbonhomme/Stegano
#
# 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

View file

@ -1,8 +1,8 @@
#!/usr/bin/env python
# Stegano - Stegano is a pure Python steganography module.
# Copyright (C) 2010-2023 Cédric Bonhomme - https://www.cedricbonhomme.org
# Copyright (C) 2010-2025 Cédric Bonhomme - https://www.cedricbonhomme.org
#
# For more information : https://git.sr.ht/~cedric/stegano
# For more information : https://github.com/cedricbonhomme/Stegano
#
# 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
@ -175,13 +175,19 @@ class Hider:
class Revealer:
def __init__(self, encoded_image: Union[str, IO[bytes]], encoding: str = "UTF-8"):
def __init__(
self,
encoded_image: Union[str, IO[bytes]],
encoding: str = "UTF-8",
close_file: bool = True,
):
self.encoded_image = open_image(encoded_image)
self._encoding_length = ENCODINGS[encoding]
self._buff, self._count = 0, 0
self._bitab: List[str] = []
self._limit: Union[None, int] = None
self.secret_message = ""
self.close_file = close_file
def decode_pixel(self, coordinate: tuple):
# pixel = [r, g, b] or [r,g,b,a]
@ -208,7 +214,8 @@ class Revealer:
self.secret_message = "".join(self._bitab)[
len(str(self._limit)) + 1 : # noqa: E203
]
self.encoded_image.close()
if self.close_file:
self.encoded_image.close()
return True

View file

@ -1,8 +1,8 @@
#!/usr/bin/env python
# Stegano - Stegano is a pure Python steganography module.
# Copyright (C) 2010-2023 Cédric Bonhomme - https://www.cedricbonhomme.org
# Copyright (C) 2010-2025 Cédric Bonhomme - https://www.cedricbonhomme.org
#
# For more information : https://git.sr.ht/~cedric/stegano
# For more information : https://github.com/cedricbonhomme/Stegano
#
# 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

View file

@ -1,8 +1,8 @@
#!/usr/bin/env python
# Stegano - Stegano is a pure Python steganography module.
# Copyright (C) 2010-2023 Cédric Bonhomme - https://www.cedricbonhomme.org
# Copyright (C) 2010-2025 Cédric Bonhomme - https://www.cedricbonhomme.org
#
# For more information : https://git.sr.ht/~cedric/stegano
# For more information : https://github.com/cedricbonhomme/Stegano
#
# 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
@ -174,9 +174,8 @@ class TestGenerators(unittest.TestCase):
test_file_reshaped = test_file.reshape(
int(test_file.shape[0]), int(test_file.shape[1])
)
self.assertIsNone(
np.testing.assert_allclose(corners, test_file_reshaped, rtol=1e-0, atol=0)
)
res = np.testing.assert_allclose(corners, test_file_reshaped, rtol=1e-0, atol=0) # type: ignore
self.assertIsNone(res)
@staticmethod
def shi_tomashi_reconfigure(

View file

@ -1,8 +1,8 @@
#!/usr/bin/env python
# Stegano - Stegano is a pure Python steganography module.
# Copyright (C) 2010-2023 Cédric Bonhomme - https://www.cedricbonhomme.org
# Copyright (C) 2010-2024 Cédric Bonhomme - https://www.cedricbonhomme.org
#
# For more information : https://git.sr.ht/~cedric/stegano
# For more information : https://github.com/cedricbonhomme/Stegano
#
# 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

View file

@ -1,8 +1,8 @@
#!/usr/bin/env python
# Stegano - Stegano is a pure Python steganography module.
# Copyright (C) 2010-2023 Cédric Bonhomme - https://www.cedricbonhomme.org
# Copyright (C) 2010-2025 Cédric Bonhomme - https://www.cedricbonhomme.org
#
# For more information : https://git.sr.ht/~cedric/stegano
# For more information : https://github.com/cedricbonhomme/Stegano
#
# 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

View file

@ -1,10 +1,9 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Stegano - Stegano is a pure Python steganography module.
# Copyright (C) 2010-2017 Cédric Bonhomme - https://www.cedricbonhomme.org
#
# For more information : https://git.sr.ht/~cedric/stegano
# For more information : https://github.com/cedricbonhomme/Stegano
#
# 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
@ -27,9 +26,10 @@ __license__ = "GPLv3"
import unittest
from PIL import Image, ImageChops
from stegano import lsb
from stegano.steganalysis import parity, statistics
from PIL import Image, ImageChops
class TestSteganalysis(unittest.TestCase):

View file

@ -1,8 +1,8 @@
#!/usr/bin/env python
# Stegano - Stegano is a pure Python steganography module.
# Copyright (C) 2010-2023 Cédric Bonhomme - https://www.cedricbonhomme.org
# Copyright (C) 2010-2025 Cédric Bonhomme - https://www.cedricbonhomme.org
#
# For more information : https://git.sr.ht/~cedric/stegano
# For more information : https://github.com/cedricbonhomme/Stegano
#
# 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