Sistemas & Desarrollo
18 meneos
406 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
15 meneos
588 clics
¿Crees que sabes mucho de C? [ENG]

¿Crees que sabes mucho de C? [ENG]

Muchos programadores dicen que saben C. Tiene la sintaxis más famosa, tiene más de 44 años de historia y no tiene características oscuras. ¡Es fácil! Bueno, muchos programadores dicen que saben C. Lo más probable es que lo hayan aprendido en la universidad y que tengan algún tipo de experiencia en ello, porque en realidad no hay mucho más que saber. Pero en realidad C no es tan simple. Pero si piensas que sí lo es, prueba a hacer este test.
13 2 0 K 37
13 2 0 K 37
16 meneos
624 clics

El dibujado de texto en pantalla te odia [ENG]  

¿Cuán difícil puede ser dibujar texto en pantalla? Pues resulta que es extremadamente difícil. Hasta donde yo sé no hay ningún sistema, literalmente, que dibuje texto en pantalla ‘perfectamente’. Todos los sistemas hacen lo máximo posible, aunque algunos hacen más que otros. El tema aquí es que en realidad no hay respuestas correctamente consistentes y que, además, todo es más importante de lo que se cree y todo afecta a todo.
13 3 0 K 61
13 3 0 K 61
19 meneos
313 clics
Tutorial interactivo de cómo crear un cargador de arranque en ensamblador de x86 [ENG]

Tutorial interactivo de cómo crear un cargador de arranque en ensamblador de x86 [ENG]

La programación en ensamblador puede ser intimidante para la gente que nunca lo ha investigado más allá de haberle echado un vistazo, pero tenerlo como base para comprender el funcionamiento de los ordenadores que usamos puede ser útil para saber lo que realmente se está ejecutando la CPU. Para iniciar un ordenador moderno con arquitectura x86 se necesita ir paso a paso por la historia de esta arquitectura. Y esto es hecho por el cargador de arranque en la mayoría de los casos.
14 5 1 K 50
14 5 1 K 50
22 meneos
493 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
18 meneos
295 clics
El nacimiento de la shell BASH [ENG]

El nacimiento de la shell BASH [ENG]

El scripting de shell es una disciplina esencial para cualquier administrador de sistemas, y el shell predominante en el que las personas escriben scripts hoy en día es Bash. Bash viene por defecto en casi todas las distribuciones de Linux y las versiones modernas de MacOS y está programado que sea una aplicación nativa de Windows Terminal. Bash, se podría decir, está en todas partes. Entonces, ¿cómo se llegó a este punto? Todo comenzó con Unix…
15 meneos
313 clics
Guía completa de LLVM para creadores de lenguajes de programación [ENG]

Guía completa de LLVM para creadores de lenguajes de programación [ENG]  

Esta es una parte de una serie de publicaciones donde se crea una lenguaje de programación que soporta concurrencia y orientación a objetos llamado Bolt. En esta parte concretamente se habla de usar LLVM como backend de dicho lenguaje de programación para crear el código ejecutable a partir del lenguaje intermedio (IR) de LLVM proveniente del análisis sintáctico y semántico de fases previas.
13 2 0 K 43
13 2 0 K 43
17 meneos
263 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.
13 meneos
178 clics
Cómo importar grandes bases de datos en poco tiempo para el desarrollo

Cómo importar grandes bases de datos en poco tiempo para el desarrollo

En el día a día, nuestros desarolladores requieren una base de datos para realizar su trabajo. Estas bases de datos necesitan ser actualizadas a menudo por varios motivos; puede que simplemente necesites datos más frescos o que has realizado un cambio de modelo de forma errónea y necesitas volverlo atrás. Las bases de datos con las que trabajamos pueden llegar a ser bastante grandes, y restaurar una copia puede ser un proceso de entre 30 y 80 minutos según el tamaño de esta y la capacidad de la máquina donde se ejecuta...
17 meneos
463 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.
15 meneos
498 clics
La belleza de MIPS

La belleza de MIPS  

Todos los ordenadores, móviles y en general, cualquier dispositivo que lleva software necesita un procesador. Los procesadores se agrupan por familias, familias de procesadores que se programan igual, en un lenguaje llamado ensamblador. La más popular es Intel x86, presente en cualquier PC y en algunos móviles, tablets y servidores. Pero no voy a hablaros hoy de x86, ni de ARM, sino de MIPS. El ensamblador hecho bello. Adentrémonos en este mundo. Si nunca has visto ensamblador, este es tu momento. Si ya lo has visto, quizá te apetezca recordar.
12 3 0 K 37
12 3 0 K 37
18 meneos
208 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
12 meneos
372 clics
Doce ideas de la filosofía Clean que no pueden faltar en tu código

Doce ideas de la filosofía Clean que no pueden faltar en tu código

Si has oído conceptos como SOLID, conoces a personas como Uncle Bob, o eres un experto en arquitecturas, seguro que has oído hablar sobre Clean o el código limpio. Esta filosofía básicamente aglutina un conjunto de ideas que pretenden hacer que el código sea más fácil de leer, mantener, extender y menos propenso a errores. La idea original surgió gracias al libro del mismo nombre escrito por Robert C. Martin (Uncle Bob), y del que he querido extraer algunas ideas que creo que son interesantes.
14 meneos
153 clics
maybe: comprueba qué hace realmente un comando antes de hacerlo

maybe: comprueba qué hace realmente un comando antes de hacerlo  

