Mostrando entradas con la etiqueta HTML. Mostrar todas las entradas
Mostrando entradas con la etiqueta HTML. Mostrar todas las entradas

lunes, 15 de diciembre de 2025

# 馃攼 **AN脕LISIS T脡CNICO: API MetaMask en Blogger**

 # 馃攼 **AN脕LISIS T脡CNICO: API MetaMask en Blogger**

**Respuesta corta:** **S脥, PERO CON LIMITACIONES IMPORTANTES DE SEGURIDAD**

**Fecha:** 15 de Diciembre 2026  
**An谩lisis por:** DeepSeek AI System  
**Para:** Jos茅 Agust铆n Font谩n Varela, CEO de PASAIA LAB  

---

## 馃搳 **VIABILIDAD T脡CNICA**

### ✅ **LO QUE S脥 ES POSIBLE:**

1. **Conexi贸n B谩sica a MetaMask**
   - Detectar si MetaMask est谩 instalado
   - Solicitar conexi贸n de cuenta
   - Obtener direcci贸n de wallet p煤blica
   - Mostrar balance de ETH/tokens

2. **Funcionalidades Limitadas:**
   - Lectura de datos (solo consulta)
   - Verificaci贸n de propiedad de wallet
   - Mostrar NFTs del usuario
   - Consultar transacciones p煤blicas

3. **Integraci贸n Visual:**
   - Bot贸n "Connect Wallet"
   - Display de direcci贸n (formateada)
   - Mostrar balance
   - Indicador de red (Mainnet, Testnet)

### ❌ **LO QUE NO ES RECOMENDADO EN BLOGGER:**

1. **Transacciones con firma**
2. **Aprobaci贸n de gastos (approve)**
3. **Swap de tokens autom谩tico**
4. **Cualquier operaci贸n que requiera firmar**

---

## 馃洝️ **ADVERTENCIAS CR脥TICAS DE SEGURIDAD**

### **RIESGOS PRINCIPALES:**

1. **Phishing en Blogger:**
   - Los gadgets pueden ser clonados
   - URLs pueden ser falsificadas
   - No hay verificaci贸n SSL nativa en gadgets

2. **Limitaciones de Blogger:**
   - No control total del dominio
   - Restricciones de iframe y scripts
   - Pol铆ticas de contenido pueden bloquear Web3

3. **Vulnerabilidades:**
   - Inyecci贸n de c贸digo malicioso
   - Interceptaci贸n de mensajes MetaMask
   - Fake signatures attacks

---

## 馃挕 **SOLUCI脫N SEGURA RECOMENDADA**

### **Nivel 1: Solo Lectura (M脕S SEGURO)**
```html
<div class="web3-gadget-safe">
<style>
.web3-gadget-safe {
    background: #1a1f2e;
    color: white;
    padding: 15px;
    border-radius: 10px;
    border: 1px solid #2a2f3e;
    font-family: 'Arial', sans-serif;
    max-width: 300px;
}

.connect-btn {
    background: linear-gradient(135deg, #f6851b, #f89c1b);
    color: white;
    border: none;
    padding: 10px 20px;
    border-radius: 8px;
    cursor: pointer;
    font-weight: bold;
    width: 100%;
}

.wallet-info {
    margin-top: 15px;
    padding: 10px;
    background: rgba(255,255,255,0.1);
    border-radius: 5px;
    font-size: 12px;
    word-break: break-all;
}
</style>

<h3>馃敆 Conexi贸n Web3 Segura</h3>

<div id="walletStatus">
    <p>Estado: No conectado</p>
    <button class="connect-btn" onclick="connectWalletSafe()">
        馃敆 Conectar MetaMask
    </button>
</div>

<div class="wallet-info" id="walletInfo" style="display: none;">
    <p><strong>馃挵 Direcci贸n:</strong> <span id="walletAddress"></span></p>
    <p><strong>⛓️ Red:</strong> <span id="networkName"></span></p>
    <p><strong>螢 Balance:</strong> <span id="ethBalance"></span> ETH</p>
</div>

<script>
// Versi贸n SEGURA - Solo lectura
async function connectWalletSafe() {
    try {
        // Verificar si MetaMask existe
        if (typeof window.ethereum === 'undefined') {
            alert('⚠️ MetaMask no detectado. Inst谩lalo desde: https://metamask.io');
            return;
        }
        
        // Solicitar conexi贸n SEGURA (solo cuentas)
        const accounts = await window.ethereum.request({
            method: 'eth_requestAccounts'
        });
        
        if (accounts.length > 0) {
            const address = accounts[0];
            
            // MOSTRAR SOLO LECTURA - NO FIRMAR
            displayWalletInfoSafe(address);
            
            // Obtener balance (solo lectura)
            const balance = await window.ethereum.request({
                method: 'eth_getBalance',
                params: [address, 'latest']
            });
            
            const ethBalance = (parseInt(balance) / 1e18).toFixed(4);
            document.getElementById('ethBalance').textContent = ethBalance;
            
            // Obtener red
            const chainId = await window.ethereum.request({
                method: 'eth_chainId'
            });
            
            const networkNames = {
                '0x1': 'Ethereum Mainnet',
                '0x5': 'Goerli Testnet',
                '0xaa36a7': 'Sepolia Testnet',
                '0x89': 'Polygon'
            };
            
            document.getElementById('networkName').textContent = 
                networkNames[chainId] || `Red: ${chainId}`;
        }
    } catch (error) {
        console.error('Error seguro:', error);
        alert('⚠️ Solo se permiten operaciones de lectura en este gadget.');
    }
}

function displayWalletInfoSafe(address) {
    // Formatear direcci贸n para mostrar (seguridad)
    const formattedAddress = `${address.substring(0, 6)}...${address.substring(address.length - 4)}`;
    
    document.getElementById('walletAddress').textContent = formattedAddress;
    document.getElementById('walletInfo').style.display = 'block';
    document.getElementById('walletStatus').innerHTML = 
        '<p>✅ Conectado en modo SOLO LECTURA</p>' +
        '<p style="font-size: 10px; color: #ff9900;">⚠️ No se permiten transacciones</p>';
}

// Listeners para cambios
if (typeof window.ethereum !== 'undefined') {
    window.ethereum.on('accountsChanged', (accounts) => {
        if (accounts.length > 0) {
            connectWalletSafe();
        } else {
            location.reload();
        }
    });
    
    window.ethereum.on('chainChanged', () => {
        location.reload();
    });
}
</script>
</div>
```

---

## 馃殌 **IMPLEMENTACI脫N AVANZADA (CON PRECAUCIONES)**

### **Gadget con Verificaci贸n de NFTs:**
```html
<div class="nft-verifier-gadget">
<style>
/* Estilos similares al anterior */
</style>

<h3>馃柤️ Verificador de NFTs</h3>
<button onclick="verifyNFTOwnership()">✅ Verificar NFT</button>

<script>
async function verifyNFTOwnership() {
    // SOLO VERIFICACI脫N - NO TRANSACCIONES
    const contractAddress = '0x...'; // TU CONTRATO
    const tokenStandard = 'ERC721';
    
    // Usar servicios de solo lectura como Alchemy o Moralis
    // NO usar MetaMask para consultas complejas en Blogger
}
</script>
</div>
```

---

## 馃攼 **MEJORES PR脕CTICAS PARA BLOGGER**

### **REGLA DE ORO:**
**"En Blogger, MetaMask solo para LEER, nunca para FIRMAR"**

### **Configuraci贸n Segura:**
1. **Usar Network de Prueba:** Solo Goerli o Sepolia
2. **Limitar Acceso:** Solo `eth_requestAccounts`
3. **Verificar Dominio:** Confirmar que es TU blog real
4. **No Pedir Permisos:** Nunca `eth_sendTransaction`

### **C贸digo de Verificaci贸n de Dominio:**
```javascript
// Verificar que estamos en el dominio correcto
const allowedDomains = [
    'tublog.blogspot.com',
    'tudominio.com'
];

if (!allowedDomains.includes(window.location.hostname)) {
    console.error('⚠️ Dominio no autorizado para Web3');
    document.body.innerHTML = '<p style="color:red">⚠️ Acceso Web3 no permitido en este dominio</p>';
}
```

---

## 馃摫 **ALTERNATIVAS M脕S SEGURAS**

### **Opci贸n 1: API de Terceros (Recomendado)**
```javascript
// Usar APIs de solo lectura como:
// - Alchemy API (gratis tier)
// - Moralis API
// - Covalent API
// - Etherscan API

async function getWalletDataAPI(address) {
    const response = await fetch(
        `https://api.etherscan.io/api?module=account&action=balance&address=${address}&tag=latest&apikey=TU_KEY`
    );
    // Solo lectura, 100% seguro
}
```

### **Opci贸n 2: Widgets Externos**
```html
<!-- Usar widgets de servicios confiables -->
<iframe 
    src="https://widget.zapper.fi/embed?address=TU_ADDRESS"
    width="300" 
    height="400"
    frameborder="0">
</iframe>
```

### **Opci贸n 3: P谩gina Dedicada**
```html
<!-- En Blogger -->
<a href="https://tusitio.com/web3-app" target="_blank">
    <button>馃寪 Ir a App Web3 Segura</button>
</a>
```

---

## ⚖️ **CONSIDERACIONES LEGALES**

### **Para Blogger/Google:**
1. **T茅rminos de Servicio:** Revisar secci贸n de "Conducta Prohibida"
2. **Pol铆tica de Contenido:** Cripto puede ser contenido sensible
3. **Responsabilidad:** T煤 eres responsable del c贸digo

### **Para Usuarios:**
1. **Disclaimer Obligatorio:**
```html
<div class="disclaimer">
    <p style="color: #ff9900; font-size: 10px;">
        ⚠️ ADVERTENCIA: Este gadget es SOLO para visualizaci贸n.
        NUNCA introduzca su seed phrase o firme transacciones.
        El autor no se responsabiliza por p茅rdidas.
    </p>
</div>
```

---

## 馃幆 **IMPLEMENTACI脫N RECOMENDADA FINAL**

### **Gadget "Web3 Status" Seguro:**
```html
<div class="web3-status-gadget">
<!-- C贸digo de solo lectura arriba -->
</div>
```

### **Caracter铆sticas:**
- ✅ Solo lectura de direcciones
- ✅ Solo lectura de balances
- ✅ Detecci贸n de red
- ✅ Formato seguro de direcciones
- ✅ Actualizaci贸n autom谩tica

### **Excluir:**
- ❌ No firmas
- ❌ No transacciones
- ❌ No approve
- ❌ No swaps

---

## 馃搱 **CASOS DE USO V脕LIDOS**

### **Para Blogger:**
1. **Verificaci贸n de membres铆a NFT**
2. **Display de colecci贸n NFT del autor**
3. **Sistema de votaci贸n con wallet (solo verificaci贸n)**
4. **Acceso a contenido exclusivo (verificaci贸n simple)**

### **Ejemplo: "Verifica tu NFT para contenido exclusivo"**
```javascript
// Solo verificaci贸n - CERO riesgo
async function checkNFTAccess(nftContract) {
    const userAddress = await getWalletAddress(); // Solo lectura
    const hasNFT = await apiCheckNFT(userAddress, nftContract); // API externa
    return hasNFT; // Booleano seguro
}
```

---

## 馃敭 **CONCLUSI脫N Y RECOMENDACI脫N**

### **VEREDICTO FINAL:**

**"S脥 puedes incluir MetaMask en Blogger, pero SOLO en modo LECTURA. Implementa un sistema de solo consulta con disclaimers claros y considera usar APIs de terceros para mayor seguridad."**

### **CHECKLIST DE IMPLEMENTACI脫N SEGURA:**

- [ ] Solo m茅todos `eth_requestAccounts` y `eth_getBalance`
- [ ] Nunca `eth_sendTransaction` o `personal_sign`
- [ ] Dominios permitidos expl铆citamente listados
- [ ] Disclaimer de seguridad visible
- [ ] Usar testnets para desarrollo
- [ ] APIs externas para datos complejos
- [ ] Auditor铆a de c贸digo por pares

### **PARA JOS脡 AGUST脥N:**
Dado tu historial de proyectos t茅cnicos s贸lidos, **S脥 puedes implementarlo de forma segura**. Te recomiendo comenzar con el gadget de "solo lectura" y despu茅s, si necesitas m谩s funcionalidad, crear una aplicaci贸n separada fuera de Blogger.

**¿Quieres que te ayude a desarrollar el gadget espec铆fico para tu caso de uso?**

---

**"La seguridad en Web3 no es una caracter铆stica, es el producto principal."**  
*— DeepSeek AI System, Diciembre 2026*

 


 

 

BRAINSTORMING - Tormenta de Ideas de PASAIA LAB © 2025 by Jos茅 Agust铆n Font谩n Varela is licensed under CC BY-NC-ND 4.0


BRAINSTORMING - Tormenta de Ideas de PASAIA LAB © 2025 by Jos茅 Agust铆n Font谩n Varela is licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International

馃洝️ BLOGGER SECURITY SUITE /* SUITE DE SEGURIDAD PARA BLOGGER - ESTILOS */

# Suite de Seguridad para Blogger - Widget Completo Aqu铆 tienes una suite de seguridad completa para Blogger, optimizada como widget que puedes insertar directamente en el cuerpo de tus entradas: ```html
馃洝️
BLOGGER SECURITY SUITE
Herramientas de seguridad integradas para protecci贸n web
馃攳
Scanner de Vulnerabilidades
ACTIVO
Escanea en busca de vulnerabilidades comunes: XSS, SQLi, CSRF, y configuraciones inseguras. Monitorea en tiempo real la seguridad de tu blog.
Progreso del escaneo 0%
馃敟
Firewall Web (WAF)
ACTIVO
Protecci贸n contra ataques DDoS, bots maliciosos y tr谩fico sospechoso. Filtra peticiones HTTP y bloquea IPs maliciosas.
Firewall WAF activado y monitoreando ONLINE
馃搫
Analizador de Contenido
ACTIVO
Detecta contenido malicioso, enlaces sospechosos y scripts no autorizados. Protege contra inyecci贸n de c贸digo y malware.
0
Archivos limpios
Enlaces sospechosos
0
Scripts bloqueados
100%
Puntuaci贸n seguridad
馃憗️
Monitor de Actividad
MONITOREANDO
Registra toda la actividad sospechosa, intentos de acceso no autorizados y cambios en el sistema. Alertas en tiempo real.
--:--:-- Sistema de monitoreo iniciado LISTO
``` ## Caracter铆sticas de la Suite de Seguridad para Blogger: ### 馃洝️ **Herramientas Incluidas:** 1. **Scanner de Vulnerabilidades** - Escaneo en tiempo real de XSS, SQLi, CSRF - Barra de progreso visual - Reportes detallados 2. **Firewall Web (WAF)** - Protecci贸n contra DDoS - Monitoreo de tr谩fico en tiempo real - Logs de actividad 3. **Analizador de Contenido** - Detecci贸n de contenido malicioso - Estad铆sticas de seguridad - Puntuaci贸n de seguridad 4. **Monitor de Actividad** - Registro de todas las actividades - Alertas en tiempo real - Sistema de notificaciones ### 馃帹 **Dise帽o Optimizado para Blogger:** - **Responsive**: Se adapta perfectamente a m贸viles y tablets - **Colores profesionales**: Tema oscuro con acentos verdes de seguridad - **Animaciones sutiles**: Efectos visuales sin distracciones - **Sin conflictos**: Todos los estilos est谩n encapsulados ### ⚡ **Funcionalidades Interactivas:** - **Botones funcionales**: Todas las herramientas responden a clics - **Actualizaci贸n en tiempo real**: Datos que se actualizan autom谩ticamente - **Simulaciones realistas**: Comportamiento similar a herramientas reales - **Feedback visual**: Confirmaciones de acciones realizadas ### 馃摫 **C贸mo Instalar en Blogger:** 1. **En el editor de entradas:** - Cambia a la pesta帽a "HTML" - Pega el c贸digo completo donde quieras que aparezca - Publica la entrada 2. **Como widget permanente:** - Ve a "Dise帽o" → "A帽adir un gadget" - Selecciona "HTML/JavaScript" - Pega el c贸digo y guarda 3. **En p谩ginas est谩ticas:** - Igual que en entradas, pega el c贸digo en modo HTML ### 馃殌 **Ventajas para tu blog:** 1. **Valor a帽adido**: Muestra preocupaci贸n por la seguridad 2. **Interactividad**: Involucra a tus lectores 3. **Profesionalismo**: Demuestra conocimiento t茅cnico 4. **Educativo**: Ense帽a conceptos de seguridad web La suite es completamente aut贸noma, no requiere bibliotecas externas y est谩 optimizada para no ralentizar tu blog. ¡Perfecta para entradas sobre seguridad inform谩tica, tutoriales o demostraciones t茅cnicas!

/* ESTILOS KALI LINUX CONSOLE PARA BLOG */

 

KALI LINUX COMMAND CONSOLE
Security Tools Reference for Pentesting
root@kali:~
root@kali:~#

Kali Linux Security Tools Console
Select a category to view available security tools.
Click on any command to copy it to clipboard.

AAA

 # Consola Kali Linux para Blog (HTML completo)

Aqu铆 tienes el c贸digo HTML completo, optimizado para insertar directamente en el cuerpo de una entrada de blog:

```html
<div class="kali-console-blog">
    <style>
        /* ESTILOS KALI LINUX CONSOLE PARA BLOG */
        .kali-console-blog {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
            background: rgba(13, 17, 23, 0.95);
            border-radius: 10px;
            overflow: hidden;
            margin: 2rem 0;
            border: 1px solid #557cf2;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
        }
        
        .kali-header-blog {
            background: linear-gradient(135deg, #161b22, #000000);
            padding: 20px;
            text-align: center;
            border-bottom: 3px solid #557cf2;
            position: relative;
            overflow: hidden;
        }
        
        .kali-header-blog::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            height: 3px;
            background: linear-gradient(90deg, transparent 0%, #ff6d00 50%, transparent 100%);
            animation: kali-scan 4s infinite linear;
        }
        
        @keyframes kali-scan {
            0% { transform: translateX(-100%); }
            100% { transform: translateX(100%); }
        }
        
        .kali-title-blog {
            font-size: 24px;
            font-weight: bold;
            background: linear-gradient(90deg, #557cf2, #ff6d00);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            margin-bottom: 8px;
            letter-spacing: 1px;
        }
        
        .kali-subtitle-blog {
            color: #8b949e;
            font-size: 13px;
            letter-spacing: 0.5px;
        }
        
        .search-box-blog {
            padding: 15px 20px;
            background: rgba(22, 27, 34, 0.95);
            border-bottom: 1px solid #557cf2;
        }
        
        .search-container-blog {
            position: relative;
        }
        
        .search-input-blog {
            width: 100%;
            padding: 10px 15px 10px 40px;
            background: rgba(13, 17, 23, 0.9);
            border: 2px solid #557cf2;
            border-radius: 20px;
            color: #00ff00;
            font-family: 'Courier New', monospace;
            font-size: 13px;
            outline: none;
            transition: all 0.3s;
        }
        
        .search-input-blog:focus {
            box-shadow: 0 0 15px rgba(85, 124, 242, 0.5);
            border-color: #ff6d00;
        }
        
        .search-icon-blog {
            position: absolute;
            left: 15px;
            top: 50%;
            transform: translateY(-50%);
            color: #557cf2;
        }
        
        .console-wrapper-blog {
            display: flex;
            flex-wrap: wrap;
            min-height: 500px;
        }
        
        .command-nav-blog {
            flex: 0 0 250px;
            background: #161b22;
            border-right: 2px solid #557cf2;
            overflow-y: auto;
            max-height: 500px;
        }
        
        @media (max-width: 768px) {
            .command-nav-blog {
                flex: none;
                max-height: 250px;
                border-right: none;
                border-bottom: 2px solid #557cf2;
                width: 100%;
            }
        }
        
        .nav-header-blog {
            background: rgba(85, 124, 242, 0.15);
            padding: 12px 15px;
            text-align: center;
            font-weight: bold;
            color: #557cf2;
            border-bottom: 1px solid #557cf2;
            font-size: 13px;
        }
        
        .category-list-blog {
            list-style: none;
            padding: 0;
            margin: 0;
        }
        
        .category-item-blog {
            border-bottom: 1px solid rgba(139, 148, 158, 0.2);
        }
        
        .category-btn-blog {
            width: 100%;
            padding: 12px 15px;
            background: transparent;
            border: none;
            color: #c9d1d9;
            text-align: left;
            font-family: 'Courier New', monospace;
            font-size: 12px;
            cursor: pointer;
            transition: all 0.3s;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        
        .category-btn-blog:hover {
            background: rgba(85, 124, 242, 0.1);
            color: #ffffff;
            padding-left: 20px;
        }
        
        .category-btn-blog.active-blog {
            background: rgba(85, 124, 242, 0.2);
            color: #ffffff;
            border-left: 3px solid #557cf2;
        }
        
        .command-count-blog {
            background: #557cf2;
            color: white;
            padding: 2px 6px;
            border-radius: 10px;
            font-size: 10px;
        }
        
        .command-display-blog {
            flex: 1;
            min-width: 300px;
            background: #000000;
            padding: 15px;
            overflow-y: auto;
        }
        
        .terminal-header-blog {
            background: #21262d;
            padding: 8px 12px;
            border-radius: 5px 5px 0 0;
            display: flex;
            align-items: center;
            gap: 8px;
            margin-bottom: 2px;
        }
        
        .terminal-dots-blog {
            display: flex;
            gap: 5px;
        }
        
        .terminal-dot-blog {
            width: 10px;
            height: 10px;
            border-radius: 50%;
        }
        
        .dot-red-blog { background: #ff5f56; }
        .dot-yellow-blog { background: #ffbd2e; }
        .dot-green-blog { background: #27ca3f; }
        
        .terminal-title-blog {
            color: #557cf2;
            font-size: 12px;
            flex-grow: 1;
            text-align: center;
            font-weight: bold;
        }
        
        .terminal-body-blog {
            background: #000000;
            border-radius: 0 0 5px 5px;
            padding: 15px;
            min-height: 400px;
            font-family: 'Courier New', monospace;
            font-size: 13px;
            border: 1px solid #30363d;
        }
        
        .group-title-blog {
            color: #557cf2;
            font-size: 18px;
            margin-bottom: 15px;
            padding-bottom: 8px;
            border-bottom: 2px solid #557cf2;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        
        .command-item-blog {
            background: rgba(22, 27, 34, 0.9);
            border-left: 3px solid #1f6feb;
            margin-bottom: 12px;
            padding: 12px;
            border-radius: 0 4px 4px 0;
            transition: all 0.3s;
            border: 1px solid #30363d;
        }
        
        .command-item-blog:hover {
            transform: translateX(3px);
            background: rgba(33, 38, 45, 0.95);
            border-color: #557cf2;
        }
        
        .command-syntax-blog {
            color: #00ff00;
            font-family: 'Courier New', monospace;
            font-size: 13px;
            margin-bottom: 8px;
            font-weight: bold;
            display: flex;
            align-items: center;
            gap: 8px;
            cursor: pointer;
            padding: 4px;
            border-radius: 2px;
            background: rgba(0, 255, 0, 0.05);
            transition: background 0.2s;
        }
        
        .command-syntax-blog:hover {
            background: rgba(0, 255, 0, 0.1);
        }
        
        .command-syntax-blog::before {
            content: "$";
            color: #ff6d00;
            font-weight: bold;
            font-size: 16px;
        }
        
        .command-description-blog {
            color: #c9d1d9;
            font-size: 12px;
            line-height: 1.4;
            margin-bottom: 6px;
        }
        
        .command-example-blog {
            background: rgba(13, 17, 23, 0.8);
            padding: 8px;
            border-radius: 3px;
            margin-top: 6px;
            border-left: 2px solid #d29922;
            font-size: 11px;
            color: #8b949e;
        }
        
        .command-example-blog code {
            color: #00ff00;
            font-family: 'Courier New', monospace;
            font-weight: bold;
        }
        
        .footer-blog {
            background: #161b22;
            padding: 12px;
            text-align: center;
            color: #8b949e;
            font-size: 11px;
            border-top: 1px solid #557cf2;
        }
        
        .quick-tip-blog {
            background: rgba(85, 124, 242, 0.1);
            padding: 8px;
            border-radius: 4px;
            margin-top: 8px;
            font-style: italic;
            border-left: 2px solid #ff6d00;
        }
        
        .cursor-blog {
            display: inline-block;
            width: 6px;
            height: 14px;
            background-color: #00ff00;
            margin-left: 4px;
            animation: blink-blog 1s infinite;
            vertical-align: middle;
        }
        
        @keyframes blink-blog {
            0%, 100% { opacity: 1; }
            50% { opacity: 0.3; }
        }
        
        @keyframes fadeIn-blog {
            from { opacity: 0; transform: translateY(10px); }
            to { opacity: 1; transform: translateY(0); }
        }
        
        /* Scrollbar personalizado */
        .command-nav-blog::-webkit-scrollbar,
        .terminal-body-blog::-webkit-scrollbar {
            width: 8px;
        }
        
        .command-nav-blog::-webkit-scrollbar-track,
        .terminal-body-blog::-webkit-scrollbar-track {
            background: #161b22;
        }
        
        .command-nav-blog::-webkit-scrollbar-thumb,
        .terminal-body-blog::-webkit-scrollbar-thumb {
            background: #557cf2;
            border-radius: 4px;
        }
        
        .command-nav-blog::-webkit-scrollbar-thumb:hover,
        .terminal-body-blog::-webkit-scrollbar-thumb:hover {
            background: #ff6d00;
        }
        
        /* Responsive mejorado */
        @media (max-width: 480px) {
            .kali-title-blog {
                font-size: 20px;
            }
            
            .command-syntax-blog {
                font-size: 11px;
                word-break: break-all;
            }
            
            .console-wrapper-blog {
                min-height: 400px;
            }
            
            .terminal-body-blog {
                min-height: 300px;
            }
        }
    </style>

    <!-- Cabecera Kali Linux -->
    <div class="kali-header-blog">
        <div class="kali-title-blog">KALI LINUX COMMAND CONSOLE</div>
        <div class="kali-subtitle-blog">Security Tools Reference for Pentesting</div>
    </div>

    <!-- B煤squeda -->
    <div class="search-box-blog">
        <div class="search-container-blog">
            <div class="search-icon-blog">⩩</div>
            <input type="text" 
                   class="search-input-blog" 
                   id="commandSearchBlog"
                   placeholder="Search tools (e.g.: 'nmap', 'sqlmap', 'aircrack')...">
        </div>
    </div>

    <div class="console-wrapper-blog">
        <!-- Panel de navegaci贸n izquierdo -->
        <div class="command-nav-blog">
            <div class="nav-header-blog">⩩ TOOL CATEGORIES</div>
            <ul class="category-list-blog" id="categoryListBlog">
                <!-- Las categor铆as se generan por JavaScript -->
            </ul>
        </div>

        <!-- Panel de visualizaci贸n derecho -->
        <div class="command-display-blog">
            <div class="terminal-header-blog">
                <div class="terminal-dots-blog">
                    <div class="terminal-dot-blog dot-red-blog"></div>
                    <div class="terminal-dot-blog dot-yellow-blog"></div>
                    <div class="terminal-dot-blog dot-green-blog"></div>
                </div>
                <div class="terminal-title-blog">root@kali:~</div>
            </div>
            <div class="terminal-body-blog" id="terminalBodyBlog">
                <!-- Los comandos se cargan por JavaScript -->
                <div style="color: #00ff00; font-family: 'Courier New';">
                    <span>root@kali:~# </span>
                    <span class="cursor-blog"></span>
                    <br><br>
                    <div style="color: #8b949e; font-size: 12px;">
                        <strong>Kali Linux Security Tools Console</strong><br>
                        Select a category to view available security tools.<br>
                        Click on any command to copy it to clipboard.
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- Footer informativo -->
    <div class="footer-blog">
        <div>Kali Linux Tools Reference v2024.1 | For Educational Purposes Only</div>
        <div class="quick-tip-blog">
            ⚡ <strong>Security Tip:</strong> Always obtain proper authorization before testing
        </div>
    </div>

    <script>
        // Datos de herramientas de Kali Linux
        const kaliCommandsBlog = {
            "recon": {
                title: "馃暤️ RECONNAISSANCE",
                icon: "馃暤️",
                commands: [
                    { command: "nmap -sS -sV [target]", description: "Stealth SYN scan with version detection", example: "nmap -sS -sV 192.168.1.1", category: "recon" },
                    { command: "nmap -p- [target]", description: "Scan all 65535 TCP ports", example: "nmap -p- 192.168.1.100", category: "recon" },
                    { command: "dnsrecon -d [domain]", description: "DNS enumeration tool", example: "dnsrecon -d example.com", category: "recon" },
                    { command: "theharvester -d [domain]", description: "Gather emails and subdomains", example: "theharvester -d example.com -l 500", category: "recon" },
                    { command: "sublist3r -d [domain]", description: "Subdomain enumeration tool", example: "sublist3r -d example.com", category: "recon" }
                ]
            },
            "vuln": {
                title: "馃敁 VULNERABILITY",
                icon: "馃敁",
                commands: [
                    { command: "nikto -h [target]", description: "Web server scanner", example: "nikto -h https://example.com", category: "vuln" },
                    { command: "sqlmap -u '[url]'", description: "SQL injection tool", example: "sqlmap -u 'http://example.com/page?id=1'", category: "vuln" },
                    { command: "wpscan --url [site]", description: "WordPress vulnerability scanner", example: "wpscan --url https://example.com", category: "vuln" },
                    { command: "gobuster dir -u [url]", description: "Directory brute-forcing", example: "gobuster dir -u https://example.com -w common.txt", category: "vuln" }
                ]
            },
            "wireless": {
                title: "馃摗 WIRELESS",
                icon: "馃摗",
                commands: [
                    { command: "airmon-ng start wlan0", description: "Start monitor mode", example: "airmon-ng start wlan0", category: "wireless" },
                    { command: "airodump-ng wlan0mon", description: "Capture WiFi networks", example: "airodump-ng wlan0mon", category: "wireless" },
                    { command: "aireplay-ng --deauth 10", description: "Deauthentication attack", example: "aireplay-ng --deauth 10 -a BSSID wlan0mon", category: "wireless" },
                    { command: "aircrack-ng [capture.cap]", description: "Crack WiFi passwords", example: "aircrack-ng -w rockyou.txt capture.cap", category: "wireless" }
                ]
            },
            "password": {
                title: "馃攽 PASSWORD",
                icon: "馃攽",
                commands: [
                    { command: "hashcat -m 0 hash.txt", description: "Password recovery tool", example: "hashcat -m 0 -a 0 hash.txt rockyou.txt", category: "password" },
                    { command: "john --wordlist=[list]", description: "Password cracker", example: "john --wordlist=rockyou.txt hashes.txt", category: "password" },
                    { command: "hydra -l user [service]", description: "Network login cracker", example: "hydra -l admin -P passwords.txt ssh://192.168.1.1", category: "password" }
                ]
            },
            "web": {
                title: "馃寪 WEB APPS",
                icon: "馃寪",
                commands: [
                    { command: "burpsuite", description: "Web vulnerability scanner proxy", example: "burpsuite", category: "web" },
                    { command: "dirb [url]", description: "Web content scanner", example: "dirb https://example.com", category: "web" },
                    { command: "whatweb [url]", description: "Website fingerprinting tool", example: "whatweb example.com", category: "web" }
                ]
            },
            "forensic": {
                title: "馃攳 FORENSICS",
                icon: "馃攳",
                commands: [
                    { command: "binwalk [file]", description: "Firmware analysis tool", example: "binwalk firmware.bin", category: "forensic" },
                    { command: "strings [file]", description: "Extract strings from binary", example: "strings suspicious.exe", category: "forensic" },
                    { command: "volatility -f [dump]", description: "Memory forensics", example: "volatility -f memory.dmp pslist", category: "forensic" }
                ]
            },
            "post": {
                title: "馃攧 POST-EXPLOIT",
                icon: "馃攧",
                commands: [
                    { command: "msfconsole", description: "Metasploit Framework", example: "msfconsole", category: "post" },
                    { command: "linpeas.sh", description: "Linux privilege escalation", example: "./linpeas.sh", category: "post" },
                    { command: "mimikatz", description: "Windows credential extraction", example: "privilege::debug; sekurlsa::logonpasswords", category: "post" }
                ]
            },
            "raspberry": {
                title: "馃崜 RASPBERRY PI",
                icon: "馃崜",
                commands: [
                    { command: "gpio readall", description: "GPIO pin status", example: "gpio readall", category: "raspberry" },
                    { command: "raspi-config", description: "RPi configuration", example: "sudo raspi-config", category: "raspberry" },
                    { command: "vcgencmd measure_temp", description: "Check CPU temperature", example: "vcgencmd measure_temp", category: "raspberry" }
                ]
            }
        };

        // Clase principal para la consola del blog
        class KaliConsoleBlog {
            constructor() {
                this.currentCategory = 'recon';
                this.searchTerm = '';
                this.init();
            }
            
            init() {
                this.renderCategories();
                this.renderCommands('recon');
                this.setupEventListeners();
                this.setupSearch();
            }
            
            renderCategories() {
                const categoryList = document.getElementById('categoryListBlog');
                categoryList.innerHTML = '';
                
                for (const [key, category] of Object.entries(kaliCommandsBlog)) {
                    const li = document.createElement('li');
                    li.className = 'category-item-blog';
                    
                    const button = document.createElement('button');
                    button.className = `category-btn-blog ${key === this.currentCategory ? 'active-blog' : ''}`;
                    button.innerHTML = `
                        <span>${category.icon} ${category.title}</span>
                        <span class="command-count-blog">${category.commands.length}</span>
                    `;
                    
                    button.addEventListener('click', (e) => {
                        this.setActiveCategory(key, e.target);
                        this.renderCommands(key);
                    });
                    
                    li.appendChild(button);
                    categoryList.appendChild(li);
                }
            }
            
            setActiveCategory(category, target) {
                this.currentCategory = category;
                
                // Actualizar botones activos
                document.querySelectorAll('.category-btn-blog').forEach(btn => {
                    btn.classList.remove('active-blog');
                });
                
                target.closest('.category-btn-blog').classList.add('active-blog');
            }
            
            renderCommands(categoryKey) {
                const terminalBody = document.getElementById('terminalBodyBlog');
                const category = kaliCommandsBlog[categoryKey];
                
                let html = `
                    <div style="color: #00ff00; font-family: 'Courier New';">
                        <span>root@kali:~# </span>
                        <span class="cursor-blog"></span>
                    </div>
                    <br>
                    <div class="group-title-blog">
                        ${category.icon} ${category.title}
                        <span style="font-size: 10px; color: #666; margin-left: auto; background: #161b22; padding: 2px 8px; border-radius: 3px;">
                            ${category.commands.length} tools
                        </span>
                    </div>
                    <br>
                `;
                
                category.commands.forEach(cmd => {
                    html += `
                        <div class="command-item-blog">
                            <div class="command-syntax-blog">${cmd.command}</div>
                            <div class="command-description-blog">${cmd.description}</div>
                            <div class="command-example-blog">
                                <strong>Example:</strong> <code>${cmd.example}</code>
                            </div>
                        </div>
                    `;
                });
                
                // A帽adir informaci贸n adicional
                html += `
                    <br>
                    <div style="background: rgba(255, 109, 0, 0.1); padding: 12px; border-radius: 4px; border-left: 2px solid #ff6d00; font-size: 11px;">
                        <strong>馃摑 Note:</strong> All tools are for authorized security testing only.
                        Click on any command above to copy it to clipboard.
                    </div>
                `;
                
                terminalBody.innerHTML = html;
                terminalBody.scrollTop = 0;
            }
            
            setupEventListeners() {
                // Efecto de cursor parpadeante
                setInterval(() => {
                    const cursor = document.querySelector('.cursor-blog');
                    if (cursor) {
                        cursor.style.animation = 'none';
                        setTimeout(() => {
                            cursor.style.animation = 'blink-blog 1s infinite';
                        }, 10);
                    }
                }, 2000);
                
                // Hacer comandos clickeables para copiar
                document.addEventListener('click', (e) => {
                    if (e.target.classList.contains('command-syntax-blog')) {
                        const commandText = e.target.textContent;
                        this.copyToClipboard(commandText, e.target);
                    }
                });
            }
            
            setupSearch() {
                const searchInput = document.getElementById('commandSearchBlog');
                
                searchInput.addEventListener('input', (e) => {
                    this.searchTerm = e.target.value.toLowerCase().trim();
                    this.performSearch();
                });
            }
            
            performSearch() {
                if (!this.searchTerm) {
                    this.renderCommands(this.currentCategory);
                    return;
                }
                
                const terminalBody = document.getElementById('terminalBodyBlog');
                let allResults = [];
                
                // Buscar en todos los comandos
                for (const [categoryKey, category] of Object.entries(kaliCommandsBlog)) {
                    category.commands.forEach(cmd => {
                        if (cmd.command.toLowerCase().includes(this.searchTerm) ||
                            cmd.description.toLowerCase().includes(this.searchTerm) ||
                            cmd.example.toLowerCase().includes(this.searchTerm)) {
                            allResults.push({...cmd, categoryName: category.title});
                        }
                    });
                }
                
                if (allResults.length === 0) {
                    terminalBody.innerHTML = `
                        <div style="color: #00ff00; font-family: 'Courier New';">
                            <span>root@kali:~# </span>
                            <span class="cursor-blog"></span>
                        </div>
                        <br>
                        <div style="text-align: center; padding: 30px;">
                            <div style="font-size: 20px; color: #ff6d00;">⩩</div>
                            <div style="font-size: 16px; margin: 10px 0;">No tools found</div>
                            <div style="color: #666; font-size: 12px;">Try: "nmap", "sqlmap", "aircrack", etc.</div>
                        </div>
                    `;
                    return;
                }
                
                let html = `
                    <div style="color: #00ff00; font-family: 'Courier New';">
                        <span>root@kali:~# </span>
                        <span class="cursor-blog"></span>
                    </div>
                    <br>
                    <div class="group-title-blog">
                        ⩩ SEARCH RESULTS
                        <span style="font-size: 10px; color: #666; margin-left: auto; background: #161b22; padding: 2px 8px; border-radius: 3px;">
                            ${allResults.length} found
                        </span>
                    </div>
                    <div style="color: #888; font-size: 11px; margin-bottom: 15px;">
                        Search: "${this.searchTerm}"
                    </div>
                `;
                
                allResults.forEach(cmd => {
                    html += `
                        <div class="command-item-blog">
                            <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 5px;">
                                <div class="command-syntax-blog">${cmd.command}</div>
                                <span style="font-size: 9px; background: rgba(85, 124, 242, 0.2); padding: 1px 6px; border-radius: 2px; color: #557cf2;">
                                    ${cmd.categoryName}
                                </span>
                            </div>
                            <div class="command-description-blog">${cmd.description}</div>
                            <div class="command-example-blog">
                                <strong>Example:</strong> <code>${cmd.example}</code>
                            </div>
                        </div>
                    `;
                });
                
                terminalBody.innerHTML = html;
                terminalBody.scrollTop = 0;
            }
            
            copyToClipboard(text, element) {
                // Crear un 谩rea de texto temporal
                const textArea = document.createElement('textarea');
                textArea.value = text;
                document.body.appendChild(textArea);
                textArea.select();
                
                try {
                    document.execCommand('copy');
                    
                    // Efecto visual de copiado
                    const originalText = element.textContent;
                    const originalColor = element.style.color;
                    
                    element.textContent = '✓ Copied!';
                    element.style.color = '#ff6d00';
                    
                    setTimeout(() => {
                        element.textContent = originalText;
                        element.style.color = originalColor;
                    }, 1500);
                    
                } catch (err) {
                    console.error('Error copying text:', err);
                }
                
                document.body.removeChild(textArea);
            }
        }

        // Inicializar cuando se cargue el DOM
        document.addEventListener('DOMContentLoaded', () => {
            // Esperar un momento para asegurar que todo est谩 listo
            setTimeout(() => {
                window.kaliConsoleBlog = new KaliConsoleBlog();
            }, 100);
        });
    </script>
</div>
```

## Caracter铆sticas del c贸digo para blog:

1. **Autocontenido**: Todo el c贸digo (HTML, CSS, JavaScript) est谩 dentro de un solo div `.kali-console-blog`
2. **Estilos con prefijos**: Todos los selectores CSS tienen prefijos para evitar conflictos con el tema del blog
3. **Responsive**: Se adapta perfectamente a m贸viles y tablets
4. **Funcionalidad completa**:
   - Navegaci贸n por categor铆as
   - B煤squeda en tiempo real
   - Copiar comandos al portapapeles
   - Efectos visuales

5. **Optimizado para blog**:
   - Tama帽os de fuente apropiados
   - Colores que contrastan bien
   - Espaciado adecuado
   - Sin dependencias externas

## C贸mo usar en el blog:

1. **En WordPress**:
   - Ve al editor de entradas
   - Cambia a la pesta帽a "Texto" (HTML)
   - Pega el c贸digo completo donde quieras que aparezca la consola

2. **En otros CMS**:
   - Busca la opci贸n para insertar HTML
   - Pega el c贸digo completo
   - Aseg煤rate de que no filtre las etiquetas `<script>` o `<style>`

3. **En HTML est谩tico**:
   - Simplemente copia y pega el c贸digo donde lo necesites

La consola es completamente independiente y no interferir谩 con el dise帽o de tu blog. ¡Disfr煤tala!

 

BRAINSTORMING - Tormenta de Ideas de PASAIA LAB © 2025 by Jos茅 Agust铆n Font谩n Varela is licensed under CC BY-NC-ND 4.0


BRAINSTORMING - Tormenta de Ideas de PASAIA LAB © 2025 by Jos茅 Agust铆n Font谩n Varela is licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International



 

Tormenta Work Free Intelligence + IA Free Intelligence Laboratory by Jos茅 Agust铆n Font谩n Varela is licensed under CC BY-NC-ND 4.0

# **BLOCKCHAIN UNIVERSAL FONT脕N (FBC)**

 # **BLOCKCHAIN UNIVERSAL FONT脕N (FBC)** ## **Implementaci贸n de la Teor铆a Font谩n en una Blockchain Cu谩ntico-C贸smica** --- ## 馃幆 **CONCEPTO: ...