I was asked to develop an external user administration for a legacy system so that it could be integrated into company processes. This system is mostly written in Python, but also uses unmanaged DLLs. There is no sufficient documentation about the system, also no source code.
Now I face the following problem: In order to successfully create a new user externally, I first have to reproduce the exact encryption process of the user passwords. These are stored in an Oracle 12g database in two columns: "PWDHASH" and "PWDSALT", whereby the columns have the format RAW.
By looking at the responsible Crypto-DLL in a text editor, I could at least find out that the passwords are encrypted by BCrypt with $2^5$ rounds. The output should be accordingly in the format
Now the highlight - in the database there is only a hexadecimal string for the password hash (48 characters), also for the salt (32 characters). These are built like this:
Now the question: How can I find out what happened between the encryption with BCrypt and the final values found in the database? Is Oracle's own encryption possibly still used here (RAW column format)? Is there a way to get this information without source code?