diff --git a/install.pl b/install.pl
index 1273755cd2467c5ed128501ddbbe83be2b183db0..7d497b1bf7a25e62156db0023348f29314ebbc2a 100755
--- a/install.pl
+++ b/install.pl
@@ -124,16 +124,27 @@ sub prompt_username {
     return $username;
 }
 
-sub prompt_password {
-    print "Enter your faculty password: ";
-    system("stty -echo");
-    chomp(my $password1 = <STDIN>);
-    system("stty echo");
-    print "\nRepeat your faculty password: ";
+sub prompt_secret {
+    my ($prompt) = @_;
+    print "$prompt: ";
+
+    local $SIG{INT} = sub {
+        system("stty echo");
+        exit 1;
+    };
+
+    my $value;
     system("stty -echo");
-    chomp(my $password2 = <STDIN>);
+    chomp($value = <STDIN>);
     system("stty echo");
+
     print "\n";
+    return $value;
+}
+
+sub prompt_password {
+    my $password1 = prompt_secret("Enter your faculty password");
+    my $password2 = prompt_secret("Repeat your faculty password");
 
     if ($password1 ne $password2) {
         die "[ERROR] Passwords do not match!";