hardware hacking

Table of Contents

1. hardware hacking

1.1. hcon 2026 hardware ctf

https://github.com/therealdreg/hcon2026hwctf

screen /dev/ttyACM0
picotool info -uf

1.3. Ingeniería inversa de PCBs

https://pcbtracer.com/
Se podría utilizar KiCad también? Se puede actualizar un esquemático desde la PCB

1.4. Ingeniería inversa de silicio

1.4.3. Microscopio

Mirar PUMA
https://www.photomacrography.net/forum/viewtopic.php?t=47989
https://www.youtube.com/watch?v=cAEB10K8PqI
https://www.youtube.com/watch?v=uB48D5KueU8
Para colocar el manipulador de tilt usar muchas pinzas para pasar primero hasta un lado y luego hacia el otro. Primero cojer una pinza, estirar el muelle, coger otra y trabarlo para que no baje
Añadir un “agujero negro” al otro lado del divisor de haz
Hacerlo que se puedan acoplar distintas partes (pinhole y agujero negro) para poder probar distintas cosas
No me cierra bien el tapón rosca LED pero con
Problema de cómo enganchar el LED en la estructura, mucho calor da el LED
Añadir control de luminosidad al LED?

1.4.4. righto

1.4.4.1. Reverse engineering CMOS, illustrated with a vintage Soviet counter chip

PMOS transistors are generally larger than NMOS transistors because they are weaker. Another way to distinguish them is by their connection in circuits. As will be seen below, PMOS transistors in logic gates are connected to power while NMOS transistors are connected to ground.

1.5. Decapado

1.5.3. Identificación de chips

https://www.ti.com/lit/sg/sdyu001ac/sdyu001ac.pdf
6 Appendix C: Logic Part Number Naming Conventions
De momento he visto XG479 para un CD4069BE
También GI9248 para uno de aliexpress

1.6. Proyecto decapado CD4000

  1. Empezar por los chips serie 4000 que son grandecitos y fáciles de hacer ingeniería inversa
  2. Montar el microscopio en la CNC que tengo para hacer fotos buenas stitcheando varias fotos en un mosaico
    Manualmente mejor utilizar bcnc que puedes cambiar el parámetro de configuración para que tenga distintos pasos en eje XY y en eje Z, además de permitir definir tus pasos (50µm por ejemplo) en ~/.bCNC
    1. Automatizar el tomado de imágenes
      1. Automatizar el recorido de la CNC y pausar para tomar una foto y enfocar
      2. Automatizar sacar una foto: con pyuscope puedo sacar una foto (en blanco y negro, o a menor resolución)
        1. Para sacar una foto con la cámara, puedo poner un fsnotify que cuando se cree una imagen en la carpeta de guardado, dispare los infrarrojos
      3. Automatizar el ajuste enfoque tomando una foto y haciendo análisis de fourier ya lo hace pyuscope
  3. Diseñar un mecanismo de altura ajustable para el tubo. No será justo de 160mm, se pueden tomar varias imágenes a ver cuál tiene menos aberración cromática
  4. Cuando ya tenga eso creo que me meteré con el ácido fluorhídrico del demonio para quitar la capa de SiO2 y aluminio y ver lo que hay debajo, y con eso ya puedo hacer ingeniería inversa completa
  5. Luego con ácido nítrico (quizás ya lo envío a algún sitio) puedo decaparlo y que siga funcionando, y podría hacer microprobing (pinchar señales intermedias) y sacarlas por un osciloscopio
  6. Creo que para poder pinchar silicio necesitaría agujas de tungsteno ( y probablemente eliminar con una máscara de manera selectiva el óxido de silicio, quizás depositar algo de metal como níquel a partir de una sal), tengo que ver cómo montarlas (probablemente también motores para micromanipulación, puedo utilizar proyectos ya hechos)
  7. semiconductor manufacturing también! Una vez que tengo algo para atacar el SiO2, puedo utilizar el láser de la CNC para fabricar máscaras y tengo todos los aparatos de tungsteno para hacer microprobing

https://www.richis-lab.de → chips explicados de este estilo

1.6.1. Cómo pegarlos

Pegar con cianocrilato, se disuelve en acetona
Especialmente las pastillas más diminutas son complicadas de pegar sin que se llegen de pegamento. Para ello, echar el CA en un destornillador plano y aplicar muuy poco
Las pastillas más diminutas también son las que más se angulan con el pegamento, lo que quiere decir que puede que necesiten ángulos un tanto extremos para estar rectas respecto al microscopio

1.6.2. stitcheado

Utilizo Fiji (no vale bajarselo de los repos de AUR, tiene que estar instalado)
Downsampleo x8 (en cada dirección, x64 en total) las fotos que me vienen, y uso la herramienta Grid/Collection Stitching con 0.15 de Regression Threshold (en vez de 0.30) y Tile Overlap 40% para movimientos de 100µm en la CNC para la foto de CD4053, con Subpixel accuracy
2.5 y 3.5 de max/avg y absolute displacement threshold que creo que son por defecto
La herramienta de MIST también está bien, para darte una idea de los overlaps en las dos direcciones, aunque los stitching no son tan buenos
Oneliners para renombrar y downsamplear
No me funcionó bien el downsampling de Fiji y tuve que hacerlo por fuera

python -c '[print("mv PIC-%.4i.jpg PIC-%.4i.jpg" % (f, f-412), end="\n") for f in range(413, 719)]' | xargs -I {} bash -c '{}'
ls PIC* | xargs -P 20 -I {} ffmpeg -i {} -vf "scale=iw/2:ih/2:flags=lanczos" downsampled/{}

CD4053 movimiento de 100µm y mosaico de 17x18 funcionó con downsampling de x2

1.6.3. https://github.com/Labsmore/pyuscope

1.6.3.1. Cómo lanzarlo

En KDE Wayland necesita esto:

w=$(xdotool search --name "pyuscope main" | head -1)
xdotool windowunmap "$w"; sleep 0.5; xdotool windowmap "$w"

Para lanzarlo todo de una vez: 
QT_QPA_PLATFORM=xcb app/argus.py --microscope 3018 &; sleep 5; w=$(xdotool search --name "pyuscope main" | head -1)                                                 6s   pyuscope   12:39:03
xdotool windowunmap "$w"; sleep 0.5; xdotool windowmap "$w"

Con la cámara puedo ver el feed con VLC

gst-launch-1.0 v4l2src device=/dev/video0 ! image/jpeg ! jpegdec ! videoconvert ! autovideosink
v4l2-ctl --list-devices
Webcam gadget: UVC Camera (usb-0000:00:14.0-1):
        /dev/video0
        /dev/video1
        /dev/media0

USB2.0 HD UVC WebCam: USB2.0 HD (usb-0000:00:14.0-7):
        /dev/video2
        /dev/video3
        /dev/media1
v4l2-ctl -d /dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
        Type: Video Capture

        [0]: 'MJPG' (Motion-JPEG, compressed)
                Size: Discrete 320x240
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                Size: Discrete 640x480
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                Size: Discrete 1280x720
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                Size: Discrete 1920x1080
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                Size: Discrete 2560x1440
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                Size: Discrete 3840x2160
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)

Jogging con WASD, E para subir y Q para bajar
Z y C para cambiar el feed, F para movimiento fino
https://www.youtube.com/watch?v=5_XhBqsafe8
Hay que ejecutar antes de lanzarlo:
G10 L2 P1 X0 Y0 Z0
G92.1
Para resetear los ejes

Formato para stichear
c{xxx}_r{yyy}.jpg

1.6.3.2. Mejoras que se me ocurren
  • Botón para activar jogging en vez de con ratón
  • Opción dry run parece que está desactivada en la interfaz
  • Hay que abrirlo en las coordenadas de la CNC (0, 0) si quieres desactivar el homing automático
  • Mirar en qué parte de la

1.6.4. Cómo importar a mmo-chip-a

  1. Abrir en Inkscape y dibujar líneas de alineación, lo mejor es utilizar los pads para alineamiento
  2. Para archivos muy grandes funciona mejor GIMP Image>Guides>New Guide from selection

1.6.5. Documentación

https://gitbuilding.io/ ?
Añadir la base al repositorio y link a lo de totesalaz
Hacer fotos y un vídeo explicando cómo montar el manipulador de totesalaz

  1. Pinzas en ángulo para estirar el muelle
  2. Poner unas pinzas de pala ancha en dos segmentos muy alejados del muelle, y luego llevarlos cerca, interesa que no tenga tensión para poner la barra
  3. Repetir para el otro porque si no luego es más complicado
  4. Estirar el muelle y volver a colocar las pinzas en medio, pero esta vez en dos segmentos muy juntos y estirando bien el muelle para que llegue hasta arriba
  5. Coger con las otras pinzas el muelle, e ir soltando poco a poco el muelle de debajo. Si tienes tres pinzas y tres manos, puedes evitar soltar el muelle de debajo (tip: no es imprescindible que tengas tres brazos, puedes utilizar una pinza o llamar a otra persona)
  6. Repetir pasos 1. y 2. y repetir para el otro lado

Para que sea más sencillo se puede abrir los ganchos de los muelles, aunque a costa de que sea más fácil que se te escurra la barra
También puedes estirar los muelles a costa de que luego no esté tan tenso el micromanipulador
Hacer fotos y un vídeo explicando cómo montar la epi-iluminación
Hacer un vídeo de tilting bajo epi-iluminación
Explicar que hay problemas con el LED
Añadir tornillos y tuercas al BOM. Quiero que sean nyloc?

1.6.6. Cómo guardar bien los TIFF

En Fiji: Image>Color>Stack to RGB (si no te sale una imagen en blanco y negro, con 3 distintas capas)
Convertirlos a tiff piramidal (puede que ocupen más pero cargan más rápido)
Usar vipsdisp o qupath para visualizarlos

for file in *.tif; do echo $file; vips tiffsave $file ${file%.tif}_pyr.tif --tile --pyramid --compression deflate; done

1.6.7. Alineamiento de imágenes

Para instalar:
Help → Update… → Manage update sites → tick BIG-EPFL → Apply changes → restart.
Para llamarlo:
Plugins → Registration → StackReg and TurboReg.

1.7. sd card repair

1.8. Andrew bunnie Huang - Hardware hacking

  1. adventures in manufacturing
    small-volume production costs are dominated by setup and assembly, not parts, so that allows you to source less quality units, throw away 20% and get them quicker
  2. the story of chumby
    The end of Chumby, new adventures

    The question whether it would be faster for me to doit myself or to explain it to someone else, wait for them to do it, and possibly have to re-explain it and have them change it. That’s one reason I learned mechanical design […] being able to efficiently and effectively comunicate with a mechanical engineering team using their laguage was important to getting the job done right.

    • Challenges with retail sales
      • Dealing with the merchant buyers
        they think in terms of revenue per shelf space […] tend to look at your product in terms of so many grams of plastic and so many wires. They multiply those numbers by the commodity price of the raw materials to set expectations for how much they’ll pay to have it on the shelf
      • Marging
        Market development funds and other slush money have to be factored in. The shelf cost of a product is about three times your BOM cost
      • Cash flow
        Retailers are notoriously bad at paying on time
        This can be partially mitigated with financial instruments such as factoring insurance
      • Reverse logistics and returns
      • Contracts
  3. hardware hacking
    three copies:
    1. one to tear apart and never put back (fully decaped)
    2. one to probe (functionally decaped)
    3. one to keep relatively pristine: sanity-check whether a certain behavior is due to your probing or just how the hardware behaves

Author: Julian Lopez Carballal

Created: 2026-10-10 Sat 05:43