我已将密码复制到剪贴板!可以删除吗?


96

按照最佳 安全 实践,我将带有密码的纯文本文件保存在硬盘上。实际上,我只是复制并粘贴其中之一来访问我的PPCG帐户。

很快,我决定密码使用后最好不要保留在剪贴板中。由于这种情况经常发生在我身上,因此我可以使用程序删除剪贴板中的内容。

挑战

使用您选择的编程语言编写一个程序或函数,以删除或覆盖剪贴板中包含的任何文本。

额外细节:

  • 如果您的系统有多个剪贴板,则可以为其中任何一个编写程序。唯一的要求是用户必须可以使用该剪贴板复制和粘贴文本。

  • 如果您的剪贴板保留了最近复制条目的历史记录,则假定为最新条目。

  • 如果您的答案是特定于操作系统或剪贴板的,请在帖子标题以及使用的语言中进行说明。

  • 保证程序运行时剪贴板中包含文本。您可以从剪贴板中删除内容,也可以用其他内容(不一定是文本)覆盖它。唯一的要求是,运行程序后,从剪贴板粘贴将不会产生原始文本。

  • 如果选择覆盖某些固定或随机选择的文本,则可以假定以前的剪贴板内容与该文本不同,因此可以有效删除密码。换句话说,忽略填充文本与密码一致的可能性。

  • 该程序不应有任何副作用,例如重新启动系统,关闭程序,关闭计算机或冻结它。在运行程序之后,用户只有从剪贴板中删除密码后,用户才能继续正常使用计算机。另外,禁止出现标准漏洞

以字节为单位的最短代码获胜。


如果剪贴板的条目数不确定,该怎么办?
LarsW

20
更严重的一点是:使用keepass之类的方法可以帮助您。
缺陷

17
“忽略填充文本与密码一致的可能性。” 解决方案:``,0个字节。用其自身覆盖密码。
硕果累累

2
@ Challenger5,但这仅是如果您选择覆盖一些固定或随机选择的文本
路易斯·门多

11
关于这个问题,最糟糕的部分是尽管我知道这是讽刺性的,但我可以完全将其与介绍性故事联系起来。...所以,Keepass,是吗?应该研究一下……
Nat

Answers:


14

Excel,1击键

Ctrl-C

之所以有效,是因为Excel总是具有唯一性。可能也可以在其他电子表格应用程序中使用。与其他玩笑条目相反,PPCG上的Excel答案实际上有些频繁。


2
这不是两次击键吗?“击键是指按下键盘上的一个键。每次击键都是一个击键。” computerhope.com/jargon/k/keystroke.htm
Martijn

@Martijn可能。我只是从这里复制的。
亚当

我不确定按击键得分是否真的有效。另外,由于您说的是“与其他开玩笑的条目不同”,所以我解释说,您承认这不是实际有效的答案。因此,即使它是最短的,我也不会接受。如果您能指出一些相关的元文章,将击键的有效性作为评分方法,我将很乐意接受此意见
Luis Mendo

@LuisMendo您的中间线分析是正确的,但现在我实际上花了一些时间在Meta上进行了研究:codegolf.meta.stackexchange.com/a/4817/43319似乎表明它可以接受,而不是不是编辑器的“ Windows”。
亚当

@Adám我的理解是,该元帖子指的是假设的“编辑高尔夫” 挑战类别,而不是将击键次数用作“代码高尔夫”挑战的评分方法。我已对Doorknob和Dennis进行了了解,以了解他们的意见
Luis

123

PowerShell,3个字节

scb

这是的默认别名Set-Clipboard。在不输入任何内容且不提供任何参数的情况下调用该函数时,它将删除当前剪贴板内容。


23
实际上是清除剪贴板的最短答案,而不是将其设置为换行符或不完全空白的内容。
露娜

1
很好
beppe9000'3

72

Vim,3个字节

"*Y

将剪贴板内容设置为换行符。

默认情况下,vim在启动时会打开一个空缓冲区。现在,该程序Y将整个行(包括换行符)发送(复制),并通过将文本拉到register中将其存储在剪贴板中"*。该*可改为+对其他剪贴板。


6
Aaargh,我只是要发布这个答案!+1,适合该工作的工具。:)
DJMcMayhem

