IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Erreur de compilation


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2014
    Messages : 93
    Par défaut Erreur de compilation
    Bonjour
    J'esaye d'intégrer ce code à Windev :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
     
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
     
    using System.Data;
    using System.Data.SqlTypes;
    using System.Data.SqlClient;
     
    namespace ChromeCookies
    {
        class ChromeManager
        {
            public List<Cookie> GetCookies(string hostname)
            {
                string ChromeCookiePath = @"C:\Users\" + Environment.UserName + @"\AppData\Local\Google\Chrome\User Data\Default\Network\Cookies";
                List<Cookie> data = new List<Cookie>();
                if (File.Exists(ChromeCookiePath))
                {
                    try
                    {
                        using (var conn = new SqliteConnection("Data Source={ChromeCookiePath}"))
                        using (var cmd = conn.CreateCommand())
                        {
                            cmd.CommandText = "SELECT name, encrypted_value, host_key FROM cookies WHERE host_key = '{hostname}'";
                            byte[] key = AesGcm256.GetKey();
     
                            conn.Open();
                            using (var reader = cmd.ExecuteReader())
                            {
                                while (reader.Read())
                                {
                                    if (!data.Any(a => a.Name == reader.GetString(0)))
                                    {
                                        byte[] encryptedData = GetBytes(reader, 1);
                                        byte[] nonce, ciphertextTag;
                                        AesGcm256.prepare(encryptedData, out nonce, out ciphertextTag);
                                        string value = AesGcm256.decrypt(ciphertextTag, key, nonce);
     
                                        data.Add(new Cookie()
                                        {
                                            Name = reader.GetString(0),
                                            Value = value
                                        });
                                    }
                                }
                            }
                            conn.Close();
                        }
                    }
                    catch { }
                }
                return data;
            }
     
            private byte[] GetBytes(SqliteDataReader reader, int columnIndex)
            {
                const int CHUNK_SIZE = 2 * 1024;
                byte[] buffer = new byte[CHUNK_SIZE];
                long bytesRead;
                long fieldOffset = 0;
                using (MemoryStream stream = new MemoryStream())
                {
                    while ((bytesRead = reader.GetBytes(columnIndex, fieldOffset, buffer, 0, buffer.Length)) > 0)
                    {
                        stream.Write(buffer, 0, (int)bytesRead);
                        fieldOffset += bytesRead;
                    }
                    return stream.ToArray();
                }
            }
        }
     
        public class Cookie
        {
            public string Name { get; set; }
            public string Value { get; set; }
        }
     
        class AesGcm256
        {
            public static byte[] GetKey()
            {
                string sR = string.Empty;
                var appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
                string path = @"C:\Users\" + Environment.UserName + @"\AppData\Local\Google\Chrome\User Data\Local State";
     
                string v = File.ReadAllText(path);
     
                dynamic json = JsonConvert.DeserializeObject(v);
                string key = json.os_crypt.encrypted_key;
     
                byte[] src = Convert.FromBase64String(key);
                byte[] encryptedKey = src.Skip(5).ToArray();
     
                byte[] decryptedKey = ProtectedData.Unprotect(encryptedKey, null, DataProtectionScope.CurrentUser);
     
                return decryptedKey;
            }
     
    		public static string decrypt(byte[] encryptedBytes, byte[] key, byte[] iv)
            {
                string sR = String.Empty;
                try
                {
                    GcmBlockCipher cipher = new GcmBlockCipher(new AesEngine());
                    AeadParameters parameters = new AeadParameters(new KeyParameter(key), 128, iv, null);
     
                    cipher.Init(false, parameters);
                    byte[] plainBytes = new byte[cipher.GetOutputSize(encryptedBytes.Length)];
                    Int32 retLen = cipher.ProcessBytes(encryptedBytes, 0, encryptedBytes.Length, plainBytes, 0);
                    cipher.DoFinal(plainBytes, retLen);
     
                    sR = Encoding.UTF8.GetString(plainBytes).TrimEnd("\r\n\0".ToCharArray());
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.WriteLine(ex.StackTrace);
                }
     
                return sR;
            }
     
           public static void prepare(byte[] encryptedData, out byte[] nonce, out byte[] ciphertextTag)
           {
                nonce = new byte[12];
                ciphertextTag = new byte[encryptedData.Length - 3 - nonce.Length];
     
                System.Array.Copy(encryptedData, 3, nonce, 0, nonce.Length);
                System.Array.Copy(encryptedData, 3 + nonce.Length, ciphertextTag, 0, ciphertextTag.Length);
           }
        }
    }
    La compilation est faite par Windev donc il n'est pas possible de modifier la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\csc.exe"  /target:library /debug:pdbonly /nologo /unsafe /optimize+ /warn:0 /reference:"D:\Program Files (x86)\PC SOFT\WINDEV 24\Programmes\FrameWork\Win32x86\wd240net4.dll" /platform:x86 /reference:"System.Management.dll" /reference:"mscorlib.dll" /reference:"System.Runtime.dll" /out:"WD24_Csharp.dll" *.cs
    qui donne cette erreur :

    Erreur :ChromeManager.cs(56,33): error CS0246: Le type ou le nom d'espace de noms 'SqliteDataReader' est introuvable (
    une directive using ou une référence d'assembly est-elle manquante*?)
    WD24_Csharp, Déclarations globales de WD24_Csharp, ligne 0, colonne 0

    J'ai bien compris qu'il ne trouvait pas le type : SqliteDataReader dans la déclaration de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private byte[] GetBytes(SqliteDataReader reader, int columnIndex)
    pourtant il existe bien à la ligne 29 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using (var reader = cmd.ExecuteReader())
    PS : je suis un débutant sur C#

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2022
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2022
    Messages : 13
    Par défaut
    Bonjour,

    Il me semble que la classe SqliteDataReader est dans le namespace (using) Microsoft.Data.Sqlite et non dans System.Data.SqlClient.

    Cordialement.

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 15h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 15h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 22h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 22h34
  5. Réponses: 2
    Dernier message: 05/03/2003, 00h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo