elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Temas
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19
121  Seguridad Informática / Seguridad / 1. Ingenieria Social por String Manolo (parte 7) en: 14 Agosto 2019, 09:14 am
Antes de embarrarte en las profundidades de la Ingeniería Social es importante que obtengas unos conocimientos sólidos entorno a los elementos primordiales que la posibilitan. Varios autores se han centrado en características frecuentes que rozan lo inherente en el ser humano de la época. -Predisposición a prestar ayuda desinteresadamente. -Dificultad para responder con un no. Etc. En este documento no escribo ni describo características que posibilitan la Ingeniería Social. Utilizo elementos, los analizo y saca conclusiones.

Capítulo 1. Información.
Segun la RAE la información esto no es un glosario con definiciones. Es un libro de Ingeniería Social. Presuponer es un error. Hay que destruir todo lo que pensamos y en lo que creemos. Es la forma correcta de reconstruir y formar bases sólidas desde cero. Asumir y presuponer son errores que vulnera la Ingeniería Social. Se asume que alguien con traje subido un ferrarí rojo descapotable tiene dinero cuando es posible alquilar ambas cosas. Qué está bien? Qué está mal? El que mata es malo. El que roba es malo. El que dona es bueno. El que ayuda es bueno.
Si piensas esto o lo has pensado en algún momento te equivocas. Solo existen acciones y consecuencias. El bien y el mal solo son interpretaciones superficiales que simplifican. Destruyen el pensamiento.

Analisis:
El que mata es malo. Un policía o cualquier otra persona puede salvarte la vida a ti y a tu familia matando a alguien armado que emprende un tiroteo indiscriminado.
Entonces el policía es bueno. Repito, no existen el bien ni el mal. El policía tenía la oportunidad de dispararle en el brazo para desarmarlo. Lo mató por miedo. Por cobardía. La consecuencia de una infancia sobreprotegido. Eso no cambia en absoluto los acontecimientos. Apretó el gatillo y lo mató. Para ti hizo el bien. Para la familia del hombre armado hizo el mal porque si lo redujesen podrían enterarse que es esquizofrénico y su familia no tenía dinero o no quiso comprarle medicamentos. Ha muerto un enfermo que no tenía culpa y no erá consciente de sus acciones. Todo es un cúmulo de acciones y consecuencias.

Para qué sirve la Ingeniería Social? Eso lo decides tú. Qué consecuencias tiene? Depende de cuales sean tus acciones.
Por qué piensas que este libro trata de ayudarte en algo o que va a seguir orientado hacia la Ingeniería Social y no hacia un libro de recetas? Lo presupones.

Ensaladilla de pasta 7 comensales.
Ingredientes

-100 gramos de pasta
-1 latas de atún en aceite
-Medio huevo cocido
-8 pepinillos
-1/9 pimiento rojo
-12 cucharadas de mayonesa
-6 cucharadas de mostaza ketchup
-Pimienta negra al gusto de los comensales.

Bon appetit.
122  Programación / Desarrollo Web / Enviar form sin necesidad de Servidor? en: 13 Agosto 2019, 15:15 pm
Estoy generando este código desde un script:
Código
  1. <head><title>P.LFZM</title></head>
  2. <form action="https://formspree.io/example@gmail.com"method="POST">
  3.  <input type="text" name="name">
  4.  <input type="email" name="_replyto">
  5.  <input type="submit" value="Send">
  6. </form>
  7. </body>
  8. </html>

Probé con este servicio de formspree.io y con otros que se suponen que te permiten enviar correos sin necesidad de servidores(por mi parte) de distintas formas. El problema es que todos ellos tienen captchas o surgen problemas que no consigo solventar.

No quiero hacerme cargo del PHP ni del hosting.
Quiero que se pueda usar todo usando servicios de terceros, ya que no quiero vinculación de ningún tipo con el uso que se de a mi código, ya que es parte de un proyecto para explotar XSS automáticamente desde una web tipo: exploitXSS.example.com con tan solo poner el correo en un prompt para que se le envie la información obtenida desde la página afectada.

Sabeis como podría hacerlo o alternativas similares?
123  Programación / Scripting / Documentación oficial o manual de referencia de JScript para empezar de 0? en: 13 Agosto 2019, 00:09 am
Ojo, JScript.
No JScript.NET, no javascript, no java, no vbscript, no node.js ni otra cosa.
También me interesa el manejo de FSO en WSH y documentación COM referente a JScript, gracias.
124  Foros Generales / Foro Libre / 7.4 millones de usuarios infectados con Bundled Software. Parte del proceso. en: 12 Agosto 2019, 09:44 am
Hoy estaba leyendo el siguiente artículo:

Citar
Investigadores del departamento de seguridad de Google han descubierto que más de 7,4 millones de dispositivos Android han sido infectados con un malware preinstalado.

Los malwares preinstalados han sido utilizados para controlar los dispositivos de forma remota.

La presencia de este malware se debe a que muchos fabricantes de bajo coste han utilizado software de terceros al incorporar el sistema operativo de Android. Dichos softwares muchas veces vienen de fuentes dudosas y como Android tiene un sistema de código abierto, cualquier grupo de ciberdelincuentes puede ofrecer su software con malware preinstalado dentro de las apps que vienen con los dispositivos.
https://www.trecebits.com/2019/08/09/mas-de-7-millones-de-dispositivos-android-tienen-un-malware-preinstalado/

Me ha parecido interesante y lo he realizado como POC asique voy a mostrar parte del proceso para que observemos la dificultad técnica y todo el control que una aplicación infectada nos puede ofrecer sobre el dispositivo.

Lo primero que voy a hacer es elegir una aplicación de código abierto. Al ser código abierto, el código para crear la aplicación está disponible en internet para cualquiera usuario. Cualquiera usando las herramientas pertinentes puede generar la aplicación o una muy similar a partir del código abierto.

Utilizaré esta lista entre los miles de listas disponibles para seleccionar la aplicación de código abierto. https://en.wikipedia.org/wiki/List_of_free_and_open-source_Android_applications

Suponemos que el dispositivo en el que se instalará la aplicación tendrá Google Play instalado como es frecuente en estos dispositivos. Para que los cambios que hagamos persistan eligiré una aplicación que no se encuentre en la tienda de Google Play y por lo tanto que no va a ser actualizada por parte del usuario con el objetivo de que no se substituya por una versión sin mi código.

En el caso de que en el código original venga reflejada alguna forma de actualizar la aplicación por medios externos a Glogle Play se puede deshabilitar o modificar esa parte del código.

Para tomar la decisión sobre que aplicación elegir tengo en cuenta lo siguiente:
-Comprobar el lenguaje en el cual está escrita la aplicación y que lenguajes soporta para poder añadir mi código en ese u otros lenguajes que soporte la aplicación.

-Comprobar si la aplicación es compatible con la versión o versiones de Android a las que está destinada la aplicación modificada.

-Intentar que el código no sea demasiado extenso para poder analizarlo fácilmente y asegurarme que no utilice herramientas externas a las cuales no vaya a tener acceso, ya que podría verificar o actualizar la aplicación  no permitiéndome modificarla a mi antojo.

-Si el control que tiene o debería tener este tipo de aplicación coincide con mi objetivo final. Si decido utilizar un bloc de notas sería un comportamiento extraño que se comunicase por la red, asique es otro factor importante a tener en cuenta.

Siguiendo estas pautas la aplicación que elegí fue - https://en.m.wikipedia.org/wiki/Adblock_Plus
Una extensión para navegadores que tiene escrito código en los lenguajes de programación javascript, Css y XUL. Este último es un dialecto de XML enfocado en realizar la parte visible de la interfaz para facilitar el uso de la aplicación por el usuario final.

Una vez elegida la aplicación me dirijo al lugar en dónde esté publicado el código fuente de la aplicación buscándolo en google. Lo encuentro en una de las múltiples plataformas que dan soporte a la publicación de código abierto como suele ser frecuente. https://github.com/adblockplus

Aquí hay varias versiones. Al entrar en el primer enlace dice que trás actualizaciones del navegador Mozilla ya no funciona en versiones modernas (superiores a la versión 47) asique me dirijo al segundo enlace.
Aquí sale un resumen del archivo LEEME que abro por completo con el siguiente link
 https://github.com/adblockplus/adblockpluschrome/blob/master/README.md En este documento vienen explicados el proceso y las herramientas necesarias para poder construir la aplicación:

Citar
Adblock Plus for Chrome, Opera, Microsoft Edge and Firefox
El nombre de la aplicación junto a los distintos navegadores en los cuales funciona.

Citar
This repository contains the platform-specific Adblock Plus source code for Chrome, Opera, Microsoft Edge and Firefox. It can be used to build Adblock Plus for these platforms, generic Adblock Plus code will be extracted from other repositories automatically (seedependencies file).
Explica que en estos repositorios solo se encuentra la parte del código específica para cada navegador. El resto del código necesario para otros navegadores será descargado automáticamente de otros repositorios.

Citar
Note that the Firefox extension built from this repository is the new WebExtension. The source code of the legacy Adblock Plus extension can be found here.
Dice de que la versión Adblockplus para el navegador Firefox utiliza la API de Mozilla. Nos la provee Mozilla para facilitar el trabajo y aumentar la calidad final de las extensiones realizadas por los programadores de todo el mundo. En el siguiente enlace podremos ver una introducción a la API WebExtensions para saber como funciona:
 https://developer.mozilla.org/es/docs/Mozilla/Add-ons/WebExtensions/Tu_primera_WebExtension
Esta API fue incluida a partir de la versión 45 del navegador, por lo que las extensiones que utilicen WebExtensions solo funcionarán en navegadores con una versión superior.

Citar
Building
Requirements
Mercurial or Git(whichever you used to clone this repository)
Python 2.7
The Jinja2 module(>= 2.8)
For signed builds:PyCrypto module
Node.js (>= 8.9)
Aquí se encuentran los distintos programas y tecnologías necesarias para poder construir la extensión.
Mercurial o Git son programas que nos permiten descargar todo el código, documentación y archivos necesarios automáticamente para construir la aplicación. Así no tenemos que ir link por link buscando todo el código necesario copiando, pegando y guardándolo con las extensiones de archivo necesarias para cada archivo que contenga código. O descargando los archivos uno por uno. Nos ahorra tiempo y simplifica el proceso guardando todo automáticamente en una carpeta de nuestro ordenador.

