Mostrar los tags: c

Mostrando del 91 al 100 de 2.838 coincidencias
Se ha buscado por el tag: c
sin imagen de perfil

Inicio Sesion Robusto Implementando doble factor


PHP

Publicado el 29 de Diciembre del 2022 por Jefferson (11 códigos)
2.538 visualizaciones desde el 29 de Diciembre del 2022

Implementa un sistema mas robusto para el inicio de sesión



in


1) Registro de usuario verificando el email. Encriptando la url de tal forma que sea ilegible por algún pirata.

2) Al registrase le enviaremos al correo la imagen QR para que pueda ser escaneada por su smartphone / teléfono inteligente y agregar a la app de AUTENTIFICACION DOBLE FACTOR que el usuario escoja de la tienda STORE.

3) Libertad para que el usuario cree su propia pregunta de seguridad y la respuesta. Solo el usuario podrá formular su pregunta secreta escudriñando en sus recuerdos y que solo él sepa la respuesta.

4) Recuperación del password por olvido en el mismo sistema, dado que al escribir el email le devolvemos la pregunta de seguridad.

5) Recuperación por si acaso cambia su smartphone / teléfono inteligente y pierde la app móvil de AUTENTIFICACIÓN DOBLE FACTOR, enviándole a su correo la nueva imagen QR para el nuevo registro.

6) El usuario admin cuya password es admin, tendrá libertad de permitir o rechazar al usuario recién registrado.

7) El sistema funciona con cualquier app de AUTENTIFICACIÓN DOBLE FACTOR disponibles en la STORE. (No lo probé con Iphone).


allsmall
sin imagen de perfil

Registro - Login - Mail - OTP


PHP

Publicado el 25 de Diciembre del 2022 por Jefferson (11 códigos)
2.062 visualizaciones desde el 25 de Diciembre del 2022

SISTEMA DE REGISTRO-LOGIN mediante EMAIL-OTP



otp_register

1) Al descomprimir hay un archivo txt que debes leer y seguir las instrucciones

-> Bien, si seguiste todos los pasos no debería petar el sistema <-

2) No posee usuario administrador (debes crearlo tu)
simplemente agregas a la tabla usuarios un campo al que puedas llamar admin tipo INT donde 1 indica que es el administrador
luego por medio de php creas controles de seguridad

3) Una vez que te logueas, recibirás un correo donde debes pulsar el botón de activar la verificación del email
(Incluye una plantilla correo para registro/verificacion email)

4) Al verificar el email el campo email_verify de la tabla usuarios cambia a TRUE o 1 permitiendo el acceso

5) Existe un campo en la tabla usuarios llamado activo tipo INT que si lo colocas a FALSE o 0 impide el acceso
(esto, por si decides crear un usuario administrador y mediante programacion php puedes darle o quitarle acceso a cualquier usuario)

6) Una vez logueado, verificado y aceptado. Puedes ingresar al sistema, no sin antes validar un codigo OTP que se te enviara
a tu correo cada vez que entres. "Incluye una plantilla correo para OTP"
(Si utilizas algun servicio SMS o WhatsApp puedes enviar ese codigo OTP por alguna de esas vias)

7) Ofrece la posibilidad de recuperar la contraseña en caso de olvido, he diseñado una password de un solo uso y que al entrar al sistema
deberias cambiarla inmediatamente. Si no lo haces esta password aleatoria quedara invalidada.

8) Al cambiar la password o contraseña por motivo de olvido, se te enviara un email notificando del cambio y te otorgaremos una nueva
password aleatoria. Si al abrir el correo no fuistes tu quien solicito el cambio de contraseña, hay un link para revertir y dejar todo
original.
(Incluye una plantilla correo para recuperacion de contraseña)
Imágen de perfil

FINGER


C/Visual C

Publicado el 22 de Diciembre del 2022 por Hilario (124 códigos)
353 visualizaciones desde el 22 de Diciembre del 2022
*****************************************
Errare humanum est.
---------------------------------------
Hilario Iglesias Martínez.
---------------------------------------
El protocolo finger ofrece la posibilidad de optener
información sobre un usuario de un servidor remoto.

Este protocolo se basa en TCP, usando el puerto 79.
El cliente abre una conexión al puerto 79 del servidor.
El Servidor procesa esta solicitud enviando
la respuesta al Cliente.
Bajo consola linux existe el comando finger, que se puede
instalar, en plataforma Ubuntu, con este comando:

sudo apt-get install finger
-------------------------------------------------
En principio, el programa "finger.c" está programado
para una dirección de host: 192.168.0.16.
El usuario podrá configurar otra según su equipo,
y situación de cortafuegos. El puerto invariable es
el 79.

El programa está hecho para poder jugar con el,
y modificar su estructura.
---------------------------------------------
Compilar:
gcc -w -o finger finger.c

Ejecutar:
./finger
sudo ./finger

También se puede jugar con el mismo, utilizando cualquier
servidor programado, y colocado en mi serie
de programas de la web del programador.
*********************************************************************************
Imágen de perfil

ARGUMENTOS.


C/Visual C

estrellaestrellaestrellaestrellaestrella(1)
Publicado el 18 de Diciembre del 2022 por Hilario (124 códigos)
340 visualizaciones desde el 18 de Diciembre del 2022
*
****************************************
Extinctus ambitur ídem...
--------------------------------------
Hilario Iglesias Martínez.
---------------------------------------
argumento.c
------------------------------------------
Un pequeño y sencillo ejemplo del tratamiento
de entrada de argumentos a través de main().
Como podemos mediante esta función introducir
-en este caso, cantidades númericas-, para
hacer una comparativa de valores.
Imprimiento los resultados mediante consola Linux.
-----------------------------------------------
Compilacion del programa:
gcc -Wall -Werror -o argumento argumento.c
*****
Ejecución:
./argumento
Imágen de perfil

CADENAS


C/Visual C

Publicado el 25 de Noviembre del 2022 por Hilario (124 códigos)
495 visualizaciones desde el 25 de Noviembre del 2022

***********************************************************************************************************
********************************************************
Veritas filia temporis.
*****************************************************
Hilario Iglesias Martínez
*******************************************************
En este sencillo programa "/*Quita_Espacios.c*/" .
Intentamos explicar un poco el trabajo con frases o cadenas,
en las cuales eliminamos los espacios existentes.

A partir de una función de entrada con valores de puntero
a una frase, en la que recorremos los caracteres de la misma, para
eliminar los espacios existentes.
Tanbién utilizamos la llamada a la función "malloc()", para
la provisión de memoria, así como la función para la entrada por consola
"fgets()".
Se puede jugar con el programa modificando, funciones de entrada
y pasando otro tipo de parámetros.
*****************************************************************
El ejercicio fue realizado en una plataforma
LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI-C,

********************************************************************
compilación:
gcc -Wall -Werror -o Quita_Espacios Quita_Espacios.c
---------------------------------------------------------
Ejecución:
./Quita_Espacios
-----------------------------------------------------------

***************************************************************************************************
Imágen de perfil

ARRAYS TRES DIMENSIONES


C/Visual C

estrellaestrellaestrellaestrellaestrella(1)
Publicado el 22 de Noviembre del 2022 por Hilario (124 códigos)
444 visualizaciones desde el 22 de Noviembre del 2022
---------------------------------------------------------
Ut sementem feceris, ita metes.
---------------------------------------------------------
Hilario Iglesias Martínez
---------------------------------------------------
Recordamos otro programa subido el 20/10/2022, que trataba sobre
una MATRIZ BIDIMENSIONAL.
En este sencillo ejemplo, hacemos otro tratamiento semejante con
matrices de tres dimensiones.
---------------------------------------------------------
Se trata de dos programas:
Array_Fichero_Uno.c
Array_Fichero_Dos.c
**********************************************************************
En el primero:"Array_Fichero_Uno.c", abrimos un fichero, por ejemplo:
"entrada.txt", en el que escribimos una serie de datos estadísticos,
de cualquier temática.
En el segundo programa, tras su ejecución, nos solicitará "entrada.txt"
volcando en uno de salida, por ejemplo "salida.txt", los datos contenidos en
"entrada.txt".

En estos dos programas se podrá jugar con los elementos del mismo,
variando datos, y formatos.
***********************************************************************
--------------------------------------------------------
Los ejerciciosfueronrealizados, en una plataforma
LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI-C,
---------------------------------------------------------
Compilación:
gcc -Wall -Werror -o Array_Fichero_Uno Array_Fichero_Uno.c
ejecución:./Array_Fichero_Uno
**********************************************************
gcc -Wall -Werror -o Array_Fichero_Dos Array_Fichero_Dos.c
./Array_Fichero_Dos

**************************************************************
Ejercicios realizados para jugar y aprender con ellos.
********************************************************************

Imágen de perfil

ESTRUCTURAS Y FUNCIONES


C/Visual C

estrellaestrellaestrellaestrellaestrella(2)
Publicado el 12 de Noviembre del 2022 por Hilario (124 códigos)
532 visualizaciones desde el 12 de Noviembre del 2022
*********************************************
Amare et sapere vix deo conceditur.
*********************************************
Hilario Iglesias Martínez.
-----------------------------------------------
Se plantean 3 sencillos ejercicios basados en ANSI-C.

Se trata del manejo de funciones y estructuras, tomadas estas

como argumentos de la función, pasando a la misma una estructura

de datos de forma directa, a través de un puntero, o por elementos

independientes que componen la estructura.

Estos ejercicios son para jugar con ellos, y aprender su manejo en otras

modalidades de paso a función.
--------------------------------------------------------
Los ejerciciosfueronrealizados, en una plataforma
LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI-C,

-------------------------------------------------------------

sin imagen de perfil

Calculadora de resistencias de 4 y 5 bandas


Dev - C++

Publicado el 10 de Noviembre del 2022 por Exmachina
1.963 visualizaciones desde el 10 de Noviembre del 2022
#include<iostream>
#include<windows.h>
#include<conio.h>
#include<string>
#include<sstream>
#define color SetConsoleTextAttribute

using namespace std;
void gotoxy(int x,int y){
HANDLE hcon;
hcon = GetStdHandle(STD_OUTPUT_HANDLE);
COORD dwPos;
dwPos.X = x;
dwPos.Y= y;
SetConsoleCursorPosition(hcon,dwPos);
}
std::string toString(auto &i) {
std::stringstream ss;
ss << i;

return ss.str();
}

void banda4 (){
system("cls");
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
int i, a,b,c,d;
float result;
color(hConsole ,2);
std::cout<<" PARAMETROS DE RESISTENCIA"<<endl;
gotoxy(65,0);
color(hConsole,3);
cout<<"TABLA DE VALORES";
gotoxy(1,1);
color(hConsole, 15);
cout<<"|COLOR| |BANDA 1| |BANDA 2| |MULTIPLICADOR| |TOLERANCIA|";
gotoxy(45,2);
color(hConsole, 8);
cout<<"NEGRO 0 0 X 1";
gotoxy(45,3);
color(hConsole, 6);
cout<<"MARRON 1 1 X 10 +/- 1%";
gotoxy(45,4);
color(hConsole, 4);
cout<<"ROJO 2 2 X 100 +/- 2%";
gotoxy(45,5);
color(hConsole, 6);
cout<<"NARANJA 3 3 X 1000";
gotoxy(45,6);
color(hConsole, 14);
cout<<"AMARILLO 4 4 X 10000";
gotoxy(45,7);
color(hConsole, 2);
cout<<"VERDE 5 5 X 100000 ";
gotoxy(45,8);
color(hConsole, 1);
cout<<"AZUL 6 6 X 1000000";
gotoxy(45,9);
color(hConsole, 5);
cout<<"VIOLETA 7 7 X 10000000";
gotoxy(45,10);
color(hConsole, 8);
cout<<"GRIS 8 8 X 100000000";
gotoxy(45,11);
color(hConsole, 15);
cout<<"BLANCO 9 9 X 1000000000";
gotoxy(45,12);
color(hConsole , 14);
cout<<"DORADO X 0.1 +/- 5%";
gotoxy(45,13);
color(hConsole, 7);
cout<<"PLATEADO X 0.01 +/- 10%";
gotoxy(0,1);
cout<<" ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬"<<endl;
std::cout<<"==>Ingrese el numero del color: ";
std:cin>>i;
std::cout<<"==>Ingrese el numero del color: ";
std::cin>>a;
std::cout<<"==>Ingrese el Multiplicador: ";
std::cin>>b;
std::cout<<"==>Ingrese la Tolerancia: " ;
std::cin>>d;
color(hConsole, 3);
color(hConsole, 7);
std::string s = toString(i) + toString(a);
c=(a)+(i)*10;
result=b*c;
if(result>999){
result=result/1000;
std::cout<<"\n =====El valor de la resistencia es: \n "<< result <<"K ohms "<<d<<"%"<<" \n"<<std::endl;
}else{
std::cout<<"\n =====El valor de la resistencia es: \n "<< result <<" ohms "<< d <<"%"<<" \n"<<std::endl;
}



}

void banda5 (){
system("cls");
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
int i,a,b,c,d,e,f;
float result;
color(hConsole, 2);
cout<<" PARAMETROS DE RESISTENCIA"<<endl;
gotoxy(65,0);
color(hConsole, 3);
cout<<"TABLA DE VALORES";
gotoxy(40,1);
color(hConsole, 15);
cout<<"COLOR |BANDA 1| |BANDA 2| |BANDA 3| |MULTIPLICADOR| |TOLERANCIA|";
gotoxy(40,2);
color(hConsole, 8);
cout<<"NEGRO 0 0 0 X 1";
gotoxy(40,3);
color(hConsole, 6);
cout<<"MARRON 1 1 1 X 10 +/- 1%";
gotoxy(40,4);
color(hConsole, 4);
cout<<"ROJO 2 2 2 X 100 +/- 2%";
gotoxy(40,5);
color(hConsole, 6);
cout<<"NARANJA 3 3 3 X 1000";
gotoxy(40,6);
color(hConsole, 14);
cout<<"AMARILLO 4 4 4 X 10000";
gotoxy(40,7);
color(hConsole, 2);
cout<<"VERDE 5 5 5 X 100000 ";
gotoxy(40,8);
color(hConsole, 1);
cout<<"AZUL 6 6 6 X 1000000";
gotoxy(40,9);
color(hConsole, 5);
cout<<"VIOLETA 7 7 7 X 10000000";
gotoxy(40,10);
color(hConsole, 8);
cout<<"GRIS 8 8 8 X 100000000";
gotoxy(40,11);
color(hConsole, 15);
cout<<"BLANCO 9 9 9 X 1000000000";
gotoxy(40,12);
color(hConsole, 14);
cout<<"DORADO X 0.1 +/- 5%";
gotoxy(40,13);
color(hConsole, 7);
cout<<"PLATEADO X 0.01 +/- 10%";
gotoxy(0,1);
cout<<" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
cout<<"==>Ingrese el numero del color: " ;
cin>>i;
cout<<"==>Ingrese el numero del color: " ;
cin>>a;
cout<<"==>Ingrese el numero del color: " ;
cin>>b;
cout<<"==>Ingrese el Multiplicador: ";
cin>>c;
cout<<"==>Ingrese la Tolerancia: " ;
cin>>e;
color(hConsole, 3);
color(hConsole, 7);
std::string s = toString(i) + toString(a);
f=(a)+(i)*10;
std::string ss = toString(b);
d = (b)+(f)*10;
result=d*c;
if (result>999){
result=result/1000;
std::cout<<"\n =====El valor de la resistencia es: \n " << result <<"K ohms "<<e<<"%"<<" \n"<<std::endl;

}else{
std::cout<<"\n =====El valor de la resistencia es: \n "<<result<<" ohms "<<e<<"%"<<"\n "<<std::endl;
}

}
void menuprincipal(){
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
color(hConsole, 2);
cout<<"\t CALCULADORA DE RESISTENCIAS \n";
color(hConsole, 15);
cout<<"\t ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬ \n"
<<"\t Elija el tipo de resistencia: \n"
<<"\t 1. Resistencias de 4 Bandas \n"
<<"\t 2. Resistencias de 5 Bandas \n"
<<"\t 3. Salir del Programa."<<endl;
}
int main(){
int opci;
do{
system("cls");
menuprincipal();
cin>>opci;

switch(opci){
case 1:
banda4();
getch();
break;
case 2:
banda5();
getch();
break;
case 3:
cout<<"Fin del programa..."<<endl;
getch();
break;
default:
cout<<"////Opcion no valida\\\\"<<endl;
getch();
}

}
while (opci !=3);
return 0;

}