Skip to content

Commit fce36ee

Browse files
committed
workaround Windows fatal exception: access violation in log_debug *values: enable ci win tests again
1 parent 9463dc3 commit fce36ee

9 files changed

+94
-84
lines changed

.github/workflows/ci.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
strategy:
2222
matrix:
2323
python-version: ["3.12", "3.11", "3.10", "3.9", "3.8"]
24-
platform: [ubuntu-latest, macos-latest]
24+
platform: [ubuntu-latest, macos-latest, windows-latest]
2525
# exclude:
2626

2727
runs-on: ${{ matrix.platform }}

src/extract_otp_secrets.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -915,10 +915,15 @@ def get_raw_version() -> str:
915915

916916
# workaround for PYTHON <= 3.9 use: BaseException | None
917917
def log_debug(*values: object, sep: Optional[str] = ' ') -> None:
918+
if os.name == 'nt':
919+
# Workaround "Windows fatal exception: access violation"
920+
print(f"\nDEBUG: {str(values[0])}")
921+
return
922+
918923
if colored:
919-
print(f"{colorama.Fore.CYAN}\nDEBUG: {str(values[0])}", *values[1:], colorama.Fore.RESET, sep)
924+
print(f"{colorama.Fore.CYAN}\nDEBUG: {str(values[0])}", *values[1:], colorama.Fore.RESET, sep=sep)
920925
else:
921-
print(f"\nDEBUG: {str(values[0])}", *values[1:], sep)
926+
print(f"\nDEBUG: {str(values[0])}", *values[1:], sep=sep)
922927

923928

924929
# workaround for PYTHON <= 3.9 use: BaseException | None

tests/data/print_verbose_output-n-v.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
QReader installed: True
2-
CV2 version: 4.7.0
2+
CV2 version: 4.10.0
33
QR reading mode: ZBAR
44

55
Input files: ['example_export.txt']

tests/data/print_verbose_output-n-vv.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
QReader installed: True
2-
CV2 version: 4.7.0
2+
CV2 version: 4.10.0
33
QR reading mode: ZBAR
44

55
Input files: ['example_export.txt']

tests/data/print_verbose_output-n-vvv.txt

+38-38
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
QReader installed: True
2-
CV2 version: 4.7.0
2+
CV2 version: 4.10.0
33
QR reading mode: ZBAR
44

5-
Version: extract_otp_secrets 2.0.2.post50+git.158245dd.dirty Linux x86_64 Python 3.11.1 (CPython/called as script)
5+
Version: extract_otp_secrets 2.8.1.post17+git.3dc7d1c2.dirty Linux x86_64 Python 3.11.9 (CPython/called as script)
66

77
Input files: ['example_export.txt']
88
Processing infile example_export.txt
@@ -32,16 +32,17 @@ otpauth-migration://offline?data=CjYKEPqlBekzoNEukL7qlsjBCDYSHGVuY29kaW5nOiDCv8O
3232
# otpauth://totp/pi@raspberrypi?secret=7KSQL2JTUDIS5EF65KLMRQIIGY&issuer=raspberrypi
3333
otpauth-migration://offline?data=CjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACjr4JKK%2B%2F%2F%2F%2F%2F8B
3434

35-
DEBUG: parsed_url=ParseResult(scheme='otpauth-migration', netloc='offline', path='', params='', query='data=CjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACjr4JKK%2B%2F%2F%2F%2F%2F8B', fragment='')
35+
DEBUG: parsed_url=ParseResult(scheme='otpauth-migration', netloc='offline', path='', params='', query='data=CjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACjr4JKK%2B%2F%2F%2F%2F%2F8B', fragment='')
3636

37-
DEBUG: querystring params={'data': ['CjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACjr4JKK+/////8B']}
37+
DEBUG: querystring params={'data': ['CjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACjr4JKK+/////8B']}
3838

39-
DEBUG: data_base64=CjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACjr4JKK+/////8B
39+
DEBUG: data_base64=CjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACjr4JKK+/////8B
4040

41-
DEBUG: data_base64_fixed=CjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACjr4JKK+/////8B
41+
DEBUG: data_base64_fixed=CjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACjr4JKK+/////8B
4242