Python 2.7 es una versión de Python, un lenguaje de programación usado frecuentemente, pero no de forma exclusiva, en aplicaciones de comunicaciones a través de la red.

Jinja2 es un motor escrito en Python que nos ofrece plantillas y muchas funcionalidades orientadas a mejorar la productividad y la seguridad de la aplicación.

Pycripto es un conjunto de algoritmos de cifrado. Se utiliza para cifrar y descifrar las firmas en comunicaciones cliente-servidor o para firmar la aplicación con un certificado digital, util para instalar aplicaciones en Android. Un mecanismo que evita que un usuario o aplicación actualice o acceda a datos de otra aplicación que no le pertenece. https://source.android.com/devices/tech/ota/sign_builds

Node.js es un entorno de ejecución que nos permite ejecutar el código escrito en javascript fuera del navegador, también añade funcionalidades extra al lenguaje.

Citar
Building the extension
Run one of the following commands in the project directory, depending on your target platform:
./build.py build -t chrome -k adblockpluschrome.pem
./build.py build -t edge
./build.py build -t gecko
Gecko es un motor que nos permite la ejecución de varias tecnologías como XUL en cualquier sistema operativo. Es uno de los motores que utiliza el navegador Firefox. Nosotros construiremos la aplicación para firefox asique tendremos que usar el comando
Citar
./build.py build -t gecko
trás el cual se nos generará el archivo adblockplusfirefox-1.2.3.nnnn.xpi.

Citar
The Firefox extension will be unsigned, and therefore is mostly only useful for upload to Mozilla Add-ons. You can also load it for testing purposes underabout:debugging or by disabling signature enforcement in Firefox Nightly.
Aquí explica que la extensión que voy a construir está sin firmar, con lo cual me limita a subirla a la plataforma de extensiones de Mozilla. También indica una alternativa para poder probar la aplicación sin firmar directamente en el dispositivo. Deshabilitar el forzado de firmas en el navegador Firefox Nightly. Una versión del navegador Firefox para que los desarrolladores prueben sus aplicaciones. O en el apartado de depuración about:debugging el cual ofrece herramientas para comprobar el funcionamiento de nuestro programa, principalmente para corregir errores.

Citar
Development environment
To simplify the process of testing your changes you can create an unpacked development environment. For that run one of the following commands:
./build.py devenv -t chrome
./build.py devenv -t edge
./build.py devenv -t gecko

This will create a devenv.*directory in the repository. You can load the directory as an unpacked extension, underchrome://extensions in Chrome, underabout:debugging in Firefox or inExtensions menu in Microsoft Edge, after enabling extension development features inabout:flags. After making changes to the source code re-run the command to update the development environment. In Chrome and Firefox the extension should reload automatically after a few seconds.

En este apartado se explica como podemos generar un entorno de desarrollo para las tareas de programación. Usaremos el comando
Citar
./build.py devenv -t gecko
para generar una versión no enpaquetada/construida de la aplicación en una carpeta de nuestro ordenador. Podremos cargar la extensión en el navegador de Firefox trás habilitar la opción que para el desarrollo de extensiones escribiendo la dirección about:flags en el navegador Firefox. Tras realizar cambios en el código de la extensión hay que volver a usar el comando
Citar
./build.py devenv -t gecko
para reflejar los cambios que hagamos en la extension.

Por último en el documento se ofrecen varias maneras de comprobar que todo funciona en la aplicación. Por ejemplo con Qunit se puede comprobar que el código javascript funciona correctamente. Muy útil para cuando en un proyecto se aúnen varios lenguajes de programación poder identificar cual de ellos es el que crea el conflicto para posteriormente corregirlo.

Veamos lo que hay en la carpeta:
 https://github.com/adblockplus/adblockpluschrome?files=1

Dentro se encuentran varios archivos y carpetas con distintas extensiones y propósitos.
Observando el nombre de cada uno de los archivos junto a su extensión en muchos casos podemos identificar para que podría servir cada archivo.

*Para aquellos que estén especializados en un solo lenguaje de programación les recomiendo buscar la extensión en google, por ejemplo .js para saber a que lenguaje o aplicación pertenece. Descargar un manual de referencia del lenguaje, consultar la estructura básica del mismo, varios códigos, buscar las keywords que no entiendan y las librerías usadas para poder comprender que hace cada línea de código en cada archivo. 

Paso a comentar los archivos uno por uno hasta que encontrar algo relevante dentro de mis propósitos. Una vez obtenido lo comentaré y lo dejaré ahí, ya que se tendrán suficientes herramientas y pistas para conseguir finalizar el proceso con éxito. Algo que no voy explicar para no dar pie a que cualquiera sin conocimientos se dedique a robar contraseñas de facebook replicando los pasos y haciendo uso de la extensión sin necesidad de tener conocimientos sobre los pasos o que código añadir.

+Las carpetas con el nombre github contienen documentos informativos a cerca de como documentar fallos que encontremos en la aplicación para que se puedan corregir, así como otros relacionados con la plataforma.

+En la carpeta appx_assets hay tres imágenes que corresponden al icono de la aplicación en distintos tamaños. +En gecko.js dentro de la carpeta "target" que se encuentra dentro de "build" está el primer código.
Se añade info para aplicar el parser, metadatos, y toda la información asociada con la nueva build de la aplicación.

+En nightlies.html.tmpl dentro de la carpeta "templates" que se encuentra dentro de "build" está el archivo en el que se muestran los mensajes con información sobre las diversas builds generadas de la aplicación.

+En .eslintrc.json dentro de la carpeta "build" está el código para utilizar node.js con Eslint. Las dos últimas siglas "rc" en el nombre del archivo hacen referencia a "resources" en español dependencias. Eslint se encarga de mantener una calidad en el código en base a reglas y patrones. Se genera un AST para el conformar el estilo y la estructura del código https://es.m.wikipedia.org/wiki/%C3%81rbol_de_sintaxis_abstracta
Este es el parser que utiliza Eslint - https://esprima.org/demo/parse.html
Aquí más información sobre el uso de Eslint con node.js - https://medium.com/the-node-js-collection/why-and-how-to-use-eslint-in-your-project-742d0bc61ed7
El objetivo es mantener el código bajo unas reglas para que todo el mundo pueda modificarlo bajo el mismo estilo y estructura. Se pueden descargar pluggins para añadir más reglas.

+En buildlist.js en la misma carpeta que el anterior archivo tenemos la explicación del código entre comentarios /*  */ asique me ahorro comentar la finalidad del archivo, el nombre del archivo ya es bastante descriptivo.

+publish.js el último archivo dentro de "build" se encarga de los argumentos para el parser.

+background.js dentro de "ext" tiene numerosas funciones. Se chequean las respuestas http en busca de indicios de contenido html. Se identifica la apertura de nuevas pestañas o el cambio de pestaña activa. Maneja el contenido en ventanas emergentes y en el propio fondo. Mantiene la estructura del frame actualizada. Prerenderiza iconos...

La funcionalidad más interesante, obtiene la página web y la muestra en un iframe. Asi es como la extensión tiene control sobre la página web antes de ser mostrada y la puede modificar antes de ser mostrada al usuario. Esto todo con el objetivo de eliminar la publicidad de la página web y que el usuario no la vea. https://www.w3schools.com/html/html_iframe.asp

Este archivo es interesante.

Podemos añadir nuestro código malicioso. El iframe nos permite cargar cualquier tipo de contenido. scripts, páginas web externas, anuncios publicitarios... Revisando el código a parte de tener acceso absoluto al iframe antes de mostrarlo al usuario, también tenemos acceso a la direccion URL de la pestaña. Modificando el código podemos cargar contenido específico según la URL de la pestaña al compararla con un string. Como la página solicitada por el usuario no se muestrá directamente, ya que la extensión captura la página web, en esta etapa tenemos el control absoluto sobre todo lo que se le va a mostrar al usuario.
125  Programación / Desarrollo Web / Base64 a ASCII (decoder - javascript) en: 9 Agosto 2019, 15:54 pm
Pasa de Base64 a ASCII. Uso libre.

encoder https://foro.elhacker.net/desarrollo_web/ascii_a_base64_encoder_javascript-t498409.0.html

