--- a/wpa_supplicant/wpa_passphrase.c	2024-08-21 19:30:03.753508749 -0400
+++ b/wpa_supplicant/wpa_passphrase.c	2024-08-21 19:38:01.389508464 -0400
@@ -33,27 +33,34 @@
 	if (argc > 2) {
 		passphrase = argv[2];
 	} else {
-		bool ctrl_echo;
+		bool ctrl_echo = false;
 
 		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 ( isatty (STDIN_FILENO)) {
+			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) {
 			fprintf(stderr, "Failed to read passphrase\n");
 			return 1;
 		}
-		term.c_lflag |= ECHO;
-		if (ctrl_echo && tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0) {
-			perror("tcsetattr:error enabling echo");
-			return 1;
+
+		if (ctrl_echo) {
+			term.c_lflag |= ECHO;
+			if (tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0) {
+				perror("tcsetattr:error enabling echo");
+				return 1;
+			}
 		}
 		buf[sizeof(buf) - 1] = '\0';
 		pos = buf;