如果vim的安装量多于powershell的安装量,则应基于“通用性”来回答;)
JPCF 2017年

1
@JPCF,用C#编写的“实际”应用程序要比coffeescript等多。在代码高尔夫球方面,它并不能使任何一个都比另一个好
Baldrickk

1
我怀疑vim的安装量比PowerShell多,因为Windows 8及更高版本中默认安装了vim。
罗伯特·弗雷泽

56

Javascript(Chrome DevTools Console),6个字节

copy``

请注意,这是控制台的功能(也可以在FF控制台中使用),并且不是语言标准的一部分。


3
didn,我不知道JS具有此功能。也可以在Firefox中使用。(剪贴板的内容变为[\n ""\n]
ETHproductions '17

1
也可以在Chrome上确认这一点。剪贴板更改为:[\n ""\n ]
haykam

32
@ETHproductions实际上,此功能实际上在JS 中并不存在。这是内置的控制台。(这不会使答案无效。但是也许应该更明确地解释它。)
Arnauld

是不是它存在Document.execCommand("copy")于浏览器剪贴板中?我在一些篡改的猴子脚本中使用了该脚本,但懒得检查它
pinkfloydx33

1
好的...这是我最近最喜欢的答案
SuperJedi224'3

55

AppleScript,20个字节

set the clipboard to

将剪贴板设置为...无。


通过删除向我发送剪贴板内容的代码,我节省了很多字节;)


32

批处理(Windows 7和更高版本),7个字节

fc|clip

注意:它将响应类似“ FC:...”的错误消息,但它可以工作。

“剪辑”是将另一个程序的输出复制到剪贴板的命令(自Windows 7开始可用)

“ fc”是用于比较两个或更多文件的命令。在这种情况下,我们不输入任何文件。它将出错,然后“剪辑”会将剪贴板设置为空字符串。

如果您在当前目录中有一个文件“ a”(可以为空),则可以做得更好:

clip<a

编辑:参见@Matthew Steeples注释以获取较短的版本(但在Powershell中不是一个批处理)


2
您可以使用sc代替fc以避免出现错误消息。然后,sc将在剪贴板上设置帮助文本。另外,+ 1告诉我有关的信息clip
尼尔

2
我的一个用过cd。:-)
Hand-E-Food

我猜剪辑不会拾取非命令的输出吗?所以你不能只跑x|clip吗?
djsmiley2k

@ djsmiley2k是的,它将仅接收有效命令的输出。
Divcy

4
您可以将其他字符关闭。h是的别名(默认情况下)get-history,因此您可以这样做h|clip
Matthew Steeples

32

Mac OS上的Bash,8个字节

:|pbcopy

: 几乎可以用任何其他单个字符替换。


6
:|pbcopy在bash和zsh中均可使用。
Digital Trauma '02

@Nax,现在已修复
猫,

29

C(在Windows上),65 62字节

#include<windows.h>
main(){OpenClipboard(0);EmptyClipboard();}

编辑:由于@Orion,节省了3个字节。


24
由于它是C,所以您不能使用0代替NULL吗?
Orion

23

AHK,10字节(Windows)

clipboard=

清除剪贴板的文本内容。如果clipboardAll使用它将清除所有内容。

文档 -

剪贴板是一个内置变量,如果这些内容可以表示为文本,则会反映Windows剪贴板的当前内容。相比之下,ClipboardAll包含剪贴板上的所有内容,例如图片和格式。


22

Java的8,127个是125字节

打高尔夫球:

()->java.awt.Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new java.awt.datatransfer.StringSelection(""),null)

取消高尔夫:

public class ICopiedMyPasswordToTheClipboardCanYouDeleteIt {

  public static void main(String[] args) {
    f(() -> java.awt.Toolkit.getDefaultToolkit().getSystemClipboard().setContents(
      new java.awt.datatransfer.StringSelection(""), null));
  }

  private static void f(Runnable x) {
    x.run();
  }
}

2
您可以使用空字符串代替null吗?保存2个字节

1
@Poke是的,可以。我专注于“删除”剪贴板中的内容,就像真正清除它们一样。原来覆盖也可以。

17

SmileBASIC 3,10个字节

最后,对于SmileBASIC 3 来说实际​​上一个挑战!

CLIPBOARD"

CLIPBOARD是将环境的文本剪贴板设置为给定字符串的内置函数。在这里,我们给它一个空字符串("不需要关闭!)


感谢您的解释,因为这看起来像两个'
msanford

17

Excel VBA,9 8字节

[A1].Cut

A1活动工作表中单元格的内容覆盖剪贴板(默认为空,但可以是您选择的任何字符串/表达式-请确保它不是您的密码!)。

利用立即窗口。

多亏了Slai,节省了一个字节


1
真好!您可以使用[a1].Cut
Slai

16

Python 56 48 40字节(仅适用于Linux)

@wheatwizard节省了8个字节。

import os as o
o.system("echo|xclip")

1
欢迎光临本站!我注意到您可以打几场高尔夫球。而不是systemos您可以导入import os as o和致电o.system。在bash命令中,您也不需要管道周围的空格。
Sriotchilism O'Zaic '02

35
没有as o部分,它短了6个字节...(import os \n os.system("echo |xclip"
Rɪᴋᴇʀ17年

4
您也可以替换echo :":|xclip"
Rɪᴋᴇʀ

22
或仅以37个字节作为一行:__import__('os').system("echo|xclip")
Daniel

4
还有一种替代xclip所谓xsel的Linux系统,这将节省您的另一个字节-和前面已经提到,再去掉“邻”的进口部分,它只是使事情变得更长:import os;os.system(":|xsel")(29个字节)。
Byte Commander

14

Google Chrome语言,两次击键

<c-S><c-C>

基于 Notepad ++答案。

Google Chrome支持Javascript(而后者又支持RegExp),因此,我特此宣称它是Javascript的超集和它自己的语言。

这个怎么运作:

Ctrl+S将在预选“新建标签”文本的情况下调用“保存页面”对话框,Ctrl+C将其复制到剪贴板中,以替换先前的内容。

边注:

您可以通过javascript:URL和开发者工具控制台(通过Ctrl + Shift + J调用)访问Chrome中的Javascript功能。


Gah,我想使用Google Chrome,但我没有意识到我可以说它是JS的超集...玩得很好。
帕维尔

8
然后,我想按“打印屏幕”按钮(1击)是Windows语言的一种解决方案,它是Google Chrome Lang的超集。
Memet Olsen

@MemetOlsen是的,请随时发布。我们已经有了“ Notepad ++语言”和“谷歌浏览器语言”,因此“ Windows语言”似乎是下一步的合理选择!:)
齐柏林飞艇

1
@MemetOlsen并不是Google Chrome Lang的超集,因为Chrome是您必须下载的外部“库”。它 IE lang的超集,而IE lang JS的超集。
帕维尔

谢谢大家,我在SE网站上添加了我的建议作为我的第一个答案。
Memet Olsen

11

bash + xsel 8 7字节

xsel -c

说明

-b:适用于剪贴板选择

-c:清除选择


1
+1,但这不是coreutils
pacholik

@pacholik是的,您需要安装该软件包,因为我在终端上对其进行了操作,因此我将其称为coreutils。
亚伯汤姆

1
在Debian上,xsel位于xsel软件包中,而不是coreutils的一部分。
布赖恩·明顿

由于我们可以使用我们想要的任何剪贴板,因此我认为您可以删除b
丹尼斯,

@数字创伤足够公平
亚伯汤姆

10

Mathematica,17个字节

CopyToClipboard@0

将剪贴板设置为数字0。


10

R(Windows)18

writeClipboard("")

您知道Linux的等效版本吗?

我认为类似的方法readLines(file("clipboard", "r")) 可能会起作用。尝试查看“帮助连接的功能”下的R帮助文档。
Flounderer

8

Matlab,19 13字节

gcf;print -dm

将剪贴板内容设置为空图。


它是21个UTF-8字节
CAD97

@LuisMendo这更长(23):axes;print -dmeta;close但也可以工作...
EBH

@EBH close可以被删除。通过“副作用”,我想到的是事物消失了,没有出现。另外,print(gcf,'-dm')作品
Luis Mendo

@LuisMendo好吧,我不知道那-dm是什么样子-dmeta,并认为程序应该“安静地”工作,而不会弹出任何窗口:)
EBH

2
@LuisMendo确实是我的第一场。现在的建议更短了。
EBH

8

Bash,11 10 8 7字节

@seshoumara ls代替使用,节省了2个字节echo

感谢hexafraction,isaacg和Riker建议使用7个字节的字节

w|xclip

剪贴板设置为的结果w。这仅适用于基于X11的系统。例如,在macOS上,可以使用基于X的应用程序(如XQuartz)来访问此剪贴板。


仅适用于macOS的旧答案(11个 9字节):

ls|pbcopy

这会将剪贴板内容设置为换行符。


怎么ls|xclip
seshoumara

@seshoumara谢谢!(并认为我想ls /usr/bin | grep "^.\{1,3\}$"搜索一个更短的命令:P)
牛嘎嘎声,

3
w|xclip为一个都不能少。将登录用户列表转储到剪贴板。
–ζ–

4
或者:|xclip。实际上清除剪贴板。
isaacg

1
呵呵,在我的机器上工作。而且由于提交可能会期望输入为空,因此也将xclip没有任何内容。
丹尼斯,


7

Python + tkinter,43个字节

Python 3:

from tkinter import*;Tk().clipboard_clear()

Python 2:

from Tkinter import*;Tk().clipboard_clear()

tkinter包含在python发行版中吗?
Cruncher

@Cruncher这是在我的Python 3中
。– DLosc

@Cruncher是的,它是stdlib的一部分,即使我相信debian也将其打包python-tk在与“ core python” 不同的包()中。
巴库里

看一下Dopapp的评论,以更简短的方式。
jpaugh

@jpaugh如果您指的是将导入样式更改为__import__("tkinter")....,则在这种情况下,此长度增加了1个字节。
Trelzevir

7

C#,30个字节

感谢NatJMDBgrWorker的建议!

System.Windows.Clipboard.Clear

没有WPF的C#,36个字节

System.Windows.Forms.Clipboard.Clear

清空剪贴板的内置功能。

带有测试用例的完整程序:

using System;
using System.Windows.Forms;

class ClearClipboard
{
    static void Main()
    {
        Action f =
        ()=>System.Windows.Forms.Clipboard.Clear();

        // test case:
        Clipboard.SetText("SomePassword!");
        Console.WriteLine("In clipboard initially: " + Clipboard.GetText());
        f();
        Console.WriteLine("In clipboard now: " + Clipboard.GetText());
    }
}


4
另外,Clipboard.Clear()它已经是一个函数,因此可以删除lambda。
纳特

1
我不会为LINQPad添加答案,因为该答案将在其中运行。System.Windows.Clipboard.Clear();但是,与VS甚至VS Code相比,lprun可能是一种更轻量级的运行此答案的方法。
JMD

@Nat省略时.Forms,它没有在Linux上编译,并且我现在没有Windows机器。
adrianmp

2
@adrianmp该类仅包含在PresentationCore.dll中,PresentationCore.dll是WPF类型项目默认添加的引用。我不知道如果该DLL包含在单/ .NET的核心
BgrWorker

6

Haskell,34个字节

import System.Hclip
setClipboard""

只是一个无聊的库函数。还有clearClipboard相同的字节数。


6

记事本++,3个按键

a<c-A><c-C>

插入字母a,选择它,然后将其复制到键盘上。

Notepad ++ 一种有效的语言,它支持regex,因此是regex的超集,我们认为regex是有效的语言。


consider regex to be a valid language参考文献?显然RegExp本身并不是图灵完成的。
Zeppelin

2
@zeppelin不一定必须是图灵完成才能成为有效的语言。
帕维尔

It doesn't have to be Turing Complete to be a valid language通过这种方法,我们几乎可以宣称任何东西都是“语言”。即XML或HTML确实也有语法(甚至可以称自己为语言,这与RegExp不同),尽管如此,我认为它们还是不可接受的。您能否提供一个由社区支持的纯正则表达式答案示例?此外,我相信Notepad ++并不能真正“支持regexp”,因为它可以以编程方式调用它,并且打开UI“ Search and Replace”框以在其中键入RegExp绝对不是“程序代码”。
Zeppelin

1
@zeppelin meta.codegolf.stackexchange.com/a/4817/60042 <-相关的元帖子。请记住,您可以使用来访问N ++中的搜索和替换<c-H>,并用于<tab>在UI中导航并与所有相关字段进行交互。还要注意,正则表达式可以确定的素数并添加数字。(两者均为一元制,这是正则表达式的默认数字表示形式)
Pavel

有问题的元文章指的是Vim和Emacs类编辑器,它们是高度可编程的,而不是记事本。是的,我已经看到人们在此站点上使用RegExp进行素数测试,但这只是一个有趣的极端情况,并不是RegExp是一种语言的真实证明。因此,请提供对任何推荐的“ pure-Regexp”答案的引用,以证明您的观点。
zeppelin

6

Python 33字节(仅适用于Windows)

@hubacub版本保存了4个字节。

3个字节切换到Windows,使用@Divcy解决方案

import os
os.system("fc|clip")

刚刚在stackexchange中注册,所以我不敢对@hubacub提交发表评论。无需在导入中使用“ as o”花费5个字节来节省1个字节,以将“ os.system”减少为“ o.system”。


欢迎光临本站!
路易斯·门多

6

J(Windows),12个字节

wd'clipcopy'

wd是J的Windows标准库。wd 'clipcopy password'会将文本password放入剪贴板。如果不指定任何内容,则会擦拭剪贴板。

如果您希望程序将纯文本密码放入剪贴板,则可以使用以下命令:

pass =. 'abc123'
wd 'clipcopy ' , pass

这不是函数或填充程序,而是代码段。您需要将其设为动词才能生效。您可以做类似的事情'clipcopy 'wd@,]
Conor O'Brien

您指的是哪个“这个”?这两个代码块都是可执行的.ijs文件。
丹妮

我可能只是被误解了。不好意思,哈哈。无论如何,您可以删除wd和之间的空格'clipcopy'
科纳·奥布莱恩

谢谢!删掉一个字节。我只是习惯于空格以帮助我阅读J,而我没有考虑过。
丹妮(Dane)

5

JavaScript的175 148 139 135 69个字节

打高尔夫球:

<input value="c"onclick="this.select();document.execCommand('copy')">

小提琴

不打高尔夫球

获得了SitePoint的帮助

HTML:

<input style="display: none;" id="Empty" value="x">
<input id="clipclear" type="button" value="Clear The Clipboard">

JS:

function clearclip(){
empty=document.getElementById("Empty");
empty.style.display="block";
empty.select();
        document.execCommand('copy');
empty.style.display="none";
}      
document.getElementById("clipclear").addEventListener("click", clearclip, false);


经过FF和Chrome测试
TecBrat

1
高尔夫之前不要发布它。目前,您可以删除答案,对其进行编辑以使之生效,然后取消删除答案。
NoOneIsHere

@NoOneIsHere,好吧,我继续打高尔夫球。这是新的小提琴
TecBrat

1
除了发表评论外,请在您的答案中编辑小提琴。另外,打高尔夫球也很出色。我给了你+1。(仅供参考,该语言从技术上讲就是HTML + JavaScript。)
NoOneIsHere17年

5

Java 8(JavaFX),61个字节

()->javafx.scene.input.Clipboard.getSystemClipboard().clear()

用于操纵剪贴板的JavaFX API比AWT的更为简洁;)


5

Tcl / Tk许愿外壳(REPL),5个字节

cli c

Wish Shell(REPL)允许使用不完整的命令,只要没有歧义,完整的命令将是:

clipboard clear

4

PHP + PHP GTK 2.0,24字节

假设您已经加载了PHP GTK扩展。

<?GtkClipboard::clear();

文档参考:http : //gtk.php.net/manual/en/html/gtk/gtk.gtkclipboard.method.clear.html


您不需要打开<?标签,因为您可以<?在带有-r开关的命令行中运行没有标签的代码。在这里看到更多的信息:meta.codegolf.stackexchange.com/questions/7098/...
科多兽约翰逊

@KodosJohnson我故意将开始标签留在那里。
Ismael Miguel

@KodosJohnson他仍然必须在标志中添加字节。
ckjbgames

@ckjbgames不,我不会。该标志是免费的。我没有更改代码,因为我故意离开了开始标记。
Ismael Miguel

@IsmaelMiguel我已经看到人们在字节数中添加了解释器/编译器标志。
ckjbgames
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.