Zapisywanie / dev / random do pliku?

10

Gdybyś wykonał następujące czynności, co by się stało?

cat /dev/random > ~/randomFile # don't run

Czy zapisano by go, dopóki na dysku nie zabraknie miejsca, czy też system zobaczy problem z tym i zatrzyma go (jak w przypadku nieskończonej pętli dowiązania symbolicznego)?

tkbx
źródło
4
Chciałem tylko dodać, że łączenie losowe z urządzeniami było warte kilku godzin zabawy w mojej młodości. Bufor ramki i karta dźwiękowa powodowały hałas, a napęd dysku wymagał ode mnie sformatowania niskiego poziomu ... dobrych czasów.
Bob Roberts
OT: 'executable / dev / dsp? brzmi jak zabawa ”
sendmoreinfo
@BobRoberts Mam podobne przygody z podobnymi skutkami. Używałem również ssh na stacjach roboczych kolegów z Linuksem i tonów DTMF kota do wewnętrznego głośnika, a następnie grałem zajęty dźwięk, więc brzmiało to tak, jakby ich komputer próbował wysłać FAKSEM. Ach, dobre czasy.
Tim Kennedy,
@TimKennedy jak to robisz? Czy istnieje gniazdo / dev / ice dla gniazda audio 30 mm?
tkbx
@tkbx cóż, umawiam się na randki, ale w tamtym czasie można było nadać plikowi plik / dev / audio, a jeśli byłby to plik dźwiękowy (.wav), zostałby odtworzony.
Tim Kennedy

Odpowiedzi:

22

Zapisuje do momentu zapełnienia dysku (zwykle jest jeszcze miejsce zarezerwowane dla użytkownika root). Ale ponieważ pula losowych danych jest ograniczona, może to chwilę potrwać.

Jeśli potrzebujesz pewnej ilości losowych danych, użyj dd. Za 1 MB:

dd if=/dev/random iflag=fullblock of=$HOME/randomFile bs=1M count=1

Inne możliwości są wymienione w odpowiedziach na powiązane pytanie .

Jednak w prawie wszystkich przypadkach lepiej jest użyć /dev/urandomzamiast tego. Nie blokuje się, jeśli jądro myśli, że wyjdzie z entropii. Aby lepiej zrozumieć, możesz także przeczytać mity o / dev / urandom .

Instalowanie haveged przyspiesza, /dev/randoma także zapewnia większą entropię /dev/urandom.

EDYCJA : ddpotrzebuje fullblockopcji, ponieważ / dev / random (w przeciwieństwie do /dev/urandom) może zwrócić niekompletne bloki, jeśli pula entropii jest pusta.

Jeśli twoje ddnie obsługuje jednostek, wypisz je:

dd if=/dev/random iflag=fullblock of=$HOME/randomFile bs=1048576 count=1
Jofel
źródło
7
100 MiB wysokiej jakości danych losowych to trochę więcej ... powinieneś zdobyć kilka bajtów, aby obsłużyć wysokiej jakości generator liczb pseudolosowych, taki jak twister Mersenne. Jeśli aplikacja jest krytyczna (w sensie kryptograficznym), musisz przeczytać i poczytać na ten temat, a być może zatrudnić eksperta.
vonbrand
4
@ vonbrand Nie, czytanie 100 MB z /dev/urandomjest w porządku, nie ma powodu, aby tego nie robić. I nie używaj twistera Mersenne do szyfrowania. I nie używaj /dev/randomw systemie Linux .
Gilles „SO- przestań być zły”
3
@ jofel: Nie, wyjście /dev/urandom jest w porządku do użytku kryptograficznego. Nie używać /dev/random.
Thomas Pornin
@Gilles, może to tracę ... Zgadzam się ze wszystkim, co mówisz, i nie widzę, gdzie powiedziałem coś innego.
vonbrand
@Gilles & vonbrand: Dzięki za komentarze, poprawiłem swoją odpowiedź (teraz tylko 1 MB w przykładzie, zalecany / dev / urandom).
jofel