<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="da">
    <title>x2q</title>
    <subtitle>x2q er en personlig blog med noter om software, Linux, netværk, betalinger, hjemmeservere, madlavning og diverse sideprojekter. Online siden 2010.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://www.x2q.net/da/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://www.x2q.net"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-04-22T00:00:00+00:00</updated>
    <id>https://www.x2q.net/da/atom.xml</id>
    <entry xml:lang="da">
        <title>bchunk — konverter .bin&#x2F;.cue-images til .iso og .wav på Linux og macOS</title>
        <published>2026-04-22T00:00:00+00:00</published>
        <updated>2026-04-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://www.x2q.net/da/post/bchunk-bin-cue-til-iso-wav/"/>
        <id>https://www.x2q.net/da/post/bchunk-bin-cue-til-iso-wav/</id>
        
        <content type="html" xml:base="https://www.x2q.net/da/post/bchunk-bin-cue-til-iso-wav/">&lt;p&gt;&lt;strong&gt;TL;DR —&lt;&#x2F;strong&gt; &lt;strong&gt;&lt;code&gt;bchunk&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — også kaldet &lt;strong&gt;&lt;code&gt;binchunker&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — er et lille, gammelt Unix-kommandolinjeværktøj, der tager et &lt;code&gt;.bin&lt;&#x2F;code&gt;&#x2F;&lt;code&gt;.cue&lt;&#x2F;code&gt;-par (et råt cd-image med et cue-sheet) og deler det op i en rigtig &lt;strong&gt;&lt;code&gt;.iso&lt;&#x2F;code&gt;-fil til datasporet&lt;&#x2F;strong&gt; og én &lt;strong&gt;&lt;code&gt;.wav&lt;&#x2F;code&gt;-fil pr. lydspor&lt;&#x2F;strong&gt;. Det er det rigtige værktøj, når et download eller arkiv har givet dig &lt;code&gt;game.bin&lt;&#x2F;code&gt; + &lt;code&gt;game.cue&lt;&#x2F;code&gt;, og du faktisk vil &lt;strong&gt;mounte datasporet&lt;&#x2F;strong&gt; eller &lt;strong&gt;brænde lydsporene&lt;&#x2F;strong&gt; igen. Installeres med &lt;code&gt;apt install bchunk&lt;&#x2F;code&gt; på Debian&#x2F;Ubuntu, &lt;code&gt;brew install bchunk&lt;&#x2F;code&gt; på macOS eller bygges fra kilden på alt andet. Brug er &lt;code&gt;bchunk [options] image.bin image.cue basename&lt;&#x2F;code&gt; — du får &lt;code&gt;basename01.iso&lt;&#x2F;code&gt;, &lt;code&gt;basename02.wav&lt;&#x2F;code&gt;, &lt;code&gt;basename03.wav&lt;&#x2F;code&gt; osv.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvad-bin-cue-er-og-hvorfor-du-vil-splitte-det&quot;&gt;Hvad .bin&#x2F;.cue er, og hvorfor du vil splitte det&lt;&#x2F;h2&gt;
&lt;p&gt;Et &lt;code&gt;.bin&lt;&#x2F;code&gt;&#x2F;&lt;code&gt;.cue&lt;&#x2F;code&gt;-par er et &lt;strong&gt;råt, bit-nøjagtigt cd-image&lt;&#x2F;strong&gt; plus et klartekst-sheet, der beskriver sporenes layout. &lt;code&gt;.bin&lt;&#x2F;code&gt; indeholder hver sektor af cd’en i rækkefølge — inklusive datasport (Mode 1 eller Mode 2), lydspor (rå Red Book PCM, 2352 bytes pr. sektor, intet filsystem) og pauserne imellem dem. &lt;code&gt;.cue&lt;&#x2F;code&gt; fortæller, hvor hvert spor begynder, og hvilken type det er.&lt;&#x2F;p&gt;
&lt;p&gt;Formatet er standard-output for cd-ripning-værktøjer som cdrdao og for gamle spil-arkiver, fordi det bevarer &lt;em&gt;alt&lt;&#x2F;em&gt; — pregaps, CD-TEXT, mixed-mode-cd’er, CD-DA-lyd. Det er også grunden til, at du ikke bare kan omdøbe &lt;code&gt;game.bin&lt;&#x2F;code&gt; til &lt;code&gt;game.iso&lt;&#x2F;code&gt; og mounte det: en mixed-mode-cd har &lt;strong&gt;ikke-filsystem-sektorer&lt;&#x2F;strong&gt; i starten, lydspor der slet ikke er filsystem, og per-sektor-headers, som ISO forventer fjernet.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;bchunk&lt;&#x2F;code&gt; laver konverteringen rigtigt:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Datasport&lt;&#x2F;strong&gt; bliver til ISO 9660-filer (&lt;code&gt;.iso&lt;&#x2F;code&gt;) — 2352-byte cd-sektorer bliver trimmet til 2048-byte ISO-sektorer, headers smidt væk.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Lydspor&lt;&#x2F;strong&gt; bliver til 16-bit stereo 44,1 kHz &lt;code&gt;.wav&lt;&#x2F;code&gt;-filer, hver med en ordentlig WAV-header.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Derefter kan du &lt;code&gt;mount -o loop&lt;&#x2F;code&gt; &lt;code&gt;.iso&lt;&#x2F;code&gt;’en, afspille &lt;code&gt;.wav&lt;&#x2F;code&gt;’erne eller fodre dem til en brænder.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;debian-ubuntu-mint&quot;&gt;Debian &#x2F; Ubuntu &#x2F; Mint&lt;&#x2F;h3&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install bchunk
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;macos-homebrew&quot;&gt;macOS (Homebrew)&lt;&#x2F;h3&gt;
&lt;pre&gt;&lt;code&gt;brew install bchunk
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;arch-manjaro&quot;&gt;Arch &#x2F; Manjaro&lt;&#x2F;h3&gt;
&lt;pre&gt;&lt;code&gt;sudo pacman -S bchunk
# eller fra AUR: yay -S bchunk
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;fedora-rhel-centos&quot;&gt;Fedora &#x2F; RHEL &#x2F; CentOS&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;bchunk&lt;&#x2F;code&gt; er ikke i standard-repoet; hent det fra RPMFusion eller byg fra kilden:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;git clone https:&#x2F;&#x2F;github.com&#x2F;hessu&#x2F;bchunk.git
cd bchunk
make
sudo cp bchunk &#x2F;usr&#x2F;local&#x2F;bin&#x2F;
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;windows&quot;&gt;Windows&lt;&#x2F;h3&gt;
&lt;p&gt;Brug WSL og &lt;code&gt;apt install bchunk&lt;&#x2F;code&gt;. Der findes en gammel native port, men WSL er nemmere.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;grundlaeggende-brug&quot;&gt;Grundlæggende brug&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;bchunk game.bin game.cue game
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Output:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;game01.iso    # datasport, mountbart som ISO 9660
game02.wav    # lydspor 1
game03.wav    # lydspor 2
...
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;code&gt;basename&lt;&#x2F;code&gt; (&lt;code&gt;game&lt;&#x2F;code&gt; i eksemplet) er præfikset for hver output-fil. Spornumre starter ved &lt;code&gt;01&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;nyttige-options&quot;&gt;Nyttige options&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;bchunk&lt;&#x2F;code&gt; har et lille, stabilt sæt flag — de fleste er der for at håndtere specifikke cd-særheder.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-v&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — verbose. Printer hvert spor, efterhånden som det behandles. Brug den første gang, du kører det, for at bekræfte, at du får det sporlayout, du forventer.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-w&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — skriv &lt;code&gt;.wav&lt;&#x2F;code&gt;-filer (default). Eksplicit form.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-r&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — rå lydoutput i stedet for &lt;code&gt;.wav&lt;&#x2F;code&gt;. Nyttigt hvis du piper ind i &lt;code&gt;sox&lt;&#x2F;code&gt; eller &lt;code&gt;ffmpeg&lt;&#x2F;code&gt; og ikke vil have et ekstra header-skrællende skridt.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-p&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — &lt;strong&gt;Psx&#x2F;PlayStation-mode&lt;&#x2F;strong&gt;. Behandler Mode 2-sektorer mere løst — nødvendigt for mange PlayStation-cd-images, hvor cue-sheetet er upræcist.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-s&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — byt byte-rækkefølge på lydspor. Nødvendigt hvis &lt;code&gt;.bin&lt;&#x2F;code&gt;’en er produceret af en ripper, der skrev little-endian-lyd, hvor &lt;code&gt;bchunk&lt;&#x2F;code&gt; forventer big-endian (eller omvendt). Symptom: output-&lt;code&gt;.wav&lt;&#x2F;code&gt; lyder som hvid støj.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-W&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — skriv &lt;code&gt;.wav&lt;&#x2F;code&gt; med en verificeret (i stedet for beregnet) header-størrelse. Sjældent nødvendigt.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-E&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — brug de nøjagtige spor-grænser fra cue-sheetet i stedet for at prøve sig frem. Brug dette hvis lydspor lyder klippet i starten eller slutningen.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;mount-af-den-resulterende-iso&quot;&gt;Mount af den resulterende .iso&lt;&#x2F;h2&gt;
&lt;p&gt;På Linux:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;sudo mkdir &#x2F;mnt&#x2F;cd
sudo mount -o loop game01.iso &#x2F;mnt&#x2F;cd
ls &#x2F;mnt&#x2F;cd
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;På macOS:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;hdiutil attach game01.iso
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;almindelige-faldgruber&quot;&gt;Almindelige faldgruber&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;illegal-or-unsupported-track-type-eller-tomt-output&quot;&gt;“Illegal or unsupported track type” eller tomt output&lt;&#x2F;h3&gt;
&lt;p&gt;Dit cue-sheet er malformet eller refererer til en &lt;code&gt;.bin&lt;&#x2F;code&gt;-størrelse, der ikke matcher. Åbn &lt;code&gt;.cue&lt;&#x2F;code&gt;’en i en teksteditor — den er klartekst — og tjek:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;FILE &quot;...&quot;&lt;&#x2F;code&gt;-linjen peger på det rigtige &lt;code&gt;.bin&lt;&#x2F;code&gt;-filnavn, case-sensitivt.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;TRACK&lt;&#x2F;code&gt;-entries er nummereret sekventielt med typerne &lt;code&gt;MODE1&#x2F;2352&lt;&#x2F;code&gt;, &lt;code&gt;MODE2&#x2F;2352&lt;&#x2F;code&gt; eller &lt;code&gt;AUDIO&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Index-entries (&lt;code&gt;INDEX 00&lt;&#x2F;code&gt;, &lt;code&gt;INDEX 01&lt;&#x2F;code&gt;) er MM:SS:FF, hvor FF er frames (0–74).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;lydspor-lyder-som-statisk&quot;&gt;Lydspor lyder som statisk&lt;&#x2F;h3&gt;
&lt;p&gt;Byte-rækkefølge-mismatch. Prøv igen med &lt;code&gt;-s&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;bchunk -s game.bin game.cue game
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;enkelt-iso-er-fin-men-lydspor-er-stille-eller-afkortede&quot;&gt;Enkelt &lt;code&gt;.iso&lt;&#x2F;code&gt; er fin, men lydspor er stille eller afkortede&lt;&#x2F;h3&gt;
&lt;p&gt;Prøv &lt;code&gt;-E&lt;&#x2F;code&gt; for at tvinge cue-sheet-eksakte grænser:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;bchunk -E game.bin game.cue game
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;playstation-psx-image-splitter-ikke-rent&quot;&gt;PlayStation&#x2F;PSX-image splitter ikke rent&lt;&#x2F;h3&gt;
&lt;p&gt;Brug &lt;code&gt;-p&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;bchunk -p psx.bin psx.cue psx
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Det er den mest almindelige klage på fora — PSX-cues er næsten altid Mode 2, og &lt;code&gt;bchunk&lt;&#x2F;code&gt; uden &lt;code&gt;-p&lt;&#x2F;code&gt; er streng overfor dem.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;flere-bin-filer-refereret-i-cue-sheetet&quot;&gt;Flere &lt;code&gt;.bin&lt;&#x2F;code&gt;-filer refereret i cue-sheetet&lt;&#x2F;h3&gt;
&lt;p&gt;Nogle rippere producerer én &lt;code&gt;.bin&lt;&#x2F;code&gt; pr. spor plus et samlende cue-sheet. &lt;code&gt;bchunk&lt;&#x2F;code&gt; forventer én &lt;code&gt;.bin&lt;&#x2F;code&gt; for hele skiven. Concatener dem først med &lt;code&gt;cat track01.bin track02.bin ... &amp;gt; combined.bin&lt;&#x2F;code&gt; og peg et single-file-cue på &lt;code&gt;combined.bin&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;alternativer-vaerd-at-kende&quot;&gt;Alternativer værd at kende&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;cdemu&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — user-space cd-emulator til Linux. Kan mounte en &lt;code&gt;.bin&lt;&#x2F;code&gt;&#x2F;&lt;code&gt;.cue&lt;&#x2F;code&gt; direkte uden at splitte. Nyttigt, hvis du bare vil &lt;em&gt;læse&lt;&#x2F;em&gt; datasporet midlertidigt.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;ecm-tools&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — andet format (&lt;code&gt;.ecm&lt;&#x2F;code&gt;), men samme problemområde. Værd at kende, hvis du støder på det.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;7z&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;p7zip&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — nyere 7-Zip-versioner kan liste og uddrage ISO 9660-datasport fra en rå &lt;code&gt;.bin&lt;&#x2F;code&gt;, men kan ikke redde lyd som &lt;code&gt;.wav&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;ffmpeg&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — hvis du vil have MP3 &#x2F; FLAC &#x2F; Opus i stedet for &lt;code&gt;.wav&lt;&#x2F;code&gt;, pipe rå-outputtet: &lt;code&gt;bchunk -r game.bin game.cue game &amp;amp;&amp;amp; ffmpeg -f s16be -ar 44100 -ac 2 -i game02.raw game02.flac&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;hvorfor-det-stadig-er-nyttigt-i-2026&quot;&gt;Hvorfor det stadig er nyttigt i 2026&lt;&#x2F;h2&gt;
&lt;p&gt;Optisk-medie-imaging har været et løst problem i årtier, men &lt;code&gt;.bin&lt;&#x2F;code&gt;&#x2F;&lt;code&gt;.cue&lt;&#x2F;code&gt; er stadig default-output fra &lt;code&gt;cdrdao&lt;&#x2F;code&gt;, stadig det gamle arkiver er lagret som, og stadig det, der dukker op, når nogen rækker dig en cd-backup, der ikke er en ISO. &lt;code&gt;bchunk&lt;&#x2F;code&gt; er et ~1.000-liniers C-program, skrevet i sen-1990’erne, der gør ét job korrekt og knap har ændret sig i tyve år. Det er i alle store distributioner, det kompilerer rent på moderne systemer, og det er det rigtige værktøj.&lt;&#x2F;p&gt;
&lt;p&gt;Hvis du prøver at redde data fra et gammelt cd-image: start her.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="da">
        <title>binlist.net — hvordan et ferie-sideprojekt fra Fuerteventura blev til iinlist.com</title>
        <published>2026-04-22T00:00:00+00:00</published>
        <updated>2026-04-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://www.x2q.net/da/post/binlist-net-iinlist-com-historien/"/>
        <id>https://www.x2q.net/da/post/binlist-net-iinlist-com-historien/</id>
        
        <content type="html" xml:base="https://www.x2q.net/da/post/binlist-net-iinlist-com-historien/">&lt;p&gt;&lt;strong&gt;TL;DR —&lt;&#x2F;strong&gt; &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;binlist.net&quot;&gt;binlist.net&lt;&#x2F;a&gt; er en &lt;strong&gt;gratis HTTP-API&lt;&#x2F;strong&gt;, der tager de første 6–8 cifre af et kortnummer (&lt;strong&gt;BIN&lt;&#x2F;strong&gt; eller &lt;strong&gt;IIN&lt;&#x2F;strong&gt;) og returnerer udsteder-bank, land, kort-netværk (Visa, Mastercard osv.), korttype (debit&#x2F;credit&#x2F;prepaid) og kategori. Jeg startede den &lt;strong&gt;i august 2013 på ferie på Fuerteventura&lt;&#x2F;strong&gt;, fordi jeg skulle bruge BIN-opslag til et andet projekt, og alt der fandtes var enten betalingspligtigt, forældet eller bag en tvivlsom scraper. Det var mit &lt;strong&gt;første Go-projekt nogensinde&lt;&#x2F;strong&gt;, ramte &lt;strong&gt;100.000 queries&#x2F;dag&lt;&#x2F;strong&gt; inden for uger og krydsede &lt;strong&gt;1 million queries&#x2F;dag i 2015&lt;&#x2F;strong&gt;. Den er stadig online, stadig gratis, stadig &lt;code&gt;curl&lt;&#x2F;code&gt;-venlig. Den kommercielle variant, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;iinlist.com&quot;&gt;iinlist.com&lt;&#x2F;a&gt;, er den, jeg medstiftede efter binlist.nets succes; det er samme idé med &lt;strong&gt;betalingsindustri-præcision&lt;&#x2F;strong&gt;, &lt;strong&gt;8-cifret IIN-understøttelse&lt;&#x2F;strong&gt; (påkrævet af ISO&#x2F;IEC 7812 siden 2022), &lt;strong&gt;ARDEF-baserede ranges&lt;&#x2F;strong&gt; og en SLA — bygget til banker, PSP’er, fraud-teams og issuere, der har brug for at behandle BIN-data som produktions-data.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;bin-vs-iin-et-grundkursus-pa-en-paragraf&quot;&gt;BIN vs IIN — et grundkursus på én paragraf&lt;&#x2F;h2&gt;
