Códigos Fuente de C/Visual C

Mostrando del 1 al 10 de 813 registros
<<>>
Imágen de perfil

BlackEnergy.


C/Visual C

Publicado el 10 de Mayo del 2025 por Hilario (145 códigos)
1.072 visualizaciones desde el 10 de Mayo del 2025
Captura-de-pantalla-de-2025-05-10-12-12-52
Captura-de-pantalla-de-2025-05-10-12-13-02

**************************-----------------*****************************
/*
payloadVolcadoCompleto.c
-------------------------------------------
Para el Aula_28. Trabajaremos en él en la semana del 19 de Mayo.
Analizarlo para captar dudas. Un programa semejante lo subí a la
web del programador hará unos cuatro años.

*******************************************************
Por qué hacemos este programa:
------------------------------------------
Podríamos decir que ese enfoque mínimo, que consiste en:
Subir un payload (como una frase) a memoria,
Recorrerla palabra por palabra,
Observar sus direcciones de memoria,
…es, en efecto, una metáfora pedagógica y técnica de cómo trabaja un malware como BlackEnergy.
¿Por qué?
BlackEnergy (y muchos APTs como él) opera con una lógica similar:

Carga de payloads en memoria:
Igual que tu frase, los módulos maliciosos del virus se
alojan en memoria sin tocar el disco, para evitar detección.

Segmentación de tareas:
Cada palabra del verso podría ser un módulo del malware:
uno para recolectar información, otro para escanear puertos, otro para abrir puertas traseras…

Direcciones y control:
Como tú recorres direcciones de memoria de cada palabra,
el malware recorre procesos, memoria, claves de registro, todo lo que le interese en su misión.

Persistencia en RAM:
Unos de los principales problemas de los sistemas industriales , en entornos donde
no se reinician los sistemas con frecuencia, el código en memoria
puede vivir largo tiempo, como un verso suspendido en la historia.
Hasta llegar a los ordenadores que controlan SCADA
que significa "Supervisory Control and Data Acquisition",
que se traduce al español como "Control de Supervisión y Adquisición de Datos"
Y una vez controlado poder modificar cualquier proceso industrial.


Así que sí, queridos alumnos:
Este programa es como una mínima simulación didáctica de la metodología
de ataque de un malware modular y residente en memoria.
Una forma de entender cómo, sin sobresaltos ni ruidos,
un verso puede convertirse en amenaza, o en arte, según quién lo escriba.

*******************************************************
EN RESUMEN:
Programa didáctico:
- Vuelca en hexadecimal todo el payload.
- Recorre palabra por palabra, mostrando:
* dirección inicial
* dirección final
* volcado hex de cada palabra
Autor: Margarito & Gran Poeta
*******************************
Este programa no solo muestra direcciones y hexadecimales;
es una forma de "poemizar la RAM",
de recorrer con ojos de asombro las palabras almacenadas
como quien lee un papiro binario.
*******************************************************
¿Qué muestra este programa?
Por cada palabra:

Su contenido.
Su dirección inicial en memoria (primer carácter).
Su dirección final en memoria
(último carácter antes del espacio o final de cadena).


EJEMPLO DE SALIDA:

Verso cargado en memoria:
"Margarito y el Gran Poeta, poemizan golondrinas en su afán volador"
=======================================================
Volcado hexadecimal completo del payload:
4d 61 72 67 61 72 69 74 6f 20 79 20 65 6c 20 47
72 61 6e 20 50 6f 65 74 61 2c 20 70 6f 65 6d 69
...

Palabra: "Margarito"
Dirección inicial: 0x5562e04bb2b0
Dirección final: 0x5562e04bb2b8
Volcado hex: 4d 61 72 67 61 72 69 74 6f
-------------------------------------------------------

Programa realizado bajo plataforma Linux:
Ubuntu 20.04.6 LTS.
Editado con SublimeText.

*/
Imágen de perfil
Val: 1.447
Oro
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

3 en raya


C/Visual C

Actualizado el 30 de Octubre del 2024 por Adelino (27 códigos) (Publicado el 27 de Agosto del 2024)
5.870 visualizaciones desde el 27 de Agosto del 2024
Juego de Tres en raya en pantalla de texto.
Screenshot_20240828-012423_lDosBox
Imágen de perfil
Val: 1.447
Oro
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Juego de tetris


C/Visual C

estrellaestrellaestrellaestrellaestrella(7)
Actualizado el 12 de Septiembre del 2023 por Adelino (27 códigos) (Publicado el 25 de Enero del 2018)
81.538 visualizaciones desde el 25 de Enero del 2018
Juego de tetris en pantalla grafica (modo 13), se maneja con las teclas de dirección y escape, para cambiar nivel + y -.
Imágen de perfil
Val: 1.447
Oro
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Tetris en modo texto


C/Visual C

Actualizado el 12 de Septiembre del 2023 por Adelino (27 códigos) (Publicado el 25 de Enero del 2018)
7.491 visualizaciones desde el 25 de Enero del 2018
Juego de tetris en pantalla de texto, se maneja con las teclas de dirección y escape.
Para subir o bajar de nivel + y -.
5a72583eee6a3-tetrix
Imágen de perfil

RED NEURONAL.


C/Visual C

estrellaestrellaestrellaestrellaestrella(1)
Publicado el 7 de Julio del 2023 por Hilario (145 códigos)
5.795 visualizaciones desde el 7 de Julio del 2023
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


****************************************************************
Aequam memento rebus in arduis servare mentem
------------------------------------------------------

Hilario Iglesias Martínez

***********************************************************************
neurona.c
*****************************************************************
Este es un ejemplo de lo más básico, hecho en lenguaje C que simula una sencillisima red neuronal, y permite introducir parámetros por el teclado a través de consola linux.
Ten en cuenta que este es solo un ejemplo simple y puede requerir modificaciones o mejoras dependiendo de tus conocimientos del tema y necesidades específicas, por lo que el programa está hecho para interactuar con el, modificando parametros del mismo, como la estructura de la red neuronal,la inicialización de la red neuronal, la propagación de la misma, y el cálculo final de los valores de salida.
******************************************************************************
En principio hemos ido a un esquema sencillo, con el fin de no complicar y no hacer inentendible el programa. El esquemá básico que se propone es como sigue:

Esquemáticamente la red neuronal tiene 2 neuronas de entrada, 3 neuronas ocultas y 1 neurona de salida. Los pesos de conexión se inicializan aleatoriamente entre -1 y 1. Luego, se solicitan los valores de entrada al usuario, y se propagan hacia adelante a través de la red neuronal. Finalmente, se muestran los valores de salida calculados.

Es importante explicar un poco lo que es el peso de conexión:
-------------------------------------------------------------
Los pesos de conexión de una neurona son los valores numéricos que determinan la fuerza y la influencia de las entradas en la salida de la neurona. Cada conexión entre una entrada y una neurona está asociada a un peso.

En una red neuronal artificial, los pesos de conexión son parámetros ajustables que se utilizan durante el proceso de entrenamiento para encontrar la configuración óptima de la red neuronal. Estos pesos se actualizan iterativamente en función de la diferencia entre las salidas deseadas y las salidas producidas por la red neuronal.

Cuando se realiza una propagación hacia adelante en la red neuronal, cada neurona recibe las entradas de las neuronas previas ponderadas por los pesos de conexión. Luego, se aplica una función de activación a la suma ponderada para producir la salida de la neurona.

Los pesos de conexión se inicializan típicamente de forma aleatoria al comienzo del entrenamiento, y luego se ajustan durante el proceso de aprendizaje. El objetivo del entrenamiento es encontrar los valores de los pesos que minimizan la diferencia entre las salidas deseadas y las salidas producidas por la red neuronal.

En resumen, los pesos de conexión son parámetros ajustables que determinan la influencia de las entradas en la salida de una neurona. Estos pesos se actualizan durante el entrenamiento para optimizar el rendimiento de la red neuronal en la tarea específica que se está abordando.
--------------------------------------------------------------------------------------

El programa te pedirá que introduzcas los valores de entrada. Después de ingresar los valores, mostrará los valores de salida calculados por la red neuronal.

---------------------------------------------------------------------
Este programa fue realizado y ejecutado en una plataforma linux.
En mi caso
Ubuntu 20.04.6 LTS.
Bajo consola.
Se ha utilizado el IDE:
Sublime Text.
*************************************************************
COMPILACIÓN:
gcc neurona.c -o neurona -lm

Como ves debes agregar la opción -lm al compilar el programa.
Esta opción indica al compilador que enlace la biblioteca
matemática durante la compilación.

EJECUCION:

./neurona

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



Imágen de perfil

TRACEROUTE.


C/Visual C

Publicado el 30 de Junio del 2023 por Hilario (145 códigos)
5.785 visualizaciones desde el 30 de Junio del 2023
//////////////////////////////////////////////////////////////////////////////////////
Ad praesens ova cras pullis sunt meliora.
***********************************************
HILARIO IGLESIAS MARTÍNEZ
*******************************************************************
traceroute.c
********************************************************************

Pretendemos en este ejemplo plantear la programación en ansi C, de un TRACEROUTE, lo más sencillo posible. Explicaremos concisamente, en que consiste un traceroute, utilidad habitual en las distros de linux, que se puede instalar con este comando, en mi caso utilizo UBUNTU, y utilizo este comando

sudo apt-get install traceroute

Por ejemplo, en Fedora se podría utilizar este, entre otros.
sudo yum install traceroute
********************************************************************

Un traceroute, también conocido como rastreo de ruta, es una herramienta de red que se utiliza para determinar la ruta que sigue un paquete de datos desde el origen hasta su destino en una red de computadoras. El traceroute muestra la secuencia de saltos o enrutadores a través de los cuales pasa el paquete para llegar a su destino.

Cuando se ejecuta un traceroute, se envían una serie de paquetes ICMP (Internet Control Message Protocol) con incrementos de TTL (Time-to-Live) sucesivos. El TTL especifica el número máximo de saltos que un paquete puede realizar antes de ser descartado. En cada salto, el paquete llega a un enrutador y, si el TTL no ha expirado, el enrutador lo reenvía al siguiente salto en la ruta hacia el destino. Si el TTL llega a cero, el enrutador descarta el paquete y envía un mensaje de error al origen.

Cuando un enrutador recibe un paquete con TTL cero, envía un mensaje de "Tiempo Excedido" (Time Exceeded) al origen. El mensaje de "Tiempo Excedido" incluye la dirección IP del enrutador que lo envió. Utilizando esta información, el traceroute puede construir una lista de direcciones IP de los enrutadores en la ruta hacia el destino.

Además de mostrar las direcciones IP de los enrutadores, el traceroute también proporciona información sobre el tiempo de ida y vuelta (round trip time) entre el origen y cada enrutador en la ruta. Esto permite detectar posibles problemas de latencia en la red.

El traceroute es una herramienta útil para diagnosticar problemas de conectividad en una red y comprender la ruta que sigue el tráfico de red. También se utiliza con fines de seguridad para detectar posibles puntos débiles en la ruta de red y para identificar posibles bloqueos o restricciones en los enrutadores o firewalls.

****************************************************************************
El programa ha sido realizado en
Ubuntu 20.04.6 LTS
IDE Sublime text.
************************************************************
CONPILACIÓN DEL PROGRAMA
gcc -Werror -o traceroute traceroute.c
EJECUCIÓN.
Uso: sudo./traceroute <dirección IP>
////////////////////////////////////////////////////////////////////////

Imágen de perfil

WHOIS


C/Visual C

Publicado el 23 de Junio del 2023 por Hilario (145 códigos)
5.635 visualizaciones desde el 23 de Junio del 2023

////////////////////////////////////////////////////////

INIMICUM QUAMVIS HUMLEM DOCTI EST METUERE.

***********************************************
Hilario Iglesias Martínez.
**************************************************
Realizado en una plataforma linux 20.04.6 LTS.
Con ANSI C.
Ejecutado en Consola Linux.

Editado.
IDE sublime txt.

Este ejercicio, programa en C, implementa una consulta WHOIS enviando una solicitud al servidor WHOIS de IANA (Internet Assigned Numbers Authority). El usuario debe ingresar el dominio que desea consultar, y el programa se conectará al servidor WHOIS y enviará la consulta correspondiente. Luego, mostrará la respuesta recibida del servidor WHOIS a través de la consola.

Es importante tener en cuenta que algunos servidores WHOIS pueden bloquear o limitar las solicitudes, por lo que es posible que no siempre se obtenga una respuesta para todos los dominios.
El ejercicio está hecho para poder probar con el en todas las opciones o cambios que se le quieran realizar.

En las diferentes distros de linux se puede ejecutar directamente el comando whois. En mi caso utilizo una plataforma Ubuntu 20.04.6 LTS, y una de las formas de instalarlo sería con los siguientes comandos según su orden.
sudo apt-get update
sudo apt-get install whois

Durante la instalación, se te solicitará ingresar tu contraseña de administrador (root). Escribe tu contraseña y presiona Enter. Ten en cuenta que al escribir la contraseña, no se mostrarán caracteres ni asteriscos en la terminal, pero sigue escribiendo y presiona Enter.

Después de ingresar la contraseña, el sistema descargará e instalará el paquete whois y sus dependencias.

**********************************************************************************************
COMPILAR Y EJECUTAR EL PROGRAMA.
-----------------------------------------------------------------------------------
Compilar.
gcc -Werror whois.c -o whois
Ejecutar.
./whois

************************************************************************************
Salida del programa con el comando Ctrl C
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Imágen de perfil

ESNIFFER.


C/Visual C

Publicado el 21 de Junio del 2023 por Hilario (145 códigos)
5.687 visualizaciones desde el 21 de Junio del 2023
Amare et sapere vix deo conceditur.
**********************************************************
Hilario Iglesias Martínez.
*********************************************************

Este programa realizado en lenguaje ANSI C, bajo consola en plataforma LINUX Ubuntu 20.04.6 LTS.
******************************************************************************************
Realiza el esnifado de paquetes de la red wifi, detectando previamente el dispositivo de red
y los datos básicos del paquete.

-También puedes saber tus dispositivos de red utilizando el comando bajo consola ifconfig-.

Detecta las características básicas del paquete, y reproduce por consola, la disposición
en exadecimal y en código ASCII.

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

Este programa utiliza la biblioteca libpcap para capturar paquetes de red en tiempo real.
Por lo tanto deberás tenerla instalada en el sistema.

Instala libpcap ejecutando el siguiente comando:
sudo apt install libpcap-dev
Una vez que la instalación se haya completado, puedes verificar que libpcap esté instalado correctamente ejecutando el siguiente comando:
pcap-config --version

--------------------------------------------------------
Conpilar el programa con este comando.
gcc -Werror programa.c -o programa -lpcap

Ejecutar el programa con este comando.
sudo ./programa

Como se ve hay que utilizar sudo para su ejecución
ya que es necesario tener privilegios de root
**********************************************