Sponsored Content
Full Discussion: Masking Password with *'s
Top Forums Programming Masking Password with *'s Post 302482517 by bigdrock44 on Tuesday 21st of December 2010 07:41:14 PM
Old 12-21-2010
I got it to do what I was basically asking. Here's the issue, though. I want it to output the "*" or the colored numbers, whatever the situation may be, but I want to store the actual keystroke. For example, here's my code:
Code:
void read_unbuffered(void)
{
   int ch;           
   int password[4];
   int i;   

   setbuf(stdin, NULL);    
   echo_off();

   i = 0; 

   while ((ch = getchar()) != '\n')
   {      
      if(ch == '\b' && i != 0)
      {   
         fprintf(stderr, "\b\b  \b\b");        /*Don't mind this. As you can see below 
         i--;                                            after each entry it puts a space (for clarity), so I double backspace 
                                                           and double space to make up for this*/ 
      }

      else if((ch >= '1') && (ch <= '6') && i < 4)
      {
         password[i] = ch;

         if(ch == '1')
         {
            fprintf(stderr, "\033[1;3;31;49m%c \033[0m", ch);
         }

         else if(ch == '2')
         {
            fprintf(stderr, "\033[1;3;34;49m%c \033[0m", ch);
         }

         else if(ch == '3')
         {
            fprintf(stderr, "\033[1;3;33;49m%c \033[0m", ch);
         }

         else if(ch == '4')
         {           
            fprintf(stderr, "\033[1;3;35;49m%c \033[0m", ch);
         }  

         else if(ch == '5')
         {    
            fprintf(stderr, "\033[1;3;32;49m%c \033[0m", ch);
         }

         else if(ch == '6')        
         {
            fprintf(stderr, "\033[1;3;39;49m%c \033[0m", ch);
         }

         i++;
      }
   }

   printf("\n");

   for(i = 0; i < 4; i++)           /*To see what is stored in the array*/
   {
      printf("%d ", password[i]);
   }

   echo_on();
}

Say I type in "1234". This is what happens on the screen when I type that:
Code:
1 2 3 4     /*This is good. This is what I want. To showed colored numbers as I type.*/
49 50 51 52     /*These are the values stored in the array*/

So the code works well in that as I type in 1234, it is actively changing the color as I type. Since the code is using getchar(), however, it is storing the values 49, 50, 51, and 52 in the array. I want 1, 2, 3, and 4 to be stored in the array, because basically I want this function to return this array, and if it is returning an array of 49 50 51 52 it will not make sense in my program. Does this make sense?
 

10 More Discussions You Might Find Interesting

1. IP Networking

IP Masking

Is it possible for a internal LAN to mask a IP e.g. i have a server ip running the intranet ip being 192.168.0.8 and i want to make that like www.intranet.com is this possible on a internal network ? (1 Reply)
Discussion started by: perleo
1 Replies

2. Shell Programming and Scripting

Masking Content of a String

Hello, I need to know that whether a content of a string can be hidden or masked inside a shell script. My Sample Code is given below <Code> #!/usr/bin/ksh Userid=test DB=temp Passwd=`java Decryption test` # The Above command will get the encryped password for "test" user id and store... (2 Replies)
Discussion started by: maxmave
2 Replies

3. Shell Programming and Scripting

Data Masking

I have a pipe delimited file that I need to 'mask' to before loading to keep some data confidential. I need to maintain the first 4 bytes of certain columns and replace the remaining bytes with an 'x'. I would like to maintain spaces but it's not a requirement. Example, need to mask columns 2... (2 Replies)
Discussion started by: 1superdork
2 Replies

4. Emergency UNIX and Linux Support

Masking of number

BAT:0310:2009-08-0:Y4 :H:D:00003721:03103721.IFH:00138770:05767:00000000001279' EXR:CLP:912.570000' STA:A:9071559:2009-08-10::Wer::Mrs' DEF::531.97:531.97:310221661617::+ABC:BAL:1:N::::5:40.00:0.00:2009-08-10:CN:1111111111109962::3:N:missc :N:PH:00010833:... (5 Replies)
Discussion started by: mad_man12
5 Replies

5. Shell Programming and Scripting

Scripting help/advise on hiding/masking username/password

Hi, I currently have a UNIX script with a function that uses a username and password to connect to the database, retrieve some information and then exit. At the moment, am getting the username and password from a hidden plain text file and permission set to -r--------, i.e. read only to who... (1 Reply)
Discussion started by: newbie_01
1 Replies

6. Shell Programming and Scripting

masking issue

Hi I am facing an issue with the below script which has the below line each field being separated with a tab. I need to mask the 8 and 7th field based on following conditions 1. 8th field is 16 in length and is numerics i will mask the middle 6 digits except the first 6 and last 4. input... (2 Replies)
Discussion started by: mad_man12
2 Replies

7. Shell Programming and Scripting

Masking Password from within a Bash Shell Script

Is there a way to mask the password inside of a script to minimize the impact of a comprimised server? So ssh -o "PasswordAuthentication no" -o "HostbasedAuthentication yes" -l testuser 192.168.3.1 "mysqldump --opt --all-databases -u root -pPassword| gzip" > $backup_dir/mysqldump.gz a... (2 Replies)
Discussion started by: metallica1973
2 Replies

8. Shell Programming and Scripting

Masking algorithm

I have a requirement of masking few specific fields in the UNIX file. The details are as following- File is fixed length file with each record of 250 charater length. 2 fields needs to be masked – the positions are 21:30 and 110:120 The character by character making needs to be done which... (5 Replies)
Discussion started by: n78298
5 Replies

9. UNIX for Dummies Questions & Answers

Masking data

How Can I mask one particular columns using some unix command? (4 Replies)
Discussion started by: dsa
4 Replies

10. Shell Programming and Scripting

Masking with gsub command

My file "test.dat" data as below Requirement is to mask(replace) all english characters with "X" EXCEPT first 7 characters of every line. my command awk '{gsub("]","X")}1' test.dat looks not working properly, Appreciate any suggestion... (6 Replies)
Discussion started by: JSKOBS
6 Replies
SETBUF(3)						     Linux Programmer's Manual							 SETBUF(3)

NAME
setbuf, setbuffer, setlinebuf, setvbuf - stream buffering operations SYNOPSIS
#include <stdio.h> void setbuf(FILE *stream, char *buf); void setbuffer(FILE *stream, char *buf, size_t size); void setlinebuf(FILE *stream); int setvbuf(FILE *stream, char *buf, int mode, size_t size); Feature Test Macro Requirements for glibc (see feature_test_macros(7)): setbuffer(), setlinebuf(): Since glibc 2.19: _DEFAULT_SOURCE Glibc 2.19 and earlier: _BSD_SOURCE DESCRIPTION
The three types of buffering available are unbuffered, block buffered, and line buffered. When an output stream is unbuffered, information appears on the destination file or terminal as soon as written; when it is block buffered many characters are saved up and written as a block; when it is line buffered characters are saved up until a newline is output or input is read from any stream attached to a terminal device (typically stdin). The function fflush(3) may be used to force the block out early. (See fclose(3).) Normally all files are block buffered. If a stream refers to a terminal (as stdout normally does), it is line buffered. The standard error stream stderr is always unbuffered by default. The setvbuf() function may be used on any open stream to change its buffer. The mode argument must be one of the following three macros: _IONBF unbuffered _IOLBF line buffered _IOFBF fully buffered Except for unbuffered files, the buf argument should point to a buffer at least size bytes long; this buffer will be used instead of the current buffer. If the argument buf is NULL, only the mode is affected; a new buffer will be allocated on the next read or write opera- tion. The setvbuf() function may be used only after opening a stream and before any other operations have been performed on it. The other three calls are, in effect, simply aliases for calls to setvbuf(). The setbuf() function is exactly equivalent to the call setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ); The setbuffer() function is the same, except that the size of the buffer is up to the caller, rather than being determined by the default BUFSIZ. The setlinebuf() function is exactly equivalent to the call: setvbuf(stream, NULL, _IOLBF, 0); RETURN VALUE
The function setvbuf() returns 0 on success. It returns nonzero on failure (mode is invalid or the request cannot be honored). It may set errno on failure. The other functions do not return a value. ATTRIBUTES
For an explanation of the terms used in this section, see attributes(7). +------------------------+---------------+---------+ |Interface | Attribute | Value | +------------------------+---------------+---------+ |setbuf(), setbuffer(), | Thread safety | MT-Safe | |setlinebuf(), setvbuf() | | | +------------------------+---------------+---------+ CONFORMING TO
The setbuf() and setvbuf() functions conform to C89 and C99. BUGS
You must make sure that the space that buf points to still exists by the time stream is closed, which also happens at program termination. For example, the following is invalid: #include <stdio.h> int main(void) { char buf[BUFSIZ]; setbuf(stdin, buf); printf("Hello, world! "); return 0; } SEE ALSO
stdbuf(1), fclose(3), fflush(3), fopen(3), fread(3), malloc(3), printf(3), puts(3) COLOPHON
This page is part of release 4.15 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/. Linux 2017-09-15 SETBUF(3)
All times are GMT -4. The time now is 10:18 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy