Codegolf/wpa

From NoName e.V.
Revision as of 18:09, 26 August 2013 by Merovius (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Die Problemstellung: Erzeuge (ggf. mit einem von stdin entgegengenommenem stream von random-bytes) eine WPA-Passphrase, d.h. 63 Zeichen printable ASCII.

Die Problemstellung ist aus folgender während eines Treffs in den IRC-Channel geposteten Frage entstanden:

23:55 <@joker> was benutze ich am besten um WLAN pws zu erstellen
23:56 <@joker> pwgen wäre ne möglichkeit, sei aber ja nicht soo sicher

Zwei Stunden später gab es dann einen Satz an Lösungen dafür im Channel. Hier nur die kürzesten Lösungen:

C

i=63;main(c){while(i)isprint(c=getchar())&&putchar(c,--i);}

(Merovius)

"Pure" Perl

perl -ne'/[ -~]/&&($i+=print$&)>63&&die' < /dev/urandom

(mxf)

Perl

perl -pe'y/ -~//cd'</dev/urandom|head -c63

(sECuRE)

Shell

</dev/urandom tr -dc "[ -~]" | head -c63

(koebi)

Dann gekürzt zu (nur unter zsh):

tr -dc \ -~</*/ur*|head -c63

(mxf, sECuRE und Merovius)

Wer sehr viel Zeit hat (man sollte sicher gehen, ein passendes locale (C funtkioniert) gesetzt zu haben):

grep -Eao "[ -~]{63}" /*/ur*

Haskell

import Data.Char
fkt = do
 c <- getChar
 if (((ord c) >= 33) && ((ord c) <= 126))
 then putChar c
 else return()
 fkt
main = do fkt

(joker)