To find who granted object privileges you can query column GRANTOR in DBA_TAB_PRIVS and DBA_COL_PRIVS. For system privileges and roles there is no way to find out this information from the dictionary. Also there is no way to find out when particular privilege/role was granted by querying the dictionary. You should turn auditing on or use log miner to keep track of those information.
ASCII a stupid question, get a stupid ANSI
24 hours in a day .... 24 beer in a case .... coincidence?