Когда я пытаюсь найти строку кода и получить пароль (id, salt, hash) обычным способом, он работает правильно.
struct spwd *shadow_file_line;
char *full_pass;
int main(int argc, char *argv[])
{
shadow_file_line = getspnam("root");
full_pass = shadow_file_line->sp_pwdp;
printf("%s\n", full_pass);
}
Но когда я пытаюсь сделать то же самоеиспользуя recv (), что-то идет не так.
char recieve_login_buffer[20];
char recieve_password_buffer[20];
char *send_msg_greet = "proftpd clone 0.1beta\n";
send(new_sck, send_msg_greet, strlen(send_msg_greet), 0);
char *send_msg_login_request = "Login: ";
send(new_sck, send_msg_login_request, strlen(send_msg_login_request), 0);
recv(new_sck, &recieve_login_buffer, sizeof recieve_login_buffer, 0);
printf("Login entered: %s", recieve_login_buffer);
char *send_msg_password_request = "Password: ";
send(new_sck, send_msg_password_request, strlen(send_msg_password_request), 0);
recv(new_sck, &recieve_password_buffer, sizeof recieve_password_buffer, 0);
printf("Password entered: %s", recieve_password_buffer);
sp = getspnam(recieve_login_buffer);
full_encrypted_pass = sp->sp_pwdp;
printf("%s\n", full_encrypted_pass);
Так как мне изменить слово, полученное сервером?Я не знаю, какой сервер или клиент telnet, который я использую, добавляет в буфер.