Compare commits

..

159 Commits

Author SHA1 Message Date
scito
66c68fd9ef fix Python 3.7 compatibility 2023-01-02 22:41:30 +01:00
scito
6cfbc10e69 build wheel 2023-01-02 22:18:54 +01:00
scito
064fe81b2e docker remove python3-opencv, but add required libs; add debug mode 2023-01-02 22:11:56 +01:00
scito
cd5160f123 fix Alpine tests 2023-01-02 20:29:37 +01:00
scito
e1c8568ba2 fix protoc generation 2023-01-02 19:28:11 +01:00
scito
ef0fbc3586 update README 2023-01-02 19:09:28 +01:00
scito
b86c4f9a61 add ignore duplicate entries option and add quiet test; fixed -k stdout 2023-01-02 17:30:46 +01:00
scito
722009b172 build: add generate result files option 2023-01-02 14:16:30 +01:00
scito
1c106150b0 sort docker imports 2023-01-02 13:53:29 +01:00
scito
77e23b4ae4 refactor cv2 window and logging
- increase font and cut if too long
- refactor logging
- extract key handling
- refactor big methods
2023-01-02 13:52:04 +01:00
scito
fe3e371897 build: print restult at the end 2023-01-02 12:50:41 +01:00
scito
7c6d341270 rename github urls; update descriptions 2023-01-01 23:21:29 +01:00
scito
160a558825 some renaming and README updating 2023-01-01 22:47:12 +01:00
scito
8d8b993f12 add CV2 screenshot 2023-01-01 20:15:38 +01:00
scito
e177f860e1 abort instead of assertion 2023-01-01 19:55:28 +01:00
scito
8545dab7a5 extract draw_box and print_text functions 2023-01-01 19:22:46 +01:00
scito
16047a5b15 fix test compatibility with Alpine Linux 2023-01-01 19:19:41 +01:00
scito
604c461549 rename to build.sh 2023-01-01 19:19:21 +01:00
scito
f5acd1dee9 test docker locally after build, easier to reproduce 2023-01-01 17:56:06 +01:00
scito
1086e28056 fix pylint and mypy problems 2023-01-01 17:45:50 +01:00
scito
2c0cfd83ee docker: pip install -U 2023-01-01 17:38:08 +01:00
scito
a3bda6ff8e make PYTHON workaround uniform 2023-01-01 17:25:24 +01:00
scito
67c4f737c4 do catch AssertionError in camera capture 2023-01-01 15:21:18 +01:00
scito
fff74fc638 handle errors while reading QR from camera; log errors 2023-01-01 15:12:24 +01:00
scito
19c8e9df23 update docs 2023-01-01 10:03:44 +01:00
scito
13fcdcd022 fix problem of outdated colorama 2023-01-01 01:22:06 +01:00
scito
91b9b3671c ci: add missing colorama 2023-01-01 01:02:39 +01:00
scito
be6b9c8a7c ci: mypy only for latest Python on ubuntu 2023-01-01 00:57:18 +01:00
scito
3d61f1d316 ci: use pip install -e . for smoke tests 2023-01-01 00:56:19 +01:00
scito
a8559db6e0 ci: mypy only for latest Python on ubuntu 2023-01-01 00:52:28 +01:00
scito
9f725b227f ci: use requirements.txt for smoke tests 2023-01-01 00:48:52 +01:00
scito
869c404489 fix fileinput.input encoding only since Python 3.10 2023-01-01 00:41:11 +01:00
scito
003e122808 ignore types for stdout.reconfigure 2023-01-01 00:22:09 +01:00
scito
b3fc854078 colored warn and error messages
- add log_warn() and log_error()
- adapt tests
2023-01-01 00:14:56 +01:00
scito
fc1619d9c7 disable verbose unittest for Windows 2022-12-31 21:34:28 +01:00
scito
5be6e9c322 fix finput encoding problem on Windows 2022-12-31 21:27:40 +01:00
scito
739ae4c012 fix pytest.skipif 2022-12-31 21:16:19 +01:00
scito
1af6fe3161 fix camera type and enhance readme with pyzbar problem 2022-12-31 21:02:05 +01:00
scito
e311386a15 skip verbose tests for windows as there are encoding problems 2022-12-31 20:42:40 +01:00
scito
496564a605 avoid AttributeError in tests
StringIO in tests do not have all attributes, ignore it
2022-12-31 20:19:21 +01:00
scito
6406fcaef7 set encoding to utf-8 for stdout, needed for Windows 2022-12-31 19:52:09 +01:00
scito
7bb92f00b2 avoid mypy problems for duplicate Final
src/extract_otp_secrets.py:63: error: Incompatible import of "Final"
(imported name has type "typing_extensions._SpecialForm", local name has type "typing._SpecialForm")
[assignment]
2022-12-31 19:42:53 +01:00
scito
965f721caf ci_docker: run smoke tests before building 2022-12-31 19:20:01 +01:00
scito
61cca0c476 import Final from __future__ for Python 3.7 2022-12-31 19:11:37 +01:00
scito
ebd4d61f5f try workaround for Python 3.7: must use () for assignments 2022-12-31 19:06:57 +01:00
scito
e058010be3 fix docker invalid tags from comments 2022-12-31 18:59:01 +01:00
scito
463a9851be try workaround for Python 3.7: avoid Final in tuple assignments 2022-12-31 18:55:16 +01:00
scito
dcbb128e7c try workaround for Python 3.7: do not use Types in Final 2022-12-31 18:51:26 +01:00
scito
1b572fc9ab fix pipenv problem 2022-12-31 18:40:26 +01:00
scito
c3e9883216 try workaround for Python 3.7 NORMAL_COLOR = 255, 0, 255 problem 2022-12-31 18:21:13 +01:00
scito
3f9f7d2b8a better formatting of help 2022-12-31 18:00:49 +01:00
scito
0212e54f42 ci: runs on windows, exclude linting for Python 3.7 2022-12-31 17:52:19 +01:00
scito
3558eba93b use detect_and_decode since qrreader is fixed 2022-12-31 17:30:24 +01:00
scito
5225af0621 update README with --qr option 2022-12-31 16:42:12 +01:00
scito
1f04dd71e2 allow to choose qr reader for images 2022-12-31 15:54:21 +01:00
scito
2dea161cdc add argument for initial setting of qr_mode 2022-12-31 12:44:16 +01:00
scito
f731530f57 improve handling of wrong urls
- adapt tests
- improve messages for files
- show red box camera
2022-12-31 11:32:07 +01:00
scito
4c0bb8dc61 vscode debug: fix path to script: add missing src/ 2022-12-31 11:26:11 +01:00
scito
ad9c4a22db ci_docker: upload to only one repo 2022-12-31 11:25:33 +01:00
scito
2cdf2480a0 make bulding docker optional in script 2022-12-31 11:25:02 +01:00
scito
5aa1a35b8f add licence label to docker images 2022-12-31 11:23:44 +01:00
scito
3f3903cc81 add version to PYTHON todos 2022-12-30 21:22:03 +01:00
scito
97e4f084cb mv docker extract_otp_secrets_no_qr_reader -> extract_otp_secrets_only_txt 2022-12-30 20:43:51 +01:00
scito
549c128fb7 renaming extract_otp_secret_keys -> extract_otp_secrets and test file names 2022-12-30 20:37:38 +01:00
scito
10ff533a42 downgrade opencv for macos in requirements.txt and Pipfile 2022-12-30 19:26:45 +01:00
scito
7eb6f036ab ci: tryout downgrade opencv for macos 2022-12-30 18:51:13 +01:00
scito
652ecf57f0 ci: workaround macOS pytest segfauls -> exclude macOS (2) 2022-12-30 18:33:26 +01:00
scito
9592e6ebfe ci: workaround macOS pytest segfauls -> exclude macOS 2022-12-30 18:29:23 +01:00
scito
d6c285e59d ci: segfault: try python -m pytest 2022-12-30 18:23:31 +01:00
scito
5eed47364e ci: revert try out changes 2022-12-30 18:18:15 +01:00
scito
26e4632f90 ci: another try, install module 2022-12-30 18:14:16 +01:00
scito
c84ca46861 ci: try to avoid random test failures 2022-12-30 18:09:25 +01:00
scito
63f5ab37c4 docu pyproject.toml 2022-12-30 18:02:22 +01:00
scito
f97d7143c5 ci: fix mypy and pytest-cov after clean 2022-12-30 17:49:46 +01:00
scito
0566683203 reenable pytest --import-mode=importlib 2022-12-30 17:31:34 +01:00
scito
ee404576d5 set package_dir=src and clean option 2022-12-30 17:14:49 +01:00
scito
60d7362eee add protobuf_generated_python to py-modules 2022-12-30 15:47:02 +01:00
scito
1beba7587f enable setuptools-git-versioning 2022-12-30 15:44:58 +01:00
scito
144c9e6320 fixes after change to src-layout 2022-12-30 15:31:41 +01:00
scito
3e4476e317 change to src-layout 2022-12-30 12:37:05 +01:00
scito
7f5d4b37ee initial pyproject.toml 2022-12-30 11:14:15 +01:00
scito
82e43172c3 update setup.py 2022-12-30 09:23:31 +01:00
scito
149a548610 upgrade opencv 4.7.0 & run program at the end 2022-12-30 08:14:13 +01:00
scito
d8de89de36 improve README, add docker ci badge 2022-12-30 02:30:16 +01:00
scito
3c164fea28 coverage from yellowgreen to brightgreen 2022-12-30 02:01:10 +01:00
scito
23d8cfa151 ci: Pytest coverage comment only for 3.x and ubuntu-latest 2022-12-30 01:58:54 +01:00
scito
f5ee59368e python 3.7 compatibility: use TypedDict from typing_extensions 2022-12-30 01:44:11 +01:00
scito
b2a877061c add typing_extensions for compatibility 2022-12-30 01:37:13 +01:00
scito
c525c06480 quit on window close click 2022-12-30 01:22:12 +01:00
scito
fb43c6793c type hinting fixes 2022-12-30 01:22:05 +01:00
scito
58fc1b85ac type compatibility for Python < 3.11 2022-12-30 01:07:39 +01:00
scito
04d864c093 add code coverage bade & ci: fix pytest-cov 2022-12-30 00:58:52 +01:00
scito
51094a1a18 use PathLike type instead of str | Path 2022-12-29 23:17:31 +01:00
scito
a5768ba1e6 Workaround for PYTHON < 3.10: use Union[int, None] instead of int | None 2022-12-29 22:34:07 +01:00
scito
faafb61241 fix type hint compatibility with Python < 3.11 2022-12-29 22:12:07 +01:00
scito
d5a088135e ci: if matrix.python-version 2022-12-29 22:04:52 +01:00
scito
45a9693586 ci: fix if ${{ matrix.python-version }} 2022-12-29 21:58:44 +01:00
scito
66b41d86e6 ci: use ${{ }} for mypy python check 2022-12-29 21:52:54 +01:00
scito
89564448c6 ci: fix mypy if condition 2022-12-29 21:41:11 +01:00
scito
9ab33bd02b sort imports 2022-12-29 21:34:14 +01:00
scito
f4ab540283 rename protobuf module as pb 2022-12-29 21:32:19 +01:00
scito
201e6510f8 add type hints (Python 3.11) 2022-12-29 21:29:20 +01:00
scito
f933cd0d32 initial mypy type checking 2022-12-29 16:30:18 +01:00
scito
f4389ca8a3 fix linting 2022-12-29 15:52:17 +01:00
scito
b89a338246 enable mypy type checking 2022-12-29 14:24:12 +01:00
scito
631bacc409 use tmp_path fixture instead of clean_up() in pytests 2022-12-29 13:44:19 +01:00
scito
833afa7c13 use 3.11-slim-bullseye, add missing package 2022-12-29 11:50:19 +01:00
scito
4209a5db3d move abort to end, use SystemExit instead; improve colors 2022-12-29 11:18:57 +01:00
scito
d9a4c7ca9f fix docker image digest 2022-12-29 04:36:31 +01:00
scito
829fe65b1e ci: pip install pytest-mock 2022-12-29 04:24:00 +01:00
scito
c90526dcf2 fix undefined name 'abort' and 'qreader' 2022-12-29 04:15:36 +01:00
scito
47e84e4462 run docker capture version 2022-12-29 03:19:09 +01:00
scito
b4931856ba apk add --no-cache nano zlib jpeg && re-enable tests 2022-12-29 02:34:29 +01:00
scito
f532dc668d indent_size = 2 for yml 2022-12-29 01:59:54 +01:00
scito
1dee86668a rename ARG run_tests to RUN_TESTS 2022-12-29 01:48:00 +01:00
scito
aa0de699fe disable tests for alpine 2022-12-29 01:43:22 +01:00
scito
7e684ff19e --build-arg run_tests=false 2022-12-29 01:35:43 +01:00
scito
b159b9e70d apk add musl-dev and apk del .build-deps 2022-12-29 01:13:48 +01:00
scito
951878d027 apk add gcc 2022-12-29 01:02:41 +01:00
scito
2a44bbfa27 use $(apk --print-arch) 2022-12-29 00:53:47 +01:00
scito
540ae7438d use $(uname -m) 2022-12-29 00:42:13 +01:00
scito
c346c085b6 apk add python3-dev py3-setuptools 2022-12-29 00:33:52 +01:00
scito
7cb3b2ac21 always apk add on alpine 2022-12-29 00:29:26 +01:00
scito
0eb5014eb0 ci_docker: add docker/setup-buildx-action@v2 2022-12-29 00:25:29 +01:00
scito
d4f5eb243e change to "$TARGETARCH" == "arm64" 2022-12-29 00:02:14 +01:00
scito
b05decc10f apk add zlib-dev jpeg-dev only for alpine linux/arm64 2022-12-28 23:58:09 +01:00
scito
21ebccbba5 apk add zlib-dev 2022-12-28 23:44:30 +01:00
scito
912825034f add zlib for alpine/arm64 docker image 2022-12-28 23:37:54 +01:00
scito
95e7d73173 mock no_args tests 2022-12-28 23:37:21 +01:00
scito
9f0872c2d0 extract from camera
- add help description
- use f-strings
- handle plural correctly
- rename methods, use otp_url instead of line
- remove importlib.util
- move cv2 imports to top
- remove unnecessary global delcarations
- group image tests
2022-12-28 22:43:40 +01:00
scito
7964c687f6 make running tests optional in docker build 2022-12-28 09:02:02 +01:00
scito
1d0b568b1e setup QEMU 2022-12-27 11:36:53 +01:00
scito
aaa7bd3da1 build also on arm64 2022-12-27 10:34:32 +01:00
scito
5ab5f84ff3 add docker label for source 2022-12-27 01:11:36 +01:00
scito
a4c4badd54 fix docker hub username 2022-12-27 00:57:49 +01:00
scito
f272c35a1f enable docker push in ci_docker 2022-12-27 00:52:14 +01:00
scito
e4e5271c0f github actions docker build no_qr_reader 2022-12-27 00:43:30 +01:00
scito
158564e79a fix to_bytes() mandatory byte_order 2022-12-27 00:18:37 +01:00
scito
672d18a5ca build docker images, run tests in docker build
- qreader_available flag
- echo commands in upgrade_deps.sh
2022-12-26 23:57:38 +01:00
scito
0490e227e1 docker image with qreader, 2nd image without qreader
- organize imports
- add qreader pytest.mark
- relaxed mode for pytest
- run tests in docker
- more tests
2022-12-26 18:31:09 +01:00
scito
2bcaa35251 organize imports 2022-12-25 11:00:15 +01:00
scito
b0b4c29e7b improve README 2022-12-24 15:50:44 +01:00
scito
e754befb52 refactor; update setup.py
more verbose logging
better error messages
2022-12-24 15:30:17 +01:00
scito
06b8efff62 add zypper and dnf for libzbar0 2022-12-24 05:31:17 +01:00
scito
5d0feacdba update README 2022-12-24 05:12:52 +01:00
scito
343520acb8 support multiple infiles 2022-12-24 04:48:12 +01:00
scito
c2d7c905ff handle wrong stdin streams 2022-12-24 04:19:43 +01:00
scito
bc329e24d5 renable libzbar 2022-12-24 03:29:14 +01:00
scito
4612ab6e7f catch zbar import error 2022-12-24 03:25:10 +01:00
scito
05db190de3 test qreader import 2022-12-24 03:12:06 +01:00
scito
0ad3c2d8ed change name to nightly tests 2022-12-24 03:06:03 +01:00
scito
31bb2909da fix ci jobs 2022-12-24 03:05:07 +01:00
scito
c1a55fb874 test pypy only in nightly builds 2022-12-24 03:02:08 +01:00
scito
82da427d1a refactor code: extract method 2022-12-24 02:56:40 +01:00
scito
af0d7ffd5d dynamic import of QReader
since this module has a dependency to zbar lib
2022-12-24 02:46:36 +01:00
scito
9a308b148f fix macOS ci 2022-12-24 02:37:16 +01:00
scito
cd07851e30 install zbar lib 2022-12-24 02:29:43 +01:00
scito
f4934192ae WIP 2022-12-24 01:59:35 +01:00
qwertyca
483fcc0163 Add the ability so provide an image file as the infile. If the file contains a QR code generated by Google Authenticator's "Transfer Accounts" function, it will be decoded directly in a single step. This is meant to help users who need to access their secrets from Google Authenticator but don't have a QR code decoder and don't want to use an online one due to security concerns. 2022-12-23 10:17:04 +01:00
2 changed files with 7 additions and 6 deletions

View File

@@ -9,6 +9,7 @@ name: docker
on:
# run it on push to the default repository branch
push:
branches: [master]
schedule:
# Run weekly on default branch
- cron: '47 3 * * 6'

View File

@@ -1,4 +1,4 @@
# Extract TOTP/HOTP secrets from QR codes exported by two-factor authentication apps
# Extract secrets from QR codes exported by two-factor authentication apps
[![CI tests](https://github.com/scito/extract_otp_secrets/actions/workflows/ci.yml/badge.svg)](https://github.com/scito/extract_otp_secrets/actions/workflows/ci.yml)
![coverage](https://img.shields.io/badge/coverage-96%25-brightgreen)
@@ -13,15 +13,15 @@
---
The Python script `extract_otp_secrets.py` extracts one time password (OTP) secrets from QR codes exported by two-factor authentication (2FA) apps such as "Google Authenticator".
The exported QR codes from authentication apps can be read in three ways:
The export QR codes from authentication apps can be provided in three ways to this script:
1. Capture from the system camera using a GUI, _(new!)_
2. Read image files containing the QR codes, and _(new!)_
3. Read text files containing the QR code data generated by third-party QR readers.
1. Capture from the system camera in a GUI,
2. Image files containing the QR codes, and
3. Text files containing the QR code data generated by QR readers.
The secret and otp values can be exported to json or csv files, as well as printed or saved to PNG images.
**The project and the script were renamed from extract_otp_secret_keys to extract_otp_secrets in version 2.0.0.**
This script/project was renamed from extract_otp_secret_keys to extract_otp_secrets in version 2.0.0.
## Installation