Etiquetas javascript omitidas debido a filtro cloudflare.
Código
  1. &#65279;<html>
  2. <head><title>Decoder Base64</title>
  3. </head>
  4. <body>
  5. //EtiquetaJavascript
  6. var CadenaEnTextoq = "";
  7. var CadenaEnTextoTamanhoq;
  8. var CadenaEnASCIIq = "";
  9. var contadorIguales = 0;
  10. var CadenaEnASCIIq2 = "";
  11. var CadenaEnASCIIqTamanho = 0;
  12. var BitsDe8en8 = "";
  13. var CadenaDecoded = "";
  14. var CadenaEnASCIIq2Tamanho = 0;
  15. var contador_x = 0;
  16. var contador_z = 0;
  17. var mantenerseEnBucleq = true;
  18.  
  19. CadenaEnTextoq = prompt("Pon el texto");
  20.  
  21. CadenaEnTextoTamanhoq = CadenaEnTextoq.length;
  22.  
  23. for (var i = 0; i < CadenaEnTextoTamanhoq; ++i)
  24. {
  25.   if (CadenaEnTextoq[i] == 'A')
  26.   {
  27.   CadenaEnASCIIq += "000000";
  28.   }
  29.  
  30. if (CadenaEnTextoq[i] == 'B')
  31.   {
  32.   CadenaEnASCIIq += "000001";
  33.   }
  34.  
  35. if (CadenaEnTextoq[i] == 'C')
  36.   {
  37.   CadenaEnASCIIq += "000010";
  38.   }
  39.  
  40. if (CadenaEnTextoq[i] == 'D')
  41.   {
  42.   CadenaEnASCIIq += "000011";
  43.   }
  44.  
  45. if (CadenaEnTextoq[i] == 'E')
  46.   {
  47.   CadenaEnASCIIq += "000100";
  48.   }
  49.  
  50. if (CadenaEnTextoq[i] == 'F')
  51.   {
  52.   CadenaEnASCIIq += "000101";
  53.   }
  54.  
  55. if (CadenaEnTextoq[i] == 'G')
  56.   {
  57.   CadenaEnASCIIq += "000110";
  58.   }
  59.  
  60. if (CadenaEnTextoq[i] == 'H')
  61.   {
  62.   CadenaEnASCIIq += "000111";
  63.   }
  64.  
  65. if (CadenaEnTextoq[i] == 'I')
  66.   {
  67.   CadenaEnASCIIq += "001000";
  68.   }
  69.  
  70. if (CadenaEnTextoq[i] == 'J')
  71.   {
  72.   CadenaEnASCIIq += "001001";
  73.   }
  74.  
  75. if (CadenaEnTextoq[i] == 'K')
  76.   {
  77.   CadenaEnASCIIq += "001010";
  78.   }
  79.  
  80. if (CadenaEnTextoq[i] == 'L')
  81.   {
  82.   CadenaEnASCIIq += "001011";
  83.   }
  84.  
  85. if (CadenaEnTextoq[i] == 'M')
  86.   {
  87.   CadenaEnASCIIq += "001100";
  88.   }
  89.  
  90. if (CadenaEnTextoq[i] == 'N')
  91.   {
  92.   CadenaEnASCIIq += "001101";
  93.   }
  94.  
  95. if (CadenaEnTextoq[i] == 'O')
  96.   {
  97.   CadenaEnASCIIq += "001110";
  98.   }
  99.  
  100. if (CadenaEnTextoq[i] == 'P')
  101.   {
  102.   CadenaEnASCIIq += "001111";
  103.   }
  104.  
  105. if (CadenaEnTextoq[i] == 'Q')
  106.   {
  107.   CadenaEnASCIIq += "010000";
  108.   }
  109.  
  110. if (CadenaEnTextoq[i] == 'R')
  111.   {
  112.   CadenaEnASCIIq += "010001";
  113.   }
  114.  
  115. if (CadenaEnTextoq[i] == 'S')
  116.   {
  117.   CadenaEnASCIIq += "010010";
  118.   }
  119.  
  120. if (CadenaEnTextoq[i] == 'T')
  121.   {
  122.   CadenaEnASCIIq += "010011";
  123.   }
  124.  
  125. if (CadenaEnTextoq[i] == 'U')
  126.   {
  127.   CadenaEnASCIIq += "010100";
  128.   }
  129.  
  130. if (CadenaEnTextoq[i] == 'V')
  131.   {
  132.   CadenaEnASCIIq += "010101";
  133.   }
  134.  
  135. if (CadenaEnTextoq[i] == 'W')
  136.   {
  137.   CadenaEnASCIIq += "010110";
  138.   }
  139.  
  140. if (CadenaEnTextoq[i] == 'X')
  141.   {
  142.   CadenaEnASCIIq += "010111";
  143.   }
  144.  
  145. if (CadenaEnTextoq[i] == 'Y')
  146.   {
  147.   CadenaEnASCIIq += "011000";
  148.   }
  149.  
  150. if (CadenaEnTextoq[i] == 'Z')
  151.   {
  152.   CadenaEnASCIIq += "011001";
  153.   }
  154.  
  155. if (CadenaEnTextoq[i] == 'a')
  156.   {
  157.   CadenaEnASCIIq += "011010" ;
  158.   }
  159.  
  160. if (CadenaEnTextoq[i] == 'b')
  161.   {
  162.   CadenaEnASCIIq += "011011";
  163.   }
  164.  
  165. if (CadenaEnTextoq[i] == 'c')
  166.   {
  167.   CadenaEnASCIIq += "011100";
  168.   }
  169.  
  170. if (CadenaEnTextoq[i] == 'd')
  171.   {
  172.   CadenaEnASCIIq += "011101";
  173.   }
  174.  
  175. if (CadenaEnTextoq[i] == 'e')
  176.   {
  177.   CadenaEnASCIIq += "011110";
  178.   }
  179.  
  180. if (CadenaEnTextoq[i] == 'f')
  181.   {
  182.   CadenaEnASCIIq += "011111";
  183.   }
  184.  
  185. if (CadenaEnTextoq[i] == 'g')
  186.   {
  187.   CadenaEnASCIIq += "100000";
  188.   }
  189.  
  190. if (CadenaEnTextoq[i] == 'h')
  191.   {
  192.   CadenaEnASCIIq += "100001";
  193.   }
  194.  
  195. if (CadenaEnTextoq[i] == 'i')
  196.   {
  197.   CadenaEnASCIIq += "100010";
  198.   }
  199.  
  200.  
  201. if (CadenaEnTextoq[i] == 'j')
  202.   {
  203.   CadenaEnASCIIq += "100011";
  204.   }
  205.  
  206. if (CadenaEnTextoq[i] == 'k')
  207.   {
  208.   CadenaEnASCIIq += "100100";
  209.   }
  210.  
  211. if (CadenaEnTextoq[i] == 'l')
  212.   {
  213.   CadenaEnASCIIq += "100101";
  214.   }
  215.  
  216. if (CadenaEnTextoq[i] == 'm')
  217.   {
  218.   CadenaEnASCIIq += "100110";
  219.   }
  220.  
  221. if (CadenaEnTextoq[i] == 'n')
  222.   {
  223.   CadenaEnASCIIq += "100111";
  224.   }
  225.  
  226. if (CadenaEnTextoq[i] == 'o')
  227.   {
  228.   CadenaEnASCIIq += "101000";
  229.   }
  230.  
  231. if (CadenaEnTextoq[i] == 'p')
  232.   {
  233.   CadenaEnASCIIq += "101001";
  234.   }
  235.  
  236. if (CadenaEnTextoq[i] == 'q')
  237.   {
  238.   CadenaEnASCIIq += "101010";
  239.   }
  240.  
  241.  
  242. if (CadenaEnTextoq[i] == 'r')
  243.   {
  244.   CadenaEnASCIIq += "101011";
  245.   }
  246.  
  247. if (CadenaEnTextoq[i] == 's')
  248.   {
  249.   CadenaEnASCIIq += "101100";
  250.   }
  251.  
  252. if (CadenaEnTextoq[i] == 't')
  253.   {
  254.   CadenaEnASCIIq += "101101";
  255.   }
  256.  
  257. if (CadenaEnTextoq[i] == 'u')
  258.   {
  259.   CadenaEnASCIIq += "101110";
  260.   }
  261.  
  262. if (CadenaEnTextoq[i] == 'v')
  263.   {
  264.   CadenaEnASCIIq += "101111";
  265.   }
  266.  
  267. if (CadenaEnTextoq[i] == 'w')
  268.   {
  269.   CadenaEnASCIIq += "110000";
  270.   }
  271.  
  272. if (CadenaEnTextoq[i] == 'x')
  273.   {
  274.   CadenaEnASCIIq += "110001";
  275.   }
  276.  
  277. if (CadenaEnTextoq[i] == 'y')
  278.   {
  279.   CadenaEnASCIIq += "110010";
  280.   }
  281.  
  282. if (CadenaEnTextoq[i] == 'z')
  283.   {
  284.   CadenaEnASCIIq += "110011";
  285.   }
  286.  
  287. if (CadenaEnTextoq[i] == '0')
  288.   {
  289.   CadenaEnASCIIq += "110100";
  290.   }
  291.  
  292. if (CadenaEnTextoq[i] == '1')
  293.   {
  294.   CadenaEnASCIIq += "110101";
  295.   }
  296.  
  297. if (CadenaEnTextoq[i] == '2')
  298.   {
  299.   CadenaEnASCIIq += "110110";
  300.   }
  301.  
  302.  
  303. if (CadenaEnTextoq[i] == '3')
  304.   {
  305.   CadenaEnASCIIq += "110111";
  306.   }
  307.  
  308. if (CadenaEnTextoq[i] == '4')
  309.   {
  310.   CadenaEnASCIIq += "111000";
  311.   }
  312.  
  313. if (CadenaEnTextoq[i] == '5')
  314.   {
  315.   CadenaEnASCIIq += "111001";
  316.   }
  317.  
  318. if (CadenaEnTextoq[i] == '6')
  319.   {
  320.   CadenaEnASCIIq += "111010";
  321.   }
  322.  
  323. if (CadenaEnTextoq[i] == '7')
  324.   {
  325.   CadenaEnASCIIq += "111011";
  326.   }
  327.  
  328. if (CadenaEnTextoq[i] == '8')
  329.   {
  330.   CadenaEnASCIIq += "111100";
  331.   }
  332.  
  333. if (CadenaEnTextoq[i] == '9')
  334.   {
  335.   CadenaEnASCIIq += "111101";
  336.   }
  337.  
  338. if (CadenaEnTextoq[i] == '+')
  339.   {
  340.   CadenaEnASCIIq += "111110";
  341.   }
  342.  
  343. if (CadenaEnTextoq[i] == '/')
  344.   {
  345.   CadenaEnASCIIq += "111111";
  346.   }
  347.  
  348. if (CadenaEnTextoq[i] == '=')
  349.   {
  350.   contadorIguales++;
  351.   }
  352.  
  353. }
  354.  
  355. CadenaEnASCIIqTamanho = CadenaEnASCIIq.length;
  356.  
  357. if (contadorIguales == 1)
  358. {
  359.   for  (var i = 0; i < (CadenaEnASCIIqTamanho -2) ; ++i)
  360.   {
  361.   CadenaEnASCIIq2 += CadenaEnASCIIq[i];
  362.   }
  363. }
  364.  
  365. if (contadorIguales == 2)
  366. {
  367. for  (var i = 0; i < (CadenaEnASCIIqTamanho -4) ; ++i)
  368.   {
  369.   CadenaEnASCIIq2 += CadenaEnASCIIq[i];
  370.   }
  371. }
  372.  
  373. CadenaEnASCIIq2Tamanho = CadenaEnASCIIq2.length;
  374.  
  375.  
  376. do
  377. {
  378. BitsDe8en8 += CadenaEnASCIIq2[contador_z];
  379.  
  380. ++contador_x;
  381. ++contador_z;
  382.  
  383. if (contador_x == 8)
  384. {
  385.  
  386.  
  387. if ( BitsDe8en8 == "01000001")
  388.       {
  389.        CadenaDecoded += "A";
  390.       }
  391.  
  392. if ( BitsDe8en8 == "01000010")
  393.       {
  394.        CadenaDecoded += "B";
  395.       }
  396.  
  397. if ( BitsDe8en8 == "01000011")
  398.       {
  399.        CadenaDecoded += "C";
  400.       }
  401.  
  402. if ( BitsDe8en8 == "01000100")
  403.       {
  404.        CadenaDecoded += "D";
  405.       }
  406.  
  407. if ( BitsDe8en8 == "01000101")
  408.       {
  409.        CadenaDecoded += "E";
  410.       }
  411.  
  412. if ( BitsDe8en8 == "01000110")
  413.       {
  414.        CadenaDecoded += "F";
  415.       }
  416.  
  417. if ( BitsDe8en8 == "01000111")
  418.       {
  419.        CadenaDecoded += "G";
  420.       }
  421.  
  422. if ( BitsDe8en8 == "01001000")
  423.       {
  424.        CadenaDecoded += "H";
  425.       }
  426.  
  427. if ( BitsDe8en8 == "01001001")
  428.       {
  429.        CadenaDecoded += "I";
  430.       }
  431.  
  432. if ( BitsDe8en8 == "01001010")
  433.       {
  434.        CadenaDecoded += "J";
  435.       }
  436.  
  437. if ( BitsDe8en8 == "01001011")
  438.       {
  439.        CadenaDecoded += "K";
  440.       }
  441.  
  442. if ( BitsDe8en8 == "01001100")
  443.       {
  444.        CadenaDecoded += "L";
  445.       }
  446.  
  447. if ( BitsDe8en8 == "01001101")
  448.       {
  449.        CadenaDecoded += "M";
  450.       }
  451.  
  452. if ( BitsDe8en8 == "01001110")
  453.       {
  454.        CadenaDecoded += "N";
  455.       }
  456.  
  457. if ( BitsDe8en8 == "01001111")
  458.       {
  459.        CadenaDecoded += "O";
  460.       }
  461.  
  462. if ( BitsDe8en8 == "01010000")
  463.       {
  464.        CadenaDecoded += "P";
  465.       }
  466.  
  467. if ( BitsDe8en8 == "01010001")
  468.       {
  469.        CadenaDecoded += "Q";
  470.       }
  471.  
  472. if ( BitsDe8en8 == "01010010")
  473.       {
  474.        CadenaDecoded += "R";
  475.       }
  476.  
  477. if ( BitsDe8en8 == "01010011")
  478.       {
  479.        CadenaDecoded += "S";
  480.       }
  481.  
  482. if ( BitsDe8en8 == "01010100")
  483.       {
  484.        CadenaDecoded += "T";
  485.       }
  486.  
  487. if ( BitsDe8en8 == "01010101")
  488.       {
  489.        CadenaDecoded += "U";
  490.       }
  491.  
  492. if ( BitsDe8en8 == "01010110")
  493.       {
  494.        CadenaDecoded += "V";
  495.       }
  496.  
  497. if ( BitsDe8en8 == "01010111")
  498.       {
  499.        CadenaDecoded += "W";
  500.       }
  501.  
  502. if ( BitsDe8en8 == "01011000")
  503.       {
  504.        CadenaDecoded += "X";
  505.       }
  506.  
  507. if ( BitsDe8en8 == "01011001")
  508.       {
  509.        CadenaDecoded += "Y";
  510.       }
  511.  
  512. if ( BitsDe8en8 == "01011010")
  513.       {
  514.        CadenaDecoded += "Z";
  515.       }
  516.  
  517. if ( BitsDe8en8 == "01100001")
  518.       {
  519.        CadenaDecoded += "a";
  520.       }
  521.  
  522. if ( BitsDe8en8 == "01100010")
  523.       {
  524.        CadenaDecoded += "b";
  525.       }
  526.  
  527. if ( BitsDe8en8 == "01100011")
  528.       {
  529.        CadenaDecoded += "c";
  530.       }
  531.  
  532. if ( BitsDe8en8 == "01100100")
  533.       {
  534.        CadenaDecoded += "d";
  535.       }
  536.  
  537. if ( BitsDe8en8 == "01100101")
  538.       {
  539.        CadenaDecoded += "e";
  540.       }
  541.  
  542. if ( BitsDe8en8 == "01100110")
  543.       {
  544.        CadenaDecoded += "f";
  545.       }
  546.  
  547. if ( BitsDe8en8 == "01100111")
  548.       {
  549.        CadenaDecoded += "g";
  550.       }
  551.  
  552. if ( BitsDe8en8 == "01101000")
  553.       {
  554.        CadenaDecoded += "h";
  555.       }
  556.  
  557. if ( BitsDe8en8 == "01101001")
  558.       {
  559.        CadenaDecoded += "i";
  560.       }
  561.  
  562. if ( BitsDe8en8 == "01101010")
  563.       {
  564.        CadenaDecoded += "j";
  565.       }
  566.  
  567. if ( BitsDe8en8 == "01101011")
  568.       {
  569.        CadenaDecoded += "k";
  570.       }
  571.  
  572. if ( BitsDe8en8 == "01101100")
  573.       {
  574.        CadenaDecoded += "l";
  575.       }
  576.  
  577. if ( BitsDe8en8 == "01101101")
  578.       {
  579.        CadenaDecoded += "m";
  580.       }
  581.  
  582. if ( BitsDe8en8 == "01101110")
  583.       {
  584.        CadenaDecoded += "n";
  585.       }
  586.  
  587. if ( BitsDe8en8 == "01101111")
  588.       {
  589.        CadenaDecoded += "o";
  590.       }
  591.  
  592. if ( BitsDe8en8 == "01110000")
  593.       {
  594.        CadenaDecoded += "p";
  595.       }
  596.  
  597. if ( BitsDe8en8 == "01110001")
  598.       {
  599.        CadenaDecoded += "q";
  600.       }
  601.  
  602. if ( BitsDe8en8 == "01110010")
  603.       {
  604.        CadenaDecoded += "r";
  605.       }
  606.  
  607. if ( BitsDe8en8 == "01110011")
  608.       {
  609.        CadenaDecoded += "s";
  610.       }
  611.  
  612. if ( BitsDe8en8 == "01110100")
  613.       {
  614.        CadenaDecoded += "t";
  615.       }
  616.  
  617. if ( BitsDe8en8 == "01110101")
  618.       {
  619.        CadenaDecoded += "u";
  620.       }
  621.  
  622. if ( BitsDe8en8 == "01110110")
  623.       {
  624.        CadenaDecoded += "v";
  625.       }
  626.  
  627. if ( BitsDe8en8 == "01110111")
  628.       {
  629.        CadenaDecoded += "w";
  630.       }
  631.  
  632. if ( BitsDe8en8 == "01111000")
  633.       {
  634.        CadenaDecoded += "x";
  635.       }
  636.  
  637. if ( BitsDe8en8 == "01111001")
  638.       {
  639.        CadenaDecoded += "y";
  640.       }
  641.  
  642. if ( BitsDe8en8 == "01111010")
  643.       {
  644.        CadenaDecoded += "z";
  645.       }
  646.  
  647. if ( BitsDe8en8 == "00110000")
  648.       {
  649.        CadenaDecoded += "0";
  650.       }
  651.  
  652. if ( BitsDe8en8 == "00110001")
  653.       {
  654.        CadenaDecoded += "1";
  655.       }
  656.  
  657. if ( BitsDe8en8 == "00110010")
  658.       {
  659.        CadenaDecoded += "2";
  660.       }
  661.  
  662. if ( BitsDe8en8 == "00110011")
  663.       {
  664.        CadenaDecoded += "3";
  665.       }
  666.  
  667. if ( BitsDe8en8 == "00110100")
  668.       {
  669.        CadenaDecoded += "4";
  670.       }
  671.  
  672. if ( BitsDe8en8 == "00110101")
  673.       {
  674.        CadenaDecoded += "5";
  675.       }
  676.  
  677. if ( BitsDe8en8 == "00110110")
  678.       {
  679.        CadenaDecoded += "6";
  680.       }
  681.  
  682. if ( BitsDe8en8 == "00110111")
  683.       {
  684.        CadenaDecoded += "7";
  685.       }
  686.  
  687. if ( BitsDe8en8 == "00111000")
  688.       {
  689.        CadenaDecoded += "8";
  690.       }
  691.  
  692. if ( BitsDe8en8 == "00111001")
  693.       {
  694.        CadenaDecoded += "9";
  695.       }
  696.  
  697. if ( BitsDe8en8 == "00101011")
  698.       {
  699.        CadenaDecoded += "+";
  700.       }
  701.  
  702. if ( BitsDe8en8 == "00101111")
  703.       {
  704.        CadenaDecoded += "/";
  705.       }
  706.  
  707.   contador_x = 0;
  708.   BitsDe8en8 = "";
  709.   }
  710.  
  711.   if ( contador_z == CadenaEnASCIIq2Tamanho )
  712.   {
  713.   mantenerseEnBucleq = false;
  714.   }
  715.  
  716.  
  717. } while (mantenerseEnBucleq == true)
  718.  
  719. document.write(CadenaDecoded);
  720. alert (CadenaDecoded);
  721.  
  722. //Cerrar etiqueta javascript
  723. </body>
  724. </html>
  725.  