&lt;p&gt;De første seks (historisk) eller otte (siden 2017, obligatorisk fra 2022) cifre af et kortnummer er &lt;strong&gt;Issuer Identification Number&lt;&#x2F;strong&gt; (IIN). Det gamle navn, stadig vidt brugt, er &lt;strong&gt;Bank Identification Number&lt;&#x2F;strong&gt; (BIN). Givet en BIN&#x2F;IIN kan du afgøre:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Netværk&lt;&#x2F;strong&gt; — Visa, Mastercard, Amex, Discover, JCB, UnionPay, Diners.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Udsteder&lt;&#x2F;strong&gt; — banken eller fintech’en, der udstedte kortet.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Land&lt;&#x2F;strong&gt; — udstederens land, ikke nødvendigvis kortholderens, men en nyttig proxy for risiko-scoring, skatte-logik (EU&#x2F;EØS moms-OSS) og brugeroplevelse (foretrukket sprog, lokale betalingsmetoder).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Type&lt;&#x2F;strong&gt; — debit, credit, prepaid, deferred debit, charge.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Kategori &#x2F; produkt&lt;&#x2F;strong&gt; — Classic, Gold, Platinum, Business, Corporate osv. Nyttigt til acceptance-cost-routing (erhvervskort koster mere at modtage).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Alt dette er “følsomt” i den forstand, at udstedere ikke offentliggør fulde BIN-tabeller, og kort-netværkene betragter dem som proprietære. I praksis lækker BIN-ranges konstant — hver autorisation, netværket router, hver chargeback-dispute — og der er en hel bibranche omkring at holde rimeligt præcise BIN-tabeller.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvorfor-jeg-byggede-binlist-net-pa-ferie&quot;&gt;Hvorfor jeg byggede binlist.net på ferie&lt;&#x2F;h2&gt;
&lt;p&gt;Sommer 2013. &lt;strong&gt;Playitas, sydlige Fuerteventura&lt;&#x2F;strong&gt; — resortet på Atlanterhavs-siden nede ved Gran Tarajal. Lejet lejlighed, lille balkon, kanariefuglevinden gør sit. Jeg havde en idé til et sideprojekt, der skulle slå kort op via BIN, og jeg ville ikke betale en betalings-leverandør €200&#x2F;md for det. De eksisterende gratis muligheder var:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Wikipedias IIN-liste&lt;&#x2F;strong&gt; — rimelig præcis for velkendte netværk, elendig dækning for niche-udstedere, opdateret af frivillige, der ikke arbejder i payments.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Indsatte CSV’er på fora&lt;&#x2F;strong&gt; — anstændig dækning for US-udstedere, altid forældet.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Google Fusion Tables&lt;&#x2F;strong&gt; — udfaset af Google samme år.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Scrapere af merchant-bankers opslagsformer&lt;&#x2F;strong&gt; — ToS-overtrædende, skrøbelige.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Det jeg ville have, var &lt;code&gt;curl http:&#x2F;&#x2F;example.com&#x2F;40012345&lt;&#x2F;code&gt; der returnerer ren JSON. Så jeg byggede det.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;stakken-dengang&quot;&gt;Stakken (dengang)&lt;&#x2F;h3&gt;
&lt;p&gt;Det var &lt;strong&gt;mit første Go-projekt nogensinde&lt;&#x2F;strong&gt;. Jeg havde læst om Go et stykke tid og ville have en lille, velafgrænset undskyldning for at prøve det; en single-endpoint JSON-API over en in-memory BIN-tabel var perfekt. Ruby&#x2F;Sinatra ville have været hurtigere at taste for mig, men jeg ville lære noget, og memory- og latency-karakteristikken af en Go-binary viste sig at være præcis det, en gratis-tier offentlig API havde brug for.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Go&lt;&#x2F;strong&gt; — en enkelt binary, &lt;code&gt;net&#x2F;http&lt;&#x2F;code&gt;, ingen framework. Hele serveren fyldte nogle hundrede linjer.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;In-memory BIN-range-tabel&lt;&#x2F;strong&gt;, bygget ved boot fra en ~300 MB kilde-fil. Opslag var O(log n) over et sorteret slice.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Deployet på én Hetzner-VM&lt;&#x2F;strong&gt; fra dag ét (jeg overvejede kortvarigt Heroku, men Heroku’s gratis dyno-memory-grænser kunne ikke rumme en fuldt indlæst BIN-tabel).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;JSON + XML + CSV&lt;&#x2F;strong&gt;-svarformater, fordi 2013.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Dataseed&lt;&#x2F;strong&gt; fra en kombination af offentlige Wikipedia-scrapes, den gamle “Mars Base”-CSV fra 2009 og et sæt ranges, jeg havde akkumuleret på arbejde.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Samlet build-tid på den balkon: en weekend — hvoraf cirka halvdelen var mig, der fandt ud af &lt;code&gt;go build&lt;&#x2F;code&gt;, &lt;code&gt;GOPATH&lt;&#x2F;code&gt; (Go-moduler fandtes ikke endnu) og hvordan interfaces virkede. Jeg købte domænet mandag morgen, deployede binaryen og tweetede om det.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;trafik-kurven&quot;&gt;Trafik-kurven&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Uge 1:&lt;&#x2F;strong&gt; et par hundrede queries&#x2F;dag, mest mig, der testede.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Måned 1:&lt;&#x2F;strong&gt; ~&lt;strong&gt;100.000 queries&#x2F;dag&lt;&#x2F;strong&gt;, efter udviklere på Stack Overflow og et par e-handels-fora fandt den.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;I begyndelsen af 2015:&lt;&#x2F;strong&gt; krydsede &lt;strong&gt;1 million queries&#x2F;dag&lt;&#x2F;strong&gt; vedholdende, med spikes over 2M under flash-sale-events hos merchants, der kaldte den på hver checkout-page-load.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;At skalere til det punkt kostede næsten ingenting, fordi Go’s single-binary-fodaftryk betød, at en ~€5&#x2F;md VPS klarede det hele; flaskehalsen var længe NIC’en, ikke CPU eller memory.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;13-ar-senere&quot;&gt;13 år senere&lt;&#x2F;h3&gt;
&lt;p&gt;binlist.net kører stadig. Den er blevet flyttet infrastruktur nogle gange — Hetzner-VM → Hetzner-flåde → en lille flåde bag Cloudflare — og dataseed’et er blevet opdateret løbende, men API-overfladen (og det meste af den oprindelige Go-kode) er den samme. I dag serverer den &lt;strong&gt;titusinder af millioner opslag pr. måned&lt;&#x2F;strong&gt;, gratis, uden API-nøgle, med en soft-rate-limit på anonyme kaldere for at holde den ærlig.&lt;&#x2F;p&gt;
&lt;p&gt;Den har &lt;strong&gt;~2.000 Google-visninger&#x2F;md&lt;&#x2F;strong&gt; for queries som “binlist”, “bin list bank identification number”, “list of bank identification numbers” — den samler stadig den lange hale af udviklere op, der skriver samme spørgsmål, jeg skrev i Google i 2013.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvorfor-iinlist-com-findes&quot;&gt;Hvorfor iinlist.com findes&lt;&#x2F;h2&gt;
&lt;p&gt;binlist.nets data er god nok til “hvilket land er dette kort fra”-beslutninger — risiko-scoring, valuta-præsentation, analytics. Den er &lt;strong&gt;ikke&lt;&#x2F;strong&gt; god nok til:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Acceptance-cost-routing&lt;&#x2F;strong&gt;, hvor du router erhvervskorts-transaktioner gennem en anden processor.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Interchange++-modellering&lt;&#x2F;strong&gt;, hvor margin-forskellen mellem Classic og Platinum Mastercard er rigtige penge.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Compliance&lt;&#x2F;strong&gt; — ISO&#x2F;IEC 7812-migrationen fra 6-cifrede BIN’er til 8-cifrede IIN’er, obligatorisk fra 2022, brød en masse “jeg bruger bare de første seks cifre”-logik.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Co-badged kort&lt;&#x2F;strong&gt; (f.eks. Dankort + Visa Debit), hvor to netværk begge hævder kortet, og routing-beslutningen er forretningskritisk.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;ARDEF-præcision&lt;&#x2F;strong&gt; — Visas Account Range Definition File er sandhedskilden; du vil virkelig have data afledt af ARDEF til noget, der kører i produktion.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;iinlist.com løser det, kommercielt. Jeg medstiftede den med et lille team af folk, der kender payments-data professionelt. Det er produktet, som binlist.net er gratis-tier-annoncen for. Nogle af vores kunder er navne, du ville genkende; de fleste er ikke. De kommer alle til samme konklusion: &lt;strong&gt;BIN-data der er “stort set rigtige” koster mere i forkerte beslutninger, end præcise data koster i licens-gebyr&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvad-iinlist-com-specifikt-er&quot;&gt;Hvad iinlist.com specifikt er&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;8-cifret IIN-understøttelse&lt;&#x2F;strong&gt; på tværs af alle netværk.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Daglige opdateringer&lt;&#x2F;strong&gt; afledt af ARDEF + netværks-feeds + udsteder-annonceringer + intern verificering.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Rigere enrichment&lt;&#x2F;strong&gt;: korttype, produkt-kategori, udsteder-land, udsteder-branding, regulatoriske klassifikationer (commercial vs consumer, prepaid-flag osv.).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;SLA og support&lt;&#x2F;strong&gt;. Du kan oprette en ticket, og den når faktisk et menneske.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;On-prem &#x2F; self-hosted&lt;&#x2F;strong&gt;-mulighed for kunder, hvis compliance ikke tillader “BIN-opslag som tredjeparts-API-kald i autorisations-stien”.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Prissætning&lt;&#x2F;strong&gt; der giver mening for både en startende fintech (månedlig plan) og en etableret acquirer (årlig, ubegrænset).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;kan-jeg-bare-bruge-binlist-net-kommercielt&quot;&gt;Kan jeg bare bruge binlist.net kommercielt?&lt;&#x2F;h2&gt;
&lt;p&gt;Du kan bruge binlist.net, som du vil; der er ingen gate. Men:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Ingen SLA, ingen oppetidsgaranti, ingen kontrakt. Det er et sideprojekt, der er blevet oppe i 13 år.&lt;&#x2F;li&gt;
&lt;li&gt;Rate-limits på anonym trafik træder i kraft ved produktions-volumen. Køb en licens fra iinlist.com, og problemet er løst.&lt;&#x2F;li&gt;
&lt;li&gt;Hvis din regulator spørger, hvor dine BIN-data kommer fra, er “en gratis API, min udvikler fandt” ikke det svar, du vil give.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Til hobby, demo eller prototype: binlist.net er perfekt. Til alt, hvor forkerte BIN-data bliver en KPI: iinlist.com.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;brug-af-binlist-net-i-dag&quot;&gt;Brug af binlist.net i dag&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;$ curl -sH &amp;quot;Accept-Version: 3&amp;quot; https:&#x2F;&#x2F;lookup.binlist.net&#x2F;45717360
{
  &amp;quot;number&amp;quot;: { &amp;quot;length&amp;quot;: 16, &amp;quot;luhn&amp;quot;: true },
  &amp;quot;scheme&amp;quot;: &amp;quot;visa&amp;quot;,
  &amp;quot;type&amp;quot;: &amp;quot;debit&amp;quot;,
  &amp;quot;brand&amp;quot;: &amp;quot;Visa&#x2F;Dankort&amp;quot;,
  &amp;quot;country&amp;quot;: {
    &amp;quot;numeric&amp;quot;: &amp;quot;208&amp;quot;,
    &amp;quot;alpha2&amp;quot;: &amp;quot;DK&amp;quot;,
    &amp;quot;name&amp;quot;: &amp;quot;Denmark&amp;quot;,
    &amp;quot;emoji&amp;quot;: &amp;quot;🇩🇰&amp;quot;,
    &amp;quot;currency&amp;quot;: &amp;quot;DKK&amp;quot;,
    &amp;quot;latitude&amp;quot;: 56,
    &amp;quot;longitude&amp;quot;: 10
  },
  &amp;quot;bank&amp;quot;: {
    &amp;quot;name&amp;quot;: &amp;quot;Jyske Bank A&#x2F;S&amp;quot;,
    &amp;quot;url&amp;quot;: &amp;quot;www.jyskebank.dk&amp;quot;,
    &amp;quot;phone&amp;quot;: &amp;quot;+4589893300&amp;quot;,
    &amp;quot;city&amp;quot;: &amp;quot;Silkeborg&amp;quot;
  }
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;Accept-Version: 3&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — pin’er til API v3.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Anonym rate-limit&lt;&#x2F;strong&gt; — dokumenteret på siden, rigeligt til almindelig brug.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Ingen garantier&lt;&#x2F;strong&gt; — hvis svaret er forkert, indsend en rettelse på GitHub-repoet. Til kommercielle garantier: se iinlist.com.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;ofte-stillede-sporgsmal&quot;&gt;Ofte stillede spørgsmål&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;er-bin-iin-data-reguleret&quot;&gt;Er BIN-&#x2F;IIN-data reguleret?&lt;&#x2F;h3&gt;
&lt;p&gt;BIN-ranges i sig selv er ikke persondata under GDPR — en BIN identificerer en udsteder, ikke en person. Kombination af en BIN med et fuldt kortnummer er en anden historie og falder under PCI-DSS.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvad-aendrede-sig-med-8-cifret-iin-migrationen&quot;&gt;Hvad ændrede sig med 8-cifret IIN-migrationen?&lt;&#x2F;h3&gt;
&lt;p&gt;ISO&#x2F;IEC 7812 formaliserede 8-cifrede IIN’er i 2017 med en hård migrations-deadline i april 2022 for de store netværk. Hvis din kode stadig behandler kun de første seks cifre som udsteder-identifikatoren, fejlrouter du lydløst en voksende del af din trafik — moderne Visa- og Mastercard-udsteder-ranges er defineret ved 8 cifre.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvorfor-ikke-bare-sla-op-pa-klient-siden&quot;&gt;Hvorfor ikke bare slå op på klient-siden?&lt;&#x2F;h3&gt;
&lt;p&gt;Det kan du, med en statisk liste i browseren. Men du accepterer et trade-off: friskhed (den statiske liste er forældet inden for uger) eller bundle-størrelse (den nuværende BIN-tabel er megabytes ukomprimeret). En server-side-API er det konventionelle svar.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;logger-binlist-net-de-bin-er-jeg-slar-op&quot;&gt;Logger binlist.net de BIN’er, jeg slår op?&lt;&#x2F;h3&gt;
&lt;p&gt;Kun aggregeret analytics — nok til at opdage misbrug og rate-limite. Enkelte opslag er ikke knyttet til en bruger. iinlist.com har en strammere no-logging-holdning til kunder, hvor det betyder noget.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;er-kildekoden-open-source&quot;&gt;Er kildekoden open source?&lt;&#x2F;h3&gt;
&lt;p&gt;API-overfladen af binlist.net er på GitHub med retningslinjer for data-rettelser. Data-ingestion-pipelinen er ikke open source; den afhænger af netværks-feeds, der kræver licenser.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;er-binlist-net-og-iinlist-com-samme-firma&quot;&gt;Er binlist.net og iinlist.com samme firma?&lt;&#x2F;h3&gt;
&lt;p&gt;Adskilte projekter, overlappende oprindelse, samme operatør på min side. binlist.net er en personlig gratis-tjeneste; iinlist.com er et kommercielt selskab med medstiftere og medarbejdere. De to er driftsmæssigt uafhængige, men deler institutionel viden om BIN-data, som ikke er nem at akkumulere fra bunden.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;tretten-ar-inde&quot;&gt;Tretten år inde&lt;&#x2F;h2&gt;
&lt;p&gt;Det, jeg finder mest interessant ved binlist.net, er ikke trafikken — det er &lt;strong&gt;den slags spørgsmål&lt;&#x2F;strong&gt;, udviklere stadig skriver ind i Google i 2026: “what is a bin list”, “bin number example”, “list of issuer identification numbers”. Det er nøjagtig de queries, jeg skrev i 2013 på balkonen i Playitas. Payments som industri fortsætter med at tilføje lag, men de grundlæggende spørgsmål ændrer sig ikke.&lt;&#x2F;p&gt;
&lt;p&gt;Hvis du sidder på en strand med en laptop, og du har en kløe til et sideprojekt, der klør din egen ryg: byg det — og prøv imens det sprog, du har haft lyst til at lære. Nogle gange viser det sig, at mange har samme kløe, og tretten år senere har du en nyttig ting at pege dem på og et arbejdende kendskab til Go.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="da">
        <title>Mit CM3588-projekt — 4-NVMe ARM64 hjemme-NAS på 10 W tomgang</title>
        <published>2026-04-22T00:00:00+00:00</published>
        <updated>2026-04-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://www.x2q.net/da/post/cm3588-hjemme-nas-projekt/"/>
        <id>https://www.x2q.net/da/post/cm3588-hjemme-nas-projekt/</id>
        
        <content type="html" xml:base="https://www.x2q.net/da/post/cm3588-hjemme-nas-projekt/">&lt;p&gt;&lt;strong&gt;TL;DR —&lt;&#x2F;strong&gt; &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.friendlyelec.com&#x2F;wiki&#x2F;index.php&#x2F;CM3588_NAS_Kit&quot;&gt;FriendlyElec CM3588 NAS Kit&lt;&#x2F;a&gt; er et RK3588-baseret compute-modul på en carrier-board med &lt;strong&gt;fire M.2 NVMe-pladser (PCIe 3.0 x1 hver)&lt;&#x2F;strong&gt;, &lt;strong&gt;2,5 GbE&lt;&#x2F;strong&gt;, &lt;strong&gt;2× HDMI ud&lt;&#x2F;strong&gt;, &lt;strong&gt;USB 3.0&lt;&#x2F;strong&gt; og en 8-kernet ARMv8-CPU (4× Cortex-A76 + 4× Cortex-A55). Fuldt lastet med fire NVMe-drev går den i tomgang på ca. &lt;strong&gt;10 W&lt;&#x2F;strong&gt;, peaker omkring 20 W under tung I&#x2F;O, og læser&#x2F;skriver en NVMe på ca. 1 GB&#x2F;s (bus-grænsen, ikke drevet). Min egen kører Debian på mainline-kernel, med ZFS på root, fire 2 TB NVMe-drev i en &lt;code&gt;raidz2&lt;&#x2F;code&gt;-pool, Samba til LAN-shares og Tailscale til adgang uden for LAN. Den har erstattet en tower-PC med TrueNAS og skåret NAS-strømforbruget med ca. 60 W.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvorfor-netop-dette-board&quot;&gt;Hvorfor netop dette board&lt;&#x2F;h2&gt;
&lt;p&gt;Jeg havde kørt en tower-PC som hjemme-NAS i årevis: en brugt desktop, seks 3,5“-harddiske og en støjende blæser. Det virkede, men den trak 70–80 W tomgang og stod i et skab, der skulle have aktiv udluftning. Harddiskene var højlydte nok til, at jeg havde flyttet dem til det fjerneste hjørne af huset.&lt;&#x2F;p&gt;
&lt;p&gt;Tre ting, jeg ville have af en afløser:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Kun NVMe.&lt;&#x2F;strong&gt; Roterende harddiske er billigere pr. terabyte, men støjen, vibrationen og varmen er ikke værd for et hjemme-NAS på nogle få terabyte. 4× 2 TB NVMe er rigeligt.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;ARM, for strømforbrugets skyld.&lt;&#x2F;strong&gt; Et x86-board med 4× PCIe-pladser forbundet til NVMe ville trække 30–40 W tomgang. ARM kan klare det på 10.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Mainline Linux, ikke en leverandør-fork.&lt;&#x2F;strong&gt; Jeg vil have &lt;code&gt;apt-get dist-upgrade&lt;&#x2F;code&gt; til at virke, &lt;code&gt;zfs&lt;&#x2F;code&gt; til at bygge fra DKMS mod en nyere kernel og ingen tre år gammel vendor-BSP.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;CM3588 NAS Kit rammer alle tre.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hardware&quot;&gt;Hardware&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SoC:&lt;&#x2F;strong&gt; Rockchip RK3588 (4× Cortex-A76 @ 2,4 GHz + 4× Cortex-A55 @ 1,8 GHz, Mali-G610 GPU, 6 TOPS NPU). ARMv8.2-A.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;RAM:&lt;&#x2F;strong&gt; 8 GB LPDDR4X på det modul, jeg købte. 16 GB- og 32 GB-varianter findes.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Lagring:&lt;&#x2F;strong&gt; 64 GB eMMC on-module til OS + 4× M.2 Key-M 2280-pladser, hver &lt;strong&gt;PCIe Gen 3 x1&lt;&#x2F;strong&gt; (altså ~1 GB&#x2F;s pr. plads, ikke x4).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Netværk:&lt;&#x2F;strong&gt; 1× 2,5 GbE (Realtek RTL8125B).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;USB:&lt;&#x2F;strong&gt; 2× USB 3.0 Type-A, 1× USB 3.0 Type-C (DisplayPort alt-mode), 1× USB 2.0.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Video:&lt;&#x2F;strong&gt; 2× HDMI ud, 1× HDMI &lt;strong&gt;ind&lt;&#x2F;strong&gt; (RK3588’s capture-blok).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Strøm:&lt;&#x2F;strong&gt; 12 V barrel-jack. Et 60 W-strømforsyning er mere end nok.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Boardet er lille — ca. 10 × 10 cm — og passivt over SoC’en plus en lille blæser, der blæser hen over NVMe-drevene. Mit står fladt på en hylde uden kabinet.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;nvme-kompatibilitetsadvarsel&quot;&gt;NVMe-kompatibilitetsadvarsel&lt;&#x2F;h3&gt;
&lt;p&gt;Den ene ting, der er værd at vide: CM3588 NAS Kit er &lt;strong&gt;ikke kompatibelt med visse WD Blue SN580- og WD Black SN850-drev&lt;&#x2F;strong&gt; — linket flapper ved boot. Jeg bruger Samsung 990 EVO og Crucial P3 Plus; begge virker fint. Tjek FriendlyElecs wiki-kompatibilitetsliste før du køber NVMe-drev.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;os-og-filsystem&quot;&gt;OS og filsystem&lt;&#x2F;h2&gt;
&lt;p&gt;Jeg kører &lt;strong&gt;Debian 13 (trixie)&lt;&#x2F;strong&gt; med &lt;strong&gt;mainline-kernel&lt;&#x2F;strong&gt; — RK3588-understøttelse er god nok fra 6.8 og frem til headless-brug. FriendlyElecs Debian-image virker ud af boksen, men jeg geninstallerer ovenpå for at få et rent Debian i stedet for deres BSP.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Root-filsystem:&lt;&#x2F;strong&gt; &lt;code&gt;ext4&lt;&#x2F;code&gt; på eMMC.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Datapool:&lt;&#x2F;strong&gt; &lt;code&gt;zfs&lt;&#x2F;code&gt; &lt;code&gt;raidz2&lt;&#x2F;code&gt; på tværs af de fire NVMe-drev. Med 4× 2 TB giver &lt;code&gt;raidz2&lt;&#x2F;code&gt; ~3,5 TB brugbart med to-disks-redundans. Ja, &lt;code&gt;raidz2&lt;&#x2F;code&gt; på fire drev er konservativt; det betyder også, at et dobbelt-svigt ikke spiser poolen, og på NVMe er rebuilden hurtig nok til, at jeg ikke mister nattesøvn over det.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;ZFS-modul:&lt;&#x2F;strong&gt; DKMS mod den kørende kernel. Bygger automatisk ved kernel-opgraderinger. Har virket uden manuel indgriben på tværs af tre kernel-bumps.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;ARC-tuning:&lt;&#x2F;strong&gt; Loftet ved 2 GB. Det giver headroom på et 8 GB-system.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Gennemløbet er flaskehals-begrænset af 2,5 GbE til netværks-I&#x2F;O (~280 MB&#x2F;s vedholdende), længe før ZFS eller NVMe-drevene kommer på arbejde. Lokale operationer på poolen når omkring 2 GB&#x2F;s samlet sekventiel læsning.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;tjenester&quot;&gt;Tjenester&lt;&#x2F;h2&gt;
&lt;p&gt;Bevidst holdt simpelt:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Samba&lt;&#x2F;strong&gt; til SMB-shares til Mac’erne og Windows-boksen på LAN’et.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;rsync + cron&lt;&#x2F;strong&gt; til natlige backups fra tre andre maskiner.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;ZFS-snapshots&lt;&#x2F;strong&gt; hver time, opbevares en uge. &lt;code&gt;zfs send&lt;&#x2F;code&gt; piper datasættet ugentligt til en offsite B2-bucket via &lt;code&gt;zfs-autobackup&lt;&#x2F;code&gt; + rclone.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Tailscale&lt;&#x2F;strong&gt; til adgang uden for LAN. Ingen port-forwarding, ingen dyndns, ingen VPN-koncentrator. SSH og Samba rider begge på Tailscale-interfacet, når jeg er væk.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Cockpit&lt;&#x2F;strong&gt; til det lejlighedsvise “hvorfor larmer blæseren” dashboard-øjeblik.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Det er alt. Ingen Docker swarm, ingen Kubernetes, ingen dusin sidecar-containere. Boardet har ét job — serve filer på LAN’et og lade mig trække backups offsite — og det gør det i stilhed.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;strom-og-stoj&quot;&gt;Strøm og støj&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tomgang&lt;&#x2F;strong&gt; (alle fire NVMe opspundne, ingen trafik): &lt;strong&gt;~10 W&lt;&#x2F;strong&gt; ved stikkontakten.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Travlt&lt;&#x2F;strong&gt; (NVMe-læsning mætter 2,5 GbE, ZFS-ARC varm): &lt;strong&gt;~18–20 W&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Peak&lt;&#x2F;strong&gt; (scrub af hele poolen, alle kerner varme): &lt;strong&gt;~25 W&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Sammenlignet med den 70–80 W-tower, den afløste, er strøm-ROI’en alene omkring &lt;strong&gt;500 kWh&#x2F;år&lt;&#x2F;strong&gt;, eller cirka &lt;strong&gt;1.500 kr&#x2F;år&lt;&#x2F;strong&gt; ved danske privat-takster. Boardet betalte sig selv tilbage på ca. et år.&lt;&#x2F;p&gt;
&lt;p&gt;Støj: i praksis uhørlig fra mere end en meters afstand. Blæseren er lille, og 80 % af tiden kører den knap nok.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvad-virkede-ikke-eller-tog-arbejde&quot;&gt;Hvad virkede ikke, eller tog arbejde&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vendor-kernel.&lt;&#x2F;strong&gt; FriendlyElecs leverede kernel er deres fork af 6.1 med RK-specifikke patches. Det virker til deres nøglefærdige NAS-image, men DKMS-ZFS-builds er bøvlede mod den. Skiftet til mainline løste det.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;HDMI-capture.&lt;&#x2F;strong&gt; RK3588 har en hardware HDMI-input-blok. I mainline er den stadig eksperimentel. Jeg har en vag brugscase for den (trække signal fra en gammel enhed til arkivering), men har ikke fået det til at virke end-to-end. Parkeret indtil videre.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;NPU.&lt;&#x2F;strong&gt; De 6 TOPS NPU er underudnyttet. Mainline har basal RKNPU-understøttelse, men til noget praktisk skal du stadig bruge FriendlyElecs &lt;code&gt;rknn-toolkit2&lt;&#x2F;code&gt;. Ikke et problem for et NAS.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;ofte-stillede-sporgsmal&quot;&gt;Ofte stillede spørgsmål&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;hvorfor-ikke-x86&quot;&gt;Hvorfor ikke x86?&lt;&#x2F;h3&gt;
&lt;p&gt;En x86-mini-PC med 4× NVMe er ~2× tomgangsstrømmen og ~2× købsprisen (når du tæller kabinet, PSU og CPU med). Til et hjemme-NAS, hvor arbejdsbyrden er “serve filer” snarere end “kør 40 containere”, vinder ARM.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvorfor-ikke-raspberry-pi-5&quot;&gt;Hvorfor ikke Raspberry Pi 5?&lt;&#x2F;h3&gt;
&lt;p&gt;Pi 5 har én PCIe 2.0 x1-lane eksponeret via en HAT — du kan bolte en NVMe på, men kun én, med loft ved ~500 MB&#x2F;s. CM3588 har fire lanes ved PCIe 3.0 direkte forbundet. En anden klasse af board.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvorfor-ikke-openmediavault-eller-truenas&quot;&gt;Hvorfor ikke OpenMediaVault eller TrueNAS?&lt;&#x2F;h3&gt;
&lt;p&gt;Begge ville virke. Jeg foretrækker rent Debian + Samba + ZFS, fordi opgraderingsstien for Debian er velkendt for mig, og OMV&#x2F;TrueNAS er et lag, jeg skulle lære på ny. Det afhænger af dig.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvorfor-raidz2-pa-fire-drev-og-ikke-mirror-mirror&quot;&gt;Hvorfor &lt;code&gt;raidz2&lt;&#x2F;code&gt; på fire drev og ikke &lt;code&gt;mirror + mirror&lt;&#x2F;code&gt;?&lt;&#x2F;h3&gt;
&lt;p&gt;Overvejet. &lt;code&gt;mirror + mirror&lt;&#x2F;code&gt; giver hurtigere skriv og lettere udvidelse, men kun 4 TB brugbart fra 4× 2 TB — det samme som &lt;code&gt;raidz2&lt;&#x2F;code&gt;. Med &lt;code&gt;raidz2&lt;&#x2F;code&gt; kan to vilkårlige drev svigte; med stripede mirrors kan du miste to drev, men kun hvis de er i forskellige mirror-par. På fire drev er kapaciteten identisk, og &lt;code&gt;raidz2&lt;&#x2F;code&gt; har den stærkere fejltolerance.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;kan-den-kore-plex-jellyfin&quot;&gt;Kan den køre Plex &#x2F; Jellyfin?&lt;&#x2F;h3&gt;
&lt;p&gt;Ja, og RK3588’s hardware H.265&#x2F;VP9&#x2F;AV1-decode-blok klarer det tunge arbejde. Jellyfin med &lt;code&gt;rkmpp&lt;&#x2F;code&gt;-accelereret decoding håndterer 4K HEVC-transcodes på omkring 3× realtid. Jeg kører ingen af delene på denne boks — min Plex bor et andet sted — men det er realistisk.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;gar-den-i-suspend&quot;&gt;Går den i suspend?&lt;&#x2F;h3&gt;
&lt;p&gt;Ikke pålideligt. Lad den stå tændt; tomgang er alligevel 10 W.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvad-med-stoj-og-varme-om-sommeren&quot;&gt;Hvad med støj og varme om sommeren?&lt;&#x2F;h3&gt;
&lt;p&gt;Passivt køleplade plus en lille blæser. I en dansk sommer (20–25 °C i rummet) topper den omkring 55 °C die-temperatur under en ZFS-scrub. Ingen throttling målt.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;dom&quot;&gt;Dom&lt;&#x2F;h2&gt;
&lt;p&gt;Hvis du vil have et &lt;strong&gt;lydsvagt, strømbesparende, ren-NVMe-hjemme-NAS med nok PCIe til at betyde noget&lt;&#x2F;strong&gt; og er villig til at bruge en aften på Debian + ZFS, er CM3588 NAS Kit den bedste mulighed, jeg har fundet. Det er ikke det billigste — en brugt Optiplex er billigere på forhånd — men på tre års TCO inkl. strøm betaler det sig tydeligt tilbage.&lt;&#x2F;p&gt;
&lt;p&gt;RK3588 i sig selv er en overraskende kapabel SoC til homelab-arbejdsbyrder. Da mainline-kernel-understøttelsen landede, holdt jeg op med at behandle den som “en ARM-kuriositet” og begyndte at behandle den som default-svar på små altid-tændte servere.&lt;&#x2F;p&gt;
&lt;p&gt;To år inde er min blevet genstartet to gange (en gang for en kernel-opgradering, en gang fordi jeg flyttede hylden). Jeg ville købe den igen.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="da">
        <title>pdfcrack — gendan glemte PDF-kodeord på Linux og macOS (2026)</title>
        <published>2026-04-22T00:00:00+00:00</published>
        <updated>2026-04-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://www.x2q.net/da/post/gendan-pdf-kodeord-pdfcrack/"/>
        <id>https://www.x2q.net/da/post/gendan-pdf-kodeord-pdfcrack/</id>
        
        <content type="html" xml:base="https://www.x2q.net/da/post/gendan-pdf-kodeord-pdfcrack/">&lt;p&gt;&lt;strong&gt;TL;DR —&lt;&#x2F;strong&gt; &lt;strong&gt;&lt;code&gt;pdfcrack&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; er et kommandolinjeværktøj, der gendanner &lt;strong&gt;user-kodeordet&lt;&#x2F;strong&gt; eller &lt;strong&gt;owner-kodeordet&lt;&#x2F;strong&gt; på en krypteret PDF via brute-force eller dictionary-angreb. Det er lille, skrevet i C, kører på Linux&#x2F;macOS&#x2F;WSL og håndterer enhver krypterings-profil, PDF har leveret — 40-bit RC4, 128-bit RC4, 128-bit AES, 256-bit AES (PDF 1.7 + 2.0). Det er &lt;strong&gt;single-threaded og kun CPU&lt;&#x2F;strong&gt;, så det er hurtigt på den svage gamle RC4-40-kryptering, men stadig langsommere, efterhånden som PDF’er bliver moderne. Installeres med &lt;code&gt;apt install pdfcrack&lt;&#x2F;code&gt; (Debian&#x2F;Ubuntu), &lt;code&gt;brew install pdfcrack&lt;&#x2F;code&gt; (macOS) eller bygges fra kilden. Når &lt;code&gt;pdfcrack&lt;&#x2F;code&gt; er for langsom, så skift til &lt;strong&gt;&lt;code&gt;pdf2john&lt;&#x2F;code&gt; + &lt;code&gt;hashcat&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; på en GPU.&lt;&#x2F;p&gt;
&lt;p&gt;Dette indlæg antager, at du &lt;strong&gt;har autorisation til at gendanne kodeordet&lt;&#x2F;strong&gt; på PDF’en — dit eget dokument, en kundes eller en lovligt anskaffet fil. Angrib ikke PDF’er, du ikke ejer.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;user-kodeord-vs-owner-kodeord&quot;&gt;User-kodeord vs owner-kodeord&lt;&#x2F;h2&gt;
&lt;p&gt;PDF har to kodeord:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;User-kodeord&lt;&#x2F;strong&gt; — kræves for at &lt;strong&gt;åbne og læse&lt;&#x2F;strong&gt; dokumentet.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Owner-kodeord&lt;&#x2F;strong&gt; — kræves for at &lt;strong&gt;fjerne begrænsninger&lt;&#x2F;strong&gt; (print, kopi, rediger) på et dokument, der åbner uden et user-kodeord.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Mange “beskyttede” PDF’er er kun owner-kodeord-begrænsede: de åbner fint, men print og kopi er deaktiveret af læseren. Dem er trivielt at låse op — &lt;code&gt;qpdf --decrypt&lt;&#x2F;code&gt; eller et hvilket som helst &lt;code&gt;pdftk&lt;&#x2F;code&gt;-lignende værktøj fjerner owner-only-restriktioner uden at skulle gætte noget. &lt;code&gt;pdfcrack&lt;&#x2F;code&gt; er til det sværere tilfælde: en &lt;strong&gt;user-kodeord-beskyttet PDF, du slet ikke kan åbne&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Tjek hvilken du har med at gøre:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;$ qpdf --show-encryption dokument.pdf
R = 6
P = -3904
User password = 
Supplied password is owner password
extract for accessibility: allowed
extract for any purpose: not allowed
print low resolution: allowed
print high resolution: not allowed
modify document assembly: not allowed
modify forms: not allowed
modify annotations: not allowed
modify other: not allowed
stream encryption method: AESv3
string encryption method: AESv3
file encryption method: AESv3
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;R = ...&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; fortæller dig revisionen&#x2F;profilen. &lt;code&gt;R=2&lt;&#x2F;code&gt; = RC4-40, &lt;code&gt;R=3&lt;&#x2F;code&gt; = RC4-128, &lt;code&gt;R=4&lt;&#x2F;code&gt; = AES-128, &lt;code&gt;R=5&#x2F;6&lt;&#x2F;code&gt; = AES-256.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;“Supplied password is owner password”&lt;&#x2F;strong&gt; + “User password = (tom)” betyder, du kan åbne den og bare skal fjerne restriktioner. Brug &lt;code&gt;qpdf --decrypt --password=&#x27;&#x27; input.pdf output.pdf&lt;&#x2F;code&gt;, og du er færdig.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;# Debian &#x2F; Ubuntu &#x2F; Mint &#x2F; Kali
sudo apt install pdfcrack

# macOS (Homebrew)
brew install pdfcrack

# Arch &#x2F; Manjaro
sudo pacman -S pdfcrack

# Fedora &#x2F; RHEL
sudo dnf install pdfcrack

# Fra kilden
wget https:&#x2F;&#x2F;sourceforge.net&#x2F;projects&#x2F;pdfcrack&#x2F;files&#x2F;latest&#x2F;download -O pdfcrack.tar.gz
tar xf pdfcrack.tar.gz &amp;amp;&amp;amp; cd pdfcrack-*
make
sudo cp pdfcrack &#x2F;usr&#x2F;local&#x2F;bin&#x2F;
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;benchmark&quot;&gt;Benchmark&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;$ pdfcrack -b
Benchmark:	Average Speed (calls &#x2F; second):
MD5:			1728972.6
MD5_50 (fast):		 97879.3
MD5_50 (slow):		 69167.0

RC4 (40, static):	606555.3
RC4 (40, no check):	598050.0
RC4 (128, no check):	590141.7

Benchmark:	Average Speed (passwords &#x2F; second):
PDF (40, user):		453510.2
PDF (40, owner):	220250.0
PDF (40, owner, fast):	499995.0

PDF (128, user):	 22000.0
PDF (128, owner):	 10408.7
PDF (128, owner, fast):	 22220.0
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Oversat:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RC4-40&lt;&#x2F;strong&gt; (PDF 1.3, meget gammel) — ~450k kodeord&#x2F;sek. Brute-force af et fuldt 8-tegns alfanumerisk space: ~1 uge på én core.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;RC4-128 &#x2F; AES-128&lt;&#x2F;strong&gt; — ~22k kodeord&#x2F;sek. Brute-force bliver urealistisk over længde 6 med et hvilket som helst charset.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;AES-256 (R=5&#x2F;6)&lt;&#x2F;strong&gt; — endnu langsommere; &lt;code&gt;pdfcrack&lt;&#x2F;code&gt; understøtter det, men reelt kun til dictionary-angreb mod små ordlister.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Har du brug for mere fart end det, så vil du bruge &lt;code&gt;hashcat&lt;&#x2F;code&gt; på en GPU. Tal i bunden.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;dictionary-angreb&quot;&gt;Dictionary-angreb&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;pdfcrack -f dokument.pdf -w &#x2F;usr&#x2F;share&#x2F;wordlists&#x2F;rockyou.txt
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-f&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — målfil.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-w &amp;lt;fil&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — ordliste, én kandidat pr. linje.&lt;&#x2F;li&gt;
&lt;li&gt;Valgfri &lt;strong&gt;&lt;code&gt;-o&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — angrib kun owner-kodeord (ignorer user-kodeord). Default er at prøve user-kodeord først.&lt;&#x2F;li&gt;
&lt;li&gt;Valgfri &lt;strong&gt;&lt;code&gt;-u&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — angrib kun user-kodeord.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Har du kontekst — kodeordet er sandsynligvis et fornavn, et årstal, en projektkode — saml en mindre målrettet liste. Generiske lister er en lang skud, når du er forbi top ti tusind indgange.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;brute-force-angreb&quot;&gt;Brute-force-angreb&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;pdfcrack -f dokument.pdf -c &amp;#39;abcdefghijklmnopqrstuvwxyz0123456789&amp;#39; -n 4 -m 8
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-c &amp;lt;charset&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — tegnsæt at prøve. Default inkluderer et bredt ASCII-område.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-n &amp;lt;min&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — minimumslængde.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-m &amp;lt;max&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — maksimumslængde.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Juster &lt;code&gt;-c&lt;&#x2F;code&gt; aggressivt. Ved du, at kodeordet er alt-lowercase, så giv det ikke uppercase. Ved du, det har et ciffer til sidst, så brug et mask-angreb (hashcat-territorium, ikke pdfcrack).&lt;&#x2F;p&gt;
&lt;h2 id=&quot;genoptag-et-langt-korsel&quot;&gt;Genoptag et langt kørsel&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;pdfcrack -f dokument.pdf -w rockyou.txt -s &#x2F;tmp&#x2F;state.sav
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;code&gt;-s&lt;&#x2F;code&gt; skriver periodiske save-filer; hvis du stopper pdfcrack og genstarter, så giv &lt;code&gt;-l &#x2F;tmp&#x2F;state.sav&lt;&#x2F;code&gt; for at genoptage.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvornar-du-skal-skifte-til-hashcat&quot;&gt;Hvornår du skal skifte til hashcat&lt;&#x2F;h2&gt;
&lt;p&gt;Til enhver moderne PDF (R=4, 5 eller 6 — altså AES-128 eller AES-256) bliver &lt;code&gt;pdfcrack&lt;&#x2F;code&gt;s single-core-fart flaskehalsen. &lt;code&gt;pdf2john&lt;&#x2F;code&gt; + &lt;code&gt;hashcat&lt;&#x2F;code&gt; giver dig to til tre størrelsesordener mere throughput på en GPU.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;trin-1-traek-hashen-ud&quot;&gt;Trin 1: træk hashen ud&lt;&#x2F;h3&gt;
&lt;pre&gt;&lt;code&gt;$ &#x2F;usr&#x2F;share&#x2F;john&#x2F;pdf2john.pl dokument.pdf &amp;gt; hash.txt
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;(På Debian&#x2F;Ubuntu: &lt;code&gt;apt install john&lt;&#x2F;code&gt; leverer &lt;code&gt;pdf2john.pl&lt;&#x2F;code&gt;.)&lt;&#x2F;p&gt;
&lt;h3 id=&quot;trin-2-identificer-hash-mode&quot;&gt;Trin 2: identificér hash-mode&lt;&#x2F;h3&gt;
&lt;pre&gt;&lt;code&gt;$ head -1 hash.txt
dokument.pdf:$pdf$5*6*256*-1028*1*16*...
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Map de første to tal:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$pdf$1*2*...&lt;&#x2F;code&gt; → &lt;strong&gt;mode 10400&lt;&#x2F;strong&gt; (PDF 1.1–1.3, RC4-40, user)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;$pdf$1*2*...&lt;&#x2F;code&gt; med owner-salt → &lt;strong&gt;mode 10410 &#x2F; 10420&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;$pdf$2*3*...&lt;&#x2F;code&gt; → &lt;strong&gt;mode 10500&lt;&#x2F;strong&gt; (PDF 1.4–1.6, RC4-128 &#x2F; AES-128)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;$pdf$5*5*...&lt;&#x2F;code&gt; → &lt;strong&gt;mode 10600&lt;&#x2F;strong&gt; (PDF 1.7 r=5, AES-256)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;$pdf$5*6*...&lt;&#x2F;code&gt; → &lt;strong&gt;mode 10700&lt;&#x2F;strong&gt; (PDF 1.7 r=6 &#x2F; PDF 2.0, AES-256 med PBKDF2)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;trin-3-kor-hashcat&quot;&gt;Trin 3: kør hashcat&lt;&#x2F;h3&gt;
&lt;pre&gt;&lt;code&gt;hashcat -m 10700 hash.txt &#x2F;sti&#x2F;til&#x2F;ordliste.txt
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;På en enkelt moderne GPU (fx RTX 4090):&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mode 10400 (RC4-40):&lt;&#x2F;strong&gt; ~10 milliarder H&#x2F;s — ethvert praktisk kodeord gendannes øjeblikkeligt.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Mode 10500 (RC4-128 &#x2F; AES-128):&lt;&#x2F;strong&gt; ~100 millioner H&#x2F;s.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Mode 10700 (AES-256, PBKDF2):&lt;&#x2F;strong&gt; ~50.000 H&#x2F;s. Det er ved design — PBKDF2-iterationerne gør brute-force dyrt.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;For mode 10700 betyder din angrebsstrategi mere end rå fart. Dictionary + regler + mask-angreb målrettet mod sandsynlige kodeord-mønstre er størrelsesordener mere produktive end udtømmende brute-force.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;almindelige-faldgruber&quot;&gt;Almindelige faldgruber&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;filen-ser-ud-til-at-vaere-krypteret-men-jeg-kan-abne-den-uden-kodeord&quot;&gt;“Filen ser ud til at være krypteret, men jeg kan åbne den uden kodeord”&lt;&#x2F;h3&gt;
&lt;p&gt;Du ser på owner-only-restriktioner. Brug &lt;code&gt;qpdf --decrypt input.pdf output.pdf&lt;&#x2F;code&gt; — ingen cracking nødvendigt.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;pdfcrack-korer-men-finder-aldrig-noget&quot;&gt;pdfcrack kører, men finder aldrig noget&lt;&#x2F;h3&gt;
&lt;p&gt;Tre sandsynlige årsager:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Kodeordet er længere &#x2F; mere komplekst, end dit charset × længde dækker.&lt;&#x2F;strong&gt; Øg &lt;code&gt;-m&lt;&#x2F;code&gt; og&#x2F;eller udvid &lt;code&gt;-c&lt;&#x2F;code&gt;, eller skift til en dictionary.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Kodeordet indeholder ikke-ASCII-tegn.&lt;&#x2F;strong&gt; pdfcracks charset er ASCII som default; ikke-ASCII-user-kodeord i gamle PDF’er brugte varierende encodings (PDFDocEncoding, UTF-16). Prøv &lt;code&gt;pdf2john&lt;&#x2F;code&gt; + hashcat, som håndterer encoding’en korrekt.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Det er AES-256 (R=6), og du er tålmodig.&lt;&#x2F;strong&gt; Se hastighedsnoterne ovenfor — kun realistisk med en dictionary.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h3 id=&quot;only-aes-256-is-supported-fejl-eller-lignende&quot;&gt;“Only AES-256 is supported”-fejl eller lignende&lt;&#x2F;h3&gt;
&lt;p&gt;Din &lt;code&gt;pdfcrack&lt;&#x2F;code&gt;-build er gammel. Ubuntu LTS leverer nogle gange en version, der ikke fuldt håndterer R=6. Byg fra kilden eller skift til &lt;code&gt;pdf2john&lt;&#x2F;code&gt; + &lt;code&gt;hashcat&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;pdf-en-abner-men-print-kopi-er-blokeret&quot;&gt;PDF’en åbner, men print&#x2F;kopi er blokeret&lt;&#x2F;h3&gt;
&lt;p&gt;Det er kun owner-kodeord-begrænset. &lt;code&gt;qpdf --decrypt&lt;&#x2F;code&gt; uden at behøve et kodeord virker som regel:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;qpdf --decrypt --password=&amp;#39;&amp;#39; input.pdf output.pdf
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;defensiv-pointe&quot;&gt;Defensiv pointe&lt;&#x2F;h2&gt;
&lt;p&gt;Til alt, du vil have til at forblive krypteret i 2026, brug &lt;strong&gt;AES-256 med en PDF 2.0 (R=6) kodeord&lt;&#x2F;strong&gt;. Det er profilen med PBKDF2-nøgle-afledning, der gør offline-angreb dyre på nuværende hardware.&lt;&#x2F;p&gt;
&lt;p&gt;Og som altid betyder kodeordets længde mere end noget andet. En 20-tegns tilfældig passphrase er brute-force-intraktabel mod enhver nuværende GPU. Et 6-tegns “smart substitutions”-kodeord er en kaffepause på en RTX 4090.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;ofte-stillede-sporgsmal&quot;&gt;Ofte stillede spørgsmål&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;er-pdfcrack-stadig-vedligeholdt&quot;&gt;Er pdfcrack stadig vedligeholdt?&lt;&#x2F;h3&gt;
&lt;p&gt;Opdateres langsomt. Kodebasen håndterer alle nuværende PDF-krypterings-profiler; det er bare ikke her, performance-arbejdet foregår længere (det er hashcat).&lt;&#x2F;p&gt;
&lt;h3 id=&quot;bruger-pdfcrack-gpu&quot;&gt;Bruger pdfcrack GPU?&lt;&#x2F;h3&gt;
&lt;p&gt;Nej. Kun CPU, single-threaded. Til GPU-arbejde, brug &lt;code&gt;pdf2john&lt;&#x2F;code&gt; + &lt;code&gt;hashcat&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;kan-pdfcrack-gendanne-dokumentet-hvis-skaberen-ryddede-user-kodeordet-men-beholdt-owner-kodeordet&quot;&gt;Kan pdfcrack gendanne dokumentet, hvis skaberen ryddede user-kodeordet, men beholdt owner-kodeordet?&lt;&#x2F;h3&gt;
&lt;p&gt;Ja — brug &lt;code&gt;qpdf --decrypt&lt;&#x2F;code&gt; først; hvis det ikke fuldt dekrypterer, angriber &lt;code&gt;pdfcrack -o&lt;&#x2F;code&gt; owner-kodeordet.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;laekker-pdfcrack-min-pdf-nogle-steder&quot;&gt;Lækker pdfcrack min PDF nogle steder?&lt;&#x2F;h3&gt;
&lt;p&gt;Nej. Den er lokal. Alt online-only (“crack min PDF på cloud-service-X.com”) indebærer at uploade filen, hvilket du ikke skal gøre for fortroligt materiale.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvad-hvis-jeg-kun-vagt-husker-kodeordet&quot;&gt;Hvad hvis jeg kun vagt husker kodeordet?&lt;&#x2F;h3&gt;
&lt;p&gt;Skriv ned, hvad du husker — sandsynlige ord, sandsynlige cifre, sandsynlig længde — og byg en målrettet ordliste eller et &lt;code&gt;hashcat&lt;&#x2F;code&gt;-mask (&lt;code&gt;-a 3 ?l?l?l?l?l?d?d?d?d&lt;&#x2F;code&gt;). Det slår enhver generisk liste.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;kan-jeg-gendanne-tekst-fra-en-aes-256-pdf-uden-kodeordet&quot;&gt;Kan jeg gendanne tekst fra en AES-256-PDF uden kodeordet?&lt;&#x2F;h3&gt;
&lt;p&gt;Nej. AES-256 med PBKDF2 (R=6) er, så vidt offentlig kryptanalyse går, ikke brudt. Hvis kodeordet er stærkt og tabt, er indholdet tabt.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;opsummering&quot;&gt;Opsummering&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kun owner-kodeord?&lt;&#x2F;strong&gt; &lt;code&gt;qpdf --decrypt&lt;&#x2F;code&gt;, ingen cracking nødvendigt.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;User-kodeord-beskyttet, gammel (R=2&#x2F;3)?&lt;&#x2F;strong&gt; &lt;code&gt;pdfcrack&lt;&#x2F;code&gt; med en dictionary virker fint.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Moderne (R=4&#x2F;5&#x2F;6)?&lt;&#x2F;strong&gt; &lt;code&gt;pdf2john&lt;&#x2F;code&gt; + &lt;code&gt;hashcat&lt;&#x2F;code&gt; på en GPU, målrettet angreb.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Stærk 20-tegns tilfældig?&lt;&#x2F;strong&gt; Accepter tabet.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="da">
        <title>fcrackzip — gendan glemte zip-kodeord på Linux, macOS og Windows (2026)</title>
        <published>2026-04-22T00:00:00+00:00</published>
        <updated>2026-04-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://www.x2q.net/da/post/gendan-zip-kodeord-fcrackzip/"/>
        <id>https://www.x2q.net/da/post/gendan-zip-kodeord-fcrackzip/</id>
        
        <content type="html" xml:base="https://www.x2q.net/da/post/gendan-zip-kodeord-fcrackzip/">&lt;p&gt;&lt;strong&gt;TL;DR —&lt;&#x2F;strong&gt; &lt;strong&gt;&lt;code&gt;fcrackzip&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; er et gratis, open-source kommandolinjeværktøj til at gendanne kodeordet på en krypteret &lt;code&gt;.zip&lt;&#x2F;code&gt;-fil. Det understøtter &lt;strong&gt;brute-force&lt;&#x2F;strong&gt; (over et bruger-defineret charset og længde) og &lt;strong&gt;dictionary&lt;&#x2F;strong&gt;-angreb, virker på Linux&#x2F;macOS&#x2F;WSL, og er det rigtige første værktøj, når du skal gendanne et glemt kodeord på en zip, du lovligt ejer. Det er kun hurtigt mod &lt;strong&gt;klassisk ZipCrypto&lt;&#x2F;strong&gt;-kryptering; til den nyere &lt;strong&gt;AES-256&lt;&#x2F;strong&gt;-zip-profil virker &lt;code&gt;fcrackzip&lt;&#x2F;code&gt; ikke — så skal du bruge &lt;code&gt;zip2john&lt;&#x2F;code&gt; + &lt;code&gt;hashcat&lt;&#x2F;code&gt; i stedet. Installeres med &lt;code&gt;apt install fcrackzip&lt;&#x2F;code&gt; (Debian&#x2F;Ubuntu), &lt;code&gt;brew install fcrackzip&lt;&#x2F;code&gt; (macOS) eller bygges fra kilden.&lt;&#x2F;p&gt;
&lt;p&gt;Dette indlæg går gennem de praktiske tilfælde. Det antager, at du &lt;strong&gt;har autorisation til at gendanne kodeordet&lt;&#x2F;strong&gt; — dine egne filer, en kundes, en CTF. Brug det ikke på zips, du ikke ejer.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;# Debian &#x2F; Ubuntu &#x2F; Mint &#x2F; Kali
sudo apt install fcrackzip

# macOS (Homebrew)
brew install fcrackzip

# Arch &#x2F; Manjaro
sudo pacman -S fcrackzip

# Windows
# Brug WSL2 + Ubuntu og `apt install fcrackzip`.
# En native .exe findes, men er gammel — WSL er simplere.

# Fra kilden
git clone https:&#x2F;&#x2F;github.com&#x2F;hyc&#x2F;fcrackzip.git
cd fcrackzip &amp;amp;&amp;amp; .&#x2F;configure &amp;amp;&amp;amp; make
sudo cp fcrackzip &#x2F;usr&#x2F;local&#x2F;bin&#x2F;
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;tjek-forst-hvilken-kryptering-din-zip-bruger&quot;&gt;Tjek først, hvilken kryptering din zip bruger&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;fcrackzip&lt;&#x2F;code&gt; håndterer kun &lt;strong&gt;klassisk ZipCrypto&lt;&#x2F;strong&gt; (den originale, svage PKZIP-kryptering). Til moderne &lt;strong&gt;AES-128 &#x2F; AES-256&lt;&#x2F;strong&gt;-zips (introduceret af WinZip 9 i 2003, nu default i nogle værktøjer) vil &lt;code&gt;fcrackzip&lt;&#x2F;code&gt; lydløst fejle i at finde kodeordet, uanset hvor længe du lader det køre.&lt;&#x2F;p&gt;
&lt;p&gt;Hurtigste tjek med &lt;code&gt;zipinfo&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;$ zipinfo -v arkiv.zip | head -40
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Led efter &lt;code&gt;WinZip AES encryption, strength 3&lt;&#x2F;code&gt; (= AES-256). Ser du det, så spring til hashcat-sektionen.&lt;&#x2F;p&gt;
&lt;p&gt;Eller med &lt;code&gt;7z&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;$ 7z l -slt arkiv.zip | grep -i &amp;#39;method\|encrypted&amp;#39;
Method = ZipCrypto Store          ← fcrackzip virker
Method = AES-256 Deflate          ← fcrackzip virker IKKE
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;grundlaeggende-brute-force&quot;&gt;Grundlæggende brute-force&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;fcrackzip -v -b -c &amp;#39;a1&amp;#39; -p aaaa -u arkiv.zip
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-v&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — verbose.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-b&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — brute-force-mode.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-c &#x27;a1&#x27;&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — charset. &lt;code&gt;a&lt;&#x2F;code&gt; = små bogstaver &lt;code&gt;a–z&lt;&#x2F;code&gt;, &lt;code&gt;A&lt;&#x2F;code&gt; = store, &lt;code&gt;1&lt;&#x2F;code&gt; = cifre, &lt;code&gt;!&lt;&#x2F;code&gt; = printbare symboler. Kombiner: &lt;code&gt;&#x27;aA1!&#x27;&lt;&#x2F;code&gt; = alt printbart ASCII (94 tegn).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-p aaaa&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — start-kodeord (definerer minimum-længde = 4 her).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-u&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — rapporterer kun, hvis den dekrypterede fil “unzipper” rent (filtrerer falske positive — ZipCrypto har en lille CRC, som mange tilfældige kodeord passerer).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Længde: &lt;code&gt;-p aaaaa&lt;&#x2F;code&gt; starter ved 5 tegn. &lt;code&gt;fcrackzip&lt;&#x2F;code&gt; har ikke et &lt;code&gt;--max-length&lt;&#x2F;code&gt;-flag; det inkrementerer start-kodeordet gennem charsettet uendeligt, så &lt;strong&gt;at lade det køre til “færdigt” ved længde 8 på det fulde printbare ASCII-charset er ca. 94⁸ ≈ 6×10¹⁵ kandidater&lt;&#x2F;strong&gt; — ikke realistisk. Du afgrænser angrebet ved at vælge et rimeligt max charset + længde eller ved at bruge en dictionary.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;dictionary-angreb&quot;&gt;Dictionary-angreb&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;fcrackzip -v -D -u -p &#x2F;usr&#x2F;share&#x2F;wordlists&#x2F;rockyou.txt arkiv.zip
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-D&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — dictionary-mode.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-p &amp;lt;fil&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — ordliste-fil, én kandidat pr. linje.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;-u&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — verificér via unzip, som før.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;code&gt;rockyou.txt&lt;&#x2F;code&gt; er den standard 14 M-indgange-ordliste, der leveres med Kali og er tilgængelig overalt. Har du kontekst om kodeordet (det er nogens navn + årstal, det er et projektkodenavn), så saml en mindre målrettet ordliste — hit-raterne er som regel meget højere end med en generisk liste.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hastighed-og-hvad-du-kan-forvente&quot;&gt;Hastighed og hvad du kan forvente&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;fcrackzip&lt;&#x2F;code&gt; er single-threaded og CPU-bundet. På en moderne laptop ser du groft:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;10–30 millioner ZipCrypto-forsøg pr. sekund pr. core&lt;&#x2F;strong&gt; for et dictionary-angreb mod en typisk zip.&lt;&#x2F;li&gt;
&lt;li&gt;Brute-force en anelse hurtigere pga. mindre streng-I&#x2F;O.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Det gør den fin til:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dictionary-angreb&lt;&#x2F;strong&gt; mod en hvilken som helst rimelig ordliste.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Kort brute-force&lt;&#x2F;strong&gt; (4–6 tegn alfanumerisk).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Det gør den uegnet til:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Længde 8+ med symboler&lt;&#x2F;strong&gt; — du når aldrig i mål.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;AES-256-zips&lt;&#x2F;strong&gt; — forkert værktøj.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;hvornar-du-skal-skifte-til-hashcat&quot;&gt;Hvornår du skal skifte til hashcat&lt;&#x2F;h2&gt;
&lt;p&gt;Hvis &lt;code&gt;fcrackzip&lt;&#x2F;code&gt; er for langsom, eller zip’en er AES-krypteret, så gå over til &lt;code&gt;hashcat&lt;&#x2F;code&gt;. Det er det general-purpose kodeord-cracking-værktøj, GPU-accelereret, og håndterer både ZipCrypto og AES-WinZip-hashes.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;trin-1-traek-hashen-ud-med-zip2john&quot;&gt;Trin 1: træk hashen ud med &lt;code&gt;zip2john&lt;&#x2F;code&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;zip2john&lt;&#x2F;code&gt; er en del af John the Ripper. Ubuntu: &lt;code&gt;apt install john&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;$ zip2john arkiv.zip &amp;gt; hash.txt
$ cat hash.txt
arkiv.zip:$zip2$*0*3*0*...*$&#x2F;zip2$::arkiv.zip:hemmelig.pdf:&#x2F;sti&#x2F;til&#x2F;arkiv.zip
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;trin-2-fodr-den-til-hashcat&quot;&gt;Trin 2: fodr den til hashcat&lt;&#x2F;h3&gt;
&lt;pre&gt;&lt;code&gt;# ZipCrypto (mode 17200, 17210, 17220, 17225 afhængigt af komprimering)
hashcat -m 17200 hash.txt &#x2F;sti&#x2F;til&#x2F;ordliste.txt

# AES-krypteret WinZip (mode 13600)
hashcat -m 13600 hash.txt &#x2F;sti&#x2F;til&#x2F;ordliste.txt
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;På en enkelt moderne diskret GPU (fx RTX 4090) ser du:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ZipCrypto: ~5–10 milliarder H&#x2F;s&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;WinZip AES-256: ~10–50 millioner H&#x2F;s&lt;&#x2F;strong&gt; (meget langsommere, fordi AES er dyrt, og der er PBKDF2-iterationer involveret)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;hashcats rule-engine, mask-angreb (&lt;code&gt;-a 3&lt;&#x2F;code&gt;) og combinator-mode (&lt;code&gt;-a 1&lt;&#x2F;code&gt;) gør den massivt mere fleksibel end &lt;code&gt;fcrackzip&lt;&#x2F;code&gt;. Til alt ikke-trivielt er den det rigtige værktøj.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;almindelige-faldgruber&quot;&gt;Almindelige faldgruber&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;password-found-pw-abc-men-unzip-beder-stadig-om-et-kodeord&quot;&gt;“PASSWORD FOUND!!!!: pw == abc”, men &lt;code&gt;unzip&lt;&#x2F;code&gt; beder stadig om et kodeord&lt;&#x2F;h3&gt;
&lt;p&gt;Du brugte ikke &lt;code&gt;-u&lt;&#x2F;code&gt;. fcrackzips CRC-tjek har falske positive. Kør igen med &lt;code&gt;-u&lt;&#x2F;code&gt; for at verificere kandidater mod et rigtigt dekomprimerings-forsøg.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;forskellige-filer-i-samme-zip-har-forskellige-kodeord&quot;&gt;Forskellige filer i samme zip har forskellige kodeord&lt;&#x2F;h3&gt;
&lt;p&gt;Klassisk PKZIP understøtter per-fil-kodeord. &lt;code&gt;fcrackzip&lt;&#x2F;code&gt; angriber én fil ad gangen; giv &lt;code&gt;-l &amp;lt;filnavn&amp;gt;&lt;&#x2F;code&gt; (eller lad den vælge den første krypterede) hvis du skal være specifik.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;fcrackzip-finder-kodeordet-men-jeg-kan-stadig-ikke-unzippe&quot;&gt;fcrackzip finder kodeordet, men jeg kan stadig ikke unzippe&lt;&#x2F;h3&gt;
&lt;p&gt;Charset&#x2F;locale-problem. Hvis kodeordet indeholder ikke-ASCII-tegn, har zip’ens skaber måske brugt en anden encoding end din terminal. Prøv &lt;code&gt;unzip -P &quot;$(echo -n &#x27;passwd&#x27; | iconv -t cp437)&quot; arkiv.zip&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;aes-krypteret-og-dictionary-finder-det-ikke&quot;&gt;AES-krypteret, og dictionary finder det ikke&lt;&#x2F;h3&gt;
&lt;p&gt;hashcat + regler + en målrettet ordliste er løsningen. Se migrations-trinnene ovenfor.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;defensiv-pointe&quot;&gt;Defensiv pointe&lt;&#x2F;h2&gt;
&lt;p&gt;Hvis du laver zip-filer, der skal forblive krypterede: brug &lt;strong&gt;AES-256&lt;&#x2F;strong&gt;, ikke ZipCrypto. De fleste moderne værktøjer (&lt;code&gt;7z&lt;&#x2F;code&gt;, &lt;code&gt;zip&lt;&#x2F;code&gt; fra InfoZIP med &lt;code&gt;-e&lt;&#x2F;code&gt;, WinZip, Keka) giver dig AES, hvis du beder om det. Default på &lt;code&gt;zip&lt;&#x2F;code&gt; er desværre stadig ZipCrypto på mange systemer. Tjek med &lt;code&gt;7z l -slt arkiv.zip&lt;&#x2F;code&gt; før du sender den afsted.&lt;&#x2F;p&gt;
&lt;p&gt;Og vælg et kodeord med længde, ikke smarthed. &lt;code&gt;hashcat&lt;&#x2F;code&gt; er ligeglad med, hvor mærkeligt dit substitutions-mønster er; det handler kun om entropi. En fire-ords passphrase (&lt;code&gt;correct-horse-battery-staple&lt;&#x2F;code&gt;-stil, ~44 bit) er fin mod offline ZipCrypto-angreb; et tilfældigt 12-tegns blandet kodeord (~78 bit) er fint mod GPU-AES-angreb. Alt kortere er genvindbart.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;ofte-stillede-sporgsmal&quot;&gt;Ofte stillede spørgsmål&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;er-fcrackzip-lovligt&quot;&gt;Er fcrackzip lovligt?&lt;&#x2F;h3&gt;
&lt;p&gt;At gendanne kodeord på filer du ejer eller har autorisation til at tilgå, er lovligt i alle jurisdiktioner, jeg kender. At gøre det på en andens fil uden autorisation er uautoriseret adgang — samme lov som for enhver anden computer-indtrængen.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;er-fcrackzip-vedligeholdt&quot;&gt;Er fcrackzip vedligeholdt?&lt;&#x2F;h3&gt;
&lt;p&gt;Kun lige. Kodebasen har været stabil i femten-plus år. Til moderne arbejde har kombinationen af &lt;code&gt;zip2john&lt;&#x2F;code&gt; + &lt;code&gt;hashcat&lt;&#x2F;code&gt; overtaget.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;kan-fcrackzip-bruge-en-gpu&quot;&gt;Kan fcrackzip bruge en GPU?&lt;&#x2F;h3&gt;
&lt;p&gt;Nej. &lt;code&gt;fcrackzip&lt;&#x2F;code&gt; er kun CPU. Hvis GPU er det, du har, så gå direkte til hashcat.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;handterer-fcrackzip-7z-rar-gpg-filer&quot;&gt;Håndterer fcrackzip .7z, .rar, .gpg-filer?&lt;&#x2F;h3&gt;
&lt;p&gt;Nej — kun klassisk PKZIP &lt;code&gt;.zip&lt;&#x2F;code&gt;. Til &lt;code&gt;.7z&lt;&#x2F;code&gt;, brug &lt;code&gt;7z2john&lt;&#x2F;code&gt; + hashcat (mode 11600). Til &lt;code&gt;.rar&lt;&#x2F;code&gt;, &lt;code&gt;rar2john&lt;&#x2F;code&gt; + hashcat (mode 12500 &#x2F; 13000). Til &lt;code&gt;.gpg&lt;&#x2F;code&gt;, &lt;code&gt;gpg2john&lt;&#x2F;code&gt; + hashcat (mode 17010+).&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvordan-genererer-jeg-en-malrettet-ordliste&quot;&gt;Hvordan genererer jeg en målrettet ordliste?&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;hashcat&lt;&#x2F;code&gt;s maskprocessor (&lt;code&gt;mp64&lt;&#x2F;code&gt;), &lt;code&gt;crunch&lt;&#x2F;code&gt; og &lt;code&gt;cewl&lt;&#x2F;code&gt; (crawler et site for kandidat-ord) er alle værd at kende. Til at gendanne et specifikt glemt kodeord er den højeste-yield-tilgang at skrive ned, hvad du husker om det — længde, sandsynlige ord, sandsynlige tal — og bygge et mask-angreb fra det.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;opsummering&quot;&gt;Opsummering&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;fcrackzip&lt;&#x2F;code&gt; + &lt;code&gt;-D&lt;&#x2F;code&gt; + en ordliste er det rigtige første forsøg.&lt;&#x2F;li&gt;
&lt;li&gt;Virker det ikke, og det er ZipCrypto: &lt;code&gt;fcrackzip&lt;&#x2F;code&gt; + &lt;code&gt;-b&lt;&#x2F;code&gt; med et snævert charset og kort længde.&lt;&#x2F;li&gt;
&lt;li&gt;Virker det ikke, eller det er AES: &lt;code&gt;zip2john&lt;&#x2F;code&gt; + &lt;code&gt;hashcat&lt;&#x2F;code&gt; på en GPU.&lt;&#x2F;li&gt;
&lt;li&gt;Virker det ikke: dit kodeord var stærkt nok. Det er systemet, der virker som tiltænkt.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="da">
        <title>Wi-Fi-hacking gennem 25 år — 2002, 2007, 2012, 2017, 2022, 2027</title>
        <published>2026-04-22T00:00:00+00:00</published>
        <updated>2026-04-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://www.x2q.net/da/post/hack-traadloest-netvaerk/"/>
        <id>https://www.x2q.net/da/post/hack-traadloest-netvaerk/</id>
        
        <content type="html" xml:base="https://www.x2q.net/da/post/hack-traadloest-netvaerk/">&lt;p&gt;&lt;strong&gt;TL;DR —&lt;&#x2F;strong&gt; Wi-Fi-sikkerhed har været gennem fire generationer — &lt;strong&gt;WEP&lt;&#x2F;strong&gt;, &lt;strong&gt;WPA&lt;&#x2F;strong&gt;, &lt;strong&gt;WPA2&lt;&#x2F;strong&gt;, &lt;strong&gt;WPA3&lt;&#x2F;strong&gt; — hver introduceret, fordi forgængeren var brudt. Dette indlæg går gennem seks snapshots af state of the art: &lt;strong&gt;2002&lt;&#x2F;strong&gt; (WEP, trivielt), &lt;strong&gt;2007&lt;&#x2F;strong&gt; (WEP død, WPA udbredt, offline-angreb kommer frem), &lt;strong&gt;2012&lt;&#x2F;strong&gt; (WPA2 dominerer, dictionary-angreb på GPU’er), &lt;strong&gt;2017&lt;&#x2F;strong&gt; (KRACK bryder WPA2 under de rette betingelser, PMKID-lækken i 2018), &lt;strong&gt;2022&lt;&#x2F;strong&gt; (WPA3 ruller ud, downgrade-angreb, cloud-skala-cracking), &lt;strong&gt;2027&lt;&#x2F;strong&gt; (dagens landskab: WPA3 næsten universel, 6 GHz åbner ny overflade, angreb flytter op i stakken). For hvert år opsummerer jeg angrebet, værktøjet og hvad en forsvarer burde have gjort. Kun autoriseret testning — den defensive vejledning i bunden er pointen.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;overblik&quot;&gt;Overblik&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;År&lt;&#x2F;th&gt;&lt;th&gt;Dominerende standard&lt;&#x2F;th&gt;&lt;th&gt;Hovedangreb&lt;&#x2F;th&gt;&lt;th&gt;Indsats for typisk netværk&lt;&#x2F;th&gt;&lt;th&gt;Hurtigste dictionary &#x2F; nøgle-rate dengang&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;2002&lt;&#x2F;td&gt;&lt;td&gt;WEP (100%)&lt;&#x2F;td&gt;&lt;td&gt;FMS statistisk IV&lt;&#x2F;td&gt;&lt;td&gt;~4M pakker &#x2F; 2–10 t på aktivt AP&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A — nøglen udledes af IV’er&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2007&lt;&#x2F;td&gt;&lt;td&gt;WEP 35%, WPA 25%, WPA2 20%, åben 20%&lt;&#x2F;td&gt;&lt;td&gt;PTW + aircrack-ng&lt;&#x2F;td&gt;&lt;td&gt;40–85k pakker &#x2F; &amp;lt;5 min (WEP)&lt;&#x2F;td&gt;&lt;td&gt;~50–100 PSK&#x2F;s (CPU, cowpatty)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2012&lt;&#x2F;td&gt;&lt;td&gt;WPA2 ~70%&lt;&#x2F;td&gt;&lt;td&gt;Reaver (WPS) + GPU PSK dictionary&lt;&#x2F;td&gt;&lt;td&gt;11.000 WPS-PIN-forsøg &#x2F; 2–10 t&lt;&#x2F;td&gt;&lt;td&gt;~75.000 PSK&#x2F;s (GTX 580)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2017&lt;&#x2F;td&gt;&lt;td&gt;WPA2 ~85%&lt;&#x2F;td&gt;&lt;td&gt;KRACK; derefter PMKID (2018)&lt;&#x2F;td&gt;&lt;td&gt;1 pakke (PMKID) → offline dict&lt;&#x2F;td&gt;&lt;td&gt;~400.000 PSK&#x2F;s (GTX 1080)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2022&lt;&#x2F;td&gt;&lt;td&gt;WPA2 ~60%, WPA3 ~20%, mixed ~15%&lt;&#x2F;td&gt;&lt;td&gt;Dragonblood downgrade&lt;&#x2F;td&gt;&lt;td&gt;Tving WPA2-fallback, så GPU&#x2F;cloud&lt;&#x2F;td&gt;&lt;td&gt;~1,2M PSK&#x2F;s (RTX 3090), ~10M (8× A100)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2027&lt;&#x2F;td&gt;&lt;td&gt;WPA3 ~40%, mixed ~35%, WPA2 ~20%&lt;&#x2F;td&gt;&lt;td&gt;Klient-side + downgrade + chipset-FW&lt;&#x2F;td&gt;&lt;td&gt;SAE intakt; legacy WPA2 på lånt tid&lt;&#x2F;td&gt;&lt;td&gt;~5–8M PSK&#x2F;s (RTX 5090-klasse enkelt GPU)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;Globale udbredelses-andele er omtrentlige, afledt af offentlige Wi-Fi-målinger (WiGLE-trends + leverandør-rapporter); regn med ± 10 procentpoint.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2002-wep-overalt-og-trivielt-brudt&quot;&gt;2002 — WEP overalt, og trivielt brudt&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Standard:&lt;&#x2F;strong&gt; IEEE 802.11b med &lt;strong&gt;WEP&lt;&#x2F;strong&gt; (Wired Equivalent Privacy). 40-bit eller 104-bit RC4-nøgle, 24-bit IV, CRC-32-integritet.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Hvad er galt med den:&lt;&#x2F;strong&gt; IV’en er for lille, nøglerne er statiske, og RC4’s initial key schedule lækker bits af nøglen, når visse IV’er bruges. Det er &lt;strong&gt;FMS-angrebet&lt;&#x2F;strong&gt; (Fluhrer, Mantin, Shamir, 2001) og dets efterkommere.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Hvad en angriber gjorde i 2002:&lt;&#x2F;strong&gt; fangede trafik med en Prism-baseret USB-adapter, indsamlede et par millioner pakker (timer på et aktivt netværk) og udtrak nøglen med &lt;strong&gt;AirSnort&lt;&#x2F;strong&gt; eller &lt;strong&gt;WEPCrack&lt;&#x2F;strong&gt;. Angrebene var så pinlige, at Wi-Fi Alliance skubbede WPA som en midlertidig firmware-patchbar løsning i 2003.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Tal (2002):&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Global Wi-Fi-udbredelse:&lt;&#x2F;strong&gt; ~100% WEP (WPA blev først ratificeret marts 2003).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Nøglelængde:&lt;&#x2F;strong&gt; 40 bit (eksport-grade) eller 104 bit. Irrelevant — angrebet er på IV’en, ikke på nøglen.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;IV-space:&lt;&#x2F;strong&gt; 24 bit → kun ~16,7 M mulige IV’er. Fødselsdags-kollision efter ~5.000 pakker.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;FMS-angrebets pakke-antal:&lt;&#x2F;strong&gt; ~500 k–4 M “interessante” IV-frames (få timers aktiv trafik).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Typisk crack-tid i ur-tid:&lt;&#x2F;strong&gt; 2–10 t på et travlt SOHO-netværk.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Forbrugerhardware:&lt;&#x2F;strong&gt; én laptop + én Prism2&#x2F;Prism2.5 USB-dongle (~$40 brugt dengang).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Værktøjer:&lt;&#x2F;strong&gt; AirSnort, WEPCrack, Kismet til capture.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;CVE’er:&lt;&#x2F;strong&gt; WEP er ikke i sig selv en CVE, men Borisov&#x2F;Goldberg&#x2F;Wagner (2001) og FMS-paperet (2001) er de kanoniske referencer.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Hvad en forsvarer burde have gjort:&lt;&#x2F;strong&gt; erkendt, at WEP ikke er en sikkerhedsfunktion, og behandle det trådløse LAN som ubetroet. Brug en VPN eller IPSec på lag 3.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2007-wep-dod-wpa-overgangsvis-wpa2-pa-vej&quot;&gt;2007 — WEP død, WPA overgangsvis, WPA2 på vej&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Standard:&lt;&#x2F;strong&gt; WPA (2003), en nød-løsning med per-pakke-nøgler (TKIP). WPA2 (2004) med AES-CCMP begynder at dukke op i hjemme-routere.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Hvad der er nyt for angribere:&lt;&#x2F;strong&gt; &lt;strong&gt;PTW-angrebet&lt;&#x2F;strong&gt; på WEP (2007) reducerer pakke-antallet fra ~1 million til ~40.000 — WEP kan nu crackes på minutter. &lt;strong&gt;aircrack-ng&lt;&#x2F;strong&gt; bliver den kanoniske toolkit. Mod WPA-Personal bliver offline-dictionary-angreb på 4-way-handshake praktiske på CPU’er: fang en handshake, fodr PSK-afledningen gennem &lt;code&gt;cowpatty&lt;&#x2F;code&gt; eller &lt;code&gt;aircrack-ng&lt;&#x2F;code&gt;, prøv dictionary-indgange én ad gangen.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Hvad angribere endnu ikke havde:&lt;&#x2F;strong&gt; meningsfuld GPU-acceleration af WPA-PSK. Dictionary-angreb var langsomme.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Tal (2007):&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Global udbredelse (WiGLE-målinger):&lt;&#x2F;strong&gt; WEP ~35%, WPA ~25%, WPA2 ~20%, åben ~20%.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;PTW-angrebets pakke-antal:&lt;&#x2F;strong&gt; ~40.000–85.000 fangede frames for at gendanne en WEP-nøgle (ned fra millioner).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Crack-tid med aircrack-ng + pakke-injektion:&lt;&#x2F;strong&gt; &amp;lt;5 minutter, ofte under 60 sekunder.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;WPA-PSK dictionary-rate (CPU, cowpatty&#x2F;aircrack-ng):&lt;&#x2F;strong&gt; ~50–100 kandidater&#x2F;sek pr. core.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Rockyou-ordliste&lt;&#x2F;strong&gt; (lækket dec. 2009): 14,3 M indgange — blev de-facto engelsk PSK-ordliste.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;WPA2 obligatorisk for Wi-Fi CERTIFIED:&lt;&#x2F;strong&gt; marts 2006.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Aircrack-ng 1.0:&lt;&#x2F;strong&gt; udgivet 2006, konsoliderede økosystemet.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Hvad en forsvarer burde have gjort:&lt;&#x2F;strong&gt; migrere til WPA2-AES-CCMP, vælg en PSK længere end nogen dictionary. Drop WEP-netværk helt.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2012-wpa2-dominerer-gpu-cracking-moden&quot;&gt;2012 — WPA2 dominerer, GPU-cracking moden&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Standard:&lt;&#x2F;strong&gt; WPA2 er default på stort set al consumer-gear. WPA2-Enterprise (802.1X &#x2F; EAP) i corporate-netværk.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Hvad der er nyt for angribere:&lt;&#x2F;strong&gt; &lt;strong&gt;hashcat&lt;&#x2F;strong&gt; og &lt;strong&gt;oclHashcat&lt;&#x2F;strong&gt;, &lt;strong&gt;pyrit&lt;&#x2F;strong&gt; og &lt;strong&gt;John the Ripper&lt;&#x2F;strong&gt; gør WPA-PSK-dictionary-angrebet til et &lt;strong&gt;GPU-problem&lt;&#x2F;strong&gt;. En handshake-capture + en enkelt moderne GPU klarer titusindvis af kandidat-PSK’er pr. sekund; en lille lejet GPU-farm håndterer hundredtusinder. &lt;strong&gt;airodump-ng&lt;&#x2F;strong&gt; + &lt;strong&gt;Reaver&lt;&#x2F;strong&gt; (2011) udnytter en implementerings-fejl i &lt;strong&gt;WPS-PIN&lt;&#x2F;strong&gt; til at gendanne WPA-PSK’en helt uden en dictionary — en dødsdom for hjemme-routere med WPS-on-by-default.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Tal (2012):&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Global udbredelse:&lt;&#x2F;strong&gt; WPA2 ~70%, WEP ~10%, åben ~15%, WPA ~5%.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;WPS-PIN-space på papir:&lt;&#x2F;strong&gt; 10⁸ = 100 millioner. &lt;strong&gt;Effektiv&lt;&#x2F;strong&gt; angrebs-space efter Viehböck-splittet: 10⁴ + 10³ = ~11.000 forsøg.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Reaver ur-tid til at gendanne WPS-PIN → PSK:&lt;&#x2F;strong&gt; 2–10 timer mod en upatched AP.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;hashcat WPA-PSK throughput på GTX 580 (reference-GPU 2012):&lt;&#x2F;strong&gt; ~75.000 kandidater&#x2F;sek.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;hashcat WPA-PSK på en lille 4-GPU-rig fra æraen:&lt;&#x2F;strong&gt; ~300.000 kandidater&#x2F;sek, dvs. &lt;code&gt;rockyou.txt&lt;&#x2F;code&gt; (14,3 M) på ~50 sekunder.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Virkelig PSK-gendannelsesrate med rockyou + almindelige regler:&lt;&#x2F;strong&gt; ~20–25% på fangede handshakes i akademiske studier.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;WPA2-PEAP&#x2F;MSCHAPv2-hashrate (et Wi-Fi-tilstødende Enterprise-problem):&lt;&#x2F;strong&gt; titusinder af millioner&#x2F;sek på en enkelt GPU, fuldt 2²⁸-keyspace inden for et døgn.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Hvad forsvarere burde have gjort:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Slå WPS fra.&lt;&#x2F;strong&gt; De fleste routere havde den tændt som default.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Brug lange tilfældige PSK’er&lt;&#x2F;strong&gt;, ikke dictionary-ord.&lt;&#x2F;li&gt;
&lt;li&gt;Til enterprise: &lt;strong&gt;802.1X + EAP-TLS med klient-certifikater&lt;&#x2F;strong&gt;, ikke PEAP-MSCHAPv2 (som i sig selv er et GPU-problem).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;2017-krack&quot;&gt;2017 — KRACK&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Standard:&lt;&#x2F;strong&gt; WPA2 stadig overalt.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Hvad der er nyt for angribere:&lt;&#x2F;strong&gt; &lt;strong&gt;KRACK&lt;&#x2F;strong&gt; (Vanhoef, Piessens, 2017) — Key Reinstallation Attack. Det cracker ikke PSK’en. Det udnytter en subtil fejl i 4-way-handshaken, hvor, under visse betingelser (specifikt på Android 6+ og wpa_supplicant 2.4–2.6), genafspilning af handshake-meddelelse 3 får klienten til at geninstallere en &lt;strong&gt;all-zero session-nøgle&lt;&#x2F;strong&gt;. Derfra kan angriberen dekryptere udvalgt trafik og, afhængigt af cipher suite, injicere pakker.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Hvad gjorde KRACK anderledes end tidligere angreb:&lt;&#x2F;strong&gt; det ramte &lt;strong&gt;protokollen, ikke nøglen&lt;&#x2F;strong&gt;. En stærk PSK hjalp ikke. Hver WPA2-implementation havde brug for en patch. De fleste leverandører leverede en inden for uger; nogle tog år.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Også i denne æra:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PMKID hashcat-angrebet&lt;&#x2F;strong&gt; (2018, Steube). Mange AP’er lækker PMKID’en i en enkelt besked; én pakke er nok til at starte et offline PSK-angreb. Sænkede capture-barren yderligere — ingen klient-association nødvendig.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Evil twin &#x2F; captive portal-phishing.&lt;&#x2F;strong&gt; Efterhånden som enheds-UI’er blev smukkere, blev falske captive portals alarmerende effektive mod mennesker.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Tal (2017–2018):&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Global udbredelse:&lt;&#x2F;strong&gt; WPA2 ~85%, WEP &amp;lt;3%, åben ~10%, WPA3 endnu ikke leveret.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;KRACK CVE’er:&lt;&#x2F;strong&gt; 10 i den koordinerede offentliggørelse (CVE-2017-13077 til CVE-2017-13088).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;KRACK-berørte enheder:&lt;&#x2F;strong&gt; alle WPA2-klienter og AP’er — &lt;strong&gt;10+ milliarder&lt;&#x2F;strong&gt; endpoints. Reel patching tog år for long-tail-IoT.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Patch-latency hos leverandører:&lt;&#x2F;strong&gt; Microsoft &#x2F; de fleste Linux-distroer inden for 1 uge fra disclosure; Android 2+ måneder afhængigt af OEM; mange embedded-enheder blev aldrig patchet.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;PMKID-angrebets pakke-antal:&lt;&#x2F;strong&gt; &lt;strong&gt;1 enkelt frame&lt;&#x2F;strong&gt; mod 4-way-handshakens 4 frames — ingen klient-association eller deauth nødvendig.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;hashcat på GTX 1080 (reference-GPU 2017):&lt;&#x2F;strong&gt; ~400.000 WPA-PSK-kandidater&#x2F;sek — ~5× hurtigere end 2012.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;En lejet 8× 1080 Ti-instans (~$4&#x2F;t i 2017):&lt;&#x2F;strong&gt; ~3M kandidater&#x2F;sek — &lt;code&gt;rockyou.txt&lt;&#x2F;code&gt; på &amp;lt;5 sekunder.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Koordineret disclosure-forløbstid:&lt;&#x2F;strong&gt; 4 måneder fra leverandør-notificering til offentlig release.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Hvad en forsvarer burde have gjort:&lt;&#x2F;strong&gt; patch Android &#x2F; wpa_supplicant straks, håndhæv HTTPS overalt, så dekrypteret Wi-Fi-trafik er mindre nyttig, begynd at planlægge WPA3-migration.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2022-wpa3-ruller-ud-downgrade-angreb&quot;&gt;2022 — WPA3 ruller ud, downgrade-angreb&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Standard:&lt;&#x2F;strong&gt; WPA3 (2018) påkrævet til Wi-Fi CERTIFIED-enheder siden 2020. Nøgle-opgraderinger:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SAE&lt;&#x2F;strong&gt; (Simultaneous Authentication of Equals) erstatter 4-way-handshake-PSK’en — offline-dictionary-angreb bliver ufremkommelige.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;192-bit mode&lt;&#x2F;strong&gt; til Enterprise.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Forward secrecy&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;PMF&lt;&#x2F;strong&gt; (Protected Management Frames) obligatorisk — neutraliserer deauth-baseret denial-of-service.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Hvad der er nyt for angribere:&lt;&#x2F;strong&gt; WPA3 er ikke brudt, men dens udrulning er for det meste ikke WPA3-&lt;strong&gt;kun&lt;&#x2F;strong&gt;. &lt;strong&gt;WPA2&#x2F;3-transition-mode&lt;&#x2F;strong&gt; — default på de fleste AP’er — betyder, at en angriber kan tvinge en downgrade og angribe som WPA2. Det er &lt;strong&gt;Dragonblood&lt;&#x2F;strong&gt; (Vanhoef, Ronen, 2019 + opfølgninger): en familie af side-channel- og downgrade-angreb mod SAE. I 2022 lukkede patchede SAE-implementationer for det meste timing-side-channels; downgrade-angrebet virker stadig på mixed-mode-netværk.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Også i denne æra:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloud-skala-cracking&lt;&#x2F;strong&gt;: at leje 8× H100 eller lignende på timebasis gør PMK-dictionary-angreb praktiske på en skala, ingen amatør havde i 2012.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Chipset-firmware-sårbarheder&lt;&#x2F;strong&gt; (FragAttacks, 2021): fejl i selve Wi-Fi-stakken, under WPA-laget, lader angribere injicere frames uden at skulle bryde en handshake overhovedet.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Tal (2022):&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Global udbredelse:&lt;&#x2F;strong&gt; WPA2-only ~60%, WPA3 ~20%, WPA2&#x2F;3-transition-mode ~15%, WEP &amp;lt;1%.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;WPA3-understøttelse på nye routere:&lt;&#x2F;strong&gt; ~60% af forbruger-AP’er leveret i 2022 understøttede WPA3 (vs. ~10% i 2020).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Dragonblood CVE’er:&lt;&#x2F;strong&gt; 5 (CVE-2019-9494 til CVE-2019-9499).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;FragAttacks CVE’er:&lt;&#x2F;strong&gt; 12 i 2021-bundlet.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;hashcat WPA-PSK på RTX 3090:&lt;&#x2F;strong&gt; ~1,2M kandidater&#x2F;sek.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;8× A100-cloud-instans:&lt;&#x2F;strong&gt; ~10M kandidater&#x2F;sek samlet. &lt;code&gt;rockyou.txt&lt;&#x2F;code&gt; på ~1,5 sekund; et 10 mia.-kandidats mask-angreb på ~17 minutter.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Pris pr. milliard PSK-forsøg på spot-cloud-GPU’er:&lt;&#x2F;strong&gt; ~$3–5.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;12-tegns fuldt tilfældig PSK-entropi:&lt;&#x2F;strong&gt; 2⁷² ≈ 4,7 × 10²¹. Ved 10M H&#x2F;s er udtømmende angreb = &lt;strong&gt;~15.000 år&lt;&#x2F;strong&gt;. Sikker.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;8-tegns små-bogstav+ciffer PSK-entropi:&lt;&#x2F;strong&gt; 2⁴¹ ≈ 2,2 × 10¹². Ved 10M H&#x2F;s: &lt;strong&gt;~2,5 døgn&lt;&#x2F;strong&gt;. Ikke sikker.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Hvad en forsvarer burde have gjort:&lt;&#x2F;strong&gt; WPA3-Personal kun (ingen WPA2-transition) på netværk, hvor du kan håndhæve det; PMF påkrævet; lang tilfældig PSK selv med SAE; hold AP-firmware opdateret.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2027-dagens-landskab&quot;&gt;2027 — dagens landskab&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Standard:&lt;&#x2F;strong&gt; Wi-Fi 6E (6 GHz) og tidlige Wi-Fi 7-udrulninger. WPA3 næsten universel på nyt gear; legacy WPA2 stadig almindelig i små virksomheder og længe-levende hjemme-netværk.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;State of the art i angreb:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SAE holder.&lt;&#x2F;strong&gt; Intet offentligt, praktisk angreb mod et velkonfigureret WPA3-Personal-netværk i 2027. Dictionary-angreb mod PSK’en er ikke fremkommelige — det er SAE’s pointe.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Downgrade-angreb&lt;&#x2F;strong&gt; er den primære ting. Ethvert netværk, der stadig annoncerer WPA2&#x2F;3-transition, kan angribes som WPA2. Modstandere kigger efter mixed-mode-SSID’er først.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;6 GHz åbner ny overflade.&lt;&#x2F;strong&gt; 6 GHz-båndet kræver WPA3 til nye standarder; men legacy-klient-bridging, IoT-enheder uden 6 GHz-understøttelse og fejlkonfigureret co-broadcast-SSID’er skaber inkonsistenser, angribere udnytter.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Klient-side-angreb.&lt;&#x2F;strong&gt; Når link-laget er sikkert, flytter angribere op. Rogue-captive-portals der snyder telefoner til at stole på et dårligt certifikat, QR-kode-tilslutning med falske SSID’er, deauth-under-roaming-angreb (sværere nu med PMF, men ikke elimineret).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Supply chain.&lt;&#x2F;strong&gt; Firmware-indlejrede bagdøre og vendor-bugs i Wi-Fi-chipsets (FragAttacks-arven) er stadig en varig kilde til exploits.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Cloud-cracking er blevet commodity.&lt;&#x2F;strong&gt; Et weekend-langt SAE-offline-angreb (i de tilfælde, hvor offline-angreb er muligt, altså målet kørte en upatched SAE) koster groft prisen på en pæn middag. Det betyder for det meste intet, fordi SAE ikke er reducerbart til offline-dictionary-angreb — men det skubber økonomien på legacy-WPA2-netværk, folk ikke har migreret.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Værktøjer stadig i rotation i 2027:&lt;&#x2F;strong&gt; aircrack-ng (ældre, stadig kanonisk til captures og WPA2), hashcat (cracking), bettercap (Wi-Fi MITM &#x2F; rogue AP), airgeddon (workflow-lim) og en bølge af ESP32-baserede lomme-værktøjer til opportunistisk deauth og handshake-capture.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Tal (2027):&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Global udbredelse:&lt;&#x2F;strong&gt; WPA3 ~40%, WPA2&#x2F;3-transition ~35%, WPA2-only ~20%, WEP ~0,5% (lang hale af gammelt gear).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise-andel der kører WPA3-Enterprise 192-bit mode:&lt;&#x2F;strong&gt; stadig &amp;lt;10%. De fleste corporate-netværk er stadig WPA2-Enterprise med PEAP.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Ny-enhed WPA3-certificering:&lt;&#x2F;strong&gt; obligatorisk for Wi-Fi 6 siden 2020, Wi-Fi 6E (6 GHz) siden 2022, Wi-Fi 7 fra launch.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;hashcat WPA-PSK på RTX 5090-klasse enkelt-GPU (2025+):&lt;&#x2F;strong&gt; ~5–8M kandidater&#x2F;sek.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;8× H100-cloud-instans:&lt;&#x2F;strong&gt; ~50M kandidater&#x2F;sek samlet. &lt;code&gt;rockyou.txt&lt;&#x2F;code&gt; på ~0,3 sekund.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;SAE (WPA3-Personal) offline-angreb:&lt;&#x2F;strong&gt; ufremkommeligt ved enhver hash-rate — handshaken udleverer ikke en crackbar hash til en aflytter.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Pris for at brute-force en svag 8-tegns WPA2-PSK i 2027:&lt;&#x2F;strong&gt; &amp;lt;$10 på spot-cloud-GPU’er.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Pris for at brute-force en 12-tegns tilfældig WPA2-PSK:&lt;&#x2F;strong&gt; stadig ~$10⁹ (samme regnestykke som 2022, GPU’er 5× hurtigere → stadig årtusinder).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;ESP32-S3 “Wi-Fi Nugget” &#x2F; Flipper Zero-klasse lomme-værktøjer&lt;&#x2F;strong&gt; i cirkulation i 2027: hundredtusinder af enheder. Opportunistisk handshake-capture er trivielt; PSK-cracking er stadig offline på en kraftig host.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Deauth-DoS-effektivitet:&lt;&#x2F;strong&gt; nær-nul på PMF-required-netværk; virker stadig mod de ~30% af udrullede AP’er, hvor PMF er “capable”, men ikke “required”.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Bundlinje: mod &lt;strong&gt;WPA3-Personal med SAE, PMF påkrævet og en tilfældig PSK&lt;&#x2F;strong&gt; kommer intet af 2027-værktøjssættet ind via link-laget. Mod &lt;strong&gt;en typisk 2019-vintage hjemme-router, der stadig kører WPA2 med en svag PSK og WPS valgfrit eksponeret&lt;&#x2F;strong&gt;, er en weekend på en mellem-klasse-GPU rigeligt.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;defensiv-vejledning-for-2027&quot;&gt;Defensiv vejledning for 2027&lt;&#x2F;h2&gt;
&lt;p&gt;Det er den del, der betyder mere end al historien.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WPA3-Personal SAE-only eller WPA3-Enterprise med EAP-TLS.&lt;&#x2F;strong&gt; Ingen transition-mode på noget netværk, du kan kontrollere. Tjek eksplicit — mange AP’er default til transition.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;PMF påkrævet, ikke valgfrit.&lt;&#x2F;strong&gt; Protected Management Frames forhindrer deauth-drevne handshake-captures og basal denial-of-service.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;PSK-længde: tilfældig, ≥ 20 tegn.&lt;&#x2F;strong&gt; SAE gør korte PSK’er sikrere end de plejede at være, men ingen grund til at spille.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Slå WPS permanent fra.&lt;&#x2F;strong&gt; Selvom WPS-PIN-angrebet er oldgammelt, leverer mange routere stadig med det aktiveret for “bekvemmelighed”.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Gæste-SSID isoleret.&lt;&#x2F;strong&gt; Klient-til-klient-isolation slået til og routet til et separat VLAN uden intern LAN-adgang.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;IoT-SSID, separat og indelukket.&lt;&#x2F;strong&gt; Billige Wi-Fi-termostater og legetøj er det svageste led på de fleste hjemme-netværk. De får deres eget SSID, deres eget VLAN og ingen rute til noget vigtigt.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Firmware-opdateringer på AP’er.&lt;&#x2F;strong&gt; De fleste interessante 2020’er-Wi-Fi-sårbarheder var på chipset-niveau; rettelsen er altid en firmware-opdatering. Køb AP’er fra en leverandør, der leverer dem.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Antag at link-laget vil fejle og forsvar dig over det.&lt;&#x2F;strong&gt; HTTPS overalt, klient-certs på alt, der betyder noget, VPN eller Tailscale til fjernadgang. Når (ikke hvis) nogen bryder din Wi-Fi, skal lag 4+ stadig holde.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;hvad-der-forblev-det-samme-gennem-25-ar&quot;&gt;Hvad der forblev det samme gennem 25 år&lt;&#x2F;h2&gt;
&lt;p&gt;Tre mønstre gentager sig ved hver generation:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Kryptografien er næsten altid stærkere end udrulningerne.&lt;&#x2F;strong&gt; WEP var en design-fejl; WPA2 og WPA3 er blevet brudt af implementerings-fejl, downgrade-stier og side-channels — ikke af rene krypto-svagheder.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Defaults betyder mere end kapabiliteter.&lt;&#x2F;strong&gt; WPS tændt som default, WPA2&#x2F;3-transition-mode tændt som default, gæste-netværk uden isolation som default — det er det, angribere faktisk finder, i skala.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Angriberen flytter altid op i stakken.&lt;&#x2F;strong&gt; Når link-lags-sikkerheden forbedres, skifter angreb til captive portals, falske certs, klient-fejlkonfigurationer og phishing. Ingen mængde WPA3 retter brugeren, der klikker “Stol på” på evil-twin’ens falske certifikat.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h2 id=&quot;coda&quot;&gt;Coda&lt;&#x2F;h2&gt;
&lt;p&gt;Hvis denne posts forfader på dette site, fra 2010, var “Hvordan man hacker et trådløst netværk” og fokuserede på WEP med &lt;code&gt;aircrack-ng&lt;&#x2F;code&gt;, er 2027-versionen tættere på “Hvordan man tænker om Wi-Fi-sikkerhed” og fokuserer på konfiguration, patching og realistisk trussels-modellering. Kryptografien har gjort sit arbejde. Lagene omkring den er den interessante front nu.&lt;&#x2F;p&gt;
&lt;p&gt;Test dine egne netværk — eller netværk, du er autoriseret til at teste — test ikke nogen andens. Samme lov, der gjaldt i 2002, gælder i 2027.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="da">
        <title>nemboks.dk — få din digitale post (mit.dk, e-Boks) sendt direkte til din e-mail</title>
        <published>2026-04-22T00:00:00+00:00</published>
        <updated>2026-04-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://www.x2q.net/da/post/nemboks-dk-videresend-digital-post/"/>
        <id>https://www.x2q.net/da/post/nemboks-dk-videresend-digital-post/</id>
        
        <content type="html" xml:base="https://www.x2q.net/da/post/nemboks-dk-videresend-digital-post/">&lt;p&gt;&lt;strong&gt;TL;DR —&lt;&#x2F;strong&gt; &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nemboks.dk&quot;&gt;nemboks.dk&lt;&#x2F;a&gt; &lt;strong&gt;videresender digital post&lt;&#x2F;strong&gt; (fra &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;mit.dk&quot;&gt;mit.dk&lt;&#x2F;a&gt; og &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.e-boks.com&#x2F;&quot;&gt;e-Boks&lt;&#x2F;a&gt;) direkte til din e-mail. Problemet, det løser: digital post er i teorien “push”, men i praksis “pull” — du skal stadig logge ind med MitID, åbne en app og klikke rundt for at læse et brev fra SKAT eller kommunen. Nemboks laver det til en e-mail, der lander i den indbakke, du i forvejen bor i — med PDF’en vedhæftet. Bygget til danske SMV’er, hvor samme &lt;code&gt;virksomhed&lt;&#x2F;code&gt; modtager post for flere selskaber eller medarbejdere, og hvor revisorer, bogholdere og ejendomsadministratorer vil have digital post samme sted som al anden e-mail. Gratis beta; efter beta koster det 39 kr&#x2F;md på årlig betaling, 49 kr&#x2F;md månedlig.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;problemet-med-dansk-digital-post&quot;&gt;Problemet med dansk digital post&lt;&#x2F;h2&gt;
&lt;p&gt;Siden 2014 er kommunikation fra det offentlige digital som udgangspunkt. Det betyder, at hvis din kommune, SKAT, Udbetaling Danmark eller FerieKonto skal fat i dig, lægger de brevet i enten &lt;strong&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;mit.dk&quot;&gt;mit.dk&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (den offentlige portal) eller &lt;strong&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.e-boks.com&#x2F;&quot;&gt;e-Boks&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (historisk set den mest brugte private portal, nu koblet til Digital Post).&lt;&#x2F;p&gt;
&lt;p&gt;I princippet er det fint: samlet, sporbart, ingen papir. I praksis er der en masse friktion:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Du skal logge ind med MitID hver gang.&lt;&#x2F;strong&gt; Hvert skattebrev, hver p-afgift, hver feriepenge-besked ligger bag en MFA-flow.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Apps notificerer dig, men notifikationerne er tynde.&lt;&#x2F;strong&gt; “Du har ny post” — ikke emnelinje, ikke afsender, ikke nok til at prioritere.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Der er ingen indbygget videresendelse.&lt;&#x2F;strong&gt; Du kan ikke sige “send alt fra SKAT til min bogholder på &lt;code&gt;bogholder@firma.dk&lt;&#x2F;code&gt;”.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Virksomheder får det værste af begge verdener.&lt;&#x2F;strong&gt; En CVR-registreret virksomhed har sin egen mit.dk &#x2F; e-Boks-indbakke. Hvis indehaveren ikke tjekker den, er der ingen, der gør.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;E-mail er omvendt standard-indbakken for små virksomheder: delte postkasser, videresendelsesregler, arkivering, filtre, søgning. Nemboks bygger broen imellem.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvad-nemboks-gor&quot;&gt;Hvad Nemboks gør&lt;&#x2F;h2&gt;
&lt;p&gt;Når Nemboks er sat op, logger den på din mit.dk &#x2F; e-Boks på dine vegne, tjekker for ny post og sender hvert nyt brev videre — &lt;strong&gt;som en rigtig e-mail med PDF’en vedhæftet&lt;&#x2F;strong&gt; — til den eller de adresser, du har konfigureret.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;En e-mail pr. brev.&lt;&#x2F;strong&gt; Emne = afsender + emne. Brødtekst = tekst-preview. Vedhæftning = PDF’en.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Flere selskaber pr. konto.&lt;&#x2F;strong&gt; Hvis du er revisor for flere CVR’er, bor de alle under samme Nemboks-dashboard.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Flere destinationer pr. selskab.&lt;&#x2F;strong&gt; Send f.eks. alt fra SKAT til bogholderen, resten til ejeren.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Originalen bliver liggende i mit.dk &#x2F; e-Boks.&lt;&#x2F;strong&gt; Intet slettes — Nemboks læser kun.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Logger hver videresendelse.&lt;&#x2F;strong&gt; For revision og ro i maven.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Det praktiske resultat: revisoren eller bogholderen, der allerede bor i Outlook eller Gmail, holder op med at skifte kontekst til en portal en gang om ugen.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvem-det-er-til&quot;&gt;Hvem det er til&lt;&#x2F;h2&gt;
&lt;p&gt;Nemboks er bygget til danske SMV’er, især:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Revisorer og bogholdere.&lt;&#x2F;strong&gt; Kunden giver adgang én gang; derefter bliver hvert SKAT-brev for hver kunde til en e-mail i den delte indbakke.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Ejendomsadministratorer.&lt;&#x2F;strong&gt; En enkelt administrator kan sidde med post for dusinvis af ejendoms-A&#x2F;S og -ApS.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Smv-indehavere.&lt;&#x2F;strong&gt; Enkeltmandsvirksomheden eller to-mands-ApS, hvor ejeren hellere vil have brevet fra kommunen samme sted som sin kunde-mail.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;stakken&quot;&gt;Stakken&lt;&#x2F;h2&gt;
&lt;p&gt;For de nysgerrige:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rails 8&lt;&#x2F;strong&gt; på Ruby 3.4 med Hotwire (Turbo + Stimulus) og Tailwind til dashboardet.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;PostgreSQL&lt;&#x2F;strong&gt; til persistens.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;auth0.com&#x2F;&quot;&gt;Auth0&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; til autentificering. Brugerne logger på med Google, Microsoft eller e-mail+kodeord — ingen separat Nemboks-kodeord at glemme.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stripe.com&#x2F;&quot;&gt;Stripe&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; til abonnementsstyring, inkl. deres hostede kundeportal til selv-betjent kortopdatering og opsigelse.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;postmarkapp.com&#x2F;&quot;&gt;Postmark&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; til transaktionel e-mail — de er kategoriens standard for “e-mail der skal lande i indbakken”, hvilket er hele pointen med en videresendelses-tjeneste.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Docker + Kamal&lt;&#x2F;strong&gt; til deployment. Zero-downtime rollouts på en lille flåde; ingen Kubernetes at drifte.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Pages&lt;&#x2F;strong&gt; til det statiske marketing-site på &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nemboks.dk&quot;&gt;nemboks.dk&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Opdelingen — Rails-app på Kamal, marketing-site på Pages — er bevidst. Marketing-sitet skal være billigt, hurtigt og tungt cached; Rails-appen skal have database og baggrundsjobs. At køre dem som to separate deployments holder hver af dem simpel.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;pris&quot;&gt;Pris&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gratis beta&lt;&#x2F;strong&gt;, mens tjenesten stabiliseres.&lt;&#x2F;li&gt;
&lt;li&gt;Efter beta: &lt;strong&gt;39 kr&#x2F;md&lt;&#x2F;strong&gt; på årlig betaling, &lt;strong&gt;49 kr&#x2F;md&lt;&#x2F;strong&gt; månedlig — excl. moms. Flad pris pr. selskab; ingen pris pr. brev.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;60 dages gratis prøveperiode&lt;&#x2F;strong&gt; til nye kunder efter beta.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;ofte-stillede-sporgsmal&quot;&gt;Ofte stillede spørgsmål&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;ma-nemboks-laese-min-mit-dk-e-boks&quot;&gt;Må Nemboks læse min mit.dk &#x2F; e-Boks?&lt;&#x2F;h3&gt;
&lt;p&gt;Ja — som indbakke-ejer giver du Nemboks lov til at læse på dine vegne. Nemboks læser kun; intet slettes, besvares eller markeres som læst uden at du har konfigureret det.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;er-det-gdpr-compliant&quot;&gt;Er det GDPR-compliant?&lt;&#x2F;h3&gt;
&lt;p&gt;Nemboks behandler persondata på dine vegne. Som kunde er du dataansvarlig; Nemboks er databehandler, og der er en standard databehandleraftale (DPA) at underskrive. Alle data opbevares i EU.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvad-sker-der-med-det-originale-brev-i-mit-dk-e-boks&quot;&gt;Hvad sker der med det originale brev i mit.dk &#x2F; e-Boks?&lt;&#x2F;h3&gt;
&lt;p&gt;Det bliver liggende. Nemboks er read-only.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;kan-jeg-videresende-til-flere-e-mailadresser&quot;&gt;Kan jeg videresende til flere e-mailadresser?&lt;&#x2F;h3&gt;
&lt;p&gt;Ja. Hvert selskab kan have flere modtagere, og du kan sende forskellige afsendere til forskellige adresser (f.eks. alt fra SKAT til bogholderen).&lt;&#x2F;p&gt;
&lt;h3 id=&quot;virker-nemboks-for-privatpersoner&quot;&gt;Virker Nemboks for privatpersoner?&lt;&#x2F;h3&gt;
&lt;p&gt;Det nuværende fokus er danske virksomheder (CVR). En privat-plan kommer måske senere.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvad-hvis-nemboks-gar-ned&quot;&gt;Hvad hvis Nemboks går ned?&lt;&#x2F;h3&gt;
&lt;p&gt;Din post lander stadig i mit.dk &#x2F; e-Boks som normalt; Nemboks videresender bare ikke, før tjenesten er tilbage. Intet går tabt.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvordan-opsiger-jeg&quot;&gt;Hvordan opsiger jeg?&lt;&#x2F;h3&gt;
&lt;p&gt;Via Stripes kundeportal inde fra dashboardet. Ingen e-mail, intet telefonopkald.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvorfor-bygge-det&quot;&gt;Hvorfor bygge det&lt;&#x2F;h2&gt;
&lt;p&gt;Digital post virker. Det er sikkert, sporbart, og jeg vil hellere have et SKAT-brev i mit.dk end en brun kuvert. Men brugerfladen er designet til en borger, der læser en håndfuld breve om året — ikke til en virksomhed, der får dusinvis om ugen på tværs af flere CVR’er. E-mail løser “dusinvis om ugen på tværs af flere postkasser” udmærket — filtre, regler, delte indbakker, søgning — så den mindst interessante, men mest nyttige bro er at få brevene ud af portalen og ind i e-mailen med PDF’en vedhæftet, uden at nogen skal logge ind hver gang.&lt;&#x2F;p&gt;
&lt;p&gt;Det er Nemboks.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="da">
        <title>Sådan afspiller du Spotify på en Logitech Squeezebox i 2026</title>
        <published>2026-04-22T00:00:00+00:00</published>
        <updated>2026-04-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://www.x2q.net/da/post/squeezebox-spotify-guide-dansk/"/>
        <id>https://www.x2q.net/da/post/squeezebox-spotify-guide-dansk/</id>
        
        <content type="html" xml:base="https://www.x2q.net/da/post/squeezebox-spotify-guide-dansk/">&lt;p&gt;&lt;strong&gt;TL;DR —&lt;&#x2F;strong&gt; Det officielle Spotify-plugin, Logitech leverede med Squeezebox, holdt op med at virke, da Spotify lukkede &lt;code&gt;libspotify&lt;&#x2F;code&gt;-API’en i 2022. I 2026 er der to fungerende veje til at få &lt;strong&gt;Spotify på en Squeezebox Classic, Touch, Boom, Radio eller Transporter&lt;&#x2F;strong&gt;: (1) &lt;strong&gt;Logitech Media Server + &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;michaelherger&#x2F;Spotty-Plugin&quot;&gt;Spotty-plugin’et&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (nu omdøbt &lt;code&gt;Spotty&lt;&#x2F;code&gt; &#x2F; nogle gange &lt;code&gt;Spotty-XL&lt;&#x2F;code&gt;), der bruger Spotifys Web API plus &lt;code&gt;librespot&lt;&#x2F;code&gt; under motorhjelmen, eller (2) kør &lt;strong&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Spotifyd&#x2F;spotifyd&quot;&gt;spotifyd&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; på samme host som LMS og peg LMS på den som generisk lydkilde. Vej 1 er den, du vil bruge, medmindre du har en grund til andet. Dette indlæg gennemgår den.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvad-skete-der-med-det-officielle-plugin&quot;&gt;Hvad skete der med det officielle plugin&lt;&#x2F;h2&gt;
&lt;p&gt;Squeezebox-hardware gik end-of-life hos Logitech i 2012, men softwaren — &lt;strong&gt;Logitech Media Server (LMS)&lt;&#x2F;strong&gt;, det der faktisk streamer musik til enhederne — er blevet community-vedligeholdt siden. I årevis leverede den et officielt “Spotify”-plugin, der brugte Spotifys nu udfasede &lt;code&gt;libspotify&lt;&#x2F;code&gt; C-bibliotek. Da Spotify lukkede &lt;code&gt;libspotify&lt;&#x2F;code&gt; i 2022, holdt det plugin op med at virke, og Spotify har ikke leveret en erstatning til tredjeparts-indbyggede enheder.&lt;&#x2F;p&gt;
&lt;p&gt;Community’et udfyldte hullet:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;librespot&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; — en open-source Rust-reimplementering af Spotify Connect-klientprotokollen. Grundlaget for de fleste moderne tredjeparts-Spotify-integrationer.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Spotty-plugin til LMS&lt;&#x2F;strong&gt; — pakker &lt;code&gt;librespot&lt;&#x2F;code&gt; og Spotifys Web API ind i et LMS-plugin. Præsenterer Spotify-browsing, søgning, playlister og afspilning inde i Squeezebox-UI’et (både enheds-skærmen og LMS-web-UI’et).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;spotifyd&lt;&#x2F;strong&gt; — en selvstændig &lt;code&gt;librespot&lt;&#x2F;code&gt;-baseret dæmon, der fremstår som et Spotify Connect-mål. Din telefon ser den som en højttaler, du caster til den, og dens lydudgang går et sted hen, hvor LMS kan samle det op.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;vej-1-anbefalet-spotty-plugin-pa-lms&quot;&gt;Vej 1 (anbefalet): Spotty-plugin på LMS&lt;&#x2F;h2&gt;
&lt;p&gt;Dette er den reneste oplevelse og den, der føles native på Squeezeboxen. Du søger og browser fra Squeezebox-fjernbetjeningen eller Touch-skærmen, og det Virker Bare.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;1-fa-lms-op-at-kore&quot;&gt;1. Få LMS op at køre&lt;&#x2F;h3&gt;
&lt;p&gt;Hvis du ikke allerede kører LMS, så installér det på en altid-tændt maskine — en Raspberry Pi, et NAS med Docker eller en lille Linux-boks er ideelt.&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;# Debian&#x2F;Ubuntu — hent den nyeste .deb fra community-repoet
wget https:&#x2F;&#x2F;downloads.slimdevices.com&#x2F;LogitechMediaServer_v8.x&#x2F;logitechmediaserver_&amp;lt;latest&amp;gt;_amd64.deb
sudo apt install .&#x2F;logitechmediaserver_&amp;lt;latest&amp;gt;_amd64.deb
sudo systemctl enable --now logitechmediaserver
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Eller via Docker — &lt;code&gt;lmscommunity&#x2F;logitechmediaserver&lt;&#x2F;code&gt; er et vedligeholdt image:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;docker run -d --name lms \
  --network host \
  -v lms-config:&#x2F;config \
  -v &#x2F;sti&#x2F;til&#x2F;musik:&#x2F;music:ro \
  lmscommunity&#x2F;logitechmediaserver:latest
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Åbn &lt;code&gt;http:&#x2F;&#x2F;&amp;lt;host&amp;gt;:9000&#x2F;&lt;&#x2F;code&gt;, og du skulle se LMS-web-UI’et. Dine Squeezebox-enheder på samme LAN skal dukke op under &lt;strong&gt;Players&lt;&#x2F;strong&gt; automatisk.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;2-installer-spotty&quot;&gt;2. Installér Spotty&lt;&#x2F;h3&gt;
&lt;p&gt;I LMS-web-UI’et: &lt;strong&gt;Settings → Plugins → Install new plugins&lt;&#x2F;strong&gt; og kryds &lt;strong&gt;Spotty&lt;&#x2F;strong&gt; af (forfatter: Michael Herger). LMS henter, installerer og genstarter. Efter genstart har du et &lt;strong&gt;Spotty&lt;&#x2F;strong&gt;-punkt i &lt;strong&gt;Settings → Advanced → Spotty&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;3-autoriser-spotty-med-din-spotify-konto&quot;&gt;3. Autoriser Spotty med din Spotify-konto&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;I &lt;strong&gt;Settings → Advanced → Spotty&lt;&#x2F;strong&gt; klik &lt;strong&gt;Add account&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Spotty starter et OAuth-flow via Spotifys Web API — du logger ind én gang i en browser, godkender adgangen, og tokenet gemmes på LMS-serveren.&lt;&#x2F;li&gt;
&lt;li&gt;Du skal bruge &lt;strong&gt;Spotify Premium&lt;&#x2F;strong&gt; til afspilning. (Det er en Spotify-side-grænse: &lt;code&gt;librespot&lt;&#x2F;code&gt; kan autentificere med Free, men fuld-kvalitets-afspilning er kun til Premium.)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;4-afspil-noget&quot;&gt;4. Afspil noget&lt;&#x2F;h3&gt;
&lt;p&gt;På selve Squeezebox-enheden: &lt;strong&gt;Home → My Music → Spotty&lt;&#x2F;strong&gt; (eller &lt;strong&gt;Home → Music Library → Spotty&lt;&#x2F;strong&gt;, afhængigt af din LMS-version) — browsing af playlister, søgning, start et nummer. På Squeezebox Touch virker artwork på skærmen. På Classic virker tekst-UI’et. På Radio og Boom styrer du det fra web-UI’et eller apps som &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;squeeze-commander.com&#x2F;&quot;&gt;Squeeze Commander&lt;&#x2F;a&gt; &#x2F; &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;play.google.com&#x2F;store&#x2F;apps&#x2F;details?id=uk.org.ngo.squeezer&quot;&gt;Squeezer&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Spotty tilføjer også Squeezebox-enheder som &lt;strong&gt;Spotify Connect-mål&lt;&#x2F;strong&gt; — det betyder, at du kan caste fra din telefon-Spotify-app til “Stue-Squeezeboxen” native, på samme måde som du ville caste til en Sonos eller en Google Home.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;vej-2-spotifyd-som-connect-bro&quot;&gt;Vej 2: spotifyd som Connect-bro&lt;&#x2F;h2&gt;
&lt;p&gt;Brug denne, hvis Spotty ikke vil installere (gammel LMS-version, gammel Perl, mærkeligt OS) eller du specifikt vil have Spotify Connect-adfærd uden Spotty.&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;# Debian&#x2F;Ubuntu
sudo apt install spotifyd
# eller fra kilden: cargo install spotifyd
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Konfigurér &lt;code&gt;&#x2F;etc&#x2F;spotifyd.conf&lt;&#x2F;code&gt; med dine Spotify-credentials, en backend (&lt;code&gt;alsa&lt;&#x2F;code&gt;, &lt;code&gt;pulseaudio&lt;&#x2F;code&gt; eller &lt;code&gt;pipe&lt;&#x2F;code&gt;) og et enhedsnavn. Start dæmonen:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl enable --now spotifyd
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Fra din telefon, cast til den &lt;code&gt;spotifyd&lt;&#x2F;code&gt;-navngivne enhed. Lyden kommer ud af hosten.&lt;&#x2F;p&gt;
&lt;p&gt;For at få den lyd ind i en Squeezebox, pipe &lt;code&gt;spotifyd&lt;&#x2F;code&gt; til en FIFO og afspil FIFO’en i LMS:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;# spotifyd.conf
backend = &amp;quot;pipe&amp;quot;
device = &amp;quot;&#x2F;var&#x2F;run&#x2F;spotifyd.pipe&amp;quot;
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Tilføj derefter FIFO’en som en &lt;strong&gt;File system music folder&lt;&#x2F;strong&gt; i LMS og afspil den som en live-stream.&lt;&#x2F;p&gt;
&lt;p&gt;Det er klodset og har ~1 s forsinkelse i forhold til Spottys tætte integration. Brug det kun, hvis vej 1 ikke virker for dig.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;virker-pa-hvilke-squeezeboxe&quot;&gt;Virker på hvilke Squeezeboxe?&lt;&#x2F;h2&gt;
&lt;p&gt;Spotty virker på alle Squeezebox-enheder, der taler med LMS:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Squeezebox Classic &#x2F; Squeezebox v3&lt;&#x2F;strong&gt; (tekstdisplay) — tekst-UI-browsing og afspilning.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Squeezebox Touch&lt;&#x2F;strong&gt; — farvetouchskærm, artwork, hele UI’et.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Squeezebox Boom&lt;&#x2F;strong&gt; — tekst-UI, samme som Classic.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Squeezebox Radio&lt;&#x2F;strong&gt; — tekst-UI, indbygget højttaler.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Squeezebox Duet &#x2F; Controller&lt;&#x2F;strong&gt; — controllerens UI virker; afspilning går til Receiveren.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Transporter&lt;&#x2F;strong&gt; — fuld understøttelse.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;piCorePlayer &#x2F; SqueezeLite på Pi&lt;&#x2F;strong&gt; — ja, det er software-Squeezeboxe, og Spotty streamer fint til dem.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Så længe enheden kan forbinde til LMS, kan Spotty fodre den.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;ofte-stillede-sporgsmal&quot;&gt;Ofte stillede spørgsmål&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;skal-jeg-have-spotify-premium&quot;&gt;Skal jeg have Spotify Premium?&lt;&#x2F;h3&gt;
&lt;p&gt;Ja, til afspilning. &lt;code&gt;librespot&lt;&#x2F;code&gt; (og dermed Spotty) kræver en Premium-konto for at afkode lyd. Spotify Free-konti kan autentificere, men kan ikke afspille.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;virker-squeezeboxen-som-spotify-connect-hojttaler&quot;&gt;Virker “Squeezeboxen som Spotify Connect-højttaler”?&lt;&#x2F;h3&gt;
&lt;p&gt;Ja, med Spotty installeret. Hver Squeezebox-player dukker op i Spotify-appens enhedsvælger som et Connect-mål.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;virker-hi-res-lossless&quot;&gt;Virker hi-res &#x2F; lossless?&lt;&#x2F;h3&gt;
&lt;p&gt;Spotify tilbyder ikke selv lossless på standardplaner (Hi-Fi har været “kommer snart” i årevis). Spotty afspiller, hvad Spotify serverer — Ogg Vorbis 320 kbps på Premium — og Squeezeboxen håndterer det native.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;gapless-afspilning&quot;&gt;Gapless afspilning?&lt;&#x2F;h3&gt;
&lt;p&gt;Ja, Spotty understøtter gapless.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;gar-det-i-stykker-hvis-spotifys-web-api-aendrer-sig&quot;&gt;Går det i stykker, hvis Spotifys Web API ændrer sig?&lt;&#x2F;h3&gt;
&lt;p&gt;Ja, lejlighedsvis — Spotify roterer jævnligt OAuth-scopes eller udfaser endpoints, og Spotty får en patch-release. Hold plugin’et opdateret.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;kan-jeg-kore-lms-pa-samme-boks-som-mit-nas&quot;&gt;Kan jeg køre LMS på samme boks som mit NAS?&lt;&#x2F;h3&gt;
&lt;p&gt;Absolut. LMS er let (~200 MB RAM, minimal CPU undtagen under bibliotek-scanninger). At køre det ved siden af Samba eller på en homelab-SBC er det almindelige setup.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;er-det-det-samme-som-picoreplayer&quot;&gt;Er det det samme som “piCorePlayer”?&lt;&#x2F;h3&gt;
&lt;p&gt;piCorePlayer er en lille Linux-distribution, der gør en Raspberry Pi til en Squeezebox-kompatibel player (via SqueezeLite). Den erstatter ikke LMS — du skal stadig bruge LMS som server. piCorePlayer + LMS + Spotty er en meget almindelig 2026-stak for folk, hvis oprindelige Squeezebox-hardware endelig døde.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvad-du-gor-hvis-din-squeezebox-slet-ikke-vil-forbinde-til-lms&quot;&gt;Hvad du gør, hvis din Squeezebox slet ikke vil forbinde til LMS&lt;&#x2F;h2&gt;
&lt;p&gt;To ting at tjekke først:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;mDNS &#x2F; multicast på tværs af dit netværk.&lt;&#x2F;strong&gt; Moderne Wi-Fi-routere blokerer ofte multicast mellem SSID’er eller til kablede hosts. Sæt Squeezeboxen og LMS på samme subnet&#x2F;VLAN med multicast tilladt.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;SlimProto-porten (3483&#x2F;udp og 3483&#x2F;tcp).&lt;&#x2F;strong&gt; Det er det, Squeezeboxen bruger til at finde LMS. Ikke blokeret af noget fornuftigt, men værd at tjekke, hvis du kører en stram firewall.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Derudover er Squeezebox-community’et stadig aktivt — &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;forums.slimdevices.com&#x2F;&quot;&gt;forums.slimdevices.com&lt;&#x2F;a&gt; og &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;LMS-Community&quot;&gt;LMS Community GitHub&lt;&#x2F;a&gt; er, hvor problemer bliver løst.&lt;&#x2F;p&gt;
&lt;p&gt;Squeezebox-hardware blev udfaset for femten år siden. Takket være LMS, Spotty og &lt;code&gt;librespot&lt;&#x2F;code&gt; afspiller den stadig Spotify bedre end de fleste “smarte højttalere”, der sælges nye i 2026.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="da">
        <title>elpriser.org — danske elpriser time for time</title>
        <published>2026-04-20T00:00:00+00:00</published>
        <updated>2026-04-20T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://www.x2q.net/da/post/elpriser-org-danske-elpriser-time-for-time/"/>
        <id>https://www.x2q.net/da/post/elpriser-org-danske-elpriser-time-for-time/</id>
        
        <content type="html" xml:base="https://www.x2q.net/da/post/elpriser-org-danske-elpriser-time-for-time/">&lt;p&gt;&lt;strong&gt;TL;DR —&lt;&#x2F;strong&gt; &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;elpriser.org&quot;&gt;elpriser.org&lt;&#x2F;a&gt; viser den &lt;strong&gt;reelle elpris time for time i Danmark&lt;&#x2F;strong&gt; — ikke kun spotprisen. Den samler Nord Pool-spotprisen, din lokale nettarif (&lt;code&gt;netselskab&lt;&#x2F;code&gt;), Energinets system- og transmissionstariffer, elafgiften og 25 % moms. Data kommer fra &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.energidataservice.dk&#x2F;&quot;&gt;Energi Data Service&lt;&#x2F;a&gt; og opdateres dagligt, når Nord Pool offentliggør de kommende 24 timer omkring kl. 13. DK1 (Vestdanmark) og DK2 (Østdanmark). Dansksproget, gratis, intet login.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvad-koster-el-faktisk-i-danmark&quot;&gt;Hvad koster el faktisk i Danmark?&lt;&#x2F;h2&gt;
&lt;p&gt;“Spotprisen”, du ser på de fleste energidashboards, er kun én del af regningen. Den pris, du rent faktisk betaler pr. kWh, består af seks elementer:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Spotpris&lt;&#x2F;strong&gt; — sættes time for time på Nord Pool-markedet for det kommende døgn.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Nettarif&lt;&#x2F;strong&gt; — betales til dit lokale netselskab. Varierer efter selskab og tidspunkt (lav-, mellem- og spidslast).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Systemtarif&lt;&#x2F;strong&gt; — betales til Energinet, den danske TSO.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Transmissionstarif&lt;&#x2F;strong&gt; — betales også til Energinet.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Elafgift&lt;&#x2F;strong&gt; — statslig afgift på forbrug.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Moms&lt;&#x2F;strong&gt; — 25 % oven i alt det andet.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;De fleste prissider viser kun det første tal. Nogle få viser ét eller to mere. Ingen, jeg kunne finde, viste alle seks time for time, for begge prisområder, med den rigtige nettarif automatisk valgt for brugerens netselskab. Det er præcis det, elpriser.org gør.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;de-to-prisomrader-dk1-og-dk2&quot;&gt;De to prisområder: DK1 og DK2&lt;&#x2F;h2&gt;
&lt;p&gt;Danmark er delt i to elprisområder geografisk — Storebælt skiller dem — og de har ofte forskellig pris i samme time:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DK1 — Vestdanmark.&lt;&#x2F;strong&gt; Jylland og Fyn. Mere vind-domineret.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;DK2 — Østdanmark.&lt;&#x2F;strong&gt; Sjælland, Lolland, Falster, Møn og Bornholm. Tættere forbundet med Sverige (SE4) og Tyskland.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Når vinden blæser kraftigt i Jylland, kan DK1 være billig, mens DK2 er dyr. Når en forbindelse er nede, vokser forskellen yderligere. elpriser.org viser begge områder side om side.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvilket-netselskab-har-du&quot;&gt;Hvilket netselskab har du?&lt;&#x2F;h2&gt;
&lt;p&gt;Du kan ikke selv vælge dit netselskab — det afhænger af din adresse — men den nettarif, de opkræver, er en betydelig del af regningen, og den varierer med &lt;strong&gt;15–25 øre&#x2F;kWh i spidslast&lt;&#x2F;strong&gt; mellem billigste og dyreste, hvilket svarer til &lt;strong&gt;~500–1.000 kr&#x2F;år&lt;&#x2F;strong&gt; for en typisk husstand.&lt;&#x2F;p&gt;
&lt;p&gt;Groft rangeret spidslast-tariffer pr. 2025:&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Område&lt;&#x2F;th&gt;&lt;th&gt;Netselskab&lt;&#x2F;th&gt;&lt;th&gt;Spidslast-tarif (øre&#x2F;kWh)&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;DK1&lt;&#x2F;td&gt;&lt;td&gt;RAH Net&lt;&#x2F;td&gt;&lt;td&gt;~33&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;DK1&lt;&#x2F;td&gt;&lt;td&gt;Trefor&lt;&#x2F;td&gt;&lt;td&gt;~37&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;DK1&lt;&#x2F;td&gt;&lt;td&gt;N1&lt;&#x2F;td&gt;&lt;td&gt;~46&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;DK2&lt;&#x2F;td&gt;&lt;td&gt;Cerius&lt;&#x2F;td&gt;&lt;td&gt;~47&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;DK2&lt;&#x2F;td&gt;&lt;td&gt;Radius&lt;&#x2F;td&gt;&lt;td&gt;~65&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;Mindre selskaber (Konstant, Nord Energi, Vores Elnet, El-net Kongerslev og andre) har egne tariffer. På elpriser.org vælger du dit eget, og den all-in time-for-time-pris tilpasser sig.&lt;&#x2F;p&gt;
&lt;p&gt;Du kan ikke skifte netselskab, men du &lt;strong&gt;kan&lt;&#x2F;strong&gt; flytte forbrug — vaskemaskine, opvaskemaskine, EV-ladning, varmepumpe — ned i lavsats-timerne. Time-grafen findes til lige præcis det.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;historiske-yderpunkter&quot;&gt;Historiske yderpunkter&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rekord-høj:&lt;&#x2F;strong&gt; 16,69 kr&#x2F;kWh (spotpris ex. moms) i DK2, kl. 19 den 5. september 2022 under energikrisen.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Rekord-lav:&lt;&#x2F;strong&gt; −2,76 kr&#x2F;kWh i DK1, kl. 14 den 2. juli 2023, hvor vindproduktionen overskød forbruget.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Negative priser er ikke en fejl: når produktionen er høj og forbruget lavt, betaler producenterne forbrugerne for at aftage strømmen. Moderne prisstyrede varmepumper og EV-ladere kan læne sig ind i det.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;sadan-er-elpriser-org-bygget&quot;&gt;Sådan er elpriser.org bygget&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Statisk HTML&lt;&#x2F;strong&gt;, genskabt én gang om dagen efter Nord Pools day-ahead-auktion omkring kl. 13 CET.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Datakilde&lt;&#x2F;strong&gt;: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.energidataservice.dk&#x2F;&quot;&gt;Energi Data Service&lt;&#x2F;a&gt;, Energinets åbne data. Ingen API-nøgler nødvendige.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Strukturerede data&lt;&#x2F;strong&gt;: &lt;code&gt;schema.org&#x2F;WebApplication&lt;&#x2F;code&gt; og &lt;code&gt;FAQPage&lt;&#x2F;code&gt; udsendes på hver side, så Google kan vise priserne direkte i søgeresultater og AI-oversigter.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Hosting&lt;&#x2F;strong&gt;: en lille origin bag Cloudflare. Cachebar hele døgnet; purges ved det daglige rebuild.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Sprog&lt;&#x2F;strong&gt;: kun dansk. Domænenavnet burde have været et fingerpeg.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Det hele er et enkeltsporet værktøj: ingen tracking, intet login, ingen nyhedsbrev-popover, ingen “10 måder at spare på strømmen”-lister.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;ofte-stillede-sporgsmal&quot;&gt;Ofte stillede spørgsmål&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;hvor-ofte-opdaterer-elpriser-org&quot;&gt;Hvor ofte opdaterer elpriser.org?&lt;&#x2F;h3&gt;
&lt;p&gt;Én gang om dagen, efter at Nord Pools day-ahead-auktion offentliggør næste døgn omkring kl. 13 CET. Intradag-justeringer vises ikke; de fleste forbrugere afregnes alligevel efter day-ahead-prisen.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;er-prisen-med-eller-uden-moms&quot;&gt;Er prisen med eller uden moms?&lt;&#x2F;h3&gt;
&lt;p&gt;Med. Headline-tallet på elpriser.org er all-in pr. kWh: spotpris + tariffer + afgift + 25 % moms. Du kan folde det ud og se opdelingen.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvorfor-er-priserne-forskellige-i-dk1-og-dk2&quot;&gt;Hvorfor er priserne forskellige i DK1 og DK2?&lt;&#x2F;h3&gt;
&lt;p&gt;Danmark har to fysisk adskilte elprisområder, forbundet via Storebælt. Når forbindelsen er fuldt udnyttet, eller når vindproduktionen adskiller sig markant mellem øst og vest, clearer de to områder på forskellige Nord Pool-priser.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;kan-jeg-se-opdelingen-af-hver-komponent&quot;&gt;Kan jeg se opdelingen af hver komponent?&lt;&#x2F;h3&gt;
&lt;p&gt;Ja. Hver time-celle kan foldes ud for at vise spotpris, hver tarif-komponent, elafgift og moms.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;far-jeg-reelt-negative-priser-nar-engrosprisen-bliver-negativ&quot;&gt;Får jeg reelt negative priser, når engrosprisen bliver negativ?&lt;&#x2F;h3&gt;
&lt;p&gt;Det afhænger af din kontrakt. Rene spotpris-kontrakter videregiver Nord Pools råpris — tariffer og afgift gælder stadig, så all-in-prisen kan gå svagt negativ eller bare meget lav. Fastpris-kontrakter gør ikke.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvorfor-kun-dansk&quot;&gt;Hvorfor kun dansk?&lt;&#x2F;h3&gt;
&lt;p&gt;Data, regulering, netselskabs-strukturen og målgruppen er alle danske. En engelsk version ville oversætte kontekst, ikke indhold.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvor-kommer-data-fra&quot;&gt;Hvor kommer data fra?&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.energidataservice.dk&#x2F;dataset&#x2F;elspotprices&quot;&gt;Energi Data Service&lt;&#x2F;a&gt; (Nord Pool-spot) og Energinets tarifdata. Begge er officielle, offentlige datasæt fra den danske TSO.&lt;&#x2F;p&gt;
&lt;p&gt;Lille, fokuseret, intet login, ingen tracking. Sådan bør forbruger-energiværktøjer se ud.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="da">
        <title>winniemethmann.com — fra WordPress til Astro</title>
        <published>2026-04-19T00:00:00+00:00</published>
        <updated>2026-04-19T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://www.x2q.net/da/post/winniemethmann-com-astro-portfolio/"/>
        <id>https://www.x2q.net/da/post/winniemethmann-com-astro-portfolio/</id>
        
        <content type="html" xml:base="https://www.x2q.net/da/post/winniemethmann-com-astro-portfolio/">&lt;p&gt;&lt;strong&gt;TL;DR —&lt;&#x2F;strong&gt; &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;winniemethmann.com&quot;&gt;winniemethmann.com&lt;&#x2F;a&gt; er portfolien for en dansk madfotograf og opskriftsudvikler. I et årti var det et WordPress-site. Jeg byggede det om oven på &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;astro.build&quot;&gt;Astro&lt;&#x2F;a&gt; med &lt;strong&gt;content collections&lt;&#x2F;strong&gt; (typet Markdown) i stedet for et CMS, &lt;strong&gt;Sharp + AVIF&lt;&#x2F;strong&gt; til billedpipelinen og &lt;strong&gt;Astros i18n-routing&lt;&#x2F;strong&gt; (dansk som standard, engelsk på &lt;code&gt;&#x2F;en&#x2F;&lt;&#x2F;code&gt;). Build-tid: ~30 sekunder. Output: ~70 % mindre. Intet admin-panel, ingen plugin-opdateringer, ingen bot-prøvet login-endpoint.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvorfor-vaek-fra-wordpress&quot;&gt;Hvorfor væk fra WordPress&lt;&#x2F;h2&gt;
&lt;p&gt;For en portfolio, der opdateres et par gange om måneden, lavede WordPress for meget:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PHP-runtime og MySQL&lt;&#x2F;strong&gt; for et site, der i praksis er statisk.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Titusindvis af plugins&lt;&#x2F;strong&gt; til billedgallerier, kontaktformularer, SEO og caching — hver med sin egen opdaterings­kadence og sikkerhedshuller.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Et halvt-forket tema&lt;&#x2F;strong&gt; med patches, ingen huskede hvorfor var der.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Et admin-login-endpoint&lt;&#x2F;strong&gt;, der blev prøvet flere tusind gange i døgnet af bots.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Gentagne cache-kvaler&lt;&#x2F;strong&gt;, hver gang CDN og plugins var uenige.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Konkret betød det at droppe WordPress:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ingen admin-panel at holde patchet.&lt;&#x2F;strong&gt; WordPress-core, plugin-opdateringer, tema-opdateringer — væk.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Ingen database.&lt;&#x2F;strong&gt; Indholdet ligger som Markdown i repoet.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Ingen login-flade, bots kan prøve.&lt;&#x2F;strong&gt; Der findes ikke en &lt;code&gt;&#x2F;wp-admin&#x2F;&lt;&#x2F;code&gt; længere.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;~10× hurtigere sideindlæsning&lt;&#x2F;strong&gt; uden cache-lag.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;~70 % mindre samlet build-størrelse&lt;&#x2F;strong&gt; — vi skiftede håndeksporterede JPEG’er ud med AVIF med fornuftige &lt;code&gt;srcset&lt;&#x2F;code&gt;-breakpoints.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Til gengæld mister du den ikke-tekniske redigering. I praksis betød det ingenting: ejeren var gladere for at redigere Markdown end for at kæmpe med WordPress’ blok-editor.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvorfor-astro&quot;&gt;Hvorfor Astro&lt;&#x2F;h2&gt;
&lt;p&gt;Jeg overvejede Hugo, 11ty, Next.js static export og SvelteKit. Astro vandt på tre konkrete punkter:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Content collections.&lt;&#x2F;strong&gt; En typet, skema-kontrolleret måde at beskrive et portfolio-projekt som en mappe med fotos plus lidt front-matter. Buildet fejler højlydt, hvis noget ikke overholder skemaet. Intet CMS nødvendigt.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;&amp;lt;Image&amp;gt;&lt;&#x2F;code&gt;-komponenten.&lt;&#x2F;strong&gt; Astros indbyggede billedpipeline håndterer AVIF + JPEG-fallback + &lt;code&gt;srcset&lt;&#x2F;code&gt; + &lt;code&gt;width&lt;&#x2F;code&gt;&#x2F;&lt;code&gt;height&lt;&#x2F;code&gt; med en one-liner. Sharp er motoren under.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Islands-arkitektur — ikke relevant her.&lt;&#x2F;strong&gt; Siden har ingen interaktive komponenter, så den sender stort set ingen JavaScript.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h2 id=&quot;content-collections-ikke-et-cms&quot;&gt;Content collections, ikke et CMS&lt;&#x2F;h2&gt;
&lt;p&gt;Hvert portfolio-projekt er en mappe under &lt;code&gt;src&#x2F;content&#x2F;portfolio&#x2F;&lt;&#x2F;code&gt; med et front-matter-skema:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;src&#x2F;content&#x2F;portfolio&#x2F;
├── 2024-kogebogs-editorial&#x2F;
│   ├── index.mdx
│   ├── cover.jpg
│   ├── 01.jpg, 02.jpg, …
└── 2023-forarets-katalog&#x2F;
    ├── index.mdx
    ├── cover.jpg
    └── 01.jpg …
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;code&gt;index.mdx&lt;&#x2F;code&gt;’s front-matter deklarerer titel, kategori, år og forsidebillede. Astro håndhæver skemaet ved build-tid via &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.astro.build&#x2F;en&#x2F;guides&#x2F;content-collections&#x2F;&quot;&gt;&lt;code&gt;defineCollection&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; med et Zod-skema. Hvis et projekt mangler et forsidebillede eller har en dårlig kategori, fejler buildet.&lt;&#x2F;p&gt;
&lt;p&gt;Kategorier: &lt;strong&gt;madfotografi, opskriftsudvikling, interiør- og haveproduktion, editorial, kogebøger og mode&lt;&#x2F;strong&gt;. At tilføje et nyt projekt er &lt;code&gt;mkdir&lt;&#x2F;code&gt; + &lt;code&gt;cp *.jpg&lt;&#x2F;code&gt; + en kort YAML-front-matter-blok. Ingen admin-UI, ingen database-migration, ingen cache at invalidere.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;billedpipeline-sharp-avif&quot;&gt;Billedpipeline: Sharp + AVIF&lt;&#x2F;h2&gt;
&lt;p&gt;Madfotografi står og falder med billedkvalitet. Astros &lt;code&gt;&amp;lt;Image&amp;gt;&lt;&#x2F;code&gt;-komponent — drevet af &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;sharp.pixelplumbing.com&#x2F;&quot;&gt;Sharp&lt;&#x2F;a&gt; — genererer:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AVIF&lt;&#x2F;strong&gt; som primært format. Stort set alle moderne browsere understøtter det nu (se &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;caniuse.com&#x2F;avif&quot;&gt;caniuse&lt;&#x2F;a&gt;).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;JPEG&lt;&#x2F;strong&gt;-fallback med matchende &lt;code&gt;srcset&lt;&#x2F;code&gt;-breakpoints (320, 640, 960, 1280, 1920 px).&lt;&#x2F;li&gt;
&lt;li&gt;Eksplicitte &lt;code&gt;width&lt;&#x2F;code&gt;- og &lt;code&gt;height&lt;&#x2F;code&gt;-attributter, så der er nul layout shift, mens billederne loader.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;loading=&quot;lazy&quot;&lt;&#x2F;code&gt; til billeder under folden og &lt;code&gt;fetchpriority=&quot;high&quot;&lt;&#x2F;code&gt; til heroet.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Tal&lt;&#x2F;strong&gt;: en typisk portfolio-side gik fra ~4,8 MB håndeksporterede JPEG’er til ~1,4 MB AVIF — omkring 70 % reduktion — uden synligt kvalitetstab i de viste størrelser.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;i18n-dansk-som-standard-engelsk-pa-en&quot;&gt;i18n — dansk som standard, engelsk på &#x2F;en&#x2F;&lt;&#x2F;h2&gt;
&lt;p&gt;Astros i18n-routing sidder i &lt;code&gt;astro.config.mjs&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;js&quot;&gt;export default defineConfig({
  i18n: {
    defaultLocale: &amp;quot;da&amp;quot;,
    locales: [&amp;quot;da&amp;quot;, &amp;quot;en&amp;quot;],
    routing: { prefixDefaultLocale: false },
  },
});
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Det giver:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&#x2F;&lt;&#x2F;code&gt; for dansk (standard, uden præfiks).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;&#x2F;en&#x2F;&lt;&#x2F;code&gt; for engelsk.&lt;&#x2F;li&gt;
&lt;li&gt;Hvert indholds-entry deklarerer sit sprog via sin collection og filnavn.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;link rel=&quot;alternate&quot; hreflang&amp;gt;&lt;&#x2F;code&gt; og sitemap genereres fra samme kilde.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Indlæg og portfolio-entries uden oversættelse dukker simpelthen ikke op i det andet sprogs routing — der er ingen forkert-sprog-404.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;deployment-og-build&quot;&gt;Deployment og build&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Output&lt;&#x2F;strong&gt;: fuldt statisk, udgivet som almindelige filer bag Cloudflare.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Build-tid&lt;&#x2F;strong&gt;: ~30 sekunder fra koldt cache, ~6 sekunder inkrementelt.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Ingen server, ingen database, ingen løbende kørselstid.&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;malbare-forbedringer&quot;&gt;Målbare forbedringer&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Mål&lt;&#x2F;th&gt;&lt;th&gt;WordPress (før)&lt;&#x2F;th&gt;&lt;th&gt;Astro (efter)&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Build &#x2F; deploy-tid&lt;&#x2F;td&gt;&lt;td&gt;ikke relevant&lt;&#x2F;td&gt;&lt;td&gt;~30 s koldt, ~6 s varmt&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Typisk sidestørrelse (portfolio-side)&lt;&#x2F;td&gt;&lt;td&gt;~4,8 MB&lt;&#x2F;td&gt;&lt;td&gt;~1,4 MB&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Largest Contentful Paint&lt;&#x2F;td&gt;&lt;td&gt;~2,8 s&lt;&#x2F;td&gt;&lt;td&gt;~0,9 s&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Time to Interactive&lt;&#x2F;td&gt;&lt;td&gt;~3,5 s&lt;&#x2F;td&gt;&lt;td&gt;~1,1 s&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;JS sendt til klienten&lt;&#x2F;td&gt;&lt;td&gt;~220 KB&lt;&#x2F;td&gt;&lt;td&gt;~0 KB&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Plugins at holde patchet&lt;&#x2F;td&gt;&lt;td&gt;14&lt;&#x2F;td&gt;&lt;td&gt;0&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;ofte-stillede-sporgsmal&quot;&gt;Ofte stillede spørgsmål&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;kan-en-ikke-teknisk-ejer-stadig-redigere-siden&quot;&gt;Kan en ikke-teknisk ejer stadig redigere siden?&lt;&#x2F;h3&gt;
&lt;p&gt;Ja, til tekstændringer. At redigere Markdown i GitHubs web-editor er i praksis lettere end WordPress’ blok-editor. For nye portfolio-projekter er workflowet: træk billeder ind i en mappe, skriv en lille front-matter-blok, commit. Er det for teknisk, kan man bolte en minimal admin på (Decap CMS, Sveltia CMS eller Keystatic).&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvad-med-seo-efter-flytningen&quot;&gt;Hvad med SEO efter flytningen?&lt;&#x2F;h3&gt;
&lt;p&gt;URL’er blev bevaret, hvor det var muligt. Manglende gamle stier omdirigeres via Cloudflare-regler. Sitemap genereres ved hvert build, og strukturerede data (&lt;code&gt;Person&lt;&#x2F;code&gt;, &lt;code&gt;ImageGallery&lt;&#x2F;code&gt;, &lt;code&gt;Article&lt;&#x2F;code&gt;) udsendes pr. side.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvorfor-astro-og-ikke-hugo&quot;&gt;Hvorfor Astro og ikke Hugo?&lt;&#x2F;h3&gt;
&lt;p&gt;Hugo er hurtigere og simplere til ren blogging, men Astros typede content collections og førsteklasses &lt;code&gt;&amp;lt;Image&amp;gt;&lt;&#x2F;code&gt;-komponent vandt i det her tilfælde. Til &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.x2q.net&quot;&gt;x2q.net&lt;&#x2F;a&gt; selv endte jeg senere med Zola — men til en portfolio med tung billedpipeline var Astro det rigtige valg.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvordan-holdes-billederne-organiseret&quot;&gt;Hvordan holdes billederne organiseret?&lt;&#x2F;h3&gt;
&lt;p&gt;Hvert portfolio-projekt har sin egen mappe. Git-repoet er CMS’et. &lt;code&gt;git log&lt;&#x2F;code&gt; fortæller, hvornår et billede blev tilføjet, og hvorfor.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;er-buildet-deterministisk&quot;&gt;Er buildet deterministisk?&lt;&#x2F;h3&gt;
&lt;p&gt;Ja. Samme input giver bit-for-bit identisk output. Sharp er pinned i &lt;code&gt;package.json&lt;&#x2F;code&gt;; det samme er Astro. CI kører på Node LTS.&lt;&#x2F;p&gt;
&lt;p&gt;Hvis du sidder med et WordPress-site, der laver langt mindre, end dets infrastruktur antyder, er Astro en eftermiddag værd.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="da">
        <title>apextowww.com — gratis apex-til-www-omdirigering</title>
        <published>2026-04-18T00:00:00+00:00</published>
        <updated>2026-04-18T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://www.x2q.net/da/post/apextowww-com-apex-til-www-omdirigering/"/>
        <id>https://www.x2q.net/da/post/apextowww-com-apex-til-www-omdirigering/</id>
        
        <content type="html" xml:base="https://www.x2q.net/da/post/apextowww-com-apex-til-www-omdirigering/">&lt;p&gt;&lt;strong&gt;TL;DR —&lt;&#x2F;strong&gt; DNS tillader ikke &lt;code&gt;CNAME&lt;&#x2F;code&gt;-records på zoneapex (&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.rfc-editor.org&#x2F;rfc&#x2F;rfc1034#section-3.6.2&quot;&gt;RFC 1034 §3.6.2&lt;&#x2F;a&gt;). Det er derfor hostingplatforme som Netlify, Vercel, Cloudflare Pages, Firebase og Heroku beder dig om at sætte &lt;code&gt;www.eksempel.dk&lt;&#x2F;code&gt; op med en &lt;code&gt;CNAME&lt;&#x2F;code&gt; og lader &lt;code&gt;eksempel.dk&lt;&#x2F;code&gt; (selve apex) være et problem, du selv løser. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;apextowww.com&quot;&gt;apextowww.com&lt;&#x2F;a&gt; løser det: peg to &lt;code&gt;A&lt;&#x2F;code&gt;-records og to &lt;code&gt;AAAA&lt;&#x2F;code&gt;-records mod tjenesten, og den udsteder et Let’s Encrypt-certifikat til dit apex og &lt;code&gt;301&lt;&#x2F;code&gt;-omdirigerer hver forespørgsel til &lt;code&gt;https:&#x2F;&#x2F;www.ditdomæne.tld&#x2F;&lt;&#x2F;code&gt; — med sti og querystring bevaret. Gratis, ingen oprettelse, ingen konto.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvorfor-du-ikke-kan-saette-en-cname-pa-apex&quot;&gt;Hvorfor du ikke kan sætte en CNAME på apex&lt;&#x2F;h2&gt;
&lt;p&gt;DNS-specifikationen er entydig: en zoneapex (det “nøgne” domæne som &lt;code&gt;eksempel.dk&lt;&#x2F;code&gt;) skal have en &lt;code&gt;SOA&lt;&#x2F;code&gt;-record og som regel &lt;code&gt;NS&lt;&#x2F;code&gt;-records. &lt;code&gt;CNAME&lt;&#x2F;code&gt; er defineret som et alias, der skal stå alene — den må ikke sameksistere med de &lt;code&gt;SOA&lt;&#x2F;code&gt;- og &lt;code&gt;NS&lt;&#x2F;code&gt;-records, som apex er forpligtet til at have. Derfor kan du godt &lt;code&gt;CNAME www.eksempel.dk → mitsite.netlify.app&lt;&#x2F;code&gt;, men du &lt;strong&gt;kan ikke&lt;&#x2F;strong&gt; &lt;code&gt;CNAME eksempel.dk → mitsite.netlify.app&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Der findes workarounds, og alle er en smule akavede:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ALIAS- &#x2F; ANAME-records.&lt;&#x2F;strong&gt; Leverandørspecifikke hos Cloudflare, Route 53, DNSimple, NS1 og andre. De virker ved at slå målet op bag kulisserne og returnere en &lt;code&gt;A&lt;&#x2F;code&gt;&#x2F;&lt;code&gt;AAAA&lt;&#x2F;code&gt;. Fint, hvis din DNS-udbyder understøtter det; ubrugeligt, hvis ikke.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Fladning på udbyderniveau.&lt;&#x2F;strong&gt; Cloudflares “CNAME flattening” er præcis det, gjort automatisk.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Din egen altid-tændte VPS med &lt;code&gt;301 → www&lt;&#x2F;code&gt;.&lt;&#x2F;strong&gt; Det var det, jeg gjorde for flere domæner — både overkill og en lille vedligeholdelsesskat.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;apextowww er den fjerde mulighed: en andens altid-tændte omdirigerer, driftet for dig.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvad-apextowww-gor&quot;&gt;Hvad apextowww gør&lt;&#x2F;h2&gt;
&lt;p&gt;Nøjagtig én ting: en &lt;code&gt;301 Moved Permanently&lt;&#x2F;code&gt; fra &lt;code&gt;https:&#x2F;&#x2F;ditdomæne.tld&#x2F;noget?x=y&lt;&#x2F;code&gt; til &lt;code&gt;https:&#x2F;&#x2F;www.ditdomæne.tld&#x2F;noget?x=y&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TLS&lt;&#x2F;strong&gt; udstedes automatisk ved første forespørgsel via Let’s Encrypts HTTP-01-challenge. Ingen ACME-klient at køre selv.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;IPv4 + IPv6&lt;&#x2F;strong&gt; som dual-stack fra starten. Begge record-typer er påkrævet.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;HTTP&#x2F;1.1, HTTP&#x2F;2 og HTTP&#x2F;3&lt;&#x2F;strong&gt; serveres. Selve omdirigeringen er lille, så protokolversion betyder mindre, men det hjælper first-paint, når omdirigeringen ligger i den kritiske sti.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Sti og querystring&lt;&#x2F;strong&gt; bevares, så deep links stadig virker.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Ingen oprettelse, intet login, ingen konto.&lt;&#x2F;strong&gt; Hvis DNS er peget korrekt, virker det bare.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;sadan-saetter-du-det-op&quot;&gt;Sådan sætter du det op&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;Gå til &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;apextowww.com&quot;&gt;apextowww.com&lt;&#x2F;a&gt; og kopiér de aktuelle IP-adresser (to IPv4, to IPv6).&lt;&#x2F;li&gt;
&lt;li&gt;I din DNS-udbyder: sæt &lt;code&gt;A&lt;&#x2F;code&gt;-records på dit apex, der peger på de to IPv4-adresser. Fjern eventuelle eksisterende &lt;code&gt;A&lt;&#x2F;code&gt;-records på apex.&lt;&#x2F;li&gt;
&lt;li&gt;Sæt &lt;code&gt;AAAA&lt;&#x2F;code&gt;-records på dit apex, der peger på de to IPv6-adresser.&lt;&#x2F;li&gt;
&lt;li&gt;Sørg for, at &lt;code&gt;www.ditdomæne.tld&lt;&#x2F;code&gt; stadig peger på din rigtige host (CNAME til Netlify &#x2F; Vercel &#x2F; Pages &#x2F; osv.).&lt;&#x2F;li&gt;
&lt;li&gt;Vent på DNS-propagering. Besøg &lt;code&gt;http:&#x2F;&#x2F;ditdomæne.tld&#x2F;&lt;&#x2F;code&gt; — den skal nu 301-omdirigere til &lt;code&gt;https:&#x2F;&#x2F;www.ditdomæne.tld&#x2F;&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;apextowww-siden har platform-specifikke guides under &lt;code&gt;&#x2F;netlify-apex-domain-redirect&#x2F;&lt;&#x2F;code&gt;, &lt;code&gt;&#x2F;vercel-apex-domain-redirect&#x2F;&lt;&#x2F;code&gt;, &lt;code&gt;&#x2F;cloudflare-pages-apex-redirect&#x2F;&lt;&#x2F;code&gt;, &lt;code&gt;&#x2F;firebase-hosting-apex-redirect&#x2F;&lt;&#x2F;code&gt; og &lt;code&gt;&#x2F;heroku-apex-domain-redirect&#x2F;&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;stak&quot;&gt;Stak&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hetzner ARM64&lt;&#x2F;strong&gt;-servere for billig, strømbesparende compute. ARM64 er ~30 % billigere pr. vCPU hos Hetzner end x86 og kører omdirigereren uden at ryste på hånden.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Caddy-agtig automatisk TLS&lt;&#x2F;strong&gt; med &lt;strong&gt;Let’s Encrypt&lt;&#x2F;strong&gt; HTTP-01-challenges.&lt;&#x2F;li&gt;
&lt;li&gt;Dual-stack &lt;strong&gt;IPv4 + IPv6&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;HTTP&#x2F;1.1, HTTP&#x2F;2, HTTP&#x2F;3&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Offentligt &lt;strong&gt;statisk marketing-site&lt;&#x2F;strong&gt; på Cloudflare Pages, med platform-guides i hver sin URL-sti, så de rangerer uafhængigt på Google for “netlify apex redirect”, “vercel apex domain” osv.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;ofte-stillede-sporgsmal&quot;&gt;Ofte stillede spørgsmål&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;kan-jeg-bruge-apextowww-sammen-med-cloudflare-dns&quot;&gt;Kan jeg bruge apextowww sammen med Cloudflare DNS?&lt;&#x2F;h3&gt;
&lt;p&gt;Ja — men du skal have Cloudflares proxy (den orange sky) &lt;strong&gt;slået fra&lt;&#x2F;strong&gt; på apex’ens &lt;code&gt;A&lt;&#x2F;code&gt;&#x2F;&lt;code&gt;AAAA&lt;&#x2F;code&gt;-records. Hvis proxien er slået til, opfanger Cloudflare forespørgslen, og Let’s Encrypts HTTP-01-challenge når aldrig frem til apextowww. Når certifikatet er udstedt og forny­es, skal du ikke bøvle videre — bare lad det være slukket.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;understotter-apextowww-wildcards-eller-andre-subdomaener-end-www&quot;&gt;Understøtter apextowww wildcards eller andre subdomæner end www?&lt;&#x2F;h3&gt;
&lt;p&gt;Nej. Tjenesten omdirigerer kun apex til &lt;code&gt;www.&lt;&#x2F;code&gt;. Alt andet bliver liggende hos din rigtige host.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvad-sker-der-hvis-apextowww-ip-erne-skifter&quot;&gt;Hvad sker der, hvis apextowww-IP’erne skifter?&lt;&#x2F;h3&gt;
&lt;p&gt;Så skal du opdatere dine DNS &lt;code&gt;A&lt;&#x2F;code&gt;&#x2F;&lt;code&gt;AAAA&lt;&#x2F;code&gt;-records. Operatøren offentliggør aktuelle IP’er på forsiden og giver varsel før ændringer. Det er fint for et privat domæne; for noget missionkritisk bør du køre din egen omdirigerer.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;er-der-rate-limit&quot;&gt;Er der rate-limit?&lt;&#x2F;h3&gt;
&lt;p&gt;Der er ingen publiceret hård grænse, men det er en gratis community-tjeneste. Hvis du serverer millioner af apex-omdirigeringer i døgnet, er det tid til at selv-hoste.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hvorfor-ikke-bare-bruge-cloudflares-gratis-plan&quot;&gt;Hvorfor ikke bare bruge Cloudflares gratis plan?&lt;&#x2F;h3&gt;
&lt;p&gt;Cloudflares CNAME-flattening på apex er et fint alternativ, hvis hele din DNS er hos Cloudflare. apextowww er nyttig, når din DNS ikke er hos Cloudflare, eller når du vil have en host-agnostisk omdirigerer, der virker identisk på tværs af domæner.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;er-den-virkelig-gratis&quot;&gt;Er den virkelig gratis?&lt;&#x2F;h3&gt;
&lt;p&gt;Ja. Marginalomkostningen pr. omdirigering på ARM64 er minimal. Ingen reklamer, ingen tracking ud over grundlæggende logs, ingen upsell.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hvorfor-den-findes&quot;&gt;Hvorfor den findes&lt;&#x2F;h2&gt;
&lt;p&gt;Hostingplatforme optimerer efter deres egen onboarding, ikke efter de DNS-selvfølgeligheder, der snubler enhver ny bruger. Det føltes værre at sende folk videre til en fremmeds VPS end selv at drifte én. Nu peger mine egne apex-domæner (inklusive &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.x2q.net&quot;&gt;x2q.net&lt;&#x2F;a&gt;) på apextowww, og jeg har kunnet slukke for den sidste lille omdirigerer-VPS, jeg stadig kørte af historiske grunde.&lt;&#x2F;p&gt;
&lt;p&gt;Det er den slags projekt, der ikke virker interessant, før du har brug for det — og så er det lige præcis det, du skal bruge.&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
