SISTEMAS & DESARROLLO
65 meneos
2355 clics
Envío erróneo o controvertido, por favor lee los comentarios.
Cosas que (probablemente) no sabías de Python

Cosas que (probablemente) no sabías de Python

Python es un lenguaje muy popular hoy en día. Aunque pueda no ser el mejor, su desempeño es bueno, con mucha documentación, librerías, es cómodo y fácil de aprender. Python además sigue la filosofía de baterías incluidas, es decir, de intentar llevar de serie casi todo lo que vayas a poder necesitar. En este artículo vamos a ver algunas partes de Python no tan conocidas pero igualmente interesantes y útiles.
54 11 21 K 31
54 11 21 K 31
12 meneos
296 clics
Guía para evitar ataques DDoS usando IPTables en Linux [ENG]

Guía para evitar ataques DDoS usando IPTables en Linux [ENG]

Hay diferentes formas de crear reglas propias para evitar ataques DDoS usando IPTables. En este artículo se verán varios métodos de protección contra ataques DDoS usando IPTables, entre ellos: seleccionar la mejor tabla y cadena de IPTables para detener los ataques DDoS; modificar las configuraciones del kernel para mitigar los efectos de los ataques DDoS; usar IPTables para bloquear la mayoría de los ataques DDoS basados en TCP; y usar la propiedad SYNPROXY de IPTables para bloquear inundaciones SYN.
20 meneos
273 clics

La E/S es más rápida que la CPU: separemos conceptos y quitemos la mayoría de abstracciones del SO [ENG|PDF 444 Kb]

La E/S es cada vez más rápida en servidores que tienen NIC programables rápidos y memoria principal no volátil funcionando a cerca de la velocidad de DRAM, pero la velocidad de los procesadores monohilo se ha estancado. Las aplicaciones no pueden aprovechar las capacidades del hardware moderno cuando usan interfaces creadas alrededor de abstracciones que asumen que la E/S es lenta. Por lo tanto proponemos una estructura para un sistema operativo llamada parakernel que elimina la mayoría de las abstracciones del sistema operativo proporcionando interfaces que aprovechen el máximo potencial del hardware. El parakernel facilita la paralelización particionando los recursos de forma segura.
16 4 0 K 45
16 4 0 K 45
21 meneos
387 clics
PartyLoud: un sencillo script en bash para generar “ruido” en la red

PartyLoud: un sencillo script en bash para generar “ruido” en la red

PartyLoud es una herramienta para crear tráfico de Internet falso con el fin de impedir o mitigar el seguimiento en redes locales. Está basada en noisy.py y su objetivo es hacer mucho ruido en la red (en forma de peticiones http) para que sea más difícil rastrear tu navegación real. Cuando ejecutamos el script, se inician varios hilos y cada uno realiza una solicitud HTTP diferente con Curl. Luego se analiza la salida para elegir la siguiente URL, simulando una navegación.
12 9 1 K 33
12 9 1 K 33
18 meneos
161 clics
Comunicación de procesos en Linux III: sockets y señales [ENG]

Comunicación de procesos en Linux III: sockets y señales [ENG]

Este es el tercer y último artículo de la serie sobre comunicación entre procesos (IPC) en Linux. El primer artículo se centró en IPC a través de almacenamiento compartido (archivos y segmentos de memoria) y el segundo hace lo mismo con los canales básicos: tuberías (pipes en inglés; con nombre y sin nombre) y colas de mensajes. Este artículo pasa desde el IPC al alto nivel (sockets) hasta IPC a bajo nivel (señales). Los ejemplos de código dan forma a los detalles.
12 6 0 K 26
12 6 0 K 26
22 meneos
430 clics
Técnicas de detección de máquinas virtuales y contramedidas

Técnicas de detección de máquinas virtuales y contramedidas

Los desarrolladores de malware saben que sus artefactos va a ser analizados por threat hunters, forenses y demás “azulones” que intentarán destriparlos para obtener el detalle de su funcionamiento para contenerlos. También saben que la mayoría serán analizados en sandboxes con máquinas virtuales que proporcionan entornos aislados para que el malware se active para que sus acciones puedan ser interceptadas. Por ello los programas maliciosos detectan que se están ejecutando en una máquina virtual y actúan en consecuencia.
15 7 2 K 45
15 7 2 K 45
9 meneos
230 clics
Una inmersión en el mundo de los virus de MS-DOS [ENG]

Una inmersión en el mundo de los virus de MS-DOS [ENG]  

El malware de MS-DOS siempre me haya fascinado hasta cierto punto, de ahí que haya escrito esto. Pero primero debemos preguntarnos: ¿qué es DOS? DOS es una “versión” de CP/M, otro sistema operativo muy antiguo. La familia DOS cubre una amplia gama de proveedores, ya que DOS no significa que se ejecutará en una CPU 8086 o mejor. Algunos de estos proveedores de DOS comparten compatibilidad con API, lo que significa ¡que algunos han compartido malware! Entonces, ¿cómo se propaga este malware? ¿Cómo se oculta? ¿Cuáles son sus efectos?
18 meneos
375 clics
Un sólo kernel de Windows [ENG]

Un sólo kernel de Windows [ENG]

Windows es uno de los sistemas operativos más versátiles y flexibles del mercado ejecutándose en una variedad de arquitecturas (x86, x86_64, ARM y ARM64) y múltiples máquinas diferentes. Además, Windows admite una variedad de máquinas diferetnes que se ejecutan en una multitud de entornos; desde centros de datos, computadoras portátiles, Xbox, teléfonos hasta dispositivos IOT integrados, como cajeros automáticos. En esta publicación hablaré sobre la evolución de las piezas principales del kernel de Windows que le permite escalar de manera transparente desde un chip NVidia Tegra (Surface RT) hasta las grandes máquinas que hacen funcionar los centros de datos de Azure.
13 5 0 K 34
13 5 0 K 34
9 meneos
203 clics

Explorando la implementación de ‘std::string’ [ENG]

Todo desarrollador de C++ sabe que std::string representa una secuencia de caracteres en memoria. Esta clase administra su propia memoria y su uso es muy intuitivo. Hoy exploraremos cómo define std::string el estándar de C++ y también observaremos cómo lo implementan los 4 compiladores principales (Visual Studio 14, GCC versión anterior a 5, GCC versión 5 o mayor y Clang [LLVM]).
7 meneos
211 clics

Creando un código QR paso a paso [ENG]

Esta aplicación de demostración en JavaScript visualiza de forma detallada los pasos necesarios para codificar una cadena de texto en un código QR. El contenido de esta página esencialmente explica y justifica cómo esta biblioteca de generación de códigos QR trabaja internamente.
14 meneos
156 clics
Cómo implementar cadenas de caracteres [ENG]

Cómo implementar cadenas de caracteres [ENG]

El lenguaje de programación C define una cadena como 'una secuencia contigua de caracteres terminada por e incluyendo el primer carácter nulo'. Como el carácter '' marca el final, a menudo lo llamamos terminación cero o nula. En los programas en C esto significa que una cadena es char* o char[n]. Históricamente esta representación es anterior a C y parece provenir de los ensambladores PDP-11. La principal ventaja de esta representación es la eficiencia del espacio, además de otros trucos como dividir una cadena larga en varias insertando nulos. Sin embargo, otros lenguajes de programación a menudo usan otras representaciones. ¿Cuáles más son posibles?
13 meneos
491 clics

La más obsoleta infraestructura que el dinero pudiera comprar [ENG].

Hoy se cumple el décimo aniversario del trabajo más extraño y posiblemente más triste que jamás haya tenido. El año fue 2005. Mi interés en escribir un sistema de gestión de contenido en Java para la empresa que compró nuestra startup, se había ido agotando, mientras que mi verdadera pasión era trabajar en compiladores y otra infraestructura de lenguaje de programación (principalmente SBCL). Un día descubrí un anuncio de trabajo para especialistas en compiladores, algo raro en aquel momento y lugar. Volé a la entrevista de trabajo, pero no hice las preguntas correctas e ignoré un par de señales de advertencia. Oops. Resultó ser una aventura en retrocomputing.
194 meneos
4706 clics
Microprocesadores modernos: una guía de 90 minutos [ENG]

Microprocesadores modernos: una guía de 90 minutos [ENG]  

Te acabas de graduar en informática, donde diste un curso de hardware como parte de tu carrera, aunque quizás eso fue hace algunos años y te has perdido los detalles de diseño de procesadores desde entonces. En particular es posible que no tengas conocimiento de algunos temas clave que se desarrollaron rápidamente en los últimos tiempos, como pipelining, multi-core y multi-threading simétrico, instrucciones con vectores (SIMD) y cachés y jerarquía de memoria. Pero no te preocupes. Este artículo te pondrá al día rápido.
92 102 1 K 60
92 102 1 K 60
17 meneos
236 clics
Explorando el kernel Linux: los secretos de Kconfig/kbuild [ENG]