4343
DEBUG:
44-
1. Payload Line otp_parameters {
44+
1. Payload Line
45+
otp_parameters {
4546
secret: "\372\245\005\3513\240\321.\220\276\352\226\310\301\0106"
4647
name: "pi@raspberrypi"
4748
issuer: "raspberrypi"
@@ -52,12 +53,11 @@ DEBUG:
5253
version: 1
5354
batch_size: 1
5455
batch_id: -1320898453
55-
5656

5757

5858
1. Secret
5959

60-
DEBUG: OTP enum type: OTP_TOTP
60+
DEBUG: OTP enum type: OTP_TOTP
6161
Name: pi@raspberrypi
6262
Secret: 7KSQL2JTUDIS5EF65KLMRQIIGY
6363
Issuer: raspberrypi
@@ -68,16 +68,17 @@ otpauth://totp/pi%40raspberrypi?secret=7KSQL2JTUDIS5EF65KLMRQIIGY&issuer=raspber
6868
# otpauth://totp/pi@raspberrypi?secret=7KSQL2JTUDIS5EF65KLMRQIIGY
6969
otpauth-migration://offline?data=CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACEAEYASAAKLzjp5n4%2F%2F%2F%2F%2FwE%3D
7070

71-
DEBUG: parsed_url=ParseResult(scheme='otpauth-migration', netloc='offline', path='', params='', query='data=CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACEAEYASAAKLzjp5n4%2F%2F%2F%2F%2FwE%3D', fragment='')
71+
DEBUG: parsed_url=ParseResult(scheme='otpauth-migration', netloc='offline', path='', params='', query='data=CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACEAEYASAAKLzjp5n4%2F%2F%2F%2F%2FwE%3D', fragment='')
7272

73-
DEBUG: querystring params={'data': ['CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACEAEYASAAKLzjp5n4/////wE=']}
73+
DEBUG: querystring params={'data': ['CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACEAEYASAAKLzjp5n4/////wE=']}
7474

75-
DEBUG: data_base64=CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACEAEYASAAKLzjp5n4/////wE=
75+
DEBUG: data_base64=CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACEAEYASAAKLzjp5n4/////wE=
7676

77-
DEBUG: data_base64_fixed=CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACEAEYASAAKLzjp5n4/////wE=
77+
DEBUG: data_base64_fixed=CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACEAEYASAAKLzjp5n4/////wE=
7878

7979
DEBUG:
80-
2. Payload Line otp_parameters {
80+
2. Payload Line
81+
otp_parameters {
8182
secret: "\372\245\005\3513\240\321.\220\276\352\226\310\301\0106"
8283
name: "pi@raspberrypi"
8384
algorithm: ALGO_SHA1
@@ -87,12 +88,11 @@ DEBUG:
8788
version: 1
8889
batch_size: 1
8990
batch_id: -2094403140
90-
9191

9292

9393
2. Secret
9494

95-
DEBUG: OTP enum type: OTP_TOTP
95+
DEBUG: OTP enum type: OTP_TOTP
9696
Name: pi@raspberrypi
9797
Secret: 7KSQL2JTUDIS5EF65KLMRQIIGY
9898
Type: totp
@@ -103,16 +103,17 @@ otpauth://totp/pi%40raspberrypi?secret=7KSQL2JTUDIS5EF65KLMRQIIGY
103103
# otpauth://totp/pi@raspberrypi?secret=7KSQL2JTUDIS5EF65KLMRQIIGY
104104
otpauth-migration://offline?data=CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACCjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACiQ7OOa%2Bf%2F%2F%2F%2F8B
105105

106-
DEBUG: parsed_url=ParseResult(scheme='otpauth-migration', netloc='offline', path='', params='', query='data=CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACCjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACiQ7OOa%2Bf%2F%2F%2F%2F8B', fragment='')
106+
DEBUG: parsed_url=ParseResult(scheme='otpauth-migration', netloc='offline', path='', params='', query='data=CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACCjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACiQ7OOa%2Bf%2F%2F%2F%2F8B', fragment='')
107107

108-
DEBUG: querystring params={'data': ['CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACCjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACiQ7OOa+f////8B']}
108+
DEBUG: querystring params={'data': ['CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACCjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACiQ7OOa+f////8B']}
109109

110-
DEBUG: data_base64=CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACCjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACiQ7OOa+f////8B
110+
DEBUG: data_base64=CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACCjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACiQ7OOa+f////8B
111111

112-
DEBUG: data_base64_fixed=CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACCjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACiQ7OOa+f////8B
112+
DEBUG: data_base64_fixed=CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACCjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACiQ7OOa+f////8B
113113

114114
DEBUG:
115-
3. Payload Line otp_parameters {
115+
3. Payload Line
116+
otp_parameters {
116117
secret: "\372\245\005\3513\240\321.\220\276\352\226\310\301\0106"
117118
name: "pi@raspberrypi"
118119
algorithm: ALGO_SHA1
@@ -130,12 +131,11 @@ otp_parameters {
130131
version: 1
131132
batch_size: 1
132133
batch_id: -1822886384
133-
134134

135135

136136
3. Secret
137137

138-
DEBUG: OTP enum type: OTP_TOTP
138+
DEBUG: OTP enum type: OTP_TOTP
139139
Name: pi@raspberrypi
140140
Secret: 7KSQL2JTUDIS5EF65KLMRQIIGY
141141
Type: totp
@@ -144,7 +144,7 @@ otpauth://totp/pi%40raspberrypi?secret=7KSQL2JTUDIS5EF65KLMRQIIGY
144144

145145
4. Secret
146146

147-
DEBUG: OTP enum type: OTP_TOTP
147+
DEBUG: OTP enum type: OTP_TOTP
148148
Name: pi@raspberrypi
149149
Secret: 7KSQL2JTUDIS5EF65KLMRQIIGY
150150
Issuer: raspberrypi
@@ -155,16 +155,17 @@ otpauth://totp/pi%40raspberrypi?secret=7KSQL2JTUDIS5EF65KLMRQIIGY&issuer=raspber
155155
# otpauth://hotp/hotp%20demo?secret=7KSQL2JTUDIS5EF65KLMRQIIGY&counter=4
156156
otpauth-migration://offline?data=CiUKEPqlBekzoNEukL7qlsjBCDYSCWhvdHAgZGVtbyABKAEwATgEEAEYASAAKNuv15j6%2F%2F%2F%2F%2FwE%3D
157157

158-
DEBUG: parsed_url=ParseResult(scheme='otpauth-migration', netloc='offline', path='', params='', query='data=CiUKEPqlBekzoNEukL7qlsjBCDYSCWhvdHAgZGVtbyABKAEwATgEEAEYASAAKNuv15j6%2F%2F%2F%2F%2FwE%3D', fragment='')
158+
DEBUG: parsed_url=ParseResult(scheme='otpauth-migration', netloc='offline', path='', params='', query='data=CiUKEPqlBekzoNEukL7qlsjBCDYSCWhvdHAgZGVtbyABKAEwATgEEAEYASAAKNuv15j6%2F%2F%2F%2F%2FwE%3D', fragment='')
159159

160-
DEBUG: querystring params={'data': ['CiUKEPqlBekzoNEukL7qlsjBCDYSCWhvdHAgZGVtbyABKAEwATgEEAEYASAAKNuv15j6/////wE=']}
160+
DEBUG: querystring params={'data': ['CiUKEPqlBekzoNEukL7qlsjBCDYSCWhvdHAgZGVtbyABKAEwATgEEAEYASAAKNuv15j6/////wE=']}
161161

162-
DEBUG: data_base64=CiUKEPqlBekzoNEukL7qlsjBCDYSCWhvdHAgZGVtbyABKAEwATgEEAEYASAAKNuv15j6/////wE=
162+
DEBUG: data_base64=CiUKEPqlBekzoNEukL7qlsjBCDYSCWhvdHAgZGVtbyABKAEwATgEEAEYASAAKNuv15j6/////wE=
163163

164-
DEBUG: data_base64_fixed=CiUKEPqlBekzoNEukL7qlsjBCDYSCWhvdHAgZGVtbyABKAEwATgEEAEYASAAKNuv15j6/////wE=
164+
DEBUG: data_base64_fixed=CiUKEPqlBekzoNEukL7qlsjBCDYSCWhvdHAgZGVtbyABKAEwATgEEAEYASAAKNuv15j6/////wE=
165165

166166
DEBUG:
167-
4. Payload Line otp_parameters {
167+
4. Payload Line
168+
otp_parameters {
168169
secret: "\372\245\005\3513\240\321.\220\276\352\226\310\301\0106"
169170
name: "hotp demo"
170171
algorithm: ALGO_SHA1
@@ -175,12 +176,11 @@ DEBUG:
175176
version: 1
176177
batch_size: 1
177178
batch_id: -1558849573
178-
179179

180180

181181
5. Secret
182182

183-
DEBUG: OTP enum type: OTP_HOTP
183+
DEBUG: OTP enum type: OTP_HOTP
184184
Name: hotp demo
185185
Secret: 7KSQL2JTUDIS5EF65KLMRQIIGY
186186
Type: hotp
@@ -192,16 +192,17 @@ otpauth://hotp/hotp%20demo?secret=7KSQL2JTUDIS5EF65KLMRQIIGY&counter=4
192192
# Name: "encoding: ¿äÄéÉ? (demo)"
193193
otpauth-migration://offline?data=CjYKEPqlBekzoNEukL7qlsjBCDYSHGVuY29kaW5nOiDCv8Okw4TDqcOJPyAoZGVtbykgASgBMAIQARgBIAAorfCurv%2F%2F%2F%2F%2F%2FAQ%3D%3D
194194

195-
DEBUG: parsed_url=ParseResult(scheme='otpauth-migration', netloc='offline', path='', params='', query='data=CjYKEPqlBekzoNEukL7qlsjBCDYSHGVuY29kaW5nOiDCv8Okw4TDqcOJPyAoZGVtbykgASgBMAIQARgBIAAorfCurv%2F%2F%2F%2F%2F%2FAQ%3D%3D', fragment='')
195+
DEBUG: parsed_url=ParseResult(scheme='otpauth-migration', netloc='offline', path='', params='', query='data=CjYKEPqlBekzoNEukL7qlsjBCDYSHGVuY29kaW5nOiDCv8Okw4TDqcOJPyAoZGVtbykgASgBMAIQARgBIAAorfCurv%2F%2F%2F%2F%2F%2FAQ%3D%3D', fragment='')
196196

197-
DEBUG: querystring params={'data': ['CjYKEPqlBekzoNEukL7qlsjBCDYSHGVuY29kaW5nOiDCv8Okw4TDqcOJPyAoZGVtbykgASgBMAIQARgBIAAorfCurv//////AQ==']}
197+
DEBUG: querystring params={'data': ['CjYKEPqlBekzoNEukL7qlsjBCDYSHGVuY29kaW5nOiDCv8Okw4TDqcOJPyAoZGVtbykgASgBMAIQARgBIAAorfCurv//////AQ==']}
198198

199-
DEBUG: data_base64=CjYKEPqlBekzoNEukL7qlsjBCDYSHGVuY29kaW5nOiDCv8Okw4TDqcOJPyAoZGVtbykgASgBMAIQARgBIAAorfCurv//////AQ==
199+
DEBUG: data_base64=CjYKEPqlBekzoNEukL7qlsjBCDYSHGVuY29kaW5nOiDCv8Okw4TDqcOJPyAoZGVtbykgASgBMAIQARgBIAAorfCurv//////AQ==
200200

201-
DEBUG: data_base64_fixed=CjYKEPqlBekzoNEukL7qlsjBCDYSHGVuY29kaW5nOiDCv8Okw4TDqcOJPyAoZGVtbykgASgBMAIQARgBIAAorfCurv//////AQ==
201+
DEBUG: data_base64_fixed=CjYKEPqlBekzoNEukL7qlsjBCDYSHGVuY29kaW5nOiDCv8Okw4TDqcOJPyAoZGVtbykgASgBMAIQARgBIAAorfCurv//////AQ==
202202

203203
DEBUG:
204-
5. Payload Line otp_parameters {
204+
5. Payload Line
205+
otp_parameters {
205206
secret: "\372\245\005\3513\240\321.\220\276\352\226\310\301\0106"
206207
name: "encoding: ¿äÄéÉ? (demo)"
207208
algorithm: ALGO_SHA1
@@ -211,12 +212,11 @@ DEBUG:
211212
version: 1
212213
batch_size: 1
213214
batch_id: -171198419
214-
215215

216216

217217
6. Secret
218218

219-
DEBUG: OTP enum type: OTP_TOTP
219+
DEBUG: OTP enum type: OTP_TOTP
220220
Name: encoding: ¿äÄéÉ? (demo)
221221
Secret: 7KSQL2JTUDIS5EF65KLMRQIIGY
222222
Type: totp

tests/data/print_verbose_output-v.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
QReader installed: True
2-
CV2 version: 4.7.0
2+
CV2 version: 4.10.0
33
QR reading mode: ZBAR
44

55
Input files: ['example_export.txt']

tests/data/print_verbose_output-vv.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
QReader installed: True
2-
CV2 version: 4.7.0
2+
CV2 version: 4.10.0
33
QR reading mode: ZBAR
44

55
Input files: ['example_export.txt']

0 commit comments

Comments
 (0)