126  Programación / Desarrollo Web / Dudas crawling, bot, extensiones, headless browsers en android o qué? en: 8 Agosto 2019, 06:46 am
Varias questiones acerca de crawling. No tengo idea del tema. Voy a intentar organizar bien las preguntas y contexto para no hacer sharing de mi cacao mental...

Cómo puedo detectar automáticamente si el sitio es crawling/scraping-friendly?

Se suele indicar en algún sitio de forma frecuente?

Me acuerdo de hace tiempo que iba a usar un crawler junto a un bot en este foro y leí por las normas del sitio que no estaba permitido. No sé ni en donde xD. No sabía ni que se solía prohibir esta actividad.
Básicamente como sé si se permite o no, o si voy a tener problemas xD?  Me gustaría abrirle la puerta al crawler para que salga a pasear por ahí como quien suelta un perro y le trae trufas. Jejeje.

Básicamente quiero usar el crawler principalmente para descargar contenido del sitio y de links apuntados por el sitio mientras me hecho la siesta o salgo de casa, desde el android, por eso del límite de velocidad de los datos e ir generando caché para cargar más rápido los sitios o poder verlos offline o no, obtener data para analisis...

Quiero programarlo a mano solo con javascript con la idea en mente de ejecutarlo directamente en el navegador pero no quiero usar ninguna tecnología que use node.js porque no puedo usarlo en X dispositivos y no quiero usar hosting de ningún tipo.

Entonces como me salto la politica de origen de un sitio random?
No quiero instalar extensiones de terceros.

Podría hacer yo una extensión para el navegador (chrome, mozilla) para saltarme la política con javascript vanilla?

Nunca hice una y ni idea de como va el tema, si teneis info dpm.
O me recomendais algún navegador headless directamente y de fiar para Android que no use node.js Aunque no tengo claro que me sirva para hacer lo que necesito.

Porque también quiero usar el crawler conjuntamente con un modulo que se coloca en local para interceptar y modificar respuestas http a páginas http only con javascript para crawlear páginas de acceso al router y obtener la pass. (No pregunteis porque quiero crawlear la página del router a parte de sacar la pass xD)
 Ahí también tengo problemas con la politica del mismo origen pero al estar en local y poder embeber la página con un iframe, tras interceptar la respuesta y eliminar la parte de la cabecera que hace Deny en X-frame antes de forward no tengo problema para crawlear en local no?
 
El iframe me sirve tambien para que el crawler obtenga todo el contenido de la web o al estar en un iframe o no se puede? (No tengo ni idea.)

Y sin poder interceptar las respuestas alguna alternativa para no tener que usar el script del server? Me crashea mucho, es una patata.

Estoy resumiendo todo mucho y estoy bastante perdido con algunas cosas más.
127  Programación / Desarrollo Web / ASCII a Base64 (encoder - javascript) en: 8 Agosto 2019, 03:58 am
Decoder https://foro.elhacker.net/desarrollo_web/base64_a_ascii_decoder-t498429.0.html
Cambiarle las etiquetas <js> y </js> por las correspondientes para añadir el javascript al html. Lo puse así para que el Cloudfare no me detecte los scripts y no me rediriga en bucle a captchas al publicar el código en el foro.

Podeis probarlo offline con un copia y pega, substituyendo las etiquetas y guardándolo con extensión html o htm con el bloc de notas o cualquier otro editor de texto dándole a "guardar como". Por ejemplo: cifradobase64.html

Podeis añadirlo a vuestra web o usarlo como querais y para lo que querais.

Características.
-La implementación es super sencilla de entender. Así quien no sepa como funciona exactamente el cifrado base64, buscándolo en wikipedia (o en el propio foro de criptografía se lo expliqué a un usuario) y mirando el código pueda entenderlo. A parte es fácilmente portable a cualquier otro lenguaje.
-Filtra todos los espacios y carácteres no contemplados en la tabla común del cifrado base64 del texto original. Se le añaden fácilmente si se desea.
-Facil cambiar la base de 64 a otra base.
-Solo cifra, no descifra. Le añadí el igual al texto cifrado (en caso de necesitarlo) para poder descifrarlo con cualquier herramienta online o implementar vosotros el decoder. Puede que lo haga yo y lo suba también cuando me aburra.


Código
  1. &#65279;<html>
  2. <head><title>Encoder Base64</title></head>
  3. <body>
  4. <js>
  5. var CadenaEnTexto;
  6. var CadenaEnTextoTamanho;
  7. var CadenaEnASCII = "";
  8. var CadenaDeBits6en6 = "";
  9. var CadenaDeBits6en6Tamanho;
  10. var RestoDeDividirEntre6 = 0;
  11. var ContadorNumDeCerosAnhadidos = 0;
  12. var mantenerseEnBucle = true;
  13. var TempBits6 = "";
  14. var x = 0;
  15. var z = 0;
  16. var CifradoFinal = "";
  17.  
  18.  
  19. CadenaEnTexto = prompt("Pon el texto");
  20.  
  21. CadenaEnTextoTamanho = CadenaEnTexto.length;
  22.  
  23. for (var i = 0; i < CadenaEnTextoTamanho; ++i)
  24. {
  25.   if (CadenaEnTexto[i] == 'A')
  26.   {
  27.   CadenaEnASCII += "01000001";
  28.   }
  29.  
  30. if (CadenaEnTexto[i] == 'B')
  31.   {
  32.   CadenaEnASCII += "01000010";
  33.   }
  34.  
  35. if (CadenaEnTexto[i] == 'C')
  36.   {
  37.   CadenaEnASCII += "01000011";
  38.   }
  39.  
  40. if (CadenaEnTexto[i] == 'D')
  41.   {
  42.   CadenaEnASCII += "01000100";
  43.   }
  44.  
  45. if (CadenaEnTexto[i] == 'E')
  46.   {
  47.   CadenaEnASCII += "01000101";
  48.   }
  49.  
  50. if (CadenaEnTexto[i] == 'F')
  51.   {
  52.   CadenaEnASCII += "01000110";
  53.   }
  54.  
  55. if (CadenaEnTexto[i] == 'G')
  56.   {
  57.   CadenaEnASCII += "01000111";
  58.   }
  59.  
  60. if (CadenaEnTexto[i] == 'H')
  61.   {
  62.   CadenaEnASCII += "01001000";
  63.   }
  64.  
  65. if (CadenaEnTexto[i] == 'I')
  66.   {
  67.   CadenaEnASCII += "01001001";
  68.   }
  69.  
  70. if (CadenaEnTexto[i] == 'J')
  71.   {
  72.   CadenaEnASCII += "01001010";
  73.   }
  74.  
  75. if (CadenaEnTexto[i] == 'K')
  76.   {
  77.   CadenaEnASCII += "01001011";
  78.   }
  79.  
  80. if (CadenaEnTexto[i] == 'L')
  81.   {
  82.   CadenaEnASCII += "01001100";
  83.   }
  84.  
  85. if (CadenaEnTexto[i] == 'M')
  86.   {
  87.   CadenaEnASCII += "01001101";
  88.   }
  89.  
  90. if (CadenaEnTexto[i] == 'N')
  91.   {
  92.   CadenaEnASCII += "01001110";
  93.   }
  94.  
  95. if (CadenaEnTexto[i] == 'O')
  96.   {
  97.   CadenaEnASCII += "01001111";
  98.   }
  99.  
  100. if (CadenaEnTexto[i] == 'P')
  101.   {
  102.   CadenaEnASCII += "01010000";
  103.   }
  104.  
  105. if (CadenaEnTexto[i] == 'Q')
  106.   {
  107.   CadenaEnASCII += "01010001";
  108.   }
  109.  
  110. if (CadenaEnTexto[i] == 'R')
  111.   {
  112.   CadenaEnASCII += "01010010";
  113.   }
  114.  
  115. if (CadenaEnTexto[i] == 'S')
  116.   {
  117.   CadenaEnASCII += "01010011";
  118.   }
  119.  
  120. if (CadenaEnTexto[i] == 'T')
  121.   {
  122.   CadenaEnASCII += "01010100";
  123.   }
  124.  
  125. if (CadenaEnTexto[i] == 'U')
  126.   {
  127.   CadenaEnASCII += "01010101";
  128.   }
  129.  
  130. if (CadenaEnTexto[i] == 'V')
  131.   {
  132.   CadenaEnASCII += "01010110";
  133.   }
  134.  
  135. if (CadenaEnTexto[i] == 'W')
  136.   {
  137.   CadenaEnASCII += "01010111";
  138.   }
  139.  
  140. if (CadenaEnTexto[i] == 'X')
  141.   {
  142.   CadenaEnASCII += "01011000";
  143.   }
  144.  
  145. if (CadenaEnTexto[i] == 'Y')
  146.   {
  147.   CadenaEnASCII += "01011001";
  148.   }
  149.  
  150. if (CadenaEnTexto[i] == 'Z')
  151.   {
  152.   CadenaEnASCII += "01011010";
  153.   }
  154.  
  155. if (CadenaEnTexto[i] == 'a')
  156.   {
  157.   CadenaEnASCII += "01100001" ;
  158.   }
  159.  
  160. if (CadenaEnTexto[i] == 'b')
  161.   {
  162.   CadenaEnASCII += "01100010";
  163.   }
  164.  
  165. if (CadenaEnTexto[i] == 'c')
  166.   {
  167.   CadenaEnASCII += "01100011";
  168.   }
  169.  
  170. if (CadenaEnTexto[i] == 'd')
  171.   {
  172.   CadenaEnASCII += "01100100";
  173.   }
  174.  
  175. if (CadenaEnTexto[i] == 'e')
  176.   {
  177.   CadenaEnASCII += "01100101";
  178.   }
  179.  
  180. if (CadenaEnTexto[i] == 'f')
  181.   {
  182.   CadenaEnASCII += "01100110";
  183.   }
  184.  
  185. if (CadenaEnTexto[i] == 'g')
  186.   {
  187.   CadenaEnASCII += "01100111";
  188.   }
  189.  
  190. if (CadenaEnTexto[i] == 'h')
  191.   {
  192.   CadenaEnASCII += "01101000";
  193.   }
  194.  
  195. if (CadenaEnTexto[i] == 'i')
  196.   {
  197.   CadenaEnASCII += "01101001";
  198.   }
  199.  
  200.  
  201. if (CadenaEnTexto[i] == 'j')
  202.   {
  203.   CadenaEnASCII += "01101010";
  204.   }
  205.  
  206. if (CadenaEnTexto[i] == 'k')
  207.   {
  208.   CadenaEnASCII += "01101011";
  209.   }
  210.  
  211. if (CadenaEnTexto[i] == 'l')
  212.   {
  213.   CadenaEnASCII += "01101100";
  214.   }
  215.  
  216. if (CadenaEnTexto[i] == 'm')
  217.   {
  218.   CadenaEnASCII += "01101101";
  219.   }
  220.  
  221. if (CadenaEnTexto[i] == 'n')
  222.   {
  223.   CadenaEnASCII += "01101110";
  224.   }
  225.  
  226. if (CadenaEnTexto[i] == 'o')
  227.   {
  228.   CadenaEnASCII += "01101111";
  229.   }
  230.  
  231. if (CadenaEnTexto[i] == 'p')
  232.   {
  233.   CadenaEnASCII += "01110000";
  234.   }
  235.  
  236. if (CadenaEnTexto[i] == 'q')
  237.   {
  238.   CadenaEnASCII += "01110001";
  239.   }
  240.  
  241.  
  242. if (CadenaEnTexto[i] == 'r')
  243.   {
  244.   CadenaEnASCII += "01110010";
  245.   }
  246.  
  247. if (CadenaEnTexto[i] == 's')
  248.   {
  249.   CadenaEnASCII += "01110011";
  250.   }
  251.  
  252. if (CadenaEnTexto[i] == 't')
  253.   {
  254.   CadenaEnASCII += "01110100";
  255.   }
  256.  
  257. if (CadenaEnTexto[i] == 'u')
  258.   {
  259.   CadenaEnASCII += "01110101";
  260.   }
  261.  
  262. if (CadenaEnTexto[i] == 'v')
  263.   {
  264.   CadenaEnASCII += "01110110";
  265.   }
  266.  
  267. if (CadenaEnTexto[i] == 'w')
  268.   {
  269.   CadenaEnASCII += "01110111";
  270.   }
  271.  
  272. if (CadenaEnTexto[i] == 'x')
  273.   {
  274.   CadenaEnASCII += "01111000";
  275.   }
  276.  
  277. if (CadenaEnTexto[i] == 'y')
  278.   {
  279.   CadenaEnASCII += "01111001";
  280.   }
  281.  
  282. if (CadenaEnTexto[i] == 'z')
  283.   {
  284.   CadenaEnASCII += "01111010";
  285.   }
  286.  
  287. if (CadenaEnTexto[i] == '0')
  288.   {
  289.   CadenaEnASCII += "00110000";
  290.   }
  291.  
  292. if (CadenaEnTexto[i] == '1')
  293.   {
  294.   CadenaEnASCII += "00110001";
  295.   }
  296.  
  297. if (CadenaEnTexto[i] == '2')
  298.   {
  299.   CadenaEnASCII += "00110010";
  300.   }
  301.  
  302.  
  303. if (CadenaEnTexto[i] == '3')
  304.   {
  305.   CadenaEnASCII += "00110011";
  306.   }
  307.  
  308. if (CadenaEnTexto[i] == '4')
  309.   {
  310.   CadenaEnASCII += "00110100";
  311.   }
  312.  
  313. if (CadenaEnTexto[i] == '5')
  314.   {
  315.   CadenaEnASCII += "00110101";
  316.   }
  317.  
  318. if (CadenaEnTexto[i] == '6')
  319.   {
  320.   CadenaEnASCII += "00110110";
  321.   }
  322.  
  323. if (CadenaEnTexto[i] == '7')
  324.   {
  325.   CadenaEnASCII += "00110111";
  326.   }
  327.  
  328. if (CadenaEnTexto[i] == '8')
  329.   {
  330.   CadenaEnASCII += "00111000";
  331.   }
  332.  
  333. if (CadenaEnTexto[i] == '9')
  334.   {
  335.   CadenaEnASCII += "00111001";
  336.   }
  337.  
  338. if (CadenaEnTexto[i] == '+')
  339.   {
  340.   CadenaEnASCII += "00101011";
  341.   }
  342.  
  343. if (CadenaEnTexto[i] == '/')
  344.   {
  345.   CadenaEnASCII += "00101111";
  346.   }
  347.  
  348. }
  349.  
  350. CadenaDeBits6en6 += CadenaEnASCII;
  351. CadenaDeBits6en6Tamanho = CadenaDeBits6en6.length;
  352.  
  353. RestoDeDividirEntre6 = CadenaDeBits6en6Tamanho % 6;
  354.  
  355. switch (RestoDeDividirEntre6)
  356. {
  357.   case 2:
  358.   {
  359.   CadenaDeBits6en6 += "0000";
  360.   ContadorNumDeCerosAnhadidos = 4;
  361.   CadenaDeBits6en6Tamanho += 4;
  362.   } break;
  363.  
  364.   case 4:
  365.   {
  366.   CadenaDeBits6en6 += "00";
  367.   ContadorNumDeCerosAnhadidos = 2;
  368.   CadenaDeBits6en6Tamanho += 2;
  369.   } break;
  370.  
  371.   default:
  372.   {
  373.  
  374.   } break;
  375. }
  376.  
  377.  
  378. do
  379. {
  380.  
  381. TempBits6 += CadenaDeBits6en6[z];
  382.  
  383. x++;
  384. z++;
  385.  
  386.  
  387.   if (x == 6 )
  388.   {
  389.  
  390.  
  391. if ( TempBits6 == "000000")
  392.       {
  393.       CifradoFinal += "A";
  394.       }
  395.  
  396. if ( TempBits6 == "000001")
  397.       {
  398.       CifradoFinal += "B";
  399.       }
  400.  
  401. if ( TempBits6 == "000010")
  402.       {
  403.       CifradoFinal += "C";
  404.       }
  405.  
  406. if ( TempBits6 == "000011")
  407.       {
  408.       CifradoFinal += "D";
  409.       }
  410.  
  411. if ( TempBits6 == "000100")
  412.       {
  413.       CifradoFinal += "E";
  414.       }
  415.  
  416. if ( TempBits6 == "000101")
  417.       {
  418.       CifradoFinal += "F";
  419.       }
  420.  
  421. if ( TempBits6 == "000110")
  422.       {
  423.       CifradoFinal += "G";
  424.       }
  425.  
  426. if ( TempBits6 == "000111")
  427.       {
  428.       CifradoFinal += "H";
  429.       }
  430.  
  431. if ( TempBits6 == "001000")
  432.       {
  433.       CifradoFinal += "I";
  434.       }
  435.  
  436. if ( TempBits6 == "001001")
  437.       {
  438.       CifradoFinal += "J";
  439.       }
  440.  
  441. if ( TempBits6 == "001010")
  442.       {
  443.       CifradoFinal += "K";
  444.       }
  445.  
  446. if ( TempBits6 == "001011")
  447.       {
  448.       CifradoFinal += "L";
  449.       }
  450.  
  451. if ( TempBits6 == "001100")
  452.       {
  453.       CifradoFinal += "M";
  454.       }
  455.  
  456. if ( TempBits6 == "001101")
  457.       {
  458.       CifradoFinal += "N";
  459.       }
  460.  
  461. if ( TempBits6 == "001110")
  462.       {
  463.       CifradoFinal += "O";
  464.       }
  465.  
  466. if ( TempBits6 == "001111")
  467.       {
  468.       CifradoFinal += "P";
  469.       }
  470.  
  471. if ( TempBits6 == "010000")
  472.       {
  473.       CifradoFinal += "Q";
  474.       }
  475.  
  476. if ( TempBits6 == "010001")
  477.       {
  478.       CifradoFinal += "R";
  479.       }
  480.  
  481. if ( TempBits6 == "010010")
  482.       {
  483.       CifradoFinal += "S";
  484.       }
  485.  
  486. if ( TempBits6 == "010011")
  487.       {
  488.       CifradoFinal += "T";
  489.       }
  490.  
  491. if ( TempBits6 == "010100")
  492.       {
  493.       CifradoFinal += "U";
  494.       }
  495.  
  496. if ( TempBits6 == "010101")
  497.       {
  498.       CifradoFinal += "V";
  499.       }
  500.  
  501. if ( TempBits6 == "010110")
  502.       {
  503.       CifradoFinal += "W";
  504.       }
  505.  
  506. if ( TempBits6 == "010111")
  507.       {
  508.       CifradoFinal += "X";
  509.       }
  510.  
  511. if ( TempBits6 == "011000")
  512.       {
  513.       CifradoFinal += "Y";
  514.       }
  515.  
  516. if ( TempBits6 == "011001")
  517.       {
  518.       CifradoFinal += "Z";
  519.       }
  520.  
  521. if ( TempBits6 == "011010")
  522.       {
  523.       CifradoFinal += "a";
  524.       }
  525.  
  526. if ( TempBits6 == "011011")
  527.       {
  528.       CifradoFinal += "b";
  529.       }
  530.  
  531. if ( TempBits6 == "011100")
  532.       {
  533.       CifradoFinal += "c";
  534.       }
  535.  
  536. if ( TempBits6 == "011101")
  537.       {
  538.       CifradoFinal += "d";
  539.       }
  540.  
  541. if ( TempBits6 == "011110")
  542.       {
  543.       CifradoFinal += "e";
  544.       }
  545.  
  546. if ( TempBits6 == "011111")
  547.       {
  548.       CifradoFinal += "f";
  549.       }
  550.  
  551. if ( TempBits6 == "100000")
  552.       {
  553.       CifradoFinal += "g";
  554.       }
  555.  
  556. if ( TempBits6 == "100001")
  557.       {
  558.       CifradoFinal += "h";
  559.       }
  560.  
  561. if ( TempBits6 == "100010")
  562.       {
  563.       CifradoFinal += "i";
  564.       }
  565.  
  566. if ( TempBits6 == "100011")
  567.       {
  568.       CifradoFinal += "j";
  569.       }
  570.  
  571. if ( TempBits6 == "100100")
  572.       {
  573.       CifradoFinal += "k";
  574.       }
  575.  
  576. if ( TempBits6 == "100101")
  577.       {
  578.       CifradoFinal += "l";
  579.       }
  580.  
  581. if ( TempBits6 == "100110")
  582.       {
  583.       CifradoFinal += "m";
  584.       }
  585.  
  586. if ( TempBits6 == "100111")
  587.       {
  588.       CifradoFinal += "n";
  589.       }
  590.  
  591. if ( TempBits6 == "101000")
  592.       {
  593.       CifradoFinal += "o";
  594.       }
  595.  
  596. if ( TempBits6 == "101001")
  597.       {
  598.       CifradoFinal += "p";
  599.       }
  600.  
  601. if ( TempBits6 == "101010")
  602.       {
  603.       CifradoFinal += "q";
  604.       }
  605.  
  606. if ( TempBits6 == "101011")
  607.       {
  608.       CifradoFinal += "r";
  609.       }
  610.  
  611. if ( TempBits6 == "101100")
  612.       {
  613.       CifradoFinal += "s";
  614.       }
  615.  
  616. if ( TempBits6 == "101101")
  617.       {
  618.       CifradoFinal += "t";
  619.       }
  620.  
  621. if ( TempBits6 == "101110")
  622.       {
  623.       CifradoFinal += "u";
  624.       }
  625.  
  626. if ( TempBits6 == "101111")
  627.       {
  628.       CifradoFinal += "v";
  629.       }
  630.  
  631. if ( TempBits6 == "110000")
  632.       {
  633.       CifradoFinal += "w";
  634.       }
  635.  
  636. if ( TempBits6 == "110001")
  637.       {
  638.       CifradoFinal += "x";
  639.       }
  640.  
  641. if ( TempBits6 == "110010")
  642.       {
  643.       CifradoFinal += "y";
  644.       }
  645.  
  646. if ( TempBits6 == "110011")
  647.       {
  648.       CifradoFinal += "z";
  649.       }
  650.  
  651. if ( TempBits6 == "110100")
  652.       {
  653.       CifradoFinal += "0";
  654.       }
  655.  
  656. if ( TempBits6 == "110101")
  657.       {
  658.       CifradoFinal += "1";
  659.       }
  660.  
  661. if ( TempBits6 == "110110")
  662.       {
  663.       CifradoFinal += "2";
  664.       }
  665.  
  666. if ( TempBits6 == "110111")
  667.       {
  668.       CifradoFinal += "3";
  669.       }
  670.  
  671. if ( TempBits6 == "111000")
  672.       {
  673.       CifradoFinal += "4";
  674.       }
  675.  
  676. if ( TempBits6 == "111001")
  677.       {
  678.       CifradoFinal += "5";
  679.       }
  680.  
  681. if ( TempBits6 == "111010")
  682.       {
  683.       CifradoFinal += "6";
  684.       }
  685.  
  686. if ( TempBits6 == "111011")
  687.       {
  688.       CifradoFinal += "7";
  689.       }
  690.  
  691. if ( TempBits6 == "111100")
  692.       {
  693.       CifradoFinal += "8";
  694.       }
  695.  
  696. if ( TempBits6 == "111101")
  697.       {
  698.       CifradoFinal += "9";
  699.       }
  700.  
  701. if ( TempBits6 == "111110")
  702.       {
  703.       CifradoFinal += "+";
  704.       }
  705.  
  706. if ( TempBits6 == "111111")
  707.       {
  708.       CifradoFinal += "/";
  709.       }
  710.  
  711.  
  712.   x = 0;
  713.   TempBits6 = "";
  714.   }
  715.  
  716.   if ( z == CadenaDeBits6en6Tamanho )
  717.   {
  718.   mantenerseEnBucle = false;
  719.   }
  720.  
  721. } while ( mantenerseEnBucle == true )
  722.  
  723.  
  724. switch (ContadorNumDeCerosAnhadidos)
  725. {
  726.   case 2:
  727.   {
  728.   CifradoFinal += "=";
  729.   } break;
  730.  
  731.   case 4:
  732.   {
  733.    CifradoFinal += "==";
  734.   } break;
  735. }
  736.  
  737. document.write(CifradoFinal);
  738. alert (CifradoFinal);
  739. </js>
  740. </body>
  741. </html>
  742.  

