Передача зашифрованного имени пользователя и пароля из зашифрованного JSON файла в Python Selenium - PullRequest
0 голосов
/ 05 февраля 2020

Итак, я пытаюсь выдать зашифрованные данные из секрета. Файл json, который я храню в указанном каталоге c в моем хранилище git, игнорируется файлом .gitignore. Я установил gpg и смог на самом деле зашифровать файл, а также проигнорировал его в том же каталоге, когда я добавил атрибут *.gpg в мой файл .gitignore. Однако я не знаю, как передать зашифрованные данные из зашифрованного файла JSON.

Мой Json файл выглядит так и называется secrets.json:

{
        "user": {
            "name": "username",
            "password": "password"
  }
}

Когда я шифрую это с помощью gpg на компьютере windows, я использую:

gpg --output secrets.gpg --encrypt .\secrets.json

Это создает зашифрованный файл json файла secrets.json в этом каталоге. Я хотел бы передать зашифрованные данные на сайт через Python и Selenium. Код, который я пытаюсь использовать, находится по следующей ссылке :

У меня есть секция спецификаций c, которая правильно отправит json:

import json
with open('secrets.json','r') as f:
      config = json.load(f)

Но как мне это сделать с secrets.gpg, который был зашифрован? Мне не нравится, когда плоские файлы просто сидят внутри системы без шифрования. С помощью команды gpg для создания файла, если я отыщу его, он будет выглядеть следующим образом:

…☻♀♥þÁã/æ#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 для воспроизведения проблема.

1 Ответ

0 голосов
/ 06 февраля 2020

Итак, я нашел ответ, но я просто не смог понять, как потом очистить файл. Но в основном вы должны создать файл из зашифрованного файла, а затем удалить его. Следующее позволяет мне фактически расшифровать информацию в файл 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()

Он в основном расшифровывает файл и сохраняет его в json выводе с использованием gpg. Я использовал шифрование без пароля, которое, как я знаю, небезопасно, но оно позволяет мне хранить данные в зашифрованном виде и выдавать результаты процесса расшифровки пароля и пароля в селене. Единственная проблема, с которой я столкнулся сейчас, - это удаление файла. Но я узнал, как удалить файл с помощью функции os.remove () из модуля os.

...