J'utilise un script se connectant =E0 une base de donn=E9es, ce script
permet de demander le login et mot de passe =E0 cette base.
Pour un certain besoin, je souhaite rentrer directement dans le script
les infos login, serveur et mot de passe dans ce script afin qu'il s'y
connecte automatiquement.
Je voudrais savoir si un module existe pour qu'une variable stockant le
mot de passe soit repr=E9sent=E9e par des =E9toiles (ou autres) afin qu'il
soit illisible y compris pour les personnes ayant acc=E8s en lecture au
script :
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Laurent Pointal
ctobini wrote:
Bonjour,
J'utilise un script se connectant à une base de données, ce script permet de demander le login et mot de passe à cette base.
Pour un certain besoin, je souhaite rentrer directement dans le script les infos login, serveur et mot de passe dans ce script afin qu'il s'y connecte automatiquement.
Je voudrais savoir si un module existe pour qu'une variable stockant le mot de passe soit représentée par des étoiles (ou autres) afin qu'il soit illisible y compris pour les personnes ayant accès en lecture au script :
password = '*****' par exemple
Merci.
C. Tobini
Si ton programme a le moyen de le décrypter sans aide extérieure et que tu le mets dans ton source... alors ce n'est IMHO pas possible.
Mais si tu veux 'masquer' ton mot de passe:
"The great password".encode("rot13") 'Gur terng cnffjbeq'
"The great password".encode("zip") 'xx9cx0bxc9HUH/JM,Q(H,..xcf/Jx01x00>x96x06xe8'
'Gur terng cnffjbeq'.decode("rot13") u'The great password'
'xx9cx0bxc9HUH/JM,Q(H,..xcf/Jx01x00>x96x06xe8'.decode("zip") 'The great password'
(tu peux utiliser tout autre codec réversible)
Essaie de ne pas appeler ta variable *password*.
A+
Laurent.
ctobini wrote:
Bonjour,
J'utilise un script se connectant à une base de données, ce script
permet de demander le login et mot de passe à cette base.
Pour un certain besoin, je souhaite rentrer directement dans le script
les infos login, serveur et mot de passe dans ce script afin qu'il s'y
connecte automatiquement.
Je voudrais savoir si un module existe pour qu'une variable stockant le
mot de passe soit représentée par des étoiles (ou autres) afin qu'il
soit illisible y compris pour les personnes ayant accès en lecture au
script :
password = '*****' par exemple
Merci.
C. Tobini
Si ton programme a le moyen de le décrypter sans aide extérieure et que
tu le mets dans ton source... alors ce n'est IMHO pas possible.
Mais si tu veux 'masquer' ton mot de passe:
"The great password".encode("rot13")
'Gur terng cnffjbeq'
"The great password".encode("zip")
'xx9cx0bxc9HUH/JM,Q(H,..xcf/Jx01x00>x96x06xe8'
'Gur terng cnffjbeq'.decode("rot13")
u'The great password'
'xx9cx0bxc9HUH/JM,Q(H,..xcf/Jx01x00>x96x06xe8'.decode("zip")
'The great password'
J'utilise un script se connectant à une base de données, ce script permet de demander le login et mot de passe à cette base.
Pour un certain besoin, je souhaite rentrer directement dans le script les infos login, serveur et mot de passe dans ce script afin qu'il s'y connecte automatiquement.
Je voudrais savoir si un module existe pour qu'une variable stockant le mot de passe soit représentée par des étoiles (ou autres) afin qu'il soit illisible y compris pour les personnes ayant accès en lecture au script :
password = '*****' par exemple
Merci.
C. Tobini
Si ton programme a le moyen de le décrypter sans aide extérieure et que tu le mets dans ton source... alors ce n'est IMHO pas possible.
Mais si tu veux 'masquer' ton mot de passe:
"The great password".encode("rot13") 'Gur terng cnffjbeq'
"The great password".encode("zip") 'xx9cx0bxc9HUH/JM,Q(H,..xcf/Jx01x00>x96x06xe8'
'Gur terng cnffjbeq'.decode("rot13") u'The great password'
'xx9cx0bxc9HUH/JM,Q(H,..xcf/Jx01x00>x96x06xe8'.decode("zip") 'The great password'
(tu peux utiliser tout autre codec réversible)
Essaie de ne pas appeler ta variable *password*.
A+
Laurent.
Olivier
Je voudrais savoir si un module existe pour qu'une variable stockant le mot de passe soit représentée par des étoiles (ou autres) afin qu'il soit illisible y compris pour les personnes ayant accès en lecture au script :
Je ne crois vraiment pas que ce soit possible. Un fichier texte est un fichier texte, il n'y a pas de mystères.
Les gens sérieux te diront que tu as sans doute un problème de sécurité dans ta base de données, avec des droits d'accès qui sont mal réglés, et qu'il n'est pas sain de laisser un script se connecter automatiquement.
Mais si tu ne trouves pas de bonne solution à tout problème, en voici une mauvaise :
Crée un script avec une fonction translate et une fonction reverse qui fait l'aller-retour entre ton mot de passe en clair et ton mot de passe codé. Exemple :
translate.py: def translate(mstr): """ transforme 'mypasswd' en '109.121.112.97.115.115.119.100' """ return ".".join([str(ord(x)) for x in list(mstr)])
def reverse(mstr): return "".join([chr(int(x)) for x in mstr.split(".")])
def test(passw): print passw y = translate(passw) print reverse(y)
Importe ce module dans ton script de connexion et utilise la fonction reverse dans ta chaîne de connexion.
translate.py sera compilé en translate.pyc, fichier binaire suffisamment illisible pour un utilisateur non-averti, plus hermétique en tout cas qu'une fonction de codage genre rot13 que tu appellerais directement dans ton script de connexion.
Ensuite, protège translate.py en lecture, déplace-le ou détruis-le, python n'a besoin que du .pyc
Tu peux bien sûr raffiner, rajouter du fud dans les fonctions, les écrire en c et en faire un .pyd...
Olivier
Je voudrais savoir si un module existe pour qu'une variable stockant le
mot de passe soit représentée par des étoiles (ou autres) afin qu'il
soit illisible y compris pour les personnes ayant accès en lecture au
script :
Je ne crois vraiment pas que ce soit possible. Un fichier texte est un
fichier texte, il n'y a pas de mystères.
Les gens sérieux te diront que tu as sans doute un problème de sécurité
dans ta base de données, avec des droits d'accès qui sont mal réglés, et
qu'il n'est pas sain de laisser un script se connecter automatiquement.
Mais si tu ne trouves pas de bonne solution à tout problème, en voici
une mauvaise :
Crée un script avec une fonction translate et une fonction reverse qui
fait l'aller-retour entre ton mot de passe en clair et ton mot de passe
codé.
Exemple :
translate.py:
def translate(mstr):
"""
transforme 'mypasswd' en '109.121.112.97.115.115.119.100'
"""
return ".".join([str(ord(x)) for x in list(mstr)])
def reverse(mstr):
return "".join([chr(int(x)) for x in mstr.split(".")])
def test(passw):
print passw
y = translate(passw)
print reverse(y)
Importe ce module dans ton script de connexion et utilise la fonction
reverse dans ta chaîne de connexion.
translate.py sera compilé en translate.pyc, fichier binaire suffisamment
illisible pour un utilisateur non-averti, plus hermétique en tout cas
qu'une fonction de codage genre rot13 que tu appellerais directement
dans ton script de connexion.
Ensuite, protège translate.py en lecture, déplace-le ou détruis-le,
python n'a besoin que du .pyc
Tu peux bien sûr raffiner, rajouter du fud dans les fonctions, les
écrire en c et en faire un .pyd...
Je voudrais savoir si un module existe pour qu'une variable stockant le mot de passe soit représentée par des étoiles (ou autres) afin qu'il soit illisible y compris pour les personnes ayant accès en lecture au script :
Je ne crois vraiment pas que ce soit possible. Un fichier texte est un fichier texte, il n'y a pas de mystères.
Les gens sérieux te diront que tu as sans doute un problème de sécurité dans ta base de données, avec des droits d'accès qui sont mal réglés, et qu'il n'est pas sain de laisser un script se connecter automatiquement.
Mais si tu ne trouves pas de bonne solution à tout problème, en voici une mauvaise :
Crée un script avec une fonction translate et une fonction reverse qui fait l'aller-retour entre ton mot de passe en clair et ton mot de passe codé. Exemple :
translate.py: def translate(mstr): """ transforme 'mypasswd' en '109.121.112.97.115.115.119.100' """ return ".".join([str(ord(x)) for x in list(mstr)])
def reverse(mstr): return "".join([chr(int(x)) for x in mstr.split(".")])
def test(passw): print passw y = translate(passw) print reverse(y)
Importe ce module dans ton script de connexion et utilise la fonction reverse dans ta chaîne de connexion.
translate.py sera compilé en translate.pyc, fichier binaire suffisamment illisible pour un utilisateur non-averti, plus hermétique en tout cas qu'une fonction de codage genre rot13 que tu appellerais directement dans ton script de connexion.
Ensuite, protège translate.py en lecture, déplace-le ou détruis-le, python n'a besoin que du .pyc
Tu peux bien sûr raffiner, rajouter du fud dans les fonctions, les écrire en c et en faire un .pyd...
Olivier
Laurent Pointal
Olivier wrote:
translate.py sera compilé en translate.pyc, fichier binaire suffisamment illisible pour un utilisateur non-averti, plus hermétique en tout cas qu'une fonction de codage genre rot13 que tu appellerais directement dans ton script de connexion.
Ensuite, protège translate.py en lecture, déplace-le ou détruis-le, python n'a besoin que du .pyc
Tu peux bien sûr raffiner, rajouter du fud dans les fonctions, les écrire en c et en faire un .pyd...
Tiens, au passage, voir peut-être à coder ça en Pyrex, ça fera un module compilé en natif... encore moins lisible.
[mais tout ça n'empèchera l'accès au mot de passe qu'a un utilisateur lambda - pas un petit bidoulleur]
Olivier wrote:
translate.py sera compilé en translate.pyc, fichier binaire suffisamment
illisible pour un utilisateur non-averti, plus hermétique en tout cas
qu'une fonction de codage genre rot13 que tu appellerais directement
dans ton script de connexion.
Ensuite, protège translate.py en lecture, déplace-le ou détruis-le,
python n'a besoin que du .pyc
Tu peux bien sûr raffiner, rajouter du fud dans les fonctions, les
écrire en c et en faire un .pyd...
Tiens, au passage, voir peut-être à coder ça en Pyrex, ça fera un module
compilé en natif... encore moins lisible.
translate.py sera compilé en translate.pyc, fichier binaire suffisamment illisible pour un utilisateur non-averti, plus hermétique en tout cas qu'une fonction de codage genre rot13 que tu appellerais directement dans ton script de connexion.
Ensuite, protège translate.py en lecture, déplace-le ou détruis-le, python n'a besoin que du .pyc
Tu peux bien sûr raffiner, rajouter du fud dans les fonctions, les écrire en c et en faire un .pyd...
Tiens, au passage, voir peut-être à coder ça en Pyrex, ça fera un module compilé en natif... encore moins lisible.