#!/bin/bash # $DragonFly: src/secure/lib/libssh/generate-blacklist.sh,v 1.1 2008/05/21 14:07:41 corecode Exp $ set -e LIBSSL=$(apt-cache policy libssl0.9.8 | grep Installed | awk '{print $NF}') dpkg --compare-versions "$LIBSSL" lt 0.9.8g-9 || { echo "Your libssl0.9.8 is newer than the fixed version (0.9.8g-9)." >&2 echo "This script is only sensible to run with a broken version. :)" >&2 exit 1 } KEYTYPE=$(echo "$1" | tr A-Z a-z) KEYSIZE="$2" if [ -z "$KEYTYPE" ] || [ -z "$KEYSIZE" ]; then echo "Usage: $0 KEYTYPE KEYSIZE" >&2 exit 1 fi WORKDIR=$(mktemp -d -t blacklist-XXXXXX) cd "$WORKDIR" cat >getpid.c < #include #include pid_t getpid(void) { return atoi(getenv("FORCE_PID")); } EOM gcc -fPIC -c getpid.c -o getpid.o gcc -shared -o getpid.so getpid.o echo "# generated on $(uname -m) at $(date)" for pid in $(seq 1 32767) do FILE="key-$pid" HASH=$(FORCE_PID="$pid" LD_PRELOAD=./getpid.so \ ssh-keygen -P "" -t "$KEYTYPE" -b "$KEYSIZE" -f "$FILE" | \ grep :..: | cut -d" " -f1 | sed -e 's/://g') rm -f "$FILE" "$FILE".pub echo "$HASH" done rm -f getpid.* cd / rmdir "$WORKDIR"