Códigos Fuente de C/Visual C

Mostrando del 31 al 40 de 810 registros
Imágen de perfil

LEER SECTORES DEL DISCO


C/Visual C

Publicado el 27 de Agosto del 2022 por Hilario (121 códigos)
644 visualizaciones desde el 27 de Agosto del 2022
/*
-----------------------------
Aut viam inveniam aut faciam.
*****************************
Leo_Sectores_Disco.c
*******************************
-----------------------------------
Hilario Iglesias Martínez.
*********************************
Este programa ha sido realizado en.
LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI C.-C-11
Consola de Linux.
***********************************
V-0 -Ag/2022.
--------------------------------------
El programa, abre un fichero por consola,
y va pidiendo sectores del disco :0,1,2,3,4...
hasta llegar al final de lectura de Buffer,
remarcado en otro color,volcando
el contenido en las sucesivas peticiones.

Forma de compilarlo bajo prompt:

gcc -Wall Leo_Sectores_Disco.c -o LeoSectores

*********************************************
Una posibles salida por consola de parte
de un sector de disco sería la siguiente,
(después de haber ejecutado, en este caso
de ejemplo, un fichero de texto para
prueba llamado Alicia.txt):

./LeoSectores Alicia.txt

Introduzca el Sector que quiere abrir:0
41 6C 69 63 69 61 20 65 73 74 C3 A1 20 61 20 70 | Alicia est.. a p
75 6E 74 6F 20 64 65 20 71 75 65 64 61 72 73 65 | unto de quedarse
20 64 6F 72 6D 69 64 61 20 64 65 62 69 64 6F 20 | dormida debido
61 6C 20 61 62 75 72 72 69 6D 69 65 6E 74 6F 20 | al aburrimiento
71 75 65 20 73 69 65 6E 74 65 20 6D 69 65 6E 74 | que siente mient
72 61 73 20 65 73 74 C3 A1 20 63 6F 6E 20 73 75 | ras est.. con su
20 68 65 72 6D 61 6E 61 20 73 65 6E 74 61 64 61 | hermana sentada
20 61 20 6C 61 20 6F 72 69 6C 6C 61 20 64 65 6C | a la orilla del

**********************************************************************
Funciones importantes que utilizamos en el programa:
------------------------------------------------------------------
"fseek()
---------------------------------------------------------------------
La función fseek() establece el indicador de posición del archivo para el
flujo apuntado. La nueva posición, medida en
bytes, se obtiene añadiendo bytes de desplazamiento a la posición
especificada.se establece con:
SEEK_SET,
SEEK_CUR,
SEEK_END,
El desplazamiento es relativo al inicio del archivo, el
indicador de posición actual o fin de archivo, respectivamente.

La llamada exitosa a la función fseek() borra al final del archivo
el indicador de flujo, y deshace cualquier efecto.
En resumen: La función fseek establece un indicador
de posición de archivo para un flujo de archivo establecido.
---------------------------------------------------------------------
"fread()
-----------------------------------------------------------------------
La función fread() es el complementario de las funciones como fwrite()

fread().
Esta función se usa comúnmente para leer datos binarios.
Acepta los mismos argumentos que la fwrite()

La llamada fread()está compuesta por una serie de parámetros.
Veamos, en rasgos generales, cada uno de ellos :

-Búfer: Puntero al búfer donde se almacenarán los datos.
Un búfer es una región de la memoria utilizada para
almacenar datos temporalmente.
-Tamaño: El tamaño de cada elemento a leer en bytes.
-Count: Contador del número de elementos a leer.
-Stream: Puntero al objeto FILE desde donde se leerán los datos.
++++
---Valor devuelto:
Tras una ejecución exitosa, la función devuelve un
valor entero equivalente a count .
Devuelve el número de elementos completos leídos
realmente, que puede ser menor que count
si se produce un error, o se encuentra
un final de archivo antes de llegar al
parámetro count declarado como constante
en el programa, dependiendo de la ejecución
que queramos dar al mismo.

-------------------------------------------
Las librerías utilizadas son las siguientes:
include <stdio.h>
include <ctype.h>
include <stdlib.h>

*/

Imágen de perfil

FICHEROS-COMPORTAMIENTO


C/Visual C

Actualizado el 26 de Agosto del 2022 por Hilario (121 códigos) (Publicado el 22 de Agosto del 2022)
398 visualizaciones desde el 22 de Agosto del 2022
-----------------------------------
*

*Non scholae, sed vitae discere.**



-----------------------------------
Hilario Iglesia Martínez.
Práctica en lenguaje C.
---------------------------
Utilización y creación de Ficheros.
--------------------------------
El programa fue realizado en plataforma
LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI C.-C-11
Para ejecutar bajo consola de linux.
-------------------------------------
Otra forma de ejecución:
Si no se desea utilizar "make" para su ejecución,
y hacerlo bajo directorio en consola Linux.
Deberá estar bajo dicho directorio los ficheros: Variables.h
y main.c.
Se podrá ejecutar su compilación, según las exigencias de
depuración de la siguiente forma:
-----------------------------------------------
gcc main.c -Wall -Wextra -Werror -Wno-format -o Descriptor_Archivo
-----------------------------------------------------------
gcc -Wall main.c -o Descriptor_Archivo
-----------------------------------------
gcc main.c -o Descriptor_Archivo

***********************************************

**Descriptor_Archivo, es un programa realizado en ANSI-C, bajo LINUX,
que trata de aclarar un poco el funcionamiento de la apertura de un
pequeño fichero de texto, en el que se escribe una frase.**

**Se intenta buscar la dirección del descriptor de archivo, así como el
alojamiento de cada letra de la frase en memoria. También se hace un volcado
de la parte del alojamiento en memoria para intentar apreciar los
desplazamientos de cada letra. Al final del mismo se hace una llamada
mediante la función “system()”, para saber el PID (Identificador de proceso),
del mismo. En esta llamada podremos comprobar coincidencias en las
direcciones de memoria.**

**Al final, averiguamos con otra llamada mediante “system()”,
el inode, y la estructura de datos con la información del archivo.**
Imágen de perfil

TRABAJO_MEMORIA


C/Visual C

Publicado el 24 de Agosto del 2022 por Hilario (121 códigos)
330 visualizaciones desde el 24 de Agosto del 2022

***Gaudeamus igitur iuvenes dum sumus***
---------------------------------------------
Hilario Iglesias Martínez
-----------------------------------
Si no se desea utilizar make, para su compilación,
poner bajo el mismo directorio Variables.h, y main.c
y compilar con el comando, para máxima depuración:

gcc -Wall -Wextra -Werror main.c -o Trabajo_Memoria
--o depuración normal--
gcc main.c -o Trabajo_Memoria

El programa fue realizado en plataforma
LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI C.-C-11
Para ejecutar bajo consola de linux.


Este programa "memoria.c", utiliza la función de llamada "malloc()",que tiene como finalidad la asignación dinámica de memoria.
Vuelca sobre consola de LINUX la parte o buffer, de memoria seleccionada.
El programa muestra un volcado de memoria asignada dinamicamente
por "malloc()", con este formato:
/*****
0x55923d61d747 [Desplazamiento] : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x55923d61d756 [Desplazamiento] : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x55923d61d765 [Desplazamiento] : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x55923d61d774 [Desplazamiento] : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

/****
Luego pregunta que se desea colocar en cualquiera de esas direcciones. Como respuest vuelca la frase elegida.
/*****
0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................pcIa
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................pcIa
00 11 04 00 00 00 00 00 00 46 52 41 53 45 0A 34 | .........FRASE.4pcIa
62 35 36 63 37 34 37 20 0A 00 00 00 00 00 00 00 | b56c747 ........pcIa
/*****
Se debe de tener en cuenta que si se elige una dirección fuera del rango seleccionado por "malloc()", el programa nos devolverá el típico error
de "Violación de segmento (`core' generado)"



Imágen de perfil

INTERCAMBIO-MENSAJES-CONSOLA


C/Visual C

Publicado el 16 de Agosto del 2022 por Hilario (121 códigos)
420 visualizaciones desde el 16 de Agosto del 2022
--------------------------------------------------
**Ut desint vires, tamen est laudanda voluntas**
--------------------------------------------------

Hilario Iglesias Martínez.
---------------------------
Realizado en:
El programa fue realizado en plataforma
LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI C.-C-11

-------------------------------------
Nueva configuración de intercambio de mensajes
por consola.
---------------------------------------------
Compilación:
Variables_Servidor.h debe estar en el mismo directorio
que:Nuevo_Servidor.c
$ gcc -Wall Nuevo_Servidor.c -o Nuevo_Servidor

**************************************************
Programa que sirve para interactuar entre dos consolas Linux, o entre dos ordenadores
diferentes, siempre que su configuración de cortafuegos lo permita. Este programa está
realizado para aprender por mi parte un poco más sobre ANSI-C, bajo plataforma Linux.
Se puede interactuar con el mismo mediante el comando nc, o telnet.**
--------------------------------------------------------------------------
Disce quasi semper victurus vive quasi cras moriturus.
--------------------------------------------------

-------------------------------------------------
***********CARACTERISTICAS DE LA RED**********
--------------------------------------------------
enxd03745c56b84: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.27 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::e1fb:835d:5da:e2a3 prefixlen 64 scopeid 0x20<link>
ether d0:37:45:c5:6b:84 txqueuelen 1000 (Ethernet)
RX packets 655816 bytes 772910795 (772.9 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 104452 bytes 20676735 (20.6 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Bucle local)
RX packets 1835 bytes 200525 (200.5 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1835 bytes 200525 (200.5 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.26 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::c61d:4836:b651:a200 prefixlen 64 scopeid 0x20<link>
ether 1c:1b:b5:85:a4:d0 txqueuelen 1000 (Ethernet)
RX packets 1580 bytes 153010 (153.0 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1937 bytes 232054 (232.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
-------------------------------------------------------------------------
Para interactuar por consola usar las IPs de la configuración del
ordenador donde se ejecute la aplicacion.
Comandos bajo consola: nc, telnet, como CLIENTE.
Ejemplos de entrada en el prompt segunda consola linux:
:~$ nc 192.168.0.27 8358
:~$ telnet
Imágen de perfil

SERVIDOR-CHAT-MEJORADO


C/Visual C

Publicado el 4 de Agosto del 2022 por Hilario (121 códigos)
482 visualizaciones desde el 4 de Agosto del 2022
/*
*********************
servidor_chat.c
*********************
Hilario Iglesias Martínez.
-------------------------
SERVIDOR.
----------------------------------
Volviendo hacía atrás a algunos
programas sobre sockes ya publicados,
se ha realizado este Sevidor para chat,
con el fin de poder interactuar
con el a través de dos consolas
Linux en el mismo ordenador,
utilizando la dirección Localhost (127.0.0.1),
u otra en la cual la configración del
cortafuegos lo permita.
Una vez abierto, y a la escucha el servidor,
se podrán interactuar mensajes con él
a través del comando linux, por ejemplo
nc 127.0.0.1 5898, o utilizando el antiguo
telnet.
Deberemos de colocar como atributo del comando
nc de linux la ip y el puerto establecido
en el servidor previamente.
El programa hace una llamada al inicio al comando de linux
a ifconfig, con el fin de probar el mismo
con las Ips, idoneas.
------------------------------------------
En este ejemplo se puede ver, en un volcado
de memoria, como se dispone la ip y el puerto
en memoria según se su tratamiento.
formatos Big Endian, o Little Endian
Como en otros programas puestos aquí,
se podría hacer un seguimiento de
los mensajes con wireshark para analizar
los paquetes y entender su proceso.
---------------------------
*********************************
Este programa ha sido realizado en.
LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI C.-C-11
Consola de Linux.
*****************************
Compilacion.
$ gcc servidor_chat.c -o servidor_chat
//**************************************

Ejecucion y un posible ejemplo de salida por
consola. Para interrmpir el programa
utilizar CONTRO C.
+++++++++++++++++++++++++++++++++++++
./servidor_chat
++++++++++++++++++++++++++++++++++
IMPRIME POR CONSOLA.
------------------------------

Tu sistema es Little Endian
+++++++++++++++++++++++++++++++++++++++++++++++
Introduce una IP
127.0.0.1
++++++++++++++++
*******************
Introduce un Puerto:
+++++++++++++++++++
8767
-------------------
Valor de entrada: 8767
Socket creado con éxito
Tamaño de la strucServidor = 16
La IP local es: 127.0.0.1
El Puerto local de conexión es: 8767
----------------------------------------------
Disposición en memoria del Puerto y la IP
----------------------------------------------
02 00 22 3f 7f 00 00 01 00 00 00 00 00 00 00 00 || .."?............
c2 00 00 00 00 00 00 00 f7 a0 ba dc fc 7f 00 00 || ................
38 37 36 37 00 7f 00 00 ad 79 54 c1 92 55 00 00 || 8767.....yT..U..
e8 72 03 3b 66 7f 00 00 60 79 54 c1 92 55 00 00 || .r.;f...`yT..U..
31 32 37 2e 30 2e 30 2e 31 00 54 c1 92 55 00 00 || 127.0.0.1.T..U..
00 a2 ba dc fc 7f 00 00 00 a5 6b 08 1f 31 1f 71 || ..........k..1.q
00 00 00 00 00 00 00 00 83 a0 e6 3a || ...........:
----------------------------------------------
Socket enlazado con éxito.
El Servidor está preparado
Imágen de perfil

Sobre PID y memoria


C/Visual C

Publicado el 1 de Agosto del 2022 por Hilario (121 códigos)
442 visualizaciones desde el 1 de Agosto del 2022
-----------------------------------
holodomor.c

***********************************
Programa en ANSI-C holodomor.c
Que sirve para realizar un volcado en
memoria de una palabra, con el fin de
establecer su dirección de locaclización.
así como el desplazamiento letra a letra.
Tambien realiza un dump de la parte de memoria
donde se localiza, para estudiar su posición.
Con el fin de poder apreciar el número
de proceso PID,hacemos una llamada
al comando (pmap -d).
**************************************
Este programa ha sido realizado en.
LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI C.
********************************
Compilar:
gcc holodomor.c -o holodomor
**********************************
Programado por:
Hilario Iglesias Martínez.
Cuestiones:
[email protected]
-----------------------------------
Imágen de perfil

SERVIDOR


C/Visual C

Publicado el 6 de Julio del 2022 por Hilario (121 códigos)
766 visualizaciones desde el 6 de Julio del 2022
/*
*********************
servidor_chat.c
*********************
Hilario Iglesias Martínez.
-------------------------
SERVIDOR.
----------------------------------
Volviendo hacía atrás a algunos
programas sobre sockes ya publicados.
He realizado este Sevidor para chat,
con el fin de poder interactuar
con el a través de dos consolas
Linux en el mismo ordenador,
utilizando la dirección Localhost (127.0.0.1),
u otra en la cual la configración del
cortafuegos lo permita.
Una vez abierto y a la escucha el servidor,
se podrán interactuar mensajes con él
a través del comando linux, por ejemplo
nc 127.0.0.1 5898, o utilizando el antiguo
telnet.
donde se coloca como atributo del comando
nc de linux la ip y el puerto establecido
en el servidor previamente.
En este ejemplo se puede ver, en un volcado
de memoria, como se dispone la ip y el puerto
en memoria según se su tratamiento.
formatos Big Endian, o Little Endian
Como en otros programas puestos aquí,
se podría hacer un seguimiento de
los mensajes con wireshark para analizar
los paquetes.
---------------------------
Salida del Servidor poniendo en consola
la frase.
hasta luego lucas
*********************************
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.
*****************************
Compilacion.
$ gcc servidor_chat.c -o servidor_chat
Ejecucion.
+++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++
Salida por consola.
------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++
Tu sistema es Little Endian
+++++++++++++++++++++++++++++++++++++++++++++++
Introduce una IP
127.0.0.1
++++++++++++++++
*******************
Introduce un Puerto:
+++++++++++++++++++
8767
-------------------
Valor de entrada: 8767
Socket creado con éxito
Tamaño de la strucServidor = 16
La IP local es: 127.0.0.1
El Puerto local de conexión es: 8767
----------------------------------------------
Disposición en memoria del Puerto y la IP
----------------------------------------------
02 00 22 3f 7f 00 00 01 00 00 00 00 00 00 00 00 || .."?............
c2 00 00 00 00 00 00 00 f7 a0 ba dc fc 7f 00 00 || ................
38 37 36 37 00 7f 00 00 ad 79 54 c1 92 55 00 00 || 8767.....yT..U..
e8 72 03 3b 66 7f 00 00 60 79 54 c1 92 55 00 00 || .r.;f...`yT..U..
31 32 37 2e 30 2e 30 2e 31 00 54 c1 92 55 00 00 || 127.0.0.1.T..U..
00 a2 ba dc fc 7f 00 00 00 a5 6b 08 1f 31 1f 71 || ..........k..1.q
00 00 00 00 00 00 00 00 83 a0 e6 3a || ...........:
----------------------------------------------
Socket enlazado con éxito.
El Servidor está preparado
Imágen de perfil

TRABAJO CON PASSWORDS.


C/Visual C

Publicado el 29 de Junio del 2022 por Hilario (121 códigos)
475 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.
--------------------------------------------------------------
Imágen de perfil

Alojamiento de texto.


C/Visual C

Publicado el 26 de Junio del 2022 por Hilario (121 códigos)
475 visualizaciones desde el 26 de Junio del 2022
Ampliando un programa anterior,-
como complemento formativo-, volevemos
a introducir por teclado una frase
de hasta 150 caracteres, esta vez admitiendo
espacios.
Dividimos el programa en una librería pildora.h
y pildora.c, que deberán estar bajo el mismo
directorio, o direccionado al mismo directorio
que pildora.c.