libfakerand/README.md

39 lines
1.1 KiB
Markdown

# 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.