Пример #1
0
        public static void SignFileWithSHA256Unicode(
            [MarshalAs(UnmanagedType.LPWStr)] string fileName,
            [MarshalAs(UnmanagedType.LPWStr)] string nodeToSign,
            [MarshalAs(UnmanagedType.LPWStr)] string certificateSerialNumber,
            [MarshalAs(UnmanagedType.LPWStr)] string certificatePassword)
        {
            try
            {
                Console.WriteLine("Parâmetros:");
                Console.WriteLine($"fileName: {fileName}");
                Console.WriteLine($"nodeToSign: {nodeToSign}");
                Console.WriteLine($"certificateSerialNumber: {certificateSerialNumber}");
                Console.WriteLine($"certificatePassword: {certificatePassword}");

                var log = new Logger($"log{DateTime.Now:yyyyMMdd}.txt");
                var doc = new XmlDocument();
                doc.Load(fileName);
                var xml = new HashSHA256(log).Sign(doc.OuterXml, nodeToSign, certificateSerialNumber, certificatePassword);
                File.WriteAllText(fileName, xml);
                Console.WriteLine("Salvo!");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Пример #2
0
        public void ShouldSignFile()
        {
            var xml = Xml.OuterXml;

            var log = new Logger("logTest2.txt");

            xml = new HashSHA256(log).Sign(xml, "evtInfoEmpregador", SerialNumber, TokenPin);

            var signedXml = new XmlDocument();

            signedXml.LoadXml(xml);
            signedXml.Save("envio-assinado-arquivo.xml");
            Assert.IsTrue(signedXml.GetElementsByTagName("Signature").Count > 0);
        }
Пример #3
0
        public static void SignSHA256Unicode(
            [MarshalAs(UnmanagedType.LPWStr)] ref string xml,
            [MarshalAs(UnmanagedType.LPWStr)] string nodeToSign,
            [MarshalAs(UnmanagedType.LPWStr)] string certificateSerialNumber,
            [MarshalAs(UnmanagedType.LPWStr)] string certificatePassword)
        {
            try
            {
                Console.WriteLine("Parâmetros:");
                Console.WriteLine($"Xml: {xml}");
                Console.WriteLine($"nodeToSign: {nodeToSign}");
                Console.WriteLine($"certificateSerialNumber: {certificateSerialNumber}");
                Console.WriteLine($"certificatePassword: {certificatePassword}");

                var log = new Logger($"log{DateTime.Now:yyyyMMdd}.txt");
                xml = new HashSHA256(log).Sign(xml, nodeToSign, certificateSerialNumber, certificatePassword) + null;
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Пример #4
0
        private void validar(string username, string password)
        {
            String query      = "SELECT * FROM GAME_OF_CODE.Usuario WHERE username = @username AND password = @password AND estado_habilitacion = 1";
            String contraseña = HashSHA256.getHash(password);

            IList <SqlParameter> parametros = new List <SqlParameter>();

            parametros.Add(new SqlParameter("@username", username));
            parametros.Add(new SqlParameter("@password", contraseña));

            SqlDataReader reader = QueryHelper.Instance.exec(query, parametros);

            if (QueryHelper.Instance.readFrom(reader))
            {
                Util.ShowMessage("Bienvenido " + reader["username"] + ".", MessageBoxIcon.Information);

                UsuarioSesion.Usuario.nombre = (String)reader["username"];
                UsuarioSesion.Usuario.id     = (Int32)reader["id_usuario"];

                //Usuario logueado correctamente (intentos fallidos = 0)
                parametros.Clear();
                parametros.Add(new SqlParameter("@username", username));
                String clearIntentosFallidos = "UPDATE GAME_OF_CODE.Usuario SET intentos_fallidos = 0 WHERE username = @username";
                QueryBuilder.Instance.build(clearIntentosFallidos, parametros).ExecuteNonQuery();

                //Consulta sucursales
                parametros.Clear();
                String consultaSucursales   = "EXEC GAME_OF_CODE.get_cantidad_sucursales_de_usuario " + username;
                int    cantidadDeSucursales = (int)QueryBuilder.Instance.build(consultaSucursales, parametros).ExecuteScalar();

                //Si es mas de una sucursal muestra la pantalla de eleccion de sucursales
                if (cantidadDeSucursales > 1)
                {
                    this.Hide();
                    new EleccionSucursal().ShowDialog();
                    this.Close();
                }
                else
                {
                    if (cantidadDeSucursales.Equals(1))
                    {
                        //Hay una sola sucursal, calculo la cant de roles
                        UsuarioSesion.Usuario.idSucursal = mapper.getIDUnicaSucursalUsuario(UsuarioSesion.Usuario.id);

                        if (mapper.SucursalEstaDeshabilitada(UsuarioSesion.Usuario.idSucursal))
                        {
                            UsuarioSesion.Usuario.idSucursal = -1;
                            Util.ShowMessage("No se puede iniciar sesión porque no tiene asignada una sucursal habilitada.", MessageBoxIcon.Exclamation);
                            return;
                        }

                        parametros.Clear();
                        String consultaRoles   = "EXEC GAME_OF_CODE.get_cantidad_roles_de_usuario " + username;
                        int    cantidadDeRoles = (int)QueryBuilder.Instance.build(consultaRoles, parametros).ExecuteScalar();

                        //Si es mas de un rol muestra la pantalla de eleccion de roles, sino la principal
                        if (cantidadDeRoles > 1)
                        {
                            this.Hide();
                            new EleccionRol().ShowDialog();
                            this.Close();
                        }
                        else
                        {
                            parametros.Clear();
                            parametros.Add(new SqlParameter("@username", username));
                            String rolDeUsuario = "SELECT r.nombre FROM GAME_OF_CODE.Rol r, GAME_OF_CODE.Rol_por_Usuario ru, GAME_OF_CODE.Usuario u WHERE r.id_rol = ru.id_rol AND ru.id_usuario = u.id_usuario AND u.username = @username AND r.estado_habilitacion = 1";
                            String rolUser      = (String)QueryBuilder.Instance.build(rolDeUsuario, parametros).ExecuteScalar();

                            UsuarioSesion.Usuario.rol = rolUser;
                            if (UsuarioSesion.Usuario.rol == null)
                            {
                                Util.ShowMessage("No existen roles para iniciar sesión.", MessageBoxIcon.Exclamation);
                                return;
                            }

                            this.Hide();
                            new MenuPrincipal().ShowDialog();
                            this.Close();
                        }
                    }
                    else
                    {
                        Util.ShowMessage("El usuario no posee ninguna sucursal habilitada por lo que no se puede loguear.", MessageBoxIcon.Error);
                        return;
                    }
                }
            }
            else
            {
                //Si es admin no se le suma intentos fallidos ya que si se deshabilita el admin principal no lo puede habilitar nadie
                if (mapper.getIDUsuario(usernameTextBox.Text).Equals(1))
                {
                    Util.ShowMessage("Contraseña incorrecta.", MessageBoxIcon.Exclamation);
                    return;
                }

                //Chequea si el usuario era correcto
                parametros.Clear();
                parametros.Add(new SqlParameter("@username", username));
                String        buscaUsuario = "SELECT * FROM GAME_OF_CODE.Usuario WHERE username = @username";
                SqlDataReader lector       = QueryBuilder.Instance.build(buscaUsuario, parametros).ExecuteReader();

                if (lector.Read())
                {
                    // Se fija si el usuario esta inhabilitado
                    parametros.Clear();
                    parametros.Add(new SqlParameter("@username", username));
                    parametros.Add(new SqlParameter("@password", contraseña));
                    String estaDeshabilitado = "SELECT * FROM GAME_OF_CODE.Usuario WHERE username = @username AND estado_habilitacion = 0";

                    SqlDataReader userDeshabilitado = QueryBuilder.Instance.build(estaDeshabilitado, parametros).ExecuteReader();

                    if (userDeshabilitado.Read())
                    {
                        Util.ShowMessage("El usuario está deshabilitado.", MessageBoxIcon.Information);
                        return;
                    }

                    // Suma un fallido
                    parametros.Clear();
                    parametros.Add(new SqlParameter("@username", username));
                    String sumaFallido = "UPDATE GAME_OF_CODE.Usuario SET intentos_fallidos = intentos_fallidos + 1 WHERE username = @username";
                    QueryBuilder.Instance.build(sumaFallido, parametros).ExecuteNonQuery();

                    // Si es el tercer fallido se deshabilita al usuario
                    parametros.Clear();
                    parametros.Add(new SqlParameter("@username", username));
                    String cantidadFallidos = "SELECT intentos_fallidos FROM GAME_OF_CODE.Usuario WHERE username = @username";
                    int    intentosFallidos = Convert.ToInt32(QueryBuilder.Instance.build(cantidadFallidos, parametros).ExecuteScalar());

                    if (intentosFallidos == 3)
                    {
                        parametros.Clear();
                        parametros.Add(new SqlParameter("@username", username));
                        String deshabilitar = "UPDATE GAME_OF_CODE.Usuario SET estado_habilitacion = 0 WHERE username = @username";
                        QueryBuilder.Instance.build(deshabilitar, parametros).ExecuteNonQuery();
                        Util.ShowMessage("Contraseña incorrecta." + '\n' + "Intentos fallidos: " + intentosFallidos + ".\n" + "El usuario fue deshabilitado.", MessageBoxIcon.Exclamation);
                    }
                    else
                    {
                        Util.ShowMessage("Contraseña incorrecta." + '\n' + "Intentos fallidos: " + intentosFallidos + ".", MessageBoxIcon.Exclamation);
                    }
                }
                else
                {
                    Util.ShowMessage("El usuario no existe.", MessageBoxIcon.Exclamation);
                }
            }
        }
Пример #5
0
        /// <summary>
        /// Computes SHA256 of the file
        /// </summary>
        /// <returns>The human readable SHA256 checksum of the file</returns>
        public string sha256()
        {
            Hash h = new HashSHA256(task);

            return(h.digest(filename));
        }
Пример #6
0
        static void Main(string[] args)
        {
            //args
            //Dir
            List <string> directory = new List <string>();
            int           count     = 0;

            for (int i = 0; i < args.Length; i++)
            {
                if (Directory.Exists(args[i]))
                {
                    directory.Add(args[i]);
                    count++;
                }
                else
                {
                    break;
                }
            }

            #region hash
            Hasher hash = new HashMD5();
            try
            {
                HashType hashType = (HashType)Enum.Parse(typeof(HashType), args[count], true);
                if (hashType == HashType.MD5)
                {
                    hash = new HashMD5();
                }
                if (hashType == HashType.SHA256)
                {
                    hash = new HashSHA256();
                }
                if (hashType == HashType.SHA512)
                {
                    hash = new HashSHA512();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Error parsing second command line argument Fill in one of these: " + HashType.MD5.ToString() + " " + HashType.SHA256 + " " + e);
                Console.ReadLine();
                Environment.Exit(1);
            }
            #endregion

            //initial vars
            string fileUnfinishedTag = "unf";
            string logFileName       = "MD5rebornLogs";

            //initial classes
            Logger logger = new FileLogger(logFileName);
            logSystemInfo(logger);

            Terminal terminal = new TerminalLocalScreen();

            //dirCheck
            DataChecker.DataChecker dataChecker = new DataCheckerLocalHDD(logger, directory, fileUnfinishedTag);

            folderState   state;
            List <string> files = new List <string>();

            dataChecker.GetStatus(out state, out files);

            if (state == folderState.finished)
            {
                tManager = new ThreadManager(logger, dataChecker, directory, fileUnfinishedTag, files[0], hash);
            }
            else //state.none
            {
                tManager = new ThreadManager(logger, dataChecker, directory, fileUnfinishedTag, hash);
            }

            //startAguments dir
            //make logger writes down basic info in a txt file like cores/os id etc

            //checklatestmake hash

            //depending on outcome -> fire up and finish files then fire up threadmanager

            //else fire up threadmanager and hash new files

            //fire up diffrent thread for console commands

            //fire up extra thread for displaying data
            tManager.Start();
        }