public static bool Login(string username, string password)
        {
            string op = string.Empty;

            User user = AjudanteParaBD.SelectUserWithUsername(username);

            Console.Clear();
            if (user == null)
            {
                Console.WriteLine("\nErro! O utilizador inserido nao existe.");

                return(false);
            }

            //calcula o rep da palavra passe introduzida
            string insertedRep = SHA256Code.GenerateFromText(SHA256Code.GenerateFromText(password) + user.salt);

            if (user.rep.Equals(insertedRep))
            {
                Console.WriteLine("\nLogin efetuado com sucesso!\n");
                userLog = username;
                return(true);
            }
            else
            {
                Console.WriteLine("\nDados invalidos! Tente novamente.\n");
                return(false);
            }
        }
        private bool Login(string username, string password)
        {
            User   user        = AjudanteParaBD.SelectUserWithUsername(username);
            string insertedRep = SHA256Code.GenerateFromText(SHA256Code.GenerateFromText(password) + user.salt);

            return(user.rep.Equals(insertedRep));
        }
Example #3
0
 private static bool CreateDataBase()
 {
     if (!File.Exists(Directories.database))
     {
         AjudanteParaBD.OnCreate();
         return(true);
     }
     else
     {
         return(false);
     }
 }
Example #4
0
        public static void FilesHmac()
        {
            string passwd;
            string option;
            int    rdopiton;
            int    i;

            Console.WriteLine("+----------------------------------------------------------+");
            Console.WriteLine("|      Gerar Hmac dos ficheriros da directoria             |");
            Console.WriteLine("+----------------------------------------------------------+");

            List <Dir> directories = AjudanteParaBD.SelectDirsWithUsername(DataBaseFunctions.userLog);

            if (directories == null)
            {
                Console.WriteLine("Erro durante a leitura da base de dados.");
                return;
            }
            if (directories.Count == 0)
            {
                Console.WriteLine("Erro! Voce nao tem nenhuma diretoria adicionada.");
                return;
            }

            for (i = 0; i < directories.Count; i++)
            {
                Console.WriteLine(i + " - " + directories[i].path);
            }
            do
            {
                Console.WriteLine("Escolha uma direcotria!");
                option = Console.ReadLine();


                rdopiton = int.Parse(option);
            } while (rdopiton > i);

            Console.WriteLine("Introduza a password com que pretende gerar os HMAC");

            passwd = Console.ReadLine();

            var hmacs = HMac.hmac(directories[rdopiton].path, passwd);

            foreach (var hmac in hmacs)
            {
                Console.WriteLine(hmac);
                AjudanteParaBD.InsertFileHMAC(new FileHmac(hmac.Key, hmac.Value, directories[rdopiton].path));
            }
        }
Example #5
0
        public static void Verificarhmac()
        {
            Console.WriteLine("+----------------------------------------------------------+");
            Console.WriteLine("|               Ler Directoria                             |");
            Console.WriteLine("+----------------------------------------------------------+");

            List <Dir> directories = AjudanteParaBD.SelectDirsWithUsername(DataBaseFunctions.userLog);
            int        index       = 0;

            if (directories == null)
            {
                Console.WriteLine("Erro durante a leitura da base de dados.");
                return;
            }
            if (directories.Count == 0)
            {
                Console.WriteLine("Erro! Voce nao tem nenhuma diretoria adicionada.");
                return;
            }

            for (int i = 0; i < directories.Count; i++)
            {
                Console.WriteLine(i + " - " + directories[i].path);
            }

            do
            {
                Console.Write("Diretoria a verificar: ");
                index = int.Parse(Console.ReadLine());

                if (index > directories.Count - 1 || index < 0)
                {
                    Console.WriteLine("Erro! Escolha uma opcao valida.");
                }
            } while (index > directories.Count - 1 || index < 0);

            Console.WriteLine(string.Empty);
            Console.WriteLine("Diretoria escolhida: " + directories[index].path.ToString());

            Console.WriteLine("Introduza a sua palavra pass com que gerou os HMAC");
            string pass = Console.ReadLine();

            DataBaseFunctions.VerificarIntegridadeHMAC(directories[index], pass);
        }
        public static bool Register(User user)
        {
            if (AjudanteParaBD.SelectUserWithUsername(user.username) != null)
            {
                Console.WriteLine("\nErro! O username \"" + user.username + "\" não está disponivel!");
                Console.WriteLine("Por-favor introduza outro username!");

                return(false);
            }

            if (AjudanteParaBD.InsertUser(user) != -1)
            {
                Console.WriteLine("Registo efetuado com sucesso!");
                return(true);
            }

            Console.WriteLine("Registo efetuado sem sucesso!");
            return(false);
        }
        public static void VerificarIntegridadeHMAC(Dir dir, string key)
        {
            var currentfiles  = HMac.hmac(dir.path, key);
            var databaseFiles = AjudanteParaBD.SelectFileHMACWithDir(dir.path);


            foreach (var f in databaseFiles)
            {
                //Se foi eliminado
                if (!currentfiles.Keys.Contains(f.path))
                {
                    Console.WriteLine("Removido o ficheiro \'" + f.path + "\' da base de dados.");
                    AjudanteParaBD.DeleteFileHMAC(f);

                    continue;
                }

                // Se existir vamos ver se foi alterado
                if (!currentfiles[f.path].Equals(f.hmac))
                {
                    Console.WriteLine("O ficheiro \'" + f.path + "\'  sofreu alteracoes.");
                    AjudanteParaBD.UpdateFileHMAC(new FileHmac(f.path, currentfiles[f.path], dir.path));
                }
                else
                {
                    Console.WriteLine("O ficheiro \'" + f.path + "\' não sofreu alteracoes.");
                }

                currentfiles.Remove(f.path);
            }

            // Se ainda houver ficheiros, são os que foram adicionados
            foreach (string file in currentfiles.Keys)
            {
                Console.WriteLine("Adicionado o ficheiro \'" + file + "\' a base de dados.");
                AjudanteParaBD.InsertFileHMAC(new FileHmac(file, currentfiles[file], dir.path));
            }
        }
        public string[] VerificarIntegridadeHMAC()
        {
            var currentfiles  = HMac.hmac(dir.path, key);
            var databaseFiles = AjudanteParaBD.SelectFileHMACWithDir(dir.path);

            var lines = new List <string>();

            foreach (var f in databaseFiles)
            {
                //Se foi eliminado
                if (!currentfiles.Keys.Contains(f.path))
                {
                    lines.Add(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + " - Removido o ficheiro \'" + f.path + "\' da base de dados.");
                    AjudanteParaBD.DeleteFileHMAC(f);

                    continue;
                }

                // Se existir vamos ver se foi alterado
                if (!currentfiles[f.path].Equals(f.hmac))
                {
                    lines.Add(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + " - O ficheiro \'" + f.path + "\' sofreu alteracoes.");
                    AjudanteParaBD.UpdateFileHMAC(new FileHmac(f.path, currentfiles[f.path], dir.path));
                }

                currentfiles.Remove(f.path);
            }

            // Se ainda houver ficheiros, são os que foram adicionados
            foreach (string file in currentfiles.Keys)
            {
                lines.Add(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + " - Adicionado o ficheiro \'" + file + "\' a base de dados.");
                AjudanteParaBD.InsertFileHMAC(new FileHmac(file, currentfiles[file], dir.path));
            }

            return(lines.ToArray());
        }
        protected override void OnStart(string[] args)
        {
            mode = string.Empty;
            key  = string.Empty;
            string directory = string.Empty;

            username         = string.Empty;
            password         = string.Empty;
            dataBasePassword = string.Empty;

            if (args.Length != 5 && args.Length != 6)
            {
                OnStop();
                return;
            }

            mode = args[0].ToLower();

            if (mode.Equals("sha256"))
            {
                username         = args[1];
                password         = args[2];
                directory        = args[3];
                dataBasePassword = args[4];
            }
            else if (mode.Equals("hmac"))
            {
                key              = args[1];
                username         = args[2];
                password         = args[3];
                directory        = args[4];
                dataBasePassword = args[5];
            }
            else
            {
                OnStop();
                return;
            }

            if (!File.Exists(Directories.databaseAES))
            {
                OnStop();
                return;
            }

            DecryptFileBD();

            if (!Login(username, password))
            {
                OnStop();
                return;
            }

            var dirs = AjudanteParaBD.SelectDirsWithUsername(username);

            foreach (Dir d in dirs)
            {
                if (d.path.Equals(directory))
                {
                    dir = d;
                }
            }

            if (dir == null)
            {
                OnStop();
                return;
            }

            timer.Start();
        }
Example #10
0
        private static string ReceberDiretoria()
        {
            Console.WriteLine("+----------------------------------------------------------+");
            Console.WriteLine("|               Ler Directoria                             |");
            Console.WriteLine("+----------------------------------------------------------+");

            string mainPath     = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
            string sql          = string.Empty;
            string option       = string.Empty;
            string relativePath = string.Empty;

            do
            {
                Console.WriteLine("Deseja criar uma pasta na raiz do programa sim(S) não(N)");
                option = Console.ReadLine().ToLower();

                if (option.Equals("s"))
                {
                    Console.WriteLine("Qual será o nome da pasta que ira conter os ficheiros a verificar?");
                    relativePath = Console.ReadLine();

                    while (Directory.Exists(relativePath))
                    {
                        Console.WriteLine("Já existe uma pasta com esse nome, por favor dê outro nome!");
                        relativePath = Console.ReadLine();
                    }

                    Console.WriteLine("A sua pasta foi criada em: ");
                    Console.WriteLine(mainPath + "\\" + relativePath);

                    // Adicionar esta directoria à base de dados
                    Dir dir = new Dir(mainPath + "\\" + relativePath, DataBaseFunctions.userLog);

                    if (AjudanteParaBD.InsertDirectory(dir) == -1)
                    {
                        Console.WriteLine("Erro ao criar a diretoria");
                        return(string.Empty);
                    }

                    Directory.CreateDirectory(relativePath);
                    return(mainPath + "\\" + relativePath);
                }

                else if (option.Equals("n"))
                {
                    Console.WriteLine("Introduza o caminho absoluto da diretoria que pretende verificar.");
                    Console.WriteLine("Ex.: C:/Caminho/Completo/Ate/A/Diretoria");
                    Console.Write("Introduzido:");

                    mainPath = Console.ReadLine();

                    while (!Directory.Exists(mainPath))
                    {
                        Console.WriteLine("O caminho introduzido não existe na sua maquina");
                        Console.WriteLine("Introduza o caminho absoluto da pasta que você deseja verificar");
                        Console.Write("Introduzido:");
                        mainPath = Console.ReadLine();
                    }

                    // Adicionar esta directoria à base de dados
                    Dir dir = new Dir(mainPath, DataBaseFunctions.userLog);

                    if (AjudanteParaBD.InsertDirectory(dir) == -1)
                    {
                        Console.WriteLine("Erro ao adicionar a diretoria na base de dados.");
                        return(string.Empty);
                    }

                    return(mainPath);
                }
            } while (true);
        }