Comentarios del código:
Los 2 switchs es parte necesaria del cifrado base64. Básicamente lo que hago es usar el operador módulo (%) para obtener el resto de dividir el tamaño del texto que se quiere cifrar entre 6 (los bits, ceros y unos, se agrupan de 6 en 6 en el cifrado base64) Como puede ser que al agrupar de 6 en 6 te queden bits sueltos, es necesario añadirle el símbolo = por cada 2bits. Con un ejemplo se ve mejor:
Si tengo los bits 1 0 0 0 1 0 1 1 y los quiero agrupar de 6 en 6. Tendré dos grupos. 100010 y 11. Lógicamente me faltan bits en el segundo grupo para tener 6 bits en ambos grupos. Entonces le añado ceros hasta tener 6 bits: 11 -> 110000
Y los simbolos igual entonces para que?
Para identificar si al número se le añadieron ceros o el número ya era así, ya que si no usamos los iguales, no podrías diferenciar cuando el texto a cifrar fue 1 0 0 0 1 0 1 1 de cuando el texo a cifrar fue 1 0 0 0 1 0 1 1 0 0 0 0.
Al no poder diferenciar tendríamos un serio problema al descifrar el cifrado y por eso se añade un igual por cada grupo de 2 bits añadidos.

Y por qué por cada 2 bits 1 igual y no por cada bit un igual? Porque solo existen 2 posibilidades. Que falten 2 bits para llegar a tener los 6 bits, o que falten 4 bits para llegar a tener los 6 bits. No tendría sentido usar 2 iguales y 4 iguales cuando podemos representar lo mismo con 1 igual y 2 iguales.

Si te parece complejo en realidad es una tontería, leete la entrada sobre el cifrado en wikipedia y lo acabarás entendiendo. Yo aprendí a implementar el cifrado usando como único recurso la wikipedia y un cifrador online psra ver si lo estaba haciendo bien.
Cuando pone case 2 en el switch del resto significa que sobraron 2 bits, por eso hay que añadirle 4 bits más para llegar a los 6.

El código dentro del bucle do while lo único que hace es añadir bits a una variable y en cuanto tiene 6 bits guarda en otra variable ese número binario pasado a caracter usando la tabla comun de base64. 000000 = A, 000001 = B, etc.
Tras obtener la cadena, vuelve a tomar los 6 siguientes bits repitiendo este proceso hasta que no queden bits que tomar.

Pueden usarse arrays para la comparación y breaks en los if para mejorar el rendimiento y reducir drásticamente las líneas del código. Pero así es más visual y fácil de entender para newbies. Lo mismo con reducir el uso de variables, etc.

Si no entendeis algo comentarlo.
128  Foros Generales / Dudas Generales / Informática en el Ejército Español? en: 2 Agosto 2019, 22:22 pm
Qué tipo de profesiones y como se desarrollan?
Qué títulos se requieren? Qué suma puntos? Qué actividades se realizan?

Me comentaron que se puede estudiar y los gastos están pagados dentro del ejército o algo así. Que hay gente que se saca carreras en parte de jornada laboral. Etc.

Alguien está informado?
129  Foros Generales / Foro Libre / MiPyME, Cooperativa, Asociación, Varios Autónomos Independientes o qué? en: 23 Julio 2019, 20:40 pm
Hola, un grupo de amigos desempleados jovenes con gran afición a la tecnología y a la informática estamos intentando informarnos a cerca de beneficios fiscales y subenciones así como todas las opciones disponibles para el tipo de proyecto que tenemos en mente.
Me gustaría que si teneis conocimientos en el tema o podeis aportar, publicaseis información, opinión y orientación a cerca de cual sería la opción que menos gastos y más beneficios nos aportaría en forma de rebajas fiscales, pago de autónomos/seguridad social, etc.

Somos un grupo amplio de jóvenes con especializaciones muy diversas en el ámbito de la informática, comunicaciones, etc.
Uno se dedica al montaje y reparación de equipos, otro a gestión y contabilidad de empresas del sector tecnológico, otro a la telefonía móvil y montaje de antenas, otro ejerce de relaciones públicas, otro al diseño de páginas web, otro al hosting, otro a montaje de redes y software de gestión y bases de datos, otro al desarrollo de aplicaciones android, etc.

El caso es que si estamos todos independientemente como autónomos ejerciendo en lo nuestro, podemos obtar a subenciones del estado para cursos de gestión y desarrollo empresarial así como ayudas para jóvenes emprendedores.

Tenemos un grupo de whatsapp y nos pasamos clientes, colaboramos entre todos, etc.

Cual sería la mejor opción para este caso?
Lógicamente si cada uno alquila un local, luz, agua, gestión, vehículos... es una burrada de dinero cuando todo se podría unificar en un solo sitio con una o dos personas atendiendo a los clientes en un solo local y atendiendo llamadas e así ahorrar muchísimos gastos, tiempo y tener una imagen más profesional pudiendo distribuir propaganda de la empresa con todos los servicios.

Muchas gracias.
130  Foros Generales / Dudas Generales / Ingeniería social. (SE) en: 20 Julio 2019, 10:02 am
    
INGENIERÍA SOCIAL por String Manolo

  • Definición
  • Qué es?
  • Para qué sirve
  • Quién lo utiliza
  • Técnicas y ejemplos
  • Principales Motivaciones
  • Por qué deberías informarte


-Definicion
Existen múltiples definiciones, prácticamente una por cada autor. Todos la utilizamos y la hacemos nuestra, por lo que queremos dar nuestra visión y por lo tanto una definición que se ajuste a nuestro criterio.

-Qué es?
La ingeniería social es el arte de usar  nuestras capacidades para cumplir un objetivo a través de una persona o cualquier agrupación social. Véase  una empresa, una organización, una familia, un grupo de amigos, un empleado...

