Código de C/Visual C - TRABAJO CON PASSWORDS.

Imágen de perfil

TRABAJO CON PASSWORDS.gráfica de visualizaciones


C/Visual C

Publicado el 29 de Junio del 2022 por Hilario (124 códigos)
480 visualizaciones desde el 29 de Junio del 2022
TRABAJO CON PASSWORDS.
************************************
En este ejemplo trabajamos con contraseñas.
Para un acceso figurado a cualquier sistema.
En principio utilicimas las funciones básicas
strcpy, y, strcmp de comparación.
Luego complicamos un poco maś el ejemplo,
con el volcado en memoria de la entrada
del password verdadero o falso, para verlo
posicionado en memoria, así como el volcado de
direcciones de la posición de cada caracter
para apreciar su posición en memoria.
******************************************
Utilizamos en el ejemplo, aunque el programa
no lo requeriria, un tratamiento de desarrollo
con el fin de aprender un planteamiento de
programas muy largos, en los que en el futuro
podríamos utilizar un enlazado tipo make.
Debemos tener en cuenta que todos los
programas a ejecutar deben de estar bajo el
mismo directorio en consola de Linux.
******************************************
principal_pass.c
----------------
Programa principal de llamada a main,
y a la función dump.
+++++++++++++++++++++++++++++++++
Incluimos las seudolibrerías:
volcado.h
trabajoMemoria.h
contraseña.h
DeclaroVariables.h
En estas librerías dividimos el trabajo
de volcar el contenido de memoria
donde nos aparecerá reflejado en password.
El volcado de direcciones.
Incluiremos las contraseñas señaladas
para poder entrar a la hiptética aplicación.
En el último declararemos las variables.
************************************
Repito, que el programa se podría desarrollar
en uno solo. Este planteamiento es meramente
educativo, con el fin de aprender los innumerables
mecanismos de desarrollo que ofrece uno de los
sistemas de programación más robustos y potentes
que existen aún.
El ANSI-C.
**************************************
Este programa ha sido realizado en.
LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI C.-C-11
Usado el IDE Sublime Text.
Consola de Linux.
*******************************************
Forma de compilación bajo consola de Linux.
gcc principal_pass.c -o principal_pass
-----------------------------------------
Para los que quieran desensamblar
utilizando GDB, para ver puntos de
ruptura,o profundizar más en el programa
deben de compilarlo añadiendo
el atributo -g
------------------------------------------
Un ejemplo de ejecución.
$ ./principal_pass elcano
----------------------------------
UN EJEMPLO DE SALIDA POR CONSOLA.
--------------------------------
**********************
CONTRASEÑA CORRECTA
**************************
65 6c 63 61 6e 6f 00 53 48 45 4c 4c 3d 2f 62 69 || elcano.SHELL=/bi
6e 2f 62 61 73 68 00 53 45 53 53 49 4f 4e 5f 4d || n/bash.SESSION_M
41 4e 41 47 45 52 3d 6c 6f 63 61 6c 2f 6d 61 72 || ANAGER=local/mar
67 61 72 69 74 75 2d 78 65 73 74 61 3a 40 2f 74 || garitu-xesta:@/t
6d 70 2f 2e 49 43 45 2d 75 6e 69 78 2f 32 32 34 || mp/.ICE-unix/224
------------------------------------------------------------
Posición en meoria del password: 0x55b478a4b040
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*********************************************************
|En esta dirección | 0x55b478a4b040 |contenido TEXTO es:| e
||En esta dirección | 0x55b478a4b041 |contenido TEXTO es:| l
||En esta dirección | 0x55b478a4b042 |contenido TEXTO es:| c
||En esta dirección | 0x55b478a4b043 |contenido TEXTO es:| a
||En esta dirección | 0x55b478a4b044 |contenido TEXTO es:| n
||En esta dirección | 0x55b478a4b045 |contenido TEXTO es:| o
||En esta dirección | 0x55b478a4b046 |contenido TEXTO es:|
---------------------------------------------------------
Como se ve aparece el password, desglosado en memoria
junto a la entrada SHELL=/bi.
Más abajo vemos direccionado el inicio de la
contraseña a partir de la dirección 0x55b478a4b040.
Si se quieren alojamientos de memoria, o contraseñas,
o direccionamientos más largos, sólo hay que jugar
con los parámetros de los programas.
Eso lo dejo a la libertad de cada uno.

**********************************************************
Realizado por:
Hilario Iglesias Martínez.
--------------------------------------------------------------

Requerimientos

Este programa ha sido realizado en.
LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI C.-C-11
Usado el IDE Sublime Text.
Consola de Linux.

1.0

Publicado el 29 de Junio del 2022gráfica de visualizaciones de la versión: 1.0
481 visualizaciones desde el 29 de Junio del 2022
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/*
*********************
principal_pass.c
************************
*/
 
#include "trabajoMemoria.h"
#include "contraseña.h"
#include "DeclaroVariables.h"
 
int main(int argc, char *argv[])
 {
 
 if(argc < 2) {
 printf("Incluir CONTRASEÑA: %s <password>\n", argv[0]);
 exit(0);
 }
 
 if(Chequeo_de_Pass(argv[1]))
 {
 printf("\n **********************\n");
 printf(AZUL_T" CONTRASEÑA CORRECTA\n");
 printf("**************************\n");
 } else {
 printf(" **************************************\n");
 printf(ROJO_T"¡CONTRASEÑA INCORRECTA!,ACCESO DENEGADO\n");
 printf("**************************************\n");
 }
 dump( argv[1], 80);
//***************************************************************
printf("------------------------------------------------------------\n" );
 printf(    "Posición en meoria del password: %p\n ", &password_buffer);
 printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
 //*************************************
Tipo_char_puntero=password_buffer;
apuntador_ptr = (unsigned char *) Tipo_char_puntero;
printf("*********************************************************   \n ");
for(int i=0; i < 7; i++) {
printf(VERDE_T"|En esta dirección | %p |contenido TEXTO es:| %c\n |", Tipo_char_puntero, *Tipo_char_puntero);
Tipo_char_puntero++;
/*Agregamos en avance 4 a la dirección
 ya que un int tiene un tamaño de 4 bytes.*/
 
}
 
}
 
--------------------------------------------------------------------------------------------
/*
************************
volcado.h
***********************
*/
#include <stdio.h>
#include "DeclaroVariables.h"
 
void voyavolcar()
{
 
Tipo_char_puntero=password_buffer;
 apuntador_ptr = (unsigned char *) Tipo_char_puntero;
 printf("*********************************************************   \n ");
 for(i=0; i < 7; i++) {
 printf("|En esta dirección | @ 0x%p |contenido TEXTO es:| %c\n |", Tipo_char_puntero, *Tipo_char_puntero);
Tipo_char_puntero++;
/*Agregamos en avance 4 a la dirección
 ya que un int tiene un tamaño de 4 bytes.*/
 
 
}
}
 
------------------------------------------------------------------------------------------------------
/*
****************************
trabajoMemoria.h
+++++++++++++++++++++++++++++
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "DeclaroVariables.h"
 
 
/* dumps, funcion de volcado de  memoria en hex byte,
y en formato dividido organizado e imprimible,
con referencias de exadecimal a dato de texto.
La llamada a esta función por parte de main para
realiza dicho trabajo*/
 
void dump(const unsigned char *datos_de_buffer, const unsigned int longitud)
 {
	//unsigned char byte;
	//unsigned int c, n;
	for(c=0; c < longitud; c++) {
		byte = datos_de_buffer[c];
		printf("%02x ", datos_de_buffer[c]);  // Mostrar bytes en  hexadecimal
		if(((c%16)==15) || (c==longitud-1)) {
			for(n=0; n < 15-(c%16); n++)
				printf("   ");
			printf("|| ");
			for(n=(c-(c%16)); n <= c; n++) {  // Imprimir bytes por linea
				byte = datos_de_buffer[n];
				if((byte > 31) && (byte < 127)) // Rangos de impresión en consola Linux
					printf("%c", byte);
				else
					printf(".");
			}
			printf("\n"); // Al final de cada linea salto
		} // cierre de  if
	} // cierre de  for
} //cierre de función principal
 
--------------------------------------------------------------------------------------------------
 
 
/*
************************
contraseña.h
****************************
*/
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "DeclaroVariables.h"
int Chequeo_de_Pass(char *password)
{
 
 strcpy(password_buffer, password);
 if(strcmp(password_buffer, "elcano") == 0)
 auth_flag = 1;
 if(strcmp(password_buffer, "magallanes") == 0)
 auth_flag = 1;
 return auth_flag;
}
 
-------------------------------------------------------------------------------
 
/*
************************
---DeclaroVariables.h---
************************
*/
 
char password_buffer[16];
unsigned char *apuntador_ptr;
char *Tipo_int_puntero;
int*tiempo_puntero;
char *Tipo_char_puntero;
char *Tipo_CHAR_puntero;
int i;
unsigned char *apuntador_ptr;
char *Tipo_int_puntero;
int*tiempo_puntero;
int auth_flag;
unsigned char byte;
unsigned int c, n;
char *Tipo_char_puntero;
#define ROJO_T     "\x1b[31m"
#define ROJO_F     "\x1b[41m"
#define VERDE_T     "\x1b[32m"
#define AZUL_T     "\x1b[34m"
 
 
-----------------------------------------------------------------------------------------



Comentarios sobre la versión: 1.0 (0)


No hay comentarios
 

Comentar la versión: 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s7251