Explorando el kernel Linux: los secretos de Kconfig/kbuild [ENG]

El sistema de configuración/construcción del kernel Linux, también conocido como Kconfig/kbuild, ha existido durante mucho tiempo, desde que el código del kernel de Linux migró a Git. Sin embargo, como infraestructura de soporte rara vez es el centro de atención; incluso los desarrolladores de kernel que lo usan en su trabajo diario nunca lo piensan realmente. Para explorar cómo se compila el kernel de Linux, este artículo se sumergirá en el proceso interno de Kconfig/kbuild, explicando cómo se generan los archivos .config y vmlinux/bzImage y mostrando un truco inteligente para el seguimiento de dependencias.
271 meneos
6275 clics
Cómo usé una búsqueda sencilla en Google para extraer contraseñas de docenas de tarjetas públicas de Trello [ENG]

Cómo usé una búsqueda sencilla en Google para extraer contraseñas de docenas de tarjetas públicas de Trello [ENG]

Hace unos días, el 25 de abril, mientras investigaba, descubrí que muchas personas y compañías están poniendo su información confidencial en sus tarjetas públicas de Trello. Información como errores no arreglados y vulnerabilidades de seguridad, credenciales de sus cuentas de redes sociales, cuentas de correo electrónico, tableros de administración y servidores, lo que usted quiera, están disponibles en sus tarjetas de Trello públicas que están siendo indexadas por todos los motores de búsqueda y cualquiera puede encontrarlos fácilmente.
126 145 2 K 53
126 145 2 K 53
327 meneos
6117 clics
Laboratorio para practicar inyecciones SQL (más de 60 ejercicios/lecciones)

Laboratorio para practicar inyecciones SQL (más de 60 ejercicios/lecciones)

El holandés Audi-1 tiene un repositorio en Github muy interesante llamado SQLI-LABS que nos permitirá montar rápidamente una plataforma para aprender y practicar inyecciones SQL de diferentes tipos: inyecciones basadas en error (Union Select): 1. String 2. Integer; inyecciones basadas en error (Double Injection Based); inyecciones ciegas: 1. booleanas 2.basadas en tiempo; inyecciones de peticiones update; inyecciones de peticiones insert; inyecciones en la cabecera HTTP 1. basadas en referer. 2. basadas en user-agent. […]
133 194 5 K 25
133 194 5 K 25
99 meneos
1549 clics
Envío erróneo o controvertido, por favor lee los comentarios.

Programación en ensamblador de x86-64 desde Ubuntu [PDF|2,5 MB] [ENG]

El propósito de este texto es proporcionar una referencia para el lenguaje ensamblador de nivel universitario y los cursos de programación de sistemas. Este texto aborda el conjunto de instrucciones x86-64 para la popular clase de procesadores x86-64 que utilizan el sistema operativo Ubuntu de 64 bits. Si bien el código proporcionado y varios ejemplos deberían funcionar bajo cualquier sistema operativo de 64 bits basado en Linux, solo se han probado bajo Ubuntu 14/16/18 LTS (64 bits).
64 35 16 K 49
64 35 16 K 49
29 meneos
597 clics
¿Por qué usar un FPGA en lugar de una CPU o GPU? [ENG]

¿Por qué usar un FPGA en lugar de una CPU o GPU? [ENG]

Recientemente Intel compró Altera, uno de los mayores productores de FPGA. Intel pagó la friolera de 16.7 mil millones de dólares, por lo que es su adquisición más grande de la historia. Por otro lado, Microsoft está utilizando FPGA en sus centros de datos, y Amazon los está ofreciendo en sus servicios en la nube. Anteriormente, estos FPGA se usaban principalmente en ingeniería electrónica, pero no tanto en ingeniería de software. ¿Están los FPGA a punto de despegar para convertirse en alternativas serias a las CPU y GPU?
17 meneos
435 clics
Crypton: una recopilación para aprender criptografía defensiva y ofensiva

Crypton: una recopilación para aprender criptografía defensiva y ofensiva  

Ampliamos nuestro material de estudio para estas vacaciones con una fantástica recopilación de explicaciones e implementaciones de todos los ataques existentes en varios sistemas de cifrado, firma digital y algoritmos de hashing junto con ejemplos de retos de CTFs. Esta joya, que te hará ser una auténtica máquina en la categoría "crypto", la tenemos en un repositorio de Github gracias a Ashutosh Ahelleya aka s0rc3r3r de @teambi0s que ha nombrado su proyecto como Crypton.
14 meneos
424 clics
¿Cómo de rápido es un teclado PS/2? [ENG]

¿Cómo de rápido es un teclado PS/2? [ENG]

Hace unas semanas, surgió una pregunta interesante: ¿cómo es de rápido un teclado PS/2? Es decir, ¿cómo de rápido puede enviar códigos de escaneo (bytes) al controlador del teclado? Uno también podría preguntar: ¿realmente importa? Pues sí, importa. Resulta que el tiempo de ejecución de Borland Turbo Pascal 6.0, y probablemente algunas versiones relacionadas, manejan la entrada del teclado de una manera poco ortodoxa. En tiempo de ejecución se instala un controlador propio en INT 9/IRQ 1 (interrupción del teclado) que lee el puerto 60h (datos de teclado) para luego encadenar al controlador original que lee el puerto 60h de nuevo esperando leer el mismo valor.
11 3 0 K 34
11 3 0 K 34
36 meneos
158 clics
Bundle de Symfony para crear un sistema de votos basado en Menéame

Bundle de Symfony para crear un sistema de votos basado en Menéame

He subido un Bundle de Symfony para crear un sistema de votos basado en Menéame. Se pueden menear entidades (artículos o lo que sea), votar negativo, manejar los clics, mostrar el widget principal de menear y/o la barra inferior con votos anónimos, de usuarios y negativos. Se puede definir el porcentage máximo de votos anónimos, así como los mínimos votos anónimos permitidos antes de aplicar el porcentage máximo. También se pueden modificar las posibles razones del voto negativo y añadir traducciones. Traducciones incuidas en español e inglés.
21 15 0 K 42
21 15 0 K 42
178 meneos
3626 clics
Escribiendo un emulador de Game Boy desde cero [ENG]

Escribiendo un emulador de Game Boy desde cero [ENG]  

Siempre he querido escribir un emulador desde cero, pero me he resistido durante mucho tiempo porque es probablemente el proyecto de programación más avanzado que he querido hacer. Escoger un sistema para emular no es una opción fácil; el primer proyecto estándar de emulador parece ser un emulador CHIP-8. Así que después de leer mucha documentación, decidí escribir un emulador de Game Boy minimalista, sin soporte para mapeadores personalizados o sonido, al que llamé proyecto Cinoop.
84 94 4 K 41
84 94 4 K 41
185 meneos
6058 clics
¿Por qué uso un teclado IBM Model M que es más viejo que yo? [ENG]

¿Por qué uso un teclado IBM Model M que es más viejo que yo? [ENG]

El IBM Model M fue un teclado que se lanzó por primera vez en 1985 como un sucesor más económico del modelo F. Es difícil imaginar un teclado más caro ya que los teclados Modelo M cuestan una bomba incluso en esos días, pero es cierto. El Modelo F se basó en un resorte de pandeo capacitivo muy duradero, pero era costoso de producir, por lo tanto, IBM fabricó el Modelo M con un modelo de resorte de pandeo de membrana de menor costo. Al mismo tiempo, el Modelo M fue pionero en el diseño de ANSI 101-keys que todavía se utiliza en la actualidad.
90 95 5 K 56
90 95 5 K 56
15 meneos
354 clics
Ingeniería inversa práctica, primera parte: buscando puertos de depuración [ENG]

Ingeniería inversa práctica, primera parte: buscando puertos de depuración [ENG]  

En esta serie de publicaciones vamos a seguir el proceso de ingeniería inversa de un router. Más específicamente un Huawei HG533. En las primeras etapas, este es el tipo más básico de ingeniería inversa. Simplemente buscamos un puerto serie que los ingenieros que diseñaron el dispositivo dejaron en la placa para fines de depuración y soporte técnico. Aunque voy a explicar el proceso usando un router, se puede aplicar a toneladas de sistemas integrados domésticos. Desde impresoras hasta cámaras IP.
18 meneos
569 clics

Cómo una empresa de ingeniería eligió migrar a D [ENG]

Imagine que existe ese lenguaje de programación poco conocido con el que se disfruta de la programación en el tiempo libre. Sabes que está listo para el horario de máxima audiencia y sueñas con usarlo a diario en el trabajo. Esta es la historia sobre cómo hice realidad un sueño así al conseguir migrar una aplicación escrita en Pascal a D.
11 7 0 K 29
11 7 0 K 29
« anterior1234510

menéame