【问题标题】:C Terminal User InputC 终端用户输入
【发布时间】:2020-05-16 05:36:29
【问题描述】:

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

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

这与您编写 Windows/Mac 密码时相同。

非常感谢!

Ayly_ / C noobies

【问题讨论】:

标签: c passwords


【解决方案1】:

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

#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);
}

【讨论】:

  • 谢谢!!我会仔细看看的 !并感谢您的建议!
猜你喜欢
  • 1970-01-01
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 2023-03-07
  • 2014-03-06
  • 1970-01-01
  • 2013-08-03
相关资源
最近更新 更多