Autres Protégé un fichier csv par mot de passe

aelbachiri

XLDnaute Nouveau
Bonjour le team,

Alors mon pb que je ne sais pas trop comment faire en ligne de commande (.bat) pour protéger un fichier csv par un mot de passe.

mon fichier est importer automatiquement par un PROC sqlserver au G:\FILES\EXPORT\APPLI_AS\monfichier.csv

je voudrais donc, créer un fichier .bat qui permet de rajouter un mdp à ce fichier et de le renvoyer par un sftp vers une répertoire partagé par une équipe de compta.

Merci pour votre aide!

Ahmed
 

aelbachiri

XLDnaute Nouveau
Merci pour vos retours👍.
Sinon, c'est j'ai choisis le format .xlsx est ce que y'a un moyen de protéger le fichier par un mot de passe ? Merci d'avance.
@dysorthographie, effectivement l'accès est restreint aux personnes qui ont le droit sur le répertoire \APPLI_AS, mais le fichier est destiné à deux personnes (Responsable, et son adjoint) seulement !
 

AR MOR

XLDnaute Nouveau
Et faire simple?

Bonsoir ou Bonjour à vous,

Les mots de passe sont aussi dangereux que les cryptages pour simples raisons :

- Oubliés, c’est la galère

- Le Logiciel de cryptage n’existe plus

- De petites applis comme il fut « ACID » permettent de récupérer facilement le code.

- Le mot de passe étant fatalement dans le Project, je sais entrer dans ce dernier sans coup férir !!!

J’ai sur mon PC, un fichier personnel avec une foultitude de codes, si ce n’est moult indiscrétions sur ma navigation.

Ma solution d’une efficacité redoutable :

Ces éléments sur deux clé USB :

L’une sous le pot de fleur qq part dans le jardin et l’autre dans la doublure de mon blouson.

Bref : N’importe où, mais pas sur le PC

Bonne fin de semaine à tous
 

jurassic pork

XLDnaute Occasionnel
Les mots de passe il faut les mettre dans un coffre-fort numérique comme par exemple keepass. Il suffit de retenir le mot de passe qui ouvre le coffre-fort numérique (bien le choisir et très difficile à deviner) et on accède à tous ses mots de passe. La robustesse du cryptage du coffre-fort dépend du mot de passe choisi.
 

AtTheOne

XLDnaute Accro
Supporter XLD
Bonsoir
@dysorthographie, effectivement l'accès est restreint aux personnes qui ont le droit sur le répertoire \APPLI_AS, mais le fichier est destiné à deux personnes (Responsable, et son adjoint) seulement !
Tu peux peut-être demander à ton SI de créer un groupe de 3 personnes, toi, le chef et son adjoint après tu crées le fichier et tu donnes le droit d'accès à ce groupe seul.

À bientôt
PS : Là sur mon PC je ne peux pas te faire d'exemple mais au boulot on utilisait ce principe.
 

job75

XLDnaute Barbatruc
Bonsoir le forum,

Le cryptage des fichiers CSV me paraît une très bonne solution.

Téléchargez les fichiers zippés joints.

Le fichier "Cryptage.xlsm" est protégé avec le mot de passe 123

Le fichier "Fichier CSV.csv" est crypté, je vous laisse le décrypter, voyez les macros :
VB:
Sub Nouveau_cryptage()
If MsgBox("Attention êtes-vous sûr que tous les fichiers CSV ont été décryptés ?", 4, "Nouveau cryptage") = 7 Then Exit Sub
Application.ScreenUpdating = False
With [A2:C225]
    .Columns(3) = .Columns(2).Value
    .Columns(4) = "=RAND()"
    .Columns(4) = .Columns(4).Value
    .Columns(3).Resize(, 2).Sort .Columns(4), xlAscending, Header:=xlNo 'tri
    .Columns(4).ClearContents
End With
End Sub

Sub Decryptage()
Dim fichier As Variant, a, d As Object, i&, x$, j%
fichier = Application.GetOpenFilename("Fichiers .csv (*.csv), *.csv")
If fichier = False Then Exit Sub
If MsgBox("Attention êtes-vous sûr que ce fichier CSV est crypté ?", 4, "Décryptage") = 7 Then Exit Sub
a = [B2:C225]
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(a)
    d(CStr(a(i, 2))) = a(i, 1)
Next i
Application.ScreenUpdating = False
With Workbooks.Open(fichier).Sheets(1) 'ouverture avec une seule colonne
    a = .UsedRange.Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
    For i = 1 To UBound(a)
        x = a(i, 1)
        For j = 1 To Len(x)
            Mid(x, j, 1) = d(Mid(x, j, 1))
        Next j
        a(i, 1) = x
    Next i
    .UsedRange = a
    .Parent.Save 'enregistrement
End With
Application.ScreenUpdating = True
MsgBox "Le fichier CSV a été décrypté et enregistré", , "Décryptage"
End Sub

Sub Cryptage()
Dim fichier As Variant, a, d As Object, i&, x$, j%
fichier = Application.GetOpenFilename("Fichiers .csv (*.csv), *.csv")
If fichier = False Then Exit Sub
If MsgBox("Attention êtes-vous sûr que ce fichier CSV est décrypté ?", 4, "Cryptage") = 7 Then Exit Sub
a = [B2:C225]
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(a)
    d(CStr(a(i, 1))) = a(i, 2)
Next i
Application.ScreenUpdating = False
With Workbooks.Open(fichier).Sheets(1) 'ouverture avec une seule colonne
    a = .UsedRange.Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
    For i = 1 To UBound(a)
        x = a(i, 1)
        For j = 1 To Len(x)
            Mid(x, j, 1) = d(Mid(x, j, 1))
        Next j
        a(i, 1) = x
    Next i
    .UsedRange = a
    .Parent.Save 'enregistrement
End With
Application.ScreenUpdating = True
MsgBox "Le fichier CSV a été crypté et enregistré", , "Cryptage"
End Sub
A+
 

Pièces jointes

  • Dossier.zip
    32.8 KB · Affichages: 6
Dernière édition:

jurassic pork

XLDnaute Occasionnel
Hello,
en ce qui concerne les mots de passe en clair dans du code, j'ai peut-être trouvé une astuce pour les cacher :
Utiliser la base de registre et le HKCU ( utilisateur) car normalement seuls les administrateurs et l'utilisateur loggé peuvent y accéder (sinon permission refusée pour un autre utilisateur normal)
Principe on écrit le mot de passe dans sa HKCU comme ceci par exemple :
VB:
With CreateObject("WScript.Shell")
                  .RegWrite "HKCU\Software\MyApp\MdP", "MonMotDePasse", "REG_SZ"
End With
et ensuite quand on a besoin du mot de passe on le lit comme ceci :
VB:
With CreateObject("WScript.Shell")
         sPwd = .RegRead("HKCU\Software\MyApp\MdP")
End With

Normalement, il n'y a que l'utilisateur qui a écrit le mot de passe et les administrateurs qui pourront lire le
mot de passe.
Ami calmant, J.P
 

dysorthographie

XLDnaute Accro
Bonjour,

Un fichier CSV (Comma-Separated Values) est un fichier texte brut qui ne prend pas en charge nativement les fonctionnalités de sécurité comme la protection par mot de passe. Cependant, voici plusieurs méthodes pour le protéger, selon vos besoins.

1. Compresser le fichier avec un mot de passe
Utilisez un outil de compression tel que WinRAR, 7-Zip, ou le ZIP intégré à Windows pour créer une archive contenant le fichier CSV et protéger cette archive par un mot de passe.

Étapes avec 7-Zip :
1. Faites un clic droit sur le fichier CSV.
2. Sélectionnez Ajouter à l'archive....
3. Définissez un mot de passe dans la section Cryptage.

2. Convertir en fichier Excel avec mot de passe
Ouvrez le fichier CSV dans Excel, puis enregistrez-le au format Excel (XLSX). Ajoutez ensuite un mot de passe au fichier.
Étapes dans Excel :
1. Ouvrez le fichier CSV.
2. Allez dans Fichier > Informations > Protéger le classeur > Chiffrer avec un mot de passe.
3. Entrez un mot de passe et enregistrez le fichier.

3. Chiffrer le fichier avec un script VBA
Vous pouvez chiffrer le contenu d'un fichier CSV en utilisant un algorithme de chiffrement basique en VBA, comme XOR.
Exemple VBA pour chiffrer un fichier CSV

Le script suivant lit un fichier CSV, applique un chiffrement simple (XOR) avec un mot de passe, et enregistre le résultat dans un nouveau fichier chiffré.
Code:
Sub EncryptCSV()
    Dim inputFile As String
    Dim outputFile As String
    Dim password As String
    Dim inputData As String
    Dim encryptedData As String
    Dim i As Long
   
    ' Définir les chemins des fichiers
    inputFile = "C:\chemin\vers\fichier.csv"
    outputFile = "C:\chemin\vers\fichier_chiffre.csv"
    password = "VotreMotDePasse"

    ' Lire le contenu du fichier d'entrée
    Dim fileContent As String
    Open inputFile For Input As #1
    fileContent = Input$(LOF(1), #1)
    Close #1
   
    ' Chiffrement avec XOR
    For i = 1 To Len(fileContent)
        encryptedData = encryptedData & Chr(Asc(Mid(fileContent, i, 1)) Xor Asc(Mid(password, (i - 1) Mod Len(password) + 1, 1)))
    Next i
   
    ' Enregistrer les données chiffrées dans le fichier de sortie
    Open outputFile For Output As #1
    Print #1, encryptedData
    Close #1
   
    MsgBox "Fichier CSV chiffré avec succès !"
End Sub
Code:
Sub DecryptCSV()
    Dim inputFile As String
    Dim outputFile As String
    Dim password As String
    Dim inputData As String
    Dim decryptedData As String
    Dim i As Long
    
    ' Définir les chemins des fichiers
    inputFile = "C:\chemin\vers\fichier_chiffre.csv"
    outputFile = "C:\chemin\vers\fichier_dechiffre.csv"
    password = "VotreMotDePasse"

    ' Lire le contenu du fichier chiffré
    Dim fileContent As String
    Open inputFile For Input As #1
    fileContent = Input$(LOF(1), #1)
    Close #1
    
    ' Déchiffrement avec XOR
    For i = 1 To Len(fileContent)
        decryptedData = decryptedData & Chr(Asc(Mid(fileContent, i, 1)) Xor Asc(Mid(password, (i - 1) Mod Len(password) + 1, 1)))
    Next i
    
    ' Enregistrer les données déchiffrées dans le fichier de sortie
    Open outputFile For Output As #1
    Print #1, decryptedData
    Close #1
    
    MsgBox "Fichier CSV déchiffré avec succès !"
End Sub
Comment utiliser ce script :
1. Remplacez C:\chemin\vers\fichier.csv par le chemin de votre fichier CSV.
2. Remplacez VotreMotDePasse par votre mot de passe souhaité.
3. Exécutez la macro depuis l'éditeur VBA.
Pour déchiffrer, exécutez le même script en inversant le rôle des fichiers d'entrée et de sortie.

4. Stocker le fichier sur un service sécurisé

Si vous partagez le fichier, stockez-le sur une plateforme sécurisée comme Google Drive, OneDrive, ou Dropbox, et restreignez l'accès avec un mot de passe ou une authentification.


5. Utiliser une base de données protégée

Pour des données fréquemment manipulées, envisagez de stocker les données dans une base de données (par ex. MySQL, PostgreSQL) avec un chiffrement pour une meilleure sécurité.

Conclusion

Ces méthodes permettent de protéger vos fichiers CSV de différentes façons, en choisissant celle qui correspond à vos besoins techniques et de sécurité.
 

jurassic pork

XLDnaute Occasionnel
Hello,
Pour crypter et décrypter un fichier en VBA on peut aussi utiliser 7zip en ligne de commande (si il est installé) car il permet non seulement de crypter des fichiers avec un mot de passe mais aussi de compresser les fichiers. 7zip est souvent installé dans les entreprises car il est gratuit. Voici un code en VBA qui crypte un fichier et le décrypte :
VB:
Public Function EncryptFile(ByVal sFile As String, ByVal sZipFile As String, ByVal sPwd As String) As Long
    Dim sExePath As String, sShellCmd As String
    On Error GoTo Error_Handler
    ' Emplacement de 7-zip si installé
    With CreateObject("WScript.Shell")
       sExePath = .RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe\Path")
               '   .RegWrite "HKCU\Software\MyApp\MdP", sPwd, "REG_SZ"
       ' Commande 7-zip pour encrypter le fichier
       sShellCmd = Chr(34) & sExePath & "7z.exe" & Chr(34) & " a -tzip -p" & sPwd & " " & Chr(34) & _
                 sZipFile & Chr(34) & " " & Chr(34) & sFile & Chr(34)
    End With
    Shell sShellCmd
    EncryptFile = 0
    Debug.Print "EnCrypt OK"
    Exit Function
Error_Handler:
    MsgBox "Erreur " & Err.Number & " : " & Err.Description
    EncryptFile = Err.Number
End Function

Public Function DecryptFile(ByVal sZipFile As String, ByVal sDestDir As String, ByVal sPwd As String)
    Dim sExePath As String, sShellCmd As String
    On Error GoTo Error_Handler
    ' Emplacement de 7-zip si installé
    With CreateObject("WScript.Shell")
         sExePath = .RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe\Path")
       '  sPwd = .RegRead("HKCU\Software\MyApp\MdP")
         ' Commande 7-zip pour décrypter le ficher
         sShellCmd = Chr(34) & sExePath & "7z.exe" & Chr(34) & " x -p" & sPwd & " " & Chr(34) & _
                sZipFile & Chr(34) & " -o" & Chr(34) & sDestDir & Chr(34) & " -aoa"
    End With
    Shell sShellCmd
    DecryptFile = 0
    Debug.Print "Decrypt OK"
    Exit Function
Error_Handler:
    MsgBox "Erreur " & Err.Number & " : " & Err.Description
    DecryptFile = Err.Number
End Function

Sub TestEncryptDecrypt()
    Dim sFile As String
    Dim sZipFile As String
    Dim sPwd As String
    Dim sDestDir As String
    
    sFile = "D:\Temp\range.csv"
    sZipFile = "D:\Temp\star_data.zip"
    sPwd = "MyPassword"
    sDestDir = "D:\Tmp"
    Kill sZipFile
    If EncryptFile(sFile, sZipFile, sPwd) <> 0 Then Exit Sub
    If DecryptFile(sZipFile, sDestDir, sPwd) <> 0 Then Exit Sub
End Sub

Ami calmant, J.P
 

Discussions similaires

Réponses
8
Affichages
442
Réponses
2
Affichages
430

Statistiques des forums

Discussions
314 898
Messages
2 114 009
Membres
112 072
dernier inscrit
Onyx