D

David Buchanan

da.vidbuchanan.co.uk · Personal blog · on HN since 2021

David Buchanan's blog on hacking, reverse engineering, Python tricks and protocol quirks such as Bluesky's ATProto and PNG file tricks.

What HN saysCommenters cite it on ATProto account migration and identity, a series on a CHIP-8 emulator, and Python SIMD-style tricks.
42HN people shared it
19linked it in comments
40stories submitted
3.2Kstory points
3 months agolast shared
2021people per year2026

Most-shared posts

  1. 1
    Adversarial ATProto PDS Migration
    6 people · 8 points · first shared 2025 · discussion on HN
  2. 2
    The Quest for Netflix on Asahi Linux
    6 people · 5 points · first shared 2023 · discussion on HN
  3. 3
    SIMD in Pure Python
    5 people · 258 points · first shared 2024 · 21 comments on HN
  4. 4
    Jailbreaking RabbitOS
    4 people · 1.1K points · first shared 2024 · 265 comments on HN
  5. 5
    Shell permission errors for busy coding agents
    4 people · 4 points · first shared 2025 · discussion on HN
  6. 6
    Exploiting ACropalypse: Recovering Truncated PNGs
    4 people · 1 points · first shared 2023 · discussion on HN
  7. 7
    Can you get root with only a cigarette lighter?
    3 people · 682 points · first shared 2024 · 150 comments on HN
  8. 8
    PNG files can be animated via network latency
    3 people · 511 points · first shared 2021 · 106 comments on HN
  9. 9
    Hijacking Bluesky Identities with a Malleable Deputy
    3 people · 4 points · first shared 2023 · discussion on HN
  10. 10
    Colliding Secure Hashes
    3 people · 3 points · first shared 2023 · 1 comments on HN
  11. 11
    S32 Unix Clock
    3 people · 3 points · first shared 2023 · discussion on HN
  12. 12
    Text Editors Should Be Worse
    2 people · 18 points · first shared 2024 · 13 comments on HN
  13. 13
    Show HN: CSS Gradient Fixer
    2 people · 7 points · first shared 2021 · 3 comments on HN
  14. 14
    V8 Heap pwn and /dev/memes – WebOS Root LPE
    2 people · 4 points · first shared 2021 · discussion on HN
  15. 15
    UofTCTF 2025: An AES Timing Side-Channel
    2 people · 3 points · first shared 2025 · discussion on HN

What HN people wrote when they linked it

Retr0id · 2024-04-30
My favourite quote from this series of blog posts: > One thing to note about this instruction [FX1E] is that it will quite happily let you sail off into the uncharted waters of memory beyond the on-board 4K, because it will only wrap when the offset takes the address beyond 65535. The Chip-8 programmer must ensure it contains a meaningful value. https://www.laurencescotford.net/2020/07/19/chip-8-on-the-cosmac-vip-i… This behaviour doesn't matter much on a COSMAC VIP, but on modern emulators it presents an opportunity for OOB accesses, and you'd be amazed how many independent implementations stumbled across this same bug. I wrote about exploiting one of them (to achieve an emulator escape) here https://www.da.vidbuchanan.co.uk/blog/bggp3.html
kyle-rb · 2026-07-10
If you don't like BlueSky managing your keys, the alternative to did:plc is did:web. Unfortunately, afaiu, it's not possible to migrate[0]. If this is something you really care about, and you trust yourself to manage your own private keys, you should probably bite the bullet and do it now. Make a pinned post on the old account to point to the new one. That's the one part you can't migrate; everything else you can change while retaining your followers, posts, etc. Setting your handle to a domain name via DNS[1] is intended to be easy for non-technical users (especially with registrars adding one-click forms for doing so) and also decoupled from actual PDS hosting. Many users just want their handle to reflect their identity on the web, and are ok trusting BlueSky to host their PDS for free. Migrating to a new PDS is possible in both the cooperative case[2] or in the adversarial case[3]. The gist is that A: you should take regular backups by exporting your account data, and B: if you're using did:plc instead of did:web, you should register a backup key that has a higher priority than the key held by your PDS, so a malicious PDS can't simply migrate you back. [0] https://github.com/bluesky-social/atproto/discussions/2705 [1] Alternatively there's an option for HTTP handle resolution instead via `/.well-known/atproto-did` [2] https://atproto.com/specs/account#pds-account-migration [3] https://www.da.vidbuchanan.co.uk/blog/adversarial-pds-migration.html
danabramov · 2025-10-04
Neither of these is quite right. In AT, data is tied to identity (DID), not handles or hosting. That’s what my article tried to explain. If you lose the “handle” domain, all it means is that you won’t have a valid handle (which apps will tell you about) but your posts will remain up (they’re still addressable by your DID, which is how apps look things up). In the Bluesky app, for example, it would say “invalid handle” instead of your username. However, it’ll work. It’s the same situation as what happens if your domain expires or you delete your records. Your data is still there, you’re still “followed“ by the same people, etc. A handle is just an alias. All you’ll need to do is to change the handle, thereby attaching a new domain, through any app that has the “change handle” flow. (It’s enough to have one app that gives you free ones.) With hosting, it is similar (although there are barriers which need to be lowered). If your repo shuts down, you absolutely can move it somewhere else provided that you have a backup of it. Backups are trivial to automate on AT so this is something I expect hosting providers to offer. There are already third-party apps that regularly do backups for you. And you can export your repository from some clients as well (eg from the official Bluesky client). In the “happy” case, your hosting will cooperate with moving your repo to another host. See https://pdsmoover.com/info.html for the happy case. For the “unhappy” case where your old hosting…
gruez · 2022-02-24
That still might be to your eyes. The relevant effects are: 1. effects from your eyes (from looking at the strobing image) 2. PWM brightness controls causing your recordings to look like they strobe The site in the OP wasn't working, so I tried a demo site instead: https://www.da.vidbuchanan.co.uk/strobegate.html. I looked at the strobing image, closed the tab, and sure enough my monitor (IPS, 60hz) was showing some signs of flickering. It disappeared after a few minutes. However, I performed a second test where I opened the site and didn't look at it with my eyes. The strobe after effect did not show up. Even though I didn't look at the monitor, I verified afterwards that a strobe was shown by a phone video recording. I also did a slo-mo video recording of my monitor without any visible strobe effect, and there was visible strobing in the recording, probably from the shitty PWM. You should follow a similar procedure to rule out whether it's something with your eyes or not.
zahlman · 2026-07-29
For the "SWAB" techniques discussed in the previous piece (https://www.da.vidbuchanan.co.uk/blog/python-swar.html), using 5 bits per cell might be just fine anyway. In fact, because of how CPython implements bigints (with 15- or 30- bit "limbs", so that there's space for carries when doing addition) it lines up better with the memory layout (none of the cell values straddles a machine word boundary).
verdverm · 2026-06-21
How to adversarial migrate: https://www.da.vidbuchanan.co.uk/blog/adversarial-pds-migration.html *requires your own PLC key, which the vast majority of users do not have, protonmail has good prior art here (imo)
vsgherzi · 2026-03-12
a lot of people seem to not understand what used to go into running chrome on arm64 devices, this blog goes over it pretty well https://www.da.vidbuchanan.co.uk/blog/netflix-on-asahi.html
rrgok · 2025-05-02
I tried with the demo, but full content search does not work. I don't know if the demo is randomly generated, anyway this is the test I did. Text to search in the top search bar: RRP Page that contains that term: https://www.da.vidbuchanan.co.uk/blog/r1-jailbreak.html Result found: 0 Does this search the content of the archived pages?
mroche · 2024-07-01
Quick search turned up this: SIMD in Pure Python https://www.da.vidbuchanan.co.uk/blog/python-swar.html Don't let the "SIMD in Python" section fool you, it's a short stop on Numpy before putting it aside.
notpushkin · 2023-11-11
If you're willing to run a blob for DRM support, you can get it running in any Chromium flavour. (I would rather prefer torrents, though.) Related: The Quest for Netflix on Asahi Linux – https://www.da.vidbuchanan.co.uk/blog/netflix-on-asahi.html
albert_e · 2023-03-23
so this is very similar to the Acropalypse vulnerability recently published about Google Pixel Pro phones? https://www.da.vidbuchanan.co.uk/blog/exploiting-acropalypse.html
MontagFTB · 2021-12-17
Apple is optimizing some PNGs so they can encode/decode them in parallel. These PNGs are still compliant PNGs, so non-Apple decoders can still read them. This optimization includes an `iDOT` chunk that macOS handles but other PNG readers do not, enabling the optimization. There is a bug in the macOS parallel decoder, however, causing these images to look different on macOS than they do elsewhere. (Even within the same macOS instance, you can get two different results from the same image.) The author has also created a PNG that demonstrates a race condition within the macOS PNG decoder: https://www.da.vidbuchanan.co.uk/widgets/pngdiff/race.html
OneDeuxTriSeiGo · 2025-09-07
This isn't strictly true. If you can sign a did document (i.e. you've set up a recovery key), even if your old PDS refuses to cooperate (or disappears entirely) you can still move to a new PDS and deactivate your account on the old PDS (as this is done via your did document)[1]. It's not exactly trivial to do currently but tools are being developed that automate the process and render all this down into easy to use apps. > or if you get banned from the PLC directory This is technically true (for did:plc users) but this isn't a thing that's happened in the past and in the event it happens in the future (or even is seriously discussed in the future), did:plc will be in a substantially different situation than it is currently and the community should be situated by then to handle a federated or coordinated PLC directory. 1. https://www.da.vidbuchanan.co.uk/blog/adversarial-pds-migration.html

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close