#!/bin/bash

# This script tries to find TWO compromised keys for each PID.
#
# Writen by Jan Tomasek <jan@tomasek.cz>

# http://metasploit.com/users/hdm/tools/debian-openssl/
export LD_PRELOAD=/root/getpid-preload/getpid.so

export MAGICPID=$1
export BITS=$2

# This protect results from being overwritten... if I do not forget to
# increase it.
export R=j

export MAX_RUN=100

NICEPID=`printf "%.5d" $MAGICPID`

# working directories
if [ ! -d done-pid ]; then mkdir done-pid; fi
if [ ! -d 1 ]; then mkdir 1; fi
touch done-pid/$NICEPID

echo "Searching for two $BITS bit keys for PID = $MAGICPID"

while test `wc -l done-pid/$NICEPID | cut -d " " -f 1` -lt 2 
do
  NO=$[$NO+1]

  # create request
  if [ $[$NO % 2] -eq 0 ]; then rm ~/.rnd 2>/dev/null; fi
  openssl req -new -newkey rsa:$BITS -nodes -batch -noout -keyout /tmp/$NICEPID-$BITS-$R-$NO 2>/dev/null

  # check if we already have such private key
  MD5=`md5sum /tmp/$NICEPID-$BITS-$R-$NO`

  if grep $MD5 done-pid/$NICEPID >/dev/null 2>&1
  then
    # this is known private key
    rm /tmp/$NICEPID-$BITS-$R-$NO
  else
    # this is NEW private key
    mv /tmp/$NICEPID-$BITS-$R-$NO 1/
    echo $MD5 >> done-pid/$NICEPID
  fi

  if [ $NO -gt $MAX_RUN ]
  then
    echo "FAILED to found two keys for PID = $MAGICPID after $MAX_RUN attempts."
    touch done-pid/$NICEPID-failed-to-find
    exit 0
  fi
done

#    openssl req -new -nodes -batch -noout -keyout $INST/$MAGICPID-h-$i 2>/dev/null

#done

