mercredi 20 novembre 2013

Sauvegarde de la base des données en utilisant transact Sql

Je me suis buté à un probleme tel que je en savais pas sauvegarder ma base des données en utilisant les outils de MS Sql Server management studio. Ca plantait à tout moment. Une autre solution a sauvé mon travail. j'ai utilisé des astuces de transact sql server. 

 --1 Declaration des variables 

DECLARE @name VARCHAR(50) -- nom de la base des donnees
DECLARE @path VARCHAR(256) -- le chemin de destination
DECLARE @fileName VARCHAR(256) -- le nom de fichier de sauvegarde
DECLARE @fileDate VARCHAR(20) -- used le ficher avec date




--2. Attribution des valeurs aux variables

-- specifier le repertoire de destination pour lequel sql server a le droit de lecture et d ecriture
SET @path = 'E:\MonsarWorkingSpace\Dossier\Destionation\'

-- specifier le format de date : exemple : 2013_11_20_19_54_12
SELECT @fileDate = REPLACE( REPLACE ((SELECT REPLACE(CONVERT(VARCHAR(19), GETDATE(), 120), '-', '_')), ':', '_'), ' ', '_')



--3. Place au curseur
 

DECLARE db_cursor CURSOR FOR 
SELECT name
FROM master.dbo.sysdatabases
WHERE name ='Nom de la base de donnéees' --Ici je sauve seulement une seule base des donnees
-- WHERE name NOT IN ('master','model','msdb','tempdb') -- Pour exclure les base des donnees dont on a pas besoi


OPEN db_cursor  
FETCH NEXT FROM db_cursor INTO @name  


WHILE @@FETCH_STATUS = 0  
BEGIN  
       SET @fileName = @path + @name + '_' + @fileDate + '.bak' 
       BACKUP DATABASE @name TO DISK = @fileName 

       FETCH NEXT FROM db_cursor INTO @name  
END  

CLOSE db_cursor  
DEALLOCATE db_cursor


-- For any question please contact me : monsar04[at]gmail.com

Installation de Shinken sous Debian Wheezy en quelques minutes

Shinken est une application permettant la surveillance système et réseau. Elle surveille les hôtes et services spécifiés, alertant lorsque les systèmes vont mal et quand ils vont mieux. C’est un logiciel libre sous licence GNU . Elle est complètement compatible avec le logiciel Nagios et elle a pour but d’apporter une supervision distribuée et hautement disponible facile à mettre en place

Cet article est apparu dans le blog de Patrick Lufundisu c'est don clui qui s'éxprime dans les textes.

Suivez la suite de l'article ici 

Cryptage et décryptage des mots de passe avancé 1

Il n'existe pas de solution définitive et universelle, tout évolue. Avant qu'on océan remplisse des grandes surfaces de terre, la première goute d'eau est importante.

Dans le précédent billet, nous avons abordé la notion de cryptage d'une maniere trop simple. Ce cryptage consiste juste à convertir une chaine de caractère en Base64String ce qui constitue un danger pour un système, un hackeur bien éveillé s'il acceder àla base des données, il peux simplement convertir le Base64String en string et directement il a le mot de passe. Cette methode ne doit pas vraiment être appellé cryptage mais une solution rapide pour proteger le mot de passe. Le vrai crytage consiste à avoir un algorithme de crytage qui vas servir pour cryter et décrypter le mot de passe. Il est difficile à un hacker de savoir l'algorythme de crypage car il ne l'a pas, bien sur ca peu lui prendre énormement du temps  ( meme 6 mois) pour etre en mesure de décrypter : rien n'est impossible en informatique c'est le temps qui crée les limites.





Dans cette demarche nous allons créer une classe qui contiendra l'algorithme de cryptage , ensuite nous allons appeller la classe dans la page souhaitée afin de crypter ou décrypter le mot de passe.


1. Classe  EncryptionPasswd



 public class EncryptionPasswd
    {
        public static byte[] Key = { 69, 75, 101, 56, 255, 46, 182, 135, 193, 155, 221, 154, 53, 178, 68, 56, 42, 11, 135, 145, 185, 28, 78, 49, 97, 168, 84, 117, 225, 130, 145, 65 };
        public static byte[] IV = { 54, 36, 255, 23, 165, 153, 88, 248, 175, 184, 198, 241, 175, 67, 69, 65 };

        //Cryptage
        public static string DecryptString(string src)
        {
            string strReturn = "";
            MemoryStream ms = null;
            CryptoStream cs = null;
            byte[] p = Convert.FromBase64String(src);
            byte[] initialText = new Byte[p.Length];
            int intIndex = 0;
            bool IsEndOfString = false;
            RijndaelManaged rv = new RijndaelManaged();
            ms = new MemoryStream(p);
            cs = new CryptoStream(ms, rv.CreateDecryptor(EncryptionPasswd.Key, EncryptionPasswd.IV), CryptoStreamMode.Read);
            cs.Read(initialText, 0, initialText.Length);
            while ((intIndex < initialText.Length) && !IsEndOfString)
            {
                if (initialText[intIndex] != 0)
                    strReturn += ((char)initialText[intIndex]);
                else
                    IsEndOfString = true;
                intIndex++;
            }

            return Convert.ToString(strReturn);

        }

        //Decryptage
        public static string EncryptString(string src)
        {
            byte[] p = Encoding.ASCII.GetBytes(src.ToCharArray());
            byte[] encodedBytes = { };

            MemoryStream ms = new MemoryStream();
            RijndaelManaged rv = new RijndaelManaged();
            CryptoStream cs = new CryptoStream(ms, rv.CreateEncryptor(EncryptionPasswd.Key, EncryptionPasswd.IV), CryptoStreamMode.Write);
            cs.Write(p, 0, p.Length);
            cs.FlushFinalBlock();
            encodedBytes = ms.ToArray();
            return Convert.ToBase64String(encodedBytes);
        }

    }


Vraiment, il faut beaucoup de temps, d’ingéniosité, un mental de résistant pour décrypter cet algorithme, il n'est pas si extra mais un peu costaud.


2. Pour crypter ou décrypter, il suffit d’appeler la classe  et le tour est joué, dans mon cas j'ai utilisé:
 




 protected void DisplayEncrypt(object sender, EventArgs e)
        {
            EncryptData.Text = EncryptionPasswd.EncryptString(Password.Text);
        }

        protected void DisplayDecrypt(object sender, EventArgs e)
        {
            EncryptData.Text = EncryptionPasswd.DecryptString(Password.Text);
        }



If any comment, please contact me at : monsar04[at]gmail.com

Merci :)







Simplement comment crypter et decrypter un mot de passe sous asp.net/C#

Crypter et décrypter un mot de passe sous asp.net/C#

Cryptographie, du mot latin crypto ( caché) et graphein ( caractère) est une technique qui consiste à cacher un message dans une serie des caractères. Il faut avouer que  la cryptographie ne date pas de nos jours, elle a commencé depuis des millenaires : les pigeons étaient utilisés pour envoyer les messages crypté dans les champs de batail...

En informatique :

- le cryptage ou chiffrement est l'activité de conversion de données ou d'informations en code ou une clé secrète.
- le décryptage ou déchiffrement est l'activité de faire comprendre ou conversion de code dans du texte brut.

Nous allons créer deux méthodes qui vont crypter et décrypter le mot de passe. Pour mon cas,
je crypte le mot de passe et je l'insere dans ma base des données, lorsque l'utilisateur veux
se connecter à mon system, je décrypte le mot de passe préalablement enregistré dans la base des données.




public string EncryptPassword(string textPassword)
        {
            //Crypter le mot de passe         
            byte[] passBytes = System.Text.Encoding.Unicode.GetBytes(textPassword);
            string encryptPass = Convert.ToBase64String(passBytes);
            return encryptPass;
        }

public string DecryptPassword(string encryptedPassword)
        {
            //Decrypter le mot de passe   
            byte[] passByteData = Convert.FromBase64String(encryptedPassword);
            string originalPassword = System.Text.Encoding.Unicode.GetString(passByteData);
            return originalPassword;
        }






 

Dans la base des données, j'aurai un mot de passe comme :TQBvAGIAYQBsAGkAMwAyAEAAMgAwADEAMwA= mais lorsque l'utilisateur vas se connecter le decryptage vas changer le mot de passe en Mobali32@2013 

Ce billet vous a t il aidé ? For any comment, please contact me at monsar04[at]gmail.com