112 lines
2.9 KiB
Groff
112 lines
2.9 KiB
Groff
.\" Copyright (c) 2023-2024 DTB <trinity@trinity.moe>
|
|
.\" Copyright (c) 2024 Emma Tebibyte <emma@tebibyte.media>
|
|
.\"
|
|
.\" This work is licensed under CC BY-SA 4.0. To see a copy of this license,
|
|
.\" visit <http://creativecommons.org/licenses/by-sa/4.0/>.
|
|
.\"
|
|
.TH PEEK 1 2024-08-14 "Harakit X.X.X"
|
|
.SH NAME
|
|
peek \(en read from the standard input, furtively
|
|
.\"
|
|
.SH SYNOPSIS
|
|
|
|
peek
|
|
.RB ( -i )
|
|
.\"
|
|
.SH DESCRIPTION
|
|
|
|
Read input from the standard input with terminal echo disabled.
|
|
.\"
|
|
.SH OPTIONS
|
|
|
|
.IP \fB-i\fP
|
|
Allows input to come from sources other than terminals (pipes).
|
|
.\"
|
|
.SH DIAGNOSTICS
|
|
|
|
In the event of an error, a debug message will be printed and the program will
|
|
exit with the appropriate
|
|
.BR sysexits.h (3)
|
|
error code.
|
|
|
|
In order to ensure the user\(cqs terminal is still usable after premature
|
|
termination, the program attempts to handle the SIGINT signal; if it cannot,
|
|
an error message is printed and execution continues. If the program is
|
|
interrupted, it exits unsuccessfully without an error message.
|
|
.\"
|
|
.SH RATIONALE
|
|
|
|
This tool was originally written to accept passwords in shell scripts as an
|
|
extremely simple alternative to the GNU Privacy Guard project\(cqs
|
|
.BR pinentry (1)
|
|
utility.
|
|
|
|
Accepting input without showing what is being typed is useful when keying in
|
|
secrets in public settings or in places where surveillance cameras are
|
|
installed.
|
|
.\"
|
|
.SH CAVEATS
|
|
|
|
This program does nothing to prevent others from seeing the key presses input to
|
|
a keyboard. It also does not protect against the sound of typing being analyzed
|
|
to determine what was input without needing to see screen or keyboard.
|
|
|
|
Accepting secrets in shell scripts is probably not advisable.
|
|
|
|
On systems that support it, the
|
|
.BR ioctl (2)
|
|
command TIOCSTI can be used to insert characters into the standard input. This
|
|
doesn't allow snooping but can be used for general mischief.
|
|
.\"
|
|
.SH EXAMPLES
|
|
|
|
This is an
|
|
.BR sh (1p)
|
|
command line that hashes a given password. It uses
|
|
.BR head (1p)
|
|
to only accept one line of input,
|
|
.BR xargs (1p)
|
|
and
|
|
.BR printf (1p)
|
|
to strip the trailing newline,
|
|
.BR htpasswd (1)
|
|
from Apache\(cqs utilities to hash the input with the bcrypt algorithm, and
|
|
.BR cut (1p)
|
|
to print only the resulting hash:
|
|
|
|
.RS
|
|
$ peek | head -n 1 | xargs printf '%s' | htpasswd -nBi _ | cut -d : -f 2
|
|
.RE
|
|
|
|
This is an
|
|
.BR sh (1p)
|
|
command line that allows a user to write blindly into a text file but displaying
|
|
only written lines. Some writers have the habit of prematurely revising their
|
|
work and use tools with functionality similar to this to prevent it.
|
|
It uses
|
|
.BR mm (1)
|
|
to pipe the output of the program to both the standard error and the regular
|
|
file writing.txt:
|
|
|
|
.RS
|
|
$ echo Input ^D to quit. && peek | mm -eo - >writing.txt
|
|
.RE
|
|
.\"
|
|
.SH AUTHOR
|
|
|
|
Written by DTB
|
|
.MT trinity@trinity.moe
|
|
.ME .
|
|
.\"
|
|
.SH COPYRIGHT
|
|
|
|
Copyright \(co 2023-2024 DTB. License AGPLv3+: GNU AGPL version 3 or later
|
|
<https://gnu.org/licenses/gpl.html>.
|
|
.\"
|
|
.SH SEE ALSO
|
|
.BR ioctl (2),
|
|
.BR ioctl_tty (2),
|
|
.BR read (1p),
|
|
.BR sh (1p),
|
|
.BR stty (1p)
|