为什么我们不能使用/设置功能键作为密码键?

Blu*_*303 14 security keyboard operating-systems passwords

在任何操作系统中,Fn都不允许使用 密码。例如,我不能保留Fn+ 一些字符作为密码。

背后的原因是什么?任何阻止操作系统设计者允许Fn密钥作为密码的技术方面?

我能想到的一个原因是,在某些笔记本电脑中,Fn按键可以启用或禁用数字键盘。但是台式机呢?由于桌面键盘有单独的Fn,为什么我们不能在密码中使用它?

use*_*686 51

密码只不过是文本;它们包含字符,而不是按键。计算机不像机械打字机,两者之间是有区别的。

使用记录的按键作为密码只会带来缺点:

  • 安全性:在安全方面,延长密码比增加字母更有效。(如果您从基本的 26 个字母开始,一个 8 个字母的密码有 26 8 = 208827064576 种组合。将其扩展为字母和数字将提供 36 8 种组合,增加 13.5 倍。但如果您只是将其长度增加一个字母,则您' d 得到 26 9 个可能的密码,正好是 26 倍多。两个字母长?26 10 种可能性,是 676 倍。我骑马了。

    (虽然另一方面,像这样的简单计算并不能解释字典攻击,但我认为使用他们的名字作为密码的人不会在可能的情况下自愿进行功能键舞蹈。)

  • 用户期望:几乎每个人都认为一个合格的含有一些单词和字母(只是保密)。因此,如果一个键喜欢F7Fn不正常输入字符,那么它也不应该在密码字段中输入任何内容。如果它执行诸如调整窗口大小或弹出 Google 之类的操作,它也应该在密码字段中执行完全相同的操作。

  • 功能键的主要用途:某些键由程序本身或操作系统使用。使用哪些键因系统而异。有时会添加新的键盘快捷键。

    假设您使用WinI了密码,然后从 Windows 98 升级到 Windows 10;现在你不能再输入密码了,因为WinI它被操作系统本身使用了。

    或者,您可能FnRight在旧笔记本电脑上使用过,但在新笔记本电脑上这意味着“跳到下一首歌曲”。突然之间您无法登录 Gmail,除非您先关闭音乐播放器。

  • 设备之间的差异:并非所有键盘都存在某些键。您最后一次看到带Fn按键的 PC 桌面键盘是什么时候?还是带Win按键的 Mac 键盘?即使是相同的 PC 也不总是有PauseSysRq不再有。

    您将如何在移动设备上输入这些按键?假设有 12 个按钮的功能手机?或者 iPhone,在他们开始允许第三方键盘之前......

    人们已经有这样的问题。通常,他们甚至无法输入自己的脚本/语言(甚至像á或 之类的带有口音的基本拉丁语?),并且被迫坚持使用美国 QWERTY 键盘布局提供的内容——这是唯一在公共图书馆和通常在任何地方都能始终有效的东西。

  • 最后,密码仍然是文本(许多操作系统组件希望它们是文本),因此操作系统需要决定如何将每个按键转换为可以存储为文本的内容。

    类似 xterm 的终端应用程序已经做到了这一点(就像实际的物理终端一样)——然而,三十年后,他们仍然没有就一种方法达成一致。方向键至少有两种不同的翻译,F1-F12 至少有四种不同的翻译方式。

    所以,你可以输入F3和基于终端的计划将它看作文本-但你不知道它是否将是ESC O RESC [ 1 3 ~ESC [ [ CESC [ O...

  • 我最感兴趣的是有人从Win98升级到Win10的例子。 (10认同)
  • @EngineerToast:[傻瓜链](http://www.winrumors.com/man-upgrades-windows-1-0-to-windows-7-via-every-other-windows-versions/)?你只需要暂时降级到ME,然后升级到2000和XP,然后降级到Vista,升级到Win7,降级到8,升级到8.1等等。 (10认同)

Sim*_*mon 12

Linux 将几乎所有的按键(除了修饰键本身)作为密码输入。在我的 arch 系统上,我可以轻松地将 F12-F10-F9 设置为我的密码。该行中缺少 F11,因为我的窗口管理器吞下了该键并将其解释为“全屏”命令。

这就是您可能尝试过的大多数东西的问题:窗口管理器 (GUI) 会在将您的输入传递给您尝试输入数据的程序之前吞下某些键。 如果您在控制台中没有任何 GUI 上面,您将能够使用几乎任何您可以想象的密码输入。

编辑:另请注意,某些键盘的 fn 键输入硬连线到硬件更改。例如,在我的联想 fn+space 上将切换键盘背光完全独立于操作系统。在这种情况下,操作系统甚至不会收到按键。

编辑 编辑:grawity 的答案(广告对此答案的评论)详细说明了您可能不想这样做的原因。

  • 请注意,您的密码实际上并不包含 F12-F10-F9;如果您知道它被编码为什么 ASCII 序列,您可以输入(或粘贴)该序列。您实际保存到密码中的一个控制代码(即不可打印字符)可能是 ESC (ASCII 27),表示转义序列的开始。 (8认同)
  • 每当您的环境发生变化导致相同的功能键生成不同的文本时,这样做会咬您。它可能与区域设置更改、远程 X 会话或桌面环境升级一样小,并且您将无法登录。 (3认同)

Tho*_*key 5

这取决于终端,而不是操作系统

有些终端可以配置为存储任意字符串;不久前我为wyse-50做了这个,使用转义序列对它们进行编程。

最近,您可以将translations资源设置xterm为发送字符串。对此没有转义序列(您会发现它很有用:DECUDK是最接近的,并以十六进制发送其结果)。

一些终端(如Terminal.app)有一个首选项,它可以让你把任意的字符串存在。同样,没有转义序列,但绝对可配置。

有些(显然是gnome-terminal和 konsole)让您对键盘进行一些有限的配置。

最终答案归结为找到

  • 如果您使用的终端支持该功能,并且
  • 如果是这样,如何有效地使用它。

进一步阅读:

此答案涉及终端中的密码,而不是GUI。在 GUI 中,应用程序甚至可能不会将功能键视为文本。GUI 有不同的限制,例如(根据评论)在 Windows 上,可能会在安全桌面中提示密码,因此键盘的设置方式无关紧要。特别是,由于它与其他进程分开运行,因此您不能使用附加组件(例如 autohotkey)来存储/粘贴密码。其他 GUI 有自己的规则(参见XSendEvent示例),这些规则不一定由操作系统决定,而是由运行时库决定。

进一步阅读: