wpa_passphrase: Disable terminal echo when reading from stdin
Disable terminal echo using tcgetattr() and tcsetattr() when reading a passphrase from stdin. Signed-off-by: Abhiram V <abhi.raa.man.v@gmail.com>
This commit is contained in:
parent
86ab282170
commit
5102d7411f
1 changed files with 19 additions and 0 deletions
|
@ -7,6 +7,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include <termios.h>
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "crypto/sha1.h"
|
#include "crypto/sha1.h"
|
||||||
|
@ -14,6 +15,7 @@
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
struct termios term;
|
||||||
unsigned char psk[32];
|
unsigned char psk[32];
|
||||||
int i;
|
int i;
|
||||||
char *ssid, *passphrase, buf[64], *pos;
|
char *ssid, *passphrase, buf[64], *pos;
|
||||||
|
@ -31,11 +33,28 @@ int main(int argc, char *argv[])
|
||||||
if (argc > 2) {
|
if (argc > 2) {
|
||||||
passphrase = argv[2];
|
passphrase = argv[2];
|
||||||
} else {
|
} else {
|
||||||
|
bool ctrl_echo;
|
||||||
|
|
||||||
fprintf(stderr, "# reading passphrase from stdin\n");
|
fprintf(stderr, "# reading passphrase from stdin\n");
|
||||||
|
if (tcgetattr(STDIN_FILENO, &term) < 0) {
|
||||||
|
perror("tcgetattr");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
ctrl_echo = term.c_lflag & ECHO;
|
||||||
|
term.c_lflag &= ~ECHO;
|
||||||
|
if (ctrl_echo && tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0) {
|
||||||
|
perror("tcsetattr:error disabling echo");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
if (fgets(buf, sizeof(buf), stdin) == NULL) {
|
if (fgets(buf, sizeof(buf), stdin) == NULL) {
|
||||||
fprintf(stderr, "Failed to read passphrase\n");
|
fprintf(stderr, "Failed to read passphrase\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
term.c_lflag |= ECHO;
|
||||||
|
if (ctrl_echo && tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0) {
|
||||||
|
perror("tcsetattr:error enabling echo");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
buf[sizeof(buf) - 1] = '\0';
|
buf[sizeof(buf) - 1] = '\0';
|
||||||
pos = buf;
|
pos = buf;
|
||||||
while (*pos != '\0') {
|
while (*pos != '\0') {
|
||||||
|
|
Loading…
Reference in a new issue