Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 终端用户输入_C_Passwords - Fatal编程技术网

C 终端用户输入

C 终端用户输入,c,passwords,C,Passwords,我想知道是否有可能隐藏或替换程序用户在终端中编写的内容 当用户在程序要求用户键入密码之类的内容时按下一个键,而不是写入密码时,它会写入*(例如:password=“AAABBB”,但在终端中显示*******或什么都没有) 这与您编写Windows/Mac密码时的操作相同 非常感谢 您可以这样做,但这将是非常系统特定的,具体取决于您的操作系统和其他因素。有一些库可以做你想做的事情,比如“诅咒”,你可以查看它们。为了演示所涉及的黑客行为,我写了一些可以在我的Ubuntu笔记本电脑上运行的东西。运行

我想知道是否有可能隐藏或替换程序用户在终端中编写的内容

当用户在程序要求用户键入密码之类的内容时按下一个键,而不是写入密码时,它会写入*(例如:password=“AAABBB”,但在终端中显示*******或什么都没有)

这与您编写Windows/Mac密码时的操作相同

非常感谢


您可以这样做,但这将是非常系统特定的,具体取决于您的操作系统和其他因素。有一些库可以做你想做的事情,比如“诅咒”,你可以查看它们。为了演示所涉及的黑客行为,我写了一些可以在我的Ubuntu笔记本电脑上运行的东西。运行此操作可能会弄乱终端设置,尤其是在中途中断程序时。我可以在Ubuntu上使用“重置”命令来修复这个问题,或者只是重新打开终端窗口

#include <termios.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

#define MAX_LENGTH 20

int main()
{
  struct termios t, backup;
  tcgetattr(STDIN_FILENO, &t);
  backup=t;
  cfmakeraw(&t);
  tcsetattr(STDIN_FILENO, TCSANOW, &t);

  char c=0;
  int position = 0;
  char password[MAX_LENGTH+1] = {0};

  while (position<MAX_LENGTH)
  {
    c = getchar();
    if (c<0x20)
      break;

    password[position++] = c;
    putchar ('*');
  }
  tcsetattr(STDIN_FILENO, TCSANOW, &backup);

  printf("\nPassword is : %s\n", password);
}

#包括
#包括
#包括
#包括
#定义最大长度20
int main()
{
结构termios t,备份;
tcgetattr(标准文件号和t);
备份=t;
cfmakeraw&t;
tcsetattr(标准文件号、TCSANOW和t);
字符c=0;
int位置=0;
字符密码[MAX_LENGTH+1]={0};

while(position您可以这样做,但这将是非常系统特定的,取决于您的操作系统和其他因素。有些库可能会执行您想要的操作,例如“诅咒”,你可以研究一下。为了演示所涉及的黑客行为,我写了一些在我的Ubuntu笔记本电脑上运行的东西。运行它可能会弄乱你的终端设置,特别是如果你中途中断了程序。我可以在Ubuntu上使用“重置”命令来修复,或者只是重新打开终端窗口

#include <termios.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

#define MAX_LENGTH 20

int main()
{
  struct termios t, backup;
  tcgetattr(STDIN_FILENO, &t);
  backup=t;
  cfmakeraw(&t);
  tcsetattr(STDIN_FILENO, TCSANOW, &t);

  char c=0;
  int position = 0;
  char password[MAX_LENGTH+1] = {0};

  while (position<MAX_LENGTH)
  {
    c = getchar();
    if (c<0x20)
      break;

    password[position++] = c;
    putchar ('*');
  }
  tcsetattr(STDIN_FILENO, TCSANOW, &backup);

  printf("\nPassword is : %s\n", password);
}

#包括
#包括
#包括
#包括
#定义最大长度20
int main()
{
结构termios t,备份;
tcgetattr(标准文件号和t);
备份=t;
cfmakeraw&t;
tcsetattr(标准文件号、TCSANOW和t);
字符c=0;
int位置=0;
字符密码[MAX_LENGTH+1]={0};

while(不使用标准C,但您可以使用操作系统特定的函数来关闭回显。对于Linux,请查看
ncurses
库,尤其是
noecho()
->。这是否回答了您的问题?不使用标准C,但您可以使用特定于操作系统的函数来关闭回音。对于Linux,请查看
ncurses
库,尤其是
noecho()
->。这能回答你的问题吗?谢谢!!我会调查的!谢谢你的建议!谢谢!!我会调查的!谢谢你的建议!