-Para qué sirve?
La ingeniería social sirve para ayudarnos en nuestros propósitos. Conseguir un trabajo, pedir un préstamo, una invitación a una fiesta, una cita, cambiar la imagen que los demás tienen de nosotros...

-Quien la utiliza?
La utilizan los niños llorando para mamar, un comercial para venderte un aspirador, un agente de la autoridad para forzar una confesión de un delincuente, un psicólogo para obtener información y poder hacer un diagnóstico, un cibercriminal para obtener tus datos bancarios, tu mujer para decidir que mueble vas a poner en el salón jeje.
En mayor o menor medida todos utilizamos la ingeniería social y todos somos víctimas de ella.

-Por qué deberías informarte?
Es una de las herramientas más comunes y frecuentes. Principalmente deberías informarte para que no sea utilizada en tu contra.


Desde la creación de internet los cibercriminales han desarrollado muchas técnicas de ingeniería social (algunas más sofisticadas y otras realmente sencillas) como herramientas para obtener acceso a equipos remotos y a información sensible; correos electrónicos, cuentas bancarias, perfiles en redes sociales, u obligarte/convencerte de hacer pagos al delincuente.

Las principales motivicaciones de estos criminales son:
  • Lucrarse económicamente
  • Obtener equipos y dispositivos electrónicos que puedan controlar remotamente
  • Intereses políticos, empresariales, personales o ideológicos
  • Venganza
  • Obtención de recursos como software, material pornográfico, escritos, pruebas de delitos...

Muchas veces con el fin de utilizarlos ilícitamente en pos de saciar sus inquietides o para su satisfación personal. Véanse el chantaje y la extorsión para conseguir favores de todo tipo, o la venta a terceros en el caso de que la víctima no ceda al chantaje.


Las técnicas son numerosas y muy diversas. Todo pasa por la información que expongamos o que sea de cualquier modo accesible a terceros e igual de importante es la información que no sabemos que existe y pueda ser usada en nuestra contra.




Ejemplos de ténicas más comunes y frecuentes:
Una de las más interesantes por su alta efectividad y de la que todos podemos ser víctimas es el llamado Trashing o Dumping Diver(buscar en la basura) que convinado con phising(correos electrónicos suplantando a una entidad) puede ser altamente peligroso para nuestra seguridad:
Tiras a la basura tus informes o citas médicas. Números de teléfono. Tickets de la compra. Es algo frecuente que todos hacemos alguna vez. O dejamos algo que se puede ver perfectamente desde una ventana con un telescopio.

Cualquier criminal podría vigilarte y obtener tu bolsa de basura de dentro contendor. Leer tu informe médico y llamarte por teléfono suplantando la identidad del centro de salud que figura en el documento:

Hola buenos días, Paco Martinez Perez? Llamaba para informsrle que la cita para realizar la resonancia magnética con motivo de su lesión lumbar a sido asignada el día 12 en el hospital Juan Gutierrez. Cómo? Seguro que no es correcto? No se preocupe. Debe ser un error informático. Tiene una dirección de correo electrónico para que pueda usted cotejar su historial médico con el sistema informático de salud? Vale, muchas gracias don Paco.

En el correo, suplantando el centro hospitalario se enviará un archivo malicioso que infecte el computador de don Paco adjunto a un informe médico creado a partir del que se obtuvo tras buscar en los desechos.



Otra técnica que utilizan se basa en colocar estratégicamente un teléfono móvil infectado con programas espía o un pen-drive cerca de la residencia de la víctima. El delincuente vigila a la víctima durante un breve periodo y aprende su rutina. Dónde aparca. A qué hora sale a trabajar. A que hora vuelve...

No sería extraño que la víctima se quedase con el teléfono móvil y se conectase a su router utilizando la clave del wi-fi. El atacante podría tirar la red fácilmente obteniendo la ip del router tras mandarse un ping a su servidor, obligando a la víctima a resetear el router y por lo tanto reseteando la contraseña de administración del router en el proceso. Dándole acceso inmediato e ilimato al router y consecuentemente a todos los sistemas conectados al router. Obtendría facilmente fotos, videos, correos, contraseñas, historiales, conversaciones, datos bancarios, contactos...

La más mínima información podría llevar a un ataque exitoso de ingienería social por parte del criminal.



Una de las técnicas más comunes realizadas por personas de todo tipo es el catfishing.
Esta técnica se basa en enamorar y manipular a una persona para "enamorarla" usando un perfil falso. Este tipo de perfiles suelen tener grandes dotes para la seducción. Por si eso no fuera suficiente, es frecuente el uso de fotos de algún modelo que encuentran por internet.
El objetivo principal de estos delincuentes es conseguir toda la información posible. Dirección, vínculos familiares, imágenes, audios y vídeos de caracter sexual lo más explícitos posibles, audios que averguencen a la víctima, confesiones de delitos, información sobre infidelidades, exparejas, etc.

Trás tener suficiente información el delincuente pasará a pedir favores económicos por una extrema necesidad: "Siento no haber podido hablarte esta semana. Estoy muy preocupado/a. Mi padre necesita un transplante de riñon y el único que se lo puede dar es mi hermano y no tiene dinero para el billete de avión. He estado moviéndome día y noche para conseguir el dinero. Intenté pedir préstamos, pero como la casa donde vivo nos la dejó mi madre en herencia a mi hermano y a mi, no la aceptan como aval para concerme el crédito sin su firma. Todo por 700 cochinos euros. Como si la vida de mi padre no valiese eso. Soy un/a hijo/a horrible. Si no bebiese alcohol de joven".

Como podemos ver, ese mensaje intenta tocar varias fibras sensibles y manipular a la víctima.
Vamos a analizarlo en profundidad, un mensaje que a priori puede parecer algo muy sencillo y una historia de la que se podría llegar incluso a desconfiar en algún momento. Pero en realidad tiene mucha carga emocional detrás y algo de psicología:

-Primero el criminal muestra una depresión y se dirige a la víctima sin un hola, ni un amor, ni cariño, como era frecuente. Mostrándole a la víctima que hasta que el problema se solucione la relación entre ellos no va a ser la misma. Menos contacto, menos afecto...

-El criminal muestra preocupación intentando buscar la empatía de la víctima.

-Después monta una historia falsa. Probablemente durante todo el proceso de manipulación, le irá mostrando antecedentes para hacer la historia totalmente veraz a los ojos de la víctima. Por ejemplo: "Hola amor, mira las fotos que me envió mi hermano." "Es en China, un lugar precioso, algún día iremos a visitarlo". "Mira esta foto con mi padre. Está hecho un toro, no se que haría sin él, es un hombre marabilloso, dile algo". "Dice que eres muy guapa y que está deseando conocerte". "Estoy deseando que pueda tener nietos jeje". Así se crea un vínculo afectivo entre la víctima y el falso padre para que la importancia sea mayor, teniéndolo ya en su mente idealozado como el abuelo de su futuro nieto.

-Toda la historia de la firma del hermano, y el aval de la casa es solo para reafirmar la historia y aumentar su credibilidad.

-La frase de "todo por 700 cochinos euros" es clave en la etapa final. Desvaloriza lo material influyendo en la perspectiva de la víctima y pensando para sí que en efecto, solo son 700 euros. No es nada en comparación con todo lo negativo de la situación. Abre la puerta pensamientos como: "Si se muere su padre por no prestarle tan solo 700 euros, me lo recordará durante toda la vida." "No quiero verlo/a así de triste". "Yo también me siento mal". Cómo vemos, cualquiera podría caer en una relación idílica de este tipo y ser estafados por un criminal.

Pero el problema no acaba aquí. Si la victima no accediese a ofrecerse psra pagar los 700 euros voluntariamente, el criminal se los pediría de la siguiente forma:
"Me dejas los 700 euros?" Pregunta directa, intentando esquivar el no y que la víctima ceda y se derrumbe ante la presión.

En caso de seguir la negativa se pasaría directamente al chantaje emocional:
"No pensé que fueras así". "Me alegro de saberlo ahora". "No entiendo por qué me haces daño"...

Si la victima no accede tras una agotadora insistencia y manipulación por todos los medios, el criminal podría dejarse de sutilezas y empezar a soltar la artillería que ha acumulado intentando dejar en shock a la víctima y causarle terror, miedo, verguenza...
"Ingrésame el dinero". "Tengo fotos íntimas tuyas y te prometo que se las mandaré a todo el mundo". "Sé dónde vives". "Lo sé todo sobre ti". "Todos sabrán como eres". "Todos sabrán que robastes en aquella tienda". "Todos sabrán donde vives". "En que habitación duermes". "Sé dónde trabajas y no van a querer a nadie dando tan mala imagen". "Toda tu familia verá lo que haces por la noches y en la cama de tus padres, das asco, ahora mismo lo envío todo".

Muy pocas víctimas denuncian en el momento por miedo y acaban siendo humilladas y cada vez más y más controladas.

Toda esta situación podría evitarse con algo tan simple como pedirle un vídeo al criminal con el pulgar hacia abajo. Así se confirmaría si es la misma persona de la fotos. En caso de no enviar el vídeo o no ser la misma persona que en las foros sería obvio que era un engaño desde el principio. Y en caso de que utilizase las fotos y vídeos de un conocido, sería fácil para la policía identificar al criminal.



Medidas para protegernos:
-Tener cuidado con nuestra información. Por ejemplo no cubriendo encuestas ni tests de persobalidad online, y demás aplicaciones. Limitar el acceso a nuestras redes sociales solo a amigos. Y no aceptar a nadie desconocido sin verificar previamente su identidad.

-Asegurarnos que con quien nos comunicamos es quien dice ser en todo momento.

-No utilizar dispositivos que nos encontremos mágicamente por ahí.

-Nadie regala dinero. Ponernos en todo momento en el lugar del ofertante para saber si nosotros haríamos algo así y con que fin.

-No creer todo lo que vemos, escuchamos o leemos a primera.

Los criminales parten con más experiencia, en necesario estar informados en Ingeniería Social para poder protegernos.[/list]
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines