mirror of
https://github.com/scito/extract_otp_secrets.git
synced 2025-12-18 08:12:26 +01:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cff5fe1cda | ||
|
|
576b1e68c5 | ||
|
|
84e1922979 | ||
|
|
7f89168b92 | ||
|
|
b9f17c4a95 |
1
.github/workflows/ci.yml
vendored
1
.github/workflows/ci.yml
vendored
@@ -9,6 +9,7 @@ on:
|
|||||||
push:
|
push:
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- 'docs/**'
|
- 'docs/**'
|
||||||
|
- '**.md'
|
||||||
# pull_request:
|
# pull_request:
|
||||||
schedule:
|
schedule:
|
||||||
# Run daily on default branch
|
# Run daily on default branch
|
||||||
|
|||||||
7
.github/workflows/ci_docker.yml
vendored
7
.github/workflows/ci_docker.yml
vendored
@@ -13,6 +13,7 @@ on:
|
|||||||
push:
|
push:
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- 'docs/**'
|
- 'docs/**'
|
||||||
|
- '**.md'
|
||||||
tags-ignore:
|
tags-ignore:
|
||||||
- '**'
|
- '**'
|
||||||
# branches is needed if tags-ignore is used
|
# branches is needed if tags-ignore is used
|
||||||
@@ -24,7 +25,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-and-push-docker-debian-image:
|
build-and-push-docker-debian-image:
|
||||||
name: Build Docker image and push to repositories
|
name: Build Docker Bullseye image and push to repositories
|
||||||
# run only when code is compiling and tests are passing
|
# run only when code is compiling and tests are passing
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
@@ -63,7 +64,7 @@ jobs:
|
|||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GHCR_IO_TOKEN }}
|
password: ${{ secrets.GHCR_IO_TOKEN }}
|
||||||
|
|
||||||
- name: "qr_reader: Build image and push to Docker Hub and GitHub Container Registry"
|
- name: "Build image and push to Docker Hub and GitHub Container Registry"
|
||||||
id: docker_build_qr_reader_latest
|
id: docker_build_qr_reader_latest
|
||||||
uses: docker/build-push-action@v3
|
uses: docker/build-push-action@v3
|
||||||
with:
|
with:
|
||||||
@@ -89,7 +90,7 @@ jobs:
|
|||||||
echo "extract_otp_secrets: ${{ steps.docker_build_qr_reader_latest.outputs.digest }}"
|
echo "extract_otp_secrets: ${{ steps.docker_build_qr_reader_latest.outputs.digest }}"
|
||||||
|
|
||||||
build-and-push-docker-alpine-image:
|
build-and-push-docker-alpine-image:
|
||||||
name: Build Docker image and push to repositories
|
name: Build Docker Alpine image and push to repositories
|
||||||
# run only when code is compiling and tests are passing
|
# run only when code is compiling and tests are passing
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
|||||||
55
.github/workflows/ci_release.yml
vendored
55
.github/workflows/ci_release.yml
vendored
@@ -151,6 +151,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Smoke tests
|
- name: Smoke tests
|
||||||
run: |
|
run: |
|
||||||
|
dist/extract_otp_secrets_linux_x86_64 -V
|
||||||
dist/extract_otp_secrets_linux_x86_64 -h
|
dist/extract_otp_secrets_linux_x86_64 -h
|
||||||
dist/extract_otp_secrets_linux_x86_64 example_export.png
|
dist/extract_otp_secrets_linux_x86_64 example_export.png
|
||||||
dist/extract_otp_secrets_linux_x86_64 - < example_export.txt
|
dist/extract_otp_secrets_linux_x86_64 - < example_export.txt
|
||||||
@@ -184,14 +185,17 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#choosing-github-hosted-runners
|
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#choosing-github-hosted-runners
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: windows-latest
|
||||||
TARGET: linux
|
TARGET: windows
|
||||||
|
# TODO add --icon
|
||||||
|
# TODO add --manifest
|
||||||
|
# TODO find more elegant solution for pyzbar\libiconv.dll and pyzbar\libzbar-64.dll
|
||||||
CMD_BUILD: |
|
CMD_BUILD: |
|
||||||
pyinstaller -y --add-data $pythonLocation/__yolo_v3_qr_detector/:__yolo_v3_qr_detector/ --onefile src/extract_otp_secrets.py
|
pyinstaller -y --add-data "$($Env:pythonLocation)\__yolo_v3_qr_detector;__yolo_v3_qr_detector" --add-binary "$($Env:pythonLocation)\Lib\site-packages\pyzbar\libiconv.dll;pyzbar" --add-binary "$($Env:pythonLocation)\Lib\site-packages\pyzbar\libzbar-64.dll;pyzbar" --onefile --version-file build\file_version_info.txt src\extract_otp_secrets.py
|
||||||
OUT_FILE_NAME: extract_otp_secrets
|
OUT_FILE_NAME: extract_otp_secrets.exe
|
||||||
ASSET_NAME: extract_otp_secrets_linux_x86_64_ubuntu_latest
|
ASSET_NAME: extract_otp_secrets_win_x86_64.exe
|
||||||
ASSET_MIME: application/x-executable
|
ASSET_MIME: application/vnd.microsoft.portable-executable
|
||||||
UPLOAD: false
|
UPLOAD: true
|
||||||
- os: macos-11
|
- os: macos-11
|
||||||
TARGET: macos
|
TARGET: macos
|
||||||
# TODO add --icon
|
# TODO add --icon
|
||||||
@@ -206,17 +210,14 @@ jobs:
|
|||||||
ASSET_NAME: extract_otp_secrets_macos_x86_64
|
ASSET_NAME: extract_otp_secrets_macos_x86_64
|
||||||
ASSET_MIME: application/x-newton-compatible-pkg
|
ASSET_MIME: application/x-newton-compatible-pkg
|
||||||
UPLOAD: true
|
UPLOAD: true
|
||||||
- os: windows-latest
|
- os: ubuntu-latest
|
||||||
TARGET: windows
|
TARGET: linux
|
||||||
# TODO add --icon
|
|
||||||
# TODO add --manifest
|
|
||||||
# TODO find more elegant solution for pyzbar\libiconv.dll and pyzbar\libzbar-64.dll
|
|
||||||
CMD_BUILD: |
|
CMD_BUILD: |
|
||||||
pyinstaller -y --add-data "$($Env:pythonLocation)\__yolo_v3_qr_detector;__yolo_v3_qr_detector" --add-binary "$($Env:pythonLocation)\Lib\site-packages\pyzbar\libiconv.dll;pyzbar" --add-binary "$($Env:pythonLocation)\Lib\site-packages\pyzbar\libzbar-64.dll;pyzbar" --onefile --version-file build\file_version_info.txt src\extract_otp_secrets.py
|
pyinstaller -y --add-data $pythonLocation/__yolo_v3_qr_detector/:__yolo_v3_qr_detector/ --onefile src/extract_otp_secrets.py
|
||||||
OUT_FILE_NAME: extract_otp_secrets.exe
|
OUT_FILE_NAME: extract_otp_secrets
|
||||||
ASSET_NAME: extract_otp_secrets_win_x86_64.exe
|
ASSET_NAME: extract_otp_secrets_linux_x86_64_ubuntu_latest
|
||||||
ASSET_MIME: application/vnd.microsoft.portable-executable
|
ASSET_MIME: application/x-executable
|
||||||
UPLOAD: true
|
UPLOAD: false
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: Set macos macos_python_path
|
- name: Set macos macos_python_path
|
||||||
@@ -245,11 +246,12 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
mkdir -p build/
|
mkdir -p build/
|
||||||
VERSION_STR=$(setuptools-git-versioning) VERSION_MAJOR=$(cut -d '.' -f 1 <<< "$(setuptools-git-versioning)") VERSION_MINOR=$(cut -d '.' -f 2 <<< "$(setuptools-git-versioning)") VERSION_PATCH=$(cut -d '.' -f 3 <<< "$(setuptools-git-versioning)") VERSION_BUILD=$(($(git rev-list --count $(git tag | sort -V -r | sed '1!d')..HEAD))) YEARS='2020-2023' envsubst < file_version_info_template.txt > build/file_version_info.txt
|
VERSION_STR=$(setuptools-git-versioning) VERSION_MAJOR=$(cut -d '.' -f 1 <<< "$(setuptools-git-versioning)") VERSION_MINOR=$(cut -d '.' -f 2 <<< "$(setuptools-git-versioning)") VERSION_PATCH=$(echo $(cut -d '.' -f 3 <<< "$(setuptools-git-versioning)") | sed -E "s/^([0-9]+).*/\1/") VERSION_BUILD=$(($(git rev-list --count $(git tag | sort -V -r | sed '1!d')..HEAD))) YEARS='2020-2023' envsubst < file_version_info_template.txt > build/file_version_info.txt
|
||||||
- name: Build with pyinstaller for ${{ matrix.TARGET }}
|
- name: Build with pyinstaller for ${{ matrix.TARGET }}
|
||||||
run: ${{ matrix.CMD_BUILD }}
|
run: ${{ matrix.CMD_BUILD }}
|
||||||
- name: Smoke tests for generated exe (general)
|
- name: Smoke tests for generated exe (general)
|
||||||
run: |
|
run: |
|
||||||
|
dist/${{ matrix.OUT_FILE_NAME }} -V
|
||||||
dist/${{ matrix.OUT_FILE_NAME }} -h
|
dist/${{ matrix.OUT_FILE_NAME }} -h
|
||||||
dist/${{ matrix.OUT_FILE_NAME }} example_export.png
|
dist/${{ matrix.OUT_FILE_NAME }} example_export.png
|
||||||
- name: Smoke tests for generated exe (stdin)
|
- name: Smoke tests for generated exe (stdin)
|
||||||
@@ -268,14 +270,25 @@ jobs:
|
|||||||
if: ${{ matrix.UPLOAD }}
|
if: ${{ matrix.UPLOAD }}
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
response=$(curl \
|
curl \
|
||||||
-X POST \
|
-X POST \
|
||||||
-H "Accept: application/vnd.github+json" \
|
-H "Accept: application/vnd.github+json" \
|
||||||
-H "Content-Type: ${{ matrix.ASSET_MIME }}" \
|
-H "Content-Type: ${{ matrix.ASSET_MIME }}" \
|
||||||
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}"\
|
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}"\
|
||||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||||
--silent \
|
|
||||||
--show-error \
|
--show-error \
|
||||||
--data-binary @dist/${{ matrix.OUT_FILE_NAME }} \
|
--data-binary @dist/${{ matrix.OUT_FILE_NAME }} \
|
||||||
$(cat release_url.txt)=${{ matrix.ASSET_NAME }})
|
$(cat release_url.txt)=${{ matrix.ASSET_NAME }}
|
||||||
|
|
||||||
|
# run: |
|
||||||
|
# response=$(curl \
|
||||||
|
# -X POST \
|
||||||
|
# -H "Accept: application/vnd.github+json" \
|
||||||
|
# -H "Content-Type: ${{ matrix.ASSET_MIME }}" \
|
||||||
|
# -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}"\
|
||||||
|
# -H "X-GitHub-Api-Version: 2022-11-28" \
|
||||||
|
# --silent \
|
||||||
|
# --show-error \
|
||||||
|
# --data-binary @dist/${{ matrix.OUT_FILE_NAME }} \
|
||||||
|
# $(cat release_url.txt)=${{ matrix.ASSET_NAME }})
|
||||||
|
|
||||||
|
|||||||
35
README.md
35
README.md
@@ -35,13 +35,12 @@ The secrets can be exported to JSON or CSV, or printed as QR codes to console or
|
|||||||
|
|
||||||
## Table of contents
|
## Table of contents
|
||||||
|
|
||||||
|
- [Download binary executable (🆕 since v2.1)](#download-binary-executable--since-v21)
|
||||||
- [Usage](#usage)
|
- [Usage](#usage)
|
||||||
- [Capture QR codes from camera (🆕 since version 2.0)](#capture-qr-codes-from-camera--since-version-20)
|
- [Capture QR codes from camera (🆕 since version 2.0)](#capture-qr-codes-from-camera--since-version-20)
|
||||||
- [With builtin QR decoder from image files (🆕 since version 2.0)](#with-builtin-qr-decoder-from-image-files--since-version-20)
|
- [With builtin QR decoder from image files (🆕 since version 2.0)](#with-builtin-qr-decoder-from-image-files--since-version-20)
|
||||||
- [With external QR decoder app from text files](#with-external-qr-decoder-app-from-text-files)
|
- [With external QR decoder app from text files](#with-external-qr-decoder-app-from-text-files)
|
||||||
- [Installation](#installation)
|
- [Installation of Python script (recommend for developers or advanced users)](#installation-of-python-script-recommend-for-developers-or-advanced-users)
|
||||||
- [Download binary executable (🆕 since v2.1)](#download-binary-executable--since-v21)
|
|
||||||
- [Run as script (recommend for developers or advanced users)](#run-as-script-recommend-for-developers-or-advanced-users)
|
|
||||||
- [Installation of shared system libraries](#installation-of-shared-system-libraries)
|
- [Installation of shared system libraries](#installation-of-shared-system-libraries)
|
||||||
- [Program help: arguments and options](#program-help-arguments-and-options)
|
- [Program help: arguments and options](#program-help-arguments-and-options)
|
||||||
- [Examples](#examples)
|
- [Examples](#examples)
|
||||||
@@ -86,6 +85,15 @@ The secrets can be exported to JSON or CSV, or printed as QR codes to console or
|
|||||||
- [Related projects](#related-projects)
|
- [Related projects](#related-projects)
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
## Download binary executable (🆕 since v2.1)
|
||||||
|
|
||||||
|
1. Download executable for your platform from [latest release](https://github.com/scito/extract_otp_secrets/releases/latest), see assets
|
||||||
|
2. Start executable by clicking or from command line
|
||||||
|
|
||||||
|
✅ Everything is just packed in one executable.
|
||||||
|
✅ No installation needed, neither Python nor dependencies have to be installed.
|
||||||
|
✅ Easy and convenient
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
### Capture QR codes from camera (🆕 since version 2.0)
|
### Capture QR codes from camera (🆕 since version 2.0)
|
||||||
@@ -97,10 +105,6 @@ The secrets can be exported to JSON or CSV, or printed as QR codes to console or
|
|||||||
```
|
```
|
||||||
extract_otp_secrets
|
extract_otp_secrets
|
||||||
```
|
```
|
||||||
or
|
|
||||||
```
|
|
||||||
python src/extract_otp_secrets.py
|
|
||||||
```
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -120,7 +124,7 @@ The secrets are printed by default to the console. [Set program parameters](#pro
|
|||||||
4. Transfer the images files to the computer where his script is installed.
|
4. Transfer the images files to the computer where his script is installed.
|
||||||
5. Call this script with the file as input:
|
5. Call this script with the file as input:
|
||||||
```
|
```
|
||||||
python src/extract_otp_secrets.py example_export.png
|
extract_otp_secrets example_export.png
|
||||||
```
|
```
|
||||||
6. Remove unencrypted files with secrets from your computer and mobile.
|
6. Remove unencrypted files with secrets from your computer and mobile.
|
||||||
|
|
||||||
@@ -133,22 +137,11 @@ python src/extract_otp_secrets.py example_export.png
|
|||||||
5. Transfer the file to the computer where his script is installed.
|
5. Transfer the file to the computer where his script is installed.
|
||||||
6. Call this script with the file as input:
|
6. Call this script with the file as input:
|
||||||
```
|
```
|
||||||
python src/extract_otp_secrets.py example_export.txt
|
extract_otp_secrets example_export.txt
|
||||||
```
|
```
|
||||||
7. Remove unencrypted files with secrets from your computer and mobile.
|
7. Remove unencrypted files with secrets from your computer and mobile.
|
||||||
|
|
||||||
## Installation
|
## Installation of Python script (recommend for developers or advanced users)
|
||||||
|
|
||||||
### Download binary executable (🆕 since v2.1)
|
|
||||||
|
|
||||||
1. Download executable for your platform from [latest release](https://github.com/scito/extract_otp_secrets/releases/latest), see assets
|
|
||||||
2. Start executable by clicking or from command line
|
|
||||||
|
|
||||||
✅ Everything is just packed in one executable.
|
|
||||||
✅ No installation needed, neither Python nor dependencies have to be installed.
|
|
||||||
✅ Easy and convenient
|
|
||||||
|
|
||||||
### Run as script (recommend for developers or advanced users)
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/scito/extract_otp_secrets.git
|
git clone https://github.com/scito/extract_otp_secrets.git
|
||||||
|
|||||||
@@ -3,13 +3,12 @@ Generate from file: README.md
|
|||||||
## Table of contents
|
## Table of contents
|
||||||
|
|
||||||
- [Table of contents](#table-of-contents)
|
- [Table of contents](#table-of-contents)
|
||||||
|
- [Download binary executable (🆕 since v2.1)](#download-binary-executable--since-v21)
|
||||||
- [Usage](#usage)
|
- [Usage](#usage)
|
||||||
- [Capture QR codes from camera (🆕 since version 2.0)](#capture-qr-codes-from-camera--since-version-20)
|
- [Capture QR codes from camera (🆕 since version 2.0)](#capture-qr-codes-from-camera--since-version-20)
|
||||||
- [With builtin QR decoder from image files (🆕 since version 2.0)](#with-builtin-qr-decoder-from-image-files--since-version-20)
|
- [With builtin QR decoder from image files (🆕 since version 2.0)](#with-builtin-qr-decoder-from-image-files--since-version-20)
|
||||||
- [With external QR decoder app from text files](#with-external-qr-decoder-app-from-text-files)
|
- [With external QR decoder app from text files](#with-external-qr-decoder-app-from-text-files)
|
||||||
- [Installation](#installation)
|
- [Installation of Python script (recommend for developers or advanced users)](#installation-of-python-script-recommend-for-developers-or-advanced-users)
|
||||||
- [Download binary executable (🆕 since v2.1)](#download-binary-executable--since-v21)
|
|
||||||
- [Run as script (recommend for developers or advanced users)](#run-as-script-recommend-for-developers-or-advanced-users)
|
|
||||||
- [Installation of shared system libraries](#installation-of-shared-system-libraries)
|
- [Installation of shared system libraries](#installation-of-shared-system-libraries)
|
||||||
- [Program help: arguments and options](#program-help-arguments-and-options)
|
- [Program help: arguments and options](#program-help-arguments-and-options)
|
||||||
- [Examples](#examples)
|
- [Examples](#examples)
|
||||||
|
|||||||
Reference in New Issue
Block a user