I've been scratching my head at this for the better part of a day now:
When I try to save the salt in a separate string called salt
using the first and second characters of the second element of argv[]
, it comes back with 50, which is correct, and then most of the time 1 or 2 random characters will follow, even though I've specified the string length of salt
to be 2.
I have used eprintf
to see what the values are, and as you can see below, when I use eprintf("User salt is: %c%c\n", argv[1][0], argv[1][1]);
straight away, the salt comes back correct, but when I use char salt[2] = {argv[1][0], argv[1][1]};
, there is an extra tT after my salt of 50.
// Get the hashed password
int main(int argc, string argv[])
{
// Only 2 words should be entered at the command-line
if (argc == 2)
{
// Take the hashed password
// Get the salt: the "salt" is the first 2 characters of the hashed keyword
char salt[2] = {argv[1][0], argv[1][1]};
eprintf("User hash is: %s\n", argv[1]);
eprintf("User salt is: %c%c\n", argv[1][0], argv[1][1]);
eprintf("Current salt string is: %s\n", salt);
Terminal:
~/workspace/pset2/crack/ $ ./crack 50JGnXUgaafgc
crack.c:19: User hash is: 50JGnXUgaafgc
crack.c:20: User salt is: 50
crack.c:22: Current salt string is: 50ؓtT
crack.c:33: Hash with current salt is: sawJaWbek0YZw
~/workspace/pset2/crack/ $
Any help would be very much appreciated!