¿Cuántas veces has ejecutado algún script en Linux confiando ciegamente en que hará su “supuesto” cometido? ¿Y encima como root? No corras más riesgos innecesarios… maybe es una utilidad que permite validar las funciones que realiza un comando antes de llevarlas a cabo. Para ello ejecuta procesos bajo el control de ptrace (con la ayuda de la biblioteca Python-ptrace). Cuando se intercepta una llamada al sistema que está a punto de realizar cambios en el sistema de archivos, registra esa llamada y luego […].
12 2 0 K 40
12 2 0 K 40
21 meneos
278 clics
Googler, una herramienta de línea de comandos para buscar en Google desde el terminal [ENG]

Googler, una herramienta de línea de comandos para buscar en Google desde el terminal [ENG]  

Googler es una potente herramienta desarrollada en Python para acceder a las búsquedas de Google (web y noticias) desde la línea de comandos en cualquier terminal de Linux.
11 10 0 K 41
11 10 0 K 41
15 meneos
263 clics
¿Vale la pena PHP 7?

¿Vale la pena PHP 7?

Un análisis rápido de lo nuevo de PHP 7.
11 4 0 K 38
11 4 0 K 38
13 meneos
1185 clics
Comparando el rendimiento de C, C++ y D con un proyecto real [ENG]

Comparando el rendimiento de C, C++ y D con un proyecto real [ENG]

Hace tiempo escribí una entrada donde comparaba el rendimiento de C y C++ en un proyecto real. Hoy he migrado ese proyecto a D y he hecho los mismos tests. Estos son los resultados.
19 meneos
185 clics
¿Qué es Clonezilla? Tu amigo ante los desastres

¿Qué es Clonezilla? Tu amigo ante los desastres  

Clonezilla es un software libre de clonación de discos enteros o particiones. Por eso te puede salvar de un buen desastre, permitiéndote disponer de un backup o copia de seguridad de tu sistema o datos sin que se vean afectados por un fallo físico de tu hardware de almacenamiento o por cualquier otro problema de software, como por ejemplo un ransomware que te cifre el contenido de tu disco y debas pagar un rescate si quieres recuperarlo.
22 meneos
202 clics
Ejecutar de forma transparente binarios de cualquier arquitectura en Linux mediante QEMU y `binfmt_misc` [ENG]

Ejecutar de forma transparente binarios de cualquier arquitectura en Linux mediante QEMU y `binfmt_misc` [ENG]  

¿Qué? ¿Se puede hacer eso en Linux? Pues resulta que sí se puede. Lo primero, veamos un ejemplo en acción. En este caso se coge un binario de una Raspberry Pi, que es un binario para arquitectura ARM, y se ejecuta en una máquina x86_64 de forma transparente. Evidentemente, si esto se intenta hacer directamente no funcionará, pero basta con configurar ciertas características para que lo haga.
11 11 0 K 34
11 11 0 K 34
13 meneos
201 clics

¿Cuántas instrucciones tiene la arquitectura Intel x86? [ENG]

Aunque parezca mentira, es sorprendentemente difícil dar una respuesta correcta. De hecho, todo depende de cómo se cuenten. Y los detalles al respecto son bastante interesantes. Para no dejarte colgado: Intel tiene un software para codificar y decodificar instrucciones llamado XED que indica que hay 1503 instrucciones en la arquitectura x86, pero depende de cómo se cuenten. Por ejemplo, “ADD” y “LOCK ADD” son diferentes instrucciones, pero algunos ensambladores las cuentan como una sola, ya que la segunda es igual que la primera más un prefijo.
11 2 0 K 56
11 2 0 K 56
14 meneos
436 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
18 meneos
591 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
12 meneos
51 clics

Lanzada la versión 2.9 de Git [ENG]

Se ha lanzado la versión 2.9 del sistema de control de versiones Git. En esta versión se incluyen tanto corrección de errores como nuevas características, entre las que se incluyen: gestión de submódulos más rápida y flexible; mejora en la visualización de diffs; chequeo de commits al hacer rebase; mejora en la presentación de los mensajes de log; etc.
16 meneos
179 clics
Canonical lanza LXD, el hipervisor más rápido del mundo [ENG]

Canonical lanza LXD, el hipervisor más rápido del mundo [ENG]

Canonical ha lanzado hoy LXD, el hipervisor más rápido del mundo, que adopta un enfoque de contenedores puros para virtualización en Linux ofreciendo rendimiento y ventajas dramáticas tanto sobre VMware ESX como sobre Linux KVM para la infraestructura de nube privada y/o pública. LXD ofrece hasta 15 veces la densidad de KVM para cargas de trabajo de inactividad y reduce drásticamente la latencia con un mayor rendimiento de E/S en cargas de trabajo intensivas tales como telecomunicaciones NFV, Big Data y aprendizaje automático.
15 meneos
334 clics
Xerox Alto zero-day: rompiendo la protección por contraseña de un sistema de 45 años [ENG]

Xerox Alto zero-day: rompiendo la protección por contraseña de un sistema de 45 años [ENG]

Hemos estado archivando un montón de viejos paquetes de discos de Xerox Alto de la década de 1970. Algunos de ellos resultaron estar protegidos por contraseña, así que como necesitaba encontrar la forma de saltar esta protección, desarrollé una forma de desactivarla, además de un programa para encontrar la contraseña casi al instante. A este ataque lo hemos llamado XeroDay, según una sugerencia de un comentarista de Reddit.

menéame