Código de C/Visual C - FINGER

Imágen de perfil

FINGERgráfica de visualizaciones


C/Visual C

Publicado el 22 de Diciembre del 2022 por Hilario (123 códigos)
345 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.
*********************************************************************************

Requerimientos

----------------------------------------------
El ejercicio fue realizado en una plataforma
LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI-C.
*******************************************************

V-0.

Publicado el 22 de Diciembre del 2022gráfica de visualizaciones de la versión: V-0.
346 visualizaciones desde el 22 de Diciembre 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
/*finger.c*/
 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#define DESTINO_HOST "192.168.0.16"
#define PUERTO_DESTINO 79
#define DIMENSION_BUFER 256
/*opciones de conexión*/
#define PETICION1_HOST "\n"
#define PETICION2_HOST "root\n"
#define PETICION PETICION1_HOST
 
 int main(void)
{
 
int s_Descriptor, k;
struct sockaddr_in sa_Estructura;
/*
include <netinet/in.h>
struct sockaddr_in {
    short            sin_family;   // e.g. AF_INET
    unsigned short   sin_port;     // e.g. htons(3490)
    struct in_addr   sin_addr;     // see struct in_addr, below
    char             sin_zero[8];  // zero this if you want to
};
struct in_addr {
    unsigned long s_addr;  // load with inet_aton()
};
*/
char buf[DIMENSION_BUFER];
 
/*Inicicialización de descriptor de socket*/
 
if ((s_Descriptor=socket(PF_INET, SOCK_STREAM,0))<0)
{
	perror("Error al abrir el socket");
	exit(1);
}
 
/*Ahora debemos introducir los datos de la dirección IP del host
a donde vamos a conectarnos, indicando tambien el Puerto standard
elegido. Estos datos se podrán modificar con otras opciones diferentes*/
 
sa_Estructura.sin_family=AF_INET;//Familia de direcciones AF_INET.
sa_Estructura.sin_port=htons(PUERTO_DESTINO);
 
/*La función htonl () convierte el host
 entero sin signo del orden de bytes del
 host al orden de bytes de la red.*/
 
/*Comprobamos que funciona con el siguiente condicional*/
 
if (!inet_aton(DESTINO_HOST,&sa_Estructura.sin_addr))
{
	perror("inet_aton");
	exit(1);
}
 
/*Lo siguiente será conectarse al Servidor*/
 
 
if (connect(s_Descriptor,(struct sockaddr *)&sa_Estructura,sizeof(sa_Estructura))<0)
{
	perror("Existe error en la conexión");
	exit(1);
}
 
/*Si la conexión ha ido bien, se envía la petición de la información*/
 
 
if (write(s_Descriptor,PETICION,strlen(PETICION))<0)
{
	perror("write");
	exit(1);
}
 
/*Recibiendo datos del Servidor*/
 
do
{
	if ((k=read(s_Descriptor,buf,DIMENSION_BUFER))<0)
	{
		perror("Error leyendo");
		exit(1);
	}
 
write(STDOUT_FILENO,buf,k);
} while (k==DIMENSION_BUFER);
 
/*Se cierra la conexión con el Servidor*/
close(s_Descriptor);
 
}



Comentarios sobre la versión: V-0. (0)


No hay comentarios
 

Comentar la versión: V-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/s7324