crypt et decrypt données dans un fichier ini
Bonjour,
Avertissement: je débute en python :oops:
En fait, j'aimerais faire un programme qui lit un fichier ini et crypte et décrypte les données cryptée qui sont dans le fichier ini.
Le fichier ini est lus par un programme java qui utilise une passphase de 16 caractères et une encryption de type "AES"
Ci dessous, mon code en l'état, je sais pas très bien où récupéré la valeur cryptée
Et je ne sais pas si le configparser va bien garder les autres données présente dans le fichier ini
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
import configparser
from Crypto.Cipher import AES
filename = "<fichier ini>"
passphrase = "12344678911234*1"
# Writing Data
config = configparser.ConfigParser()
config.read(filename)
# Reading Data
keys = ["server", "port", "user", "password"]
for key in keys:
try:
value = config.get("database", key)
if(key == "server")
currentHost = value;
if(key == "port")
currentPort = value;
if(key == "user")
cipher = AES.new(passphrase, AES.MODE_EAX, nonce)
currentUser = cipher.decrypt_and_verify(value, tag)
if(key == "password")
cipher = AES.new(passphrase, AES.MODE_EAX, nonce)
currentPassword = cipher.decrypt_and_verify(value, tag)
#ASK User for modify data (ENTER keep current value)
sBuffer = input("Hostname ("+currentHost+"): ")
if(sBuffer == "")
databaseHost = currentHost
else
databaseHost = sBuffer
sBuffer = input("Port ("+currentPort+"): ")
if(sBuffer == "")
databasePort = currentPort
else
databasePort = sBuffer
sBuffer = input("Utilisateur ("+currentUser+"): ")
if(sBuffer == "")
databaseUser = currentUser
else
databaseUser = sBuffer
sBuffer = input("Mot de passe : ")
if(sBuffer == "")
databasePassword = currentPassword
else
databasePassword = sBuffer
try:
config.set("database", "server", databaseHost)
config.set("database", "port", databasePort)
cipher = AES.new(passphrase, AES.MODE_EAX)
ciphertext, tag = cipher.encrypt_and_digest(databaseUser)
nonce = cipher.nonce
ciphertext, tag = cipher.encrypt_and_digest(databasePassword)
nonce = cipher.nonce
cryptedUser =
cryptedPassword =
config.set("database", "user", cryptedUser)
config.set("database", "password", cryptedPassword)
with open(filename, "w") as config_file:
config.write(config_file) |
Note : the passphrase is not the real passphrase :)
Avez-vous quelques conseils et explications ?
merci