libfakerand/README.md

1.1 KiB

libfakerand

Introduction

libfakerand intercepts various system calls that programs use to retrieve entropy. It replaces the entropy which would otherwise be used with the one supplied by the user. This means you can force programs to use a fixed value instead of a random one.

libfakerand overrides the following functions:

  • rand()
  • read() function for /dev/urandom and /dev/random
  • getrandom()
  • RAND_bytes()

Usage

You may use env variables LD_PRELOAD and FAKERAND along with a command:

LD_PRELOAD=./target/release/libfakerand.so FAKERAND=0 openssl rand -hex 16

Alternatively, set environment variables so that all programs running in that shell are effected:

export LD_PRELOAD=/usr/lib/fakerand/fakerand.so
export FAKERAND=42

If you will be using it this way, it may make sense to place the .so file in /usr/lib/fakerand

Notes

Statically linked libraries can't be overriden by LD_PRELOAD. For this reason, libfakerand can't override cases such as:

FAKERAND=42 LD_PRELOAD=./target/release/libfakerand.so awk 'BEGIN{srand(); print rand()}' 2>/dev/null

This is because awk is statically linked.