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)); } }
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()); }