簡體   English   中英

pyinstaller:包括密匙環模塊嗎?

[英]pyinstaller: include keyring module?

我寫了一個小型的python應用程序,使用keyring模塊(用於將密碼存儲在Windows憑證保險庫中)和wxpython作為登錄GUI,自動將用戶登錄到特定服務。 此服務的登錄工具不支持登錄憑據的存儲,但是我在腳本中使用了cmd登錄方法。

該腳本現在已經完成並且可以完美運行,但是我想將其作為exe部署到其他幾個系統中。

密鑰環似乎不能與pyinstaller配合使用,但是我在添加大量隱藏導入列表后讓我的程序至少啟動了:

'json', 
'json.decoder', 
'json.encoder', 
'json.scanner',
'keyring.backends.file',
'keyring.backends.Gnome',
'keyring.backends.Google',
'keyring.backends.keyczar',
'keyring.backends.kwallet',
'keyring.backends.multi',
'keyring.backends.OS_X',
'keyring.backends.pyfs',
'keyring.backends.SecretService',
'keyring.backends.Windows',
'keyring.backends._win_crypto',
'keyring.util.escape',
'keyring.util.XDG',
'keyring.credentials'

使用這些應用程序,啟動時不會丟失任何錯誤,也不會丟失模塊,但在嘗試訪問憑證保險庫時仍會崩潰:

c:\PY\novell_login>dist\thread_test\thread_test.exe
Logging in User: test
Traceback (most recent call last):
  File "c:\PY\build\thread_test\out00-PYZ.pyz\wx._core", line 16766, in <lambda>
  File "<string>", line 119, in LongTaskDone
  File "c:\PY\build\thread_test\out00-PYZ.pyz\keyring.core", line 44, in set_password
  File "c:\PY\build\thread_test\out00-PYZ.pyz\keyring.backends.file", line 87, in set_password
  File "c:\PY\build\thread_test\out00-PYZ.pyz\keyring.backends.Windows", line 81, in encrypt
NameError: global name '_win_crypto' is not defined

我不知道該怎么辦才能解決此問題...任何人都可以幫助我正確添加鑰匙圈或知道我可以使用的替代方法。 我真的很想繼續使用Windows憑證保險庫存儲密碼。

謝謝!

Python:2.7.9 pyinstaller:2.1密鑰環:5.6 pywin:內部版本219

經過一個星期的不成功,即使在這里和pyinstaller github上發布之后,我也制定了自己的解決方案。 我放棄了密鑰環模塊,並使用win32crypt模塊來使用Windows函數CryptProtectData,該函數經過一些研究使用與密鑰環相同的保護。

我將密碼散列到存儲在用戶appdata文件夾中的字符串中,並在需要時將其解密。 這很好用,並且應該像密鑰環方法一樣安全,因為它只能從同一用戶解密,重置密碼以獲取訪問權限也不會起作用。 對我來說足夠安全。

當然,這適用於pyinstaller。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM