HackerTrans
TopNewTrendsCommentsPastAskShowJobs

arianvanp

4,126 karmajoined há 13 anos
Stalk me: http://arianvp.me

Submissions

Native Secure Enclave backed SSH keys on macOS

gist.github.com
459 points·by arianvanp·há 8 meses·192 comments

comments

arianvanp
·há 10 horas·discuss
3/4 of the responses here seem to be Moltbots given they all confidently claim they found the answer but it's all not correct
arianvanp
·há 10 horas·discuss
That is not the message. Did you read the article.
arianvanp
·há 10 horas·discuss
"find out with opencv what the hidden message is."

Skill issue on promoter side.

Fable oneshotted it for me.

""" Reveal a motion-camouflaged message hidden in video noise.

How it works: The background noise scrolls vertically at a constant rate (a few px/frame), while the noise inside the letters does not follow that motion. Any single frame looks like pure static. The decode is:

    1. Estimate the background's global motion between consecutive frames
       with phase correlation (this is the "optical flow" step - the motion
       is a pure translation, so one global vector suffices).
    2. Motion-compensate: shift frame t+1 back by that vector so the
       background lines up with frame t.
    3. Take the absolute difference. The background cancels almost
       perfectly; the letters (which don't move with the background)
       light up.
    4. Average the residual over a SHORT window of consecutive frame pairs
       (long windows smear the letters, because the text itself drifts
       slowly over time), blur lightly, and threshold with Otsu.
Usage: python reveal_hidden_message.py input.mp4 [output.png] """

import sys import cv2 import numpy as np

PAIRS = 5 # number of consecutive frame pairs to average (keep small!) BLUR_SIGMA = 6 # spatial blur of each residual, in pixels START_FRAME = 0 # where in the video to start

def load_gray_frames(path, count): cap = cv2.VideoCapture(path) frames = [] while len(frames) < count: ok, frame = cap.read() if not ok: break frames.append(cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY).astype(np.float32)) cap.release() if len(frames) < 2: raise SystemExit("Could not read enough frames from the video.") return frames

def main(): if len(sys.argv) < 2: raise SystemExit(__doc__) src = sys.argv[1] dst = sys.argv[2] if len(sys.argv) > 2 else "revealed_message.png"

    frames = load_gray_frames(src, START_FRAME + PAIRS + 1)
    h, w = frames[0].shape
    acc = np.zeros((h, w), np.float32)

    for i in range(START_FRAME, START_FRAME + PAIRS):
        a, b = frames[i], frames[i + 1]

        # 1) global background motion between the two frames
        (dx, dy), response = cv2.phaseCorrelate(a, b)
        dxi, dyi = int(round(dx)), int(round(dy))
        print(f"pair {i}: background shift = ({dx:+.2f}, {dy:+.2f}) px, "
              f"response = {response:.2f}")

        # 2) motion-compensate frame b by integer (dxi, dyi), then
        # 3) residual = |a - b_shifted| on the overlapping region
        ys = slice(max(0, -dyi), min(h, h - dyi))
        xs = slice(max(0, -dxi), min(w, w - dxi))
        ysb = slice(max(0, dyi), min(h, h + dyi) if dyi < 0 else h)
        # simpler: crop both to the common overlap
        a_ov = a[max(0, -dyi):h - max(0, dyi), max(0, -dxi):w - max(0, dxi)]
        b_ov = b[max(0, dyi):h - max(0, -dyi), max(0, dxi):w - max(0, -dxi)]
        resid = cv2.GaussianBlur(np.abs(a_ov - b_ov), (0, 0), BLUR_SIGMA)
        acc[:resid.shape[0], :resid.shape[1]] += resid

    # 4) normalize + Otsu threshold + light cleanup
    u8 = cv2.normalize(acc, None, 0, 255, cv2.NORM_MINMAX).astype(np.uint8)
    _, mask = cv2.threshold(u8, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
    kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
    mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)

    out = 255 - mask  # black text on white
    cv2.imwrite(dst, out)
    print(f"wrote {dst}")

    # optional: OCR if pytesseract is installed
    try:
        import pytesseract
        text = pytesseract.image_to_string(out, config="--psm 6").strip()
        print("OCR result:\n" + text)
    except ImportError:
        pass

if __name__ == "__main__": main()
arianvanp
·há 4 dias·discuss
Permanent Residency -- not citizenship.

Residency is purely about taxes, health insurance and right to work. You e.g. don't get voting rights in national elections.

EU citizens automatically get permanent residency in any EU country regardless of language.

E.g. I'm a permanent resident in Germany as a Dutchie.

(However I did end up picking up German and speak it now. But never had to do a language test)
arianvanp
·há 19 dias·discuss
I'm so done with no-content slop articles on HN.
arianvanp
·há 22 dias·discuss
Euhm what the hell are you on about. This is a fixed output derivation. The output per definition is reproducible. It either returns a value that matches the hash or it fails.

The whole point is that it allows introducing controlled side effects as long as the output is reproducible.

Bur you're extremely annoying to talk to so I'm not gonna continue engaging. Probably an LLM
arianvanp
·há 23 dias·discuss
Your second example i dont understand what you're getting at.

This is just a mechanism for the builder to inject credentials during fetch time. The derivation is still content addressed (it's a fixed output derivation).

The derivation isn't even marked as impure or whatever. There is just an environment variable that gets injected by the builder into the build env so you can authenticate.

This is required to talk to hugging face

What are you on about?

Or do you mean that the cas address of HF should directly be addreessable in nix itself?
arianvanp
·há 24 dias·discuss
Yes Apple Pay relies on security through obscurity even today. See the Veritasium recently made a video about it https://youtu.be/PPJ6NJkmDAo?is=iUuJ0W9xUHF_6gTU
arianvanp
·há 24 dias·discuss
If you follow the kernel mailing list container breakout exploits are currently a weekly occurrence
arianvanp
·há 24 dias·discuss
The litmus test here is whether they support https://blog.cloudflare.com/introducing-pay-per-crawl/ out of the box or not

They do not.
arianvanp
·há 26 dias·discuss
Are you able to do any form of highly available loadbalancing with this?
arianvanp
·mês passado·discuss
Zed downloads random binaries on startup without any permissions prompts. No thanks.
arianvanp
·mês passado·discuss
Given they use nx my bet is on developer laptop compromise through the nx vscode extension that also compromised GitHub engineer's laptop
arianvanp
·mês passado·discuss
Yeh... This month has been especially tough. I'm both a customer of cirrus labs (now bought up by OpenAI) and garnix (now bought up by Shopify) and I'm scared that whatever competitor I switch to is also just gonna get bought out.

Now I have two CI providers to replace by the end of the Quarter

Sigh
arianvanp
·mês passado·discuss
I only realized that dutch people are handful communicators when moving abroad. Apparently I do it unconsciously all the time.

For example we gesture when something tastes good and I don't even say "tastes good" out loud i just wave my hand next to my cheek. But quickly learnt that people think you're crazy in the head instead of complimenting the chef.

https://youtube.com/shorts/5a9Md32gSQg?is=fJ9BYQEt-CpEUE-g
arianvanp
·há 2 meses·discuss
This will be great for my homelab. Currently I have some hacky scripts to update he.net records whenever my ISP sends me a new ipv6 prefix but I'd prefer to reuse existing tooling.

Looking into switching today :D
arianvanp
·há 2 meses·discuss
I've tried and it's okay with Virtual desktop but the resolution is like on the uncanny line of fine and not good enough.

The quest being much lighter makes it nice though (but you should buy a third party headstrap that doesn't suck)
arianvanp
·há 2 meses·discuss
Was inspiring to meet you at NixCon. Thanks for all your energy and advocacy! You'll always be welcome in our open source community.
arianvanp
·há 2 meses·discuss
A more general metric that is useful to watch for is pressure stall information for CPU, IO and Memory.

https://docs.kernel.org/accounting/psi.html

I made a Prometheus exporter for it:

https://github.com/arianvp/cgroup-exporter
arianvanp
·há 2 meses·discuss
Ah yeh Zed. The editor that downloads random binaries for LSPs unprompted without asking me. That's not gonna end badly.

The only way I found out is because I run NixOS and it downloaded a dynamically linked binary that failed to start up and it spat out an error