从 Python Selenium 中的加密 JSON 文件中传递加密的用户名和密码
Passing off Encrypted Username and Password from Encrypted JSON file within Python Selenium
所以我试图从我的 git 存储库中特定目录中的 secrets.json 文件传递加密数据,该文件被 .gitignore 文件忽略。我安装了 gpg 并且能够实际加密文件,并且在我向我的 .gitignore
文件添加 *.gpg
属性的同一目录中也忽略了它。但是,我不知道如何从加密的 JSON 文件中传递加密数据。
我的 Json 文件如下所示,标题为 secrets.json
:
{
"user": {
"name": "username",
"password": "password"
}
}
当我在基于 windows 的机器上使用 gpg 加密时,我使用:
gpg --output secrets.gpg --encrypt .\secrets.json
这会在该目录中创建 secrets.json
文件的加密 json 文件。我想通过 Python 和 Selenium 将加密数据传递到网站。我尝试使用的代码位于以下 link:
我有一个特定的部分可以正确发送 json:
import json
with open('secrets.json','r') as f:
config = json.load(f)
但是我如何使用已加密的 secrets.gpg
来做到这一点?
我不喜欢没有加密的平面文件就放在系统中。
使用 gpg
命令生成文件,如果我将其 cat 出来,它将如下所示:
…☻♀♥þÁã/æ#5☺☼ÿPÒÁÑg*af˜…‘o►⌂S.▬qd„huÖÏÜr∟ /QVuÆóë♀*3♠ž%♂ÅB☻jKÓ£+û☻¦~q~FyÎïê ☺↓Dlœ*Mgt#ɤx“gú™Ò´ee2f∟y•š„ãe@' ► 2ì4x↑hpòCž½↔¾I‡[¬Ék—F_¹]£ÂO—A♀„NÉ·/aLÄÆÚ☻òHš<›Eò£z'äÇf◄WÐr¨Cµw.→u…j⌂⌂š¯…kS↕={˜→)s~ŸÊ‡Ä^‰6h•Or>♀#È¿¿Ò"♥ºFEu^F…×f*-Bðüƒü/9
gë›t†wmî7ct§þwv]Úf:`Ì~ñ®+˜š↕¬Þí↑·O=ç<ýL↕7übV )D→.£×Ð☻»♫à‚ŠÃǶÜÿ³H”X~q” ÀOI0kÌù„¥È½Â↓b)᫬ñ⌂ÍÄ3ð¿ÀùÁà,‹A→Æ▼X0↑♣Ž↔xE‡ÿ®2Á♥aÃøÚì▲B\WSä♥ú☺dþ8ȵi8{↑(¢ËXác☼éqÍu+ôŒDA↑♣Ÿ¥→¼I1n↨rN¦ÿô0r!"ªÕ*Á‚´¡↨²€ÏXWz*³µún1u(„ÞäÇO:$iÖ(×ÃÍDÒEòp↕²Q☻pé♫6”.‰q¹ý@ÓÒAUägÊÊ#@^GQ☺;-§7™Ð±”ø›↕V@SºVK☻HãÒ,↓€W²`⌂CºŠYÕZòø®ÄwW
¯/☺Ħëa"³+(ŠM~^TÕ0Ñ↕‼ÈßZV}Q£FEû´ÏuußaæT☻ƽ„Ý?†ñ↑~↕GÎ↓2”Z£däÿÌi`m‹÷ ♂0&Õž#<”#ËZ‰§Ì§µ
☻ˆÜ¬8÷§2µù®ŒËïM×▬òkÊü+‼Í–
我意识到这是随机的,因此对于使用 gpg 重现问题的其他人来说,它可能看起来有所不同。
所以我找到了答案,只是我一直无法弄清楚之后如何清理文件。但基本上您必须从加密文件创建文件,然后将其删除。下面允许我使用 subprocess 模块将信息实际解密到 json 文件中。
#!/bin/python
# ===========================================================
# Created By: Richard Barrett
# Organization: DVISD
# DepartmenT: Data Services
# Purpose: Test Score & 3rd Party Website Data Pull Automation
# Date: 01/20/2020
# ===========================================================
import selenium
import shutil
import xlsxwriter
import os
import unittest
import requests
import subprocess
import getpass
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from datetime import date
decrypt = "gpg --output secrets_test.json --decrypt secrets.gpg"
returned_value = subprocess.call(decrypt, shell=True)
import json
with open('secrets_test.json','r') as f:
config = json.load(f)
### SOME SELENIUM PROCESS ###
# Delete the Unencrypted File
if os.path.exists("secrets_test.json"):
os.remove("secrets_test.json")
else:
print("The file does not exist")
browser.quit()
它基本上解密文件并使用 gpg 将其存储在 json 输出中。我使用了无密码加密,我知道它不安全,但它允许我以加密方式存储数据,并在 selenium 中传递密码和凭据的解密过程,我现在唯一的问题是删除文件。但是我发现了如何从 os
模块中删除带有 os.remove() 函数的文件。
所以我试图从我的 git 存储库中特定目录中的 secrets.json 文件传递加密数据,该文件被 .gitignore 文件忽略。我安装了 gpg 并且能够实际加密文件,并且在我向我的 .gitignore
文件添加 *.gpg
属性的同一目录中也忽略了它。但是,我不知道如何从加密的 JSON 文件中传递加密数据。
我的 Json 文件如下所示,标题为 secrets.json
:
{
"user": {
"name": "username",
"password": "password"
}
}
当我在基于 windows 的机器上使用 gpg 加密时,我使用:
gpg --output secrets.gpg --encrypt .\secrets.json
这会在该目录中创建 secrets.json
文件的加密 json 文件。我想通过 Python 和 Selenium 将加密数据传递到网站。我尝试使用的代码位于以下 link:
我有一个特定的部分可以正确发送 json:
import json
with open('secrets.json','r') as f:
config = json.load(f)
但是我如何使用已加密的 secrets.gpg
来做到这一点?
我不喜欢没有加密的平面文件就放在系统中。
使用 gpg
命令生成文件,如果我将其 cat 出来,它将如下所示:
…☻♀♥þÁã/æ#5☺☼ÿPÒÁÑg*af˜…‘o►⌂S.▬qd„huÖÏÜr∟ /QVuÆóë♀*3♠ž%♂ÅB☻jKÓ£+û☻¦~q~FyÎïê ☺↓Dlœ*Mgt#ɤx“gú™Ò´ee2f∟y•š„ãe@' ► 2ì4x↑hpòCž½↔¾I‡[¬Ék—F_¹]£ÂO—A♀„NÉ·/aLÄÆÚ☻òHš<›Eò£z'äÇf◄WÐr¨Cµw.→u…j⌂⌂š¯…kS↕={˜→)s~ŸÊ‡Ä^‰6h•Or>♀#È¿¿Ò"♥ºFEu^F…×f*-Bðüƒü/9
gë›t†wmî7ct§þwv]Úf:`Ì~ñ®+˜š↕¬Þí↑·O=ç<ýL↕7übV )D→.£×Ð☻»♫à‚ŠÃǶÜÿ³H”X~q” ÀOI0kÌù„¥È½Â↓b)᫬ñ⌂ÍÄ3ð¿ÀùÁà,‹A→Æ▼X0↑♣Ž↔xE‡ÿ®2Á♥aÃøÚì▲B\WSä♥ú☺dþ8ȵi8{↑(¢ËXác☼éqÍu+ôŒDA↑♣Ÿ¥→¼I1n↨rN¦ÿô0r!"ªÕ*Á‚´¡↨²€ÏXWz*³µún1u(„ÞäÇO:$iÖ(×ÃÍDÒEòp↕²Q☻pé♫6”.‰q¹ý@ÓÒAUägÊÊ#@^GQ☺;-§7™Ð±”ø›↕V@SºVK☻HãÒ,↓€W²`⌂CºŠYÕZòø®ÄwW
¯/☺Ħëa"³+(ŠM~^TÕ0Ñ↕‼ÈßZV}Q£FEû´ÏuußaæT☻ƽ„Ý?†ñ↑~↕GÎ↓2”Z£däÿÌi`m‹÷ ♂0&Õž#<”#ËZ‰§Ì§µ
☻ˆÜ¬8÷§2µù®ŒËïM×▬òkÊü+‼Í–
我意识到这是随机的,因此对于使用 gpg 重现问题的其他人来说,它可能看起来有所不同。
所以我找到了答案,只是我一直无法弄清楚之后如何清理文件。但基本上您必须从加密文件创建文件,然后将其删除。下面允许我使用 subprocess 模块将信息实际解密到 json 文件中。
#!/bin/python
# ===========================================================
# Created By: Richard Barrett
# Organization: DVISD
# DepartmenT: Data Services
# Purpose: Test Score & 3rd Party Website Data Pull Automation
# Date: 01/20/2020
# ===========================================================
import selenium
import shutil
import xlsxwriter
import os
import unittest
import requests
import subprocess
import getpass
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from datetime import date
decrypt = "gpg --output secrets_test.json --decrypt secrets.gpg"
returned_value = subprocess.call(decrypt, shell=True)
import json
with open('secrets_test.json','r') as f:
config = json.load(f)
### SOME SELENIUM PROCESS ###
# Delete the Unencrypted File
if os.path.exists("secrets_test.json"):
os.remove("secrets_test.json")
else:
print("The file does not exist")
browser.quit()
它基本上解密文件并使用 gpg 将其存储在 json 输出中。我使用了无密码加密,我知道它不安全,但它允许我以加密方式存储数据,并在 selenium 中传递密码和凭据的解密过程,我现在唯一的问题是删除文件。但是我发现了如何从 os
模块中删除带有 os.remove() 函数的文件。