Copié mi contraseña al portapapeles! ¿Puedes borrarlo?


96

Siguiendo las mejores prácticas de seguridad , mantengo un archivo de texto sin formato con mis contraseñas en mi disco duro. De hecho, acabo de copiar y pegar uno de ellos para acceder a mi cuenta PPCG.

En un momento lúcido, decido que es mejor que la contraseña no permanezca en el portapapeles después de su uso. Como esto me sucede a menudo, podría usar un programa para eliminar el contenido del portapapeles.

Desafío

Escriba un programa o función que elimine o sobrescriba cualquier texto contenido en el portapapeles, utilizando un lenguaje de programación de su elección.

Detalles adicionales:

  • Si su sistema tiene varios portapapeles, puede escribir el programa para cualquiera de ellos. El único requisito es que el usuario deba poder copiar y pegar texto usando ese portapapeles.

  • Si su portapapeles mantiene un historial de entradas copiadas recientes, asuma la entrada más reciente.

  • Si su respuesta es específica de un sistema operativo o portapapeles, indíquelo en el título de su publicación, junto con el idioma utilizado.

  • Se garantiza que el portapapeles contendrá texto cuando se ejecute su programa. Puede eliminar el contenido del portapapeles o sobrescribirlo con otra cosa (no necesariamente texto). El único requisito es que después de ejecutar el programa, pegar desde el portapapeles no producirá el texto original.

  • Si elige sobrescribir con un texto fijo o elegido al azar, puede suponer que el contenido del portapapeles anterior es diferente de ese texto, por lo que la contraseña se elimina de manera efectiva. En otras palabras, ignore la posibilidad de que el texto de relleno coincida con la contraseña.

  • El programa no debería tener efectos secundarios como reiniciar el sistema, cerrar programas, apagar la computadora o congelarla. Después de ejecutar su programa, el usuario debe poder seguir usando la computadora de manera normal, solo con la contraseña eliminada del portapapeles. Además, las lagunas estándar están prohibidas.

El código más corto en bytes gana.


¿Qué pasa si el portapapeles tiene un número indeterminado de entradas?
LarsW

20
En una nota más seria: use algo como keepass para hacer eso por usted.
falla

17
"No tenga en cuenta la posibilidad de que el texto de relleno coincida con la contraseña". Solución: ``, 0 bytes. Sobrescribe la contraseña consigo misma.
Esolanging Fruit

2
@ Challenger5 pero eso es solo si elige sobrescribir con un texto fijo o elegido al azar
Luis Mendo

11
La peor parte de esta pregunta es que puedo relacionarme completamente con la historia de introducción a pesar de saber que es satírica. ... entonces, keepass, ¿eh? Debería investigar eso ...
Nat

Respuestas:


14

Excel, 1 pulsación de tecla

Ctrl-C

Funciona porque Excel, de manera única, siempre tiene una selección. Probablemente también funcione en otras aplicaciones de hoja de cálculo. A diferencia de las otras entradas de broma, las respuestas de Excel son en realidad algo frecuentes en PPCG.


2
¿No son estas 2 pulsaciones de teclas? "Una pulsación de tecla es una sola pulsación de una tecla en un teclado. Cada pulsación de tecla es una pulsación de tecla". computerhope.com/jargon/k/keystroke.htm
Martijn

@Martijn Posiblemente. Acabo de copiar de aquí .
Adám

No estoy seguro de que sea realmente válido puntuar presionando teclas. Además, como usted dice A diferencia de las otras entradas de broma , interpreto que, como admite, esta no es una respuesta realmente válida. Entonces no lo aceptaré aunque sea el más corto. Si puede señalarme alguna meta-publicación relevante que establezca la validez de las pulsaciones de teclas como método de puntuación, aceptaré con gusto esta presentación
Luis Mendo

@LuisMendo Su análisis entre líneas es correcto, pero ahora que realmente me tomé el tiempo de investigar Meta: codegolf.meta.stackexchange.com/a/4817/43319 parece indicar que es aceptable, en lugar de "Windows" que no es un editor.
Adám

@ Adám Entiendo que esa meta-publicación se refiere a una hipotética categoría de desafío de "editor de golf" , no al uso de la cantidad de pulsaciones de teclas como método de puntuación para los desafíos de "código de golf". Le puse el pomo a Dennis para saber su opinión
Luis Mendo

123

PowerShell, 3 bytes

scb

Ese es un alias predeterminado para Set-Clipboard. Cuando se llama sin nada entubado y sin argumentos suministrados, elimina el contenido actual del portapapeles.


23
La respuesta más corta que en realidad borra el portapapeles en lugar de establecerlo en una nueva línea o algo que no esté en blanco.
Luna

1
Esto esta muy bien.
beppe9000

72

Vim, 3 bytes

"*Y

Establece el contenido del portapapeles en una nueva línea.

Por defecto, vim abre un búfer vacío al inicio. Ahora el programa Yanks (copia) toda la línea (incluida una nueva línea) y la almacena en su portapapeles tirando el texto en el registro "*. Se *puede cambiar a a +para el otro portapapeles.


66
Aaargh, ¡solo iba a publicar esta respuesta! +1, herramienta adecuada para el trabajo. :)
DJMcMayhem

Si hay más instalaciones de vim que de powershell, esta debería ser la respuesta aceptada sobre la base de "Universalidad";)
JPCF

1
@JPCF y hay muchas más aplicaciones 'reales' escritas en C # que coffeescript, etc. No hace que una sea mejor que la otra cuando se trata de code-golf
Baldrickk

1
Dudo que haya más instalaciones de vim que PowerShell, ya que está instalado de forma predeterminada en Windows 8 y versiones posteriores.
Robert Fraser

56

Javascript (Chrome DevTools Console), 6 bytes

copy``

Tenga en cuenta que esta es una característica de la consola (que también funciona en la consola FF) y no forma parte del estándar de idioma.


3
Huh, no sabía que JS tenía esta función. Funciona en Firefox también. (El contenido del portapapeles se convierte [\n ""\n])
ETHproductions

1
Puede confirmar esto también en Chrome. El portapapeles cambia a:[\n ""\n ]
haykam

32
@ETHproductions En realidad, esta función realmente no existe en JS. Esta es una consola incorporada. (Lo que no invalida la respuesta. Pero tal vez debería explicarse más explícitamente).
Arnauld

Bueno, ¿no existe Document.execCommand("copy")o es un portapapeles interno al navegador? Lo uso en algunos scripts de mono de manipulación, pero demasiado vago para comprobarlo
pinkfloydx33

1
Bien ... esta es ahora mi nueva respuesta más votada
SuperJedi224

55

AppleScript, 20 bytes

set the clipboard to

Establece el portapapeles en ... nada.


Ahorré muchos bytes eliminando el código para enviarme el contenido del portapapeles;)


32

Lote (Windows 7 y versiones superiores), 7 bytes

fc|clip

Nota: responderá un mensaje de error como "FC: ..." pero funciona.

"clip" es un comando para copiar la salida de otro programa al portapapeles (disponible desde Windows 7)

"fc" es un comando para comparar dos o más archivos. en este caso no ingresamos ningún archivo. producirá un error, luego "clip" establecerá el portapapeles en una cadena vacía.

siempre que tenga un archivo "a" en su directorio actual (puede estar vacío), puede hacerlo mejor:

clip<a

Editar: Vea el comentario de @Matthew Steeples para la versión más corta (pero en PowerShell no es un lote)


2
Puede usar en sclugar de fcevitar el mensaje de error. Luego, el sctexto de ayuda se establecería en el portapapeles. Además, +1 por contarme clip.
Neil

2
Mi uno usado cd. :-)
Hand-E-Food

Supongo que clip no recogerá la salida de un no comando? ¿Entonces no podrías simplemente correr x|clip?
djsmiley2k - Vaca

@ djsmiley2k Sí, recogerá solo la salida de un comando válido.
Divcy

44
Puedes sacar a otro personaje de esto. hes un alias (por defecto) para get-history, así que puedes hacerloh|clip
Matthew Steeples

32

Bash en macOS, 8 bytes

:|pbcopy

: podría ser reemplazado por casi cualquier otro personaje individual.


66
:|pbcopyfunciona tanto en bash como en zsh.
Trauma digital

@Nax ya está arreglado
gato

29

C (en Windows), 65 62 bytes

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

Editar: Guardado 3 bytes gracias a @Orion.


24
Ya que es C, ¿no puedes usarlo en 0lugar de NULL?
Orion

23

AHK , 10 bytes(Windows)

clipboard=

Borra el contenido de texto del portapapeles. Si clipboardAllse usa, lo borra todo.

De los documentos -

El portapapeles es una variable incorporada que refleja el contenido actual del portapapeles de Windows si esos contenidos se pueden expresar como texto. Por el contrario, ClipboardAll contiene todo en el portapapeles, como imágenes y formato.


22

Java 8, 127125 bytes

Golfizado:

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

Sin golf:

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
¿Podría usar una cadena vacía en lugar de nula? Ahorra 2 bytes
empuje

1
@Poke sí, eso funciona. Me estaba enfocando en "borrar" el contenido del portapapeles, como en borrarlos realmente. Resulta que la sobrescritura también está bien.

17

SmileBASIC 3, 10 bytes

¡Finalmente, un desafío prácticamente hecho para SmileBASIC 3!

CLIPBOARD"

CLIPBOARDes una función integrada que establece el portapapeles de texto del entorno en la cadena dada. Aquí le damos una cadena vacía (¡ "no es necesario cerrarla !)


Gracias por la explicación, ya que parece dos '!
msanford

17

Excel VBA, 9 8 bytes

[A1].Cut

Sobrescribe el portapapeles con el contenido de la A1celda en la hoja de trabajo activa (vacía por defecto, pero puede ser cualquier cadena / expresión de su elección, ¡solo asegúrese de que no sea su contraseña!).

Utiliza la ventana Inmediato.

Un byte guardado gracias a Slai


1
¡Agradable! Puede guardar un byte con[a1].Cut
Slai

16

Python 56 48 40 bytes (solo funciona en Linux) .

8 bytes guardados gracias a @wheatwizard.

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

1
Bienvenido al sitio! Noto algunos campos de golf que puedes hacer. en lugar de importar systemdesde osusted puede import os as oy llame en su o.systemlugar. Tampoco necesita los espacios alrededor de su tubería en el comando bash.
Wheat Wizard

35
Es 6 bytes más corto sin la as oparte ... ( import os \n os.system("echo |xclip")
Rɪᴋᴇʀ

44
También puede reemplazar echo con :for":|xclip"
Rɪᴋᴇʀ

22
O simplemente una línea a 37 bytes:__import__('os').system("echo|xclip")
Daniel

44
También hay una alternativa a los sistemas Linux xclipinvocados xsel, que le ahorrarían otro byte, y como ya se mencionó, elimine la parte de importación "como o" nuevamente, solo hace las cosas más largas: import os;os.system(":|xsel")(29 bytes).
Byte Commander

14

Google Chrome Language, 2 pulsaciones de teclas

<c-S><c-C>

Basado en esta respuesta de Notepad ++.

Google Chrome es compatible con Javascript (que a su vez es compatible con RegExp), por lo que declaro que es un superconjunto de Javascript y un lenguaje propio.

Cómo funciona:

Ctrl+Sinvocará el cuadro de diálogo "Guardar página" con el texto "Nueva pestaña" preseleccionado, Ctrl+Clo copiará en el portapapeles y desplazará el contenido anterior.

Nota al margen:

Puede acceder a la funcionalidad de Javascript en Chrome, a través de javascript:URL y la consola de herramientas de desarrollador (invocado con Ctrl + Shift + J)


Gah, quería usar Google Chrome, pero no me di cuenta de que podía argumentarlo como un superconjunto de JS ... bien jugado.
Pavel

8
Entonces supongo que presionar el botón Imprimir pantalla (1 pulsación de tecla) es una solución en el lenguaje de Windows, que es un superconjunto de Google Chrome Lang.
Memet Olsen

@MemetOlsen Sí, exactamente, siéntase libre de publicarlo. Ya tenemos "Notepad ++ Language" y "Google Chrome Language", por lo que "Windows Language" parece ser el siguiente paso lógico. :)
zeppelin

1
@MemetOlsen no es un superconjunto de Google Chrome Lang, ya que Chrome es una "biblioteca" externa que debes descargar. Que es un superconjunto de IE Lang, que es un superconjunto de JS.
Pavel

Gracias chicos, agregué mi sugerencia como mi primera respuesta en este sitio de SE.
Memet Olsen

11

bash + xsel 8 7bytes

xsel -c

Explicación

-b: Funciona en la selección del portapapeles

-c: borra la selección


1
+1, pero esto no es coreutils
pacholik

@pacholik Sí, necesita instalar el paquete, ya que lo operé en el terminal, lo mencioné como coreutils.
Abel Tom

1
En Debian, xsel está en el paquete xsel, no forma parte de coreutils.
Brian Minton

Como se nos permite usar cualquier portapapeles que queramos, creo que puedes soltarlo b.
Dennis

@Digital Trauma Fair Fair
Abel Tom

10

Mathematica, 17 bytes

CopyToClipboard@0

Establece el portapapeles en el número 0.


10

R (Windows) 18

writeClipboard("")

¿Conoces un equivalente de Linux?

Creo que algo así readLines(file("clipboard", "r")) podría funcionar. Intente buscar en los documentos de ayuda de R en "Funciones para manipular conexiones".
Flounderer

8

Matlab, 19 13 bytes

gcf;print -dm

Establecer el contenido del portapapeles en una figura vacía.


Son 21 bytes UTF-8
CAD97

@LuisMendo Esto es más largo (23): axes;print -dmeta;closepero también funciona ...
EBH

@EBH Eso closepodría decirse que se puede eliminar. Por "efectos secundarios" estaba pensando en cosas que desaparecen, no aparecen. Además, print(gcf,'-dm')funciona
Luis Mendo

@LuisMendo Bueno, no sabía que -dmera así -dmeta, y pensé que el programa debería funcionar 'silenciosamente', sin abrir ninguna ventana :)
EBH

2
@LuisMendo de hecho, es el primero. Ahora la sugerencia es aún más corta.
EBH

8

Bash, 11 10 8 7 bytes

2 bytes guardados gracias a @seshoumara por usar en lslugar deecho

Gracias a la hexafracción, Isaac y Riker por sugerir varios 7 byters

w|xclip

El portapapeles se establece en el resultado de w. Esto solo funciona en sistemas basados ​​en X11. Por ejemplo, en macOS, se puede acceder a este portapapeles utilizando una aplicación basada en X como XQuartz.


Respuesta anterior solo para macOS ( 11 9 bytes):

ls|pbcopy

Esto establece el contenido del portapapeles en una nueva línea.


¿Qué tal ls|xclip?
seshoumara

@seshoumara ¡Gracias! (y pensar que ls /usr/bin | grep "^.\{1,3\}$"buscaría un comando más corto: P)
Kritixi Lithos

3
O w|xclippor uno menos. Vuelca la lista de usuarios registrados en el portapapeles.
ζ--

44
O :|xclip. En realidad borra el portapapeles.
isaacg

1
Huh, funciona en mi máquina. Y dado que las presentaciones pueden esperar entradas vacías, también lo haría un simple xclipsin tuberías.
Dennis


7

Python + tkinter, 43 bytes

Python 3:

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

Python 2:

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

¿Está incluido tkinter en la distribución de Python?
Cruncher

@Cruncher Está en mi Python 3.
DLosc

@Cruncher Sí, es parte de stdlib, aunque creo que Debian lo empaqueta en un paquete separado ( python-tk) del "núcleo de Python".
Bakuriu

Eche un vistazo al comentario de Dopapp para una forma aún más corta.
jpaugh

@jpaugh Si se refiere a cambiar el estilo de importación a __import__("tkinter")...., este es 1 byte más en este caso.
Trelzevir

7

C #, 30 bytes

¡Gracias a Nat , JMD y BgrWorker por sus sugerencias!

System.Windows.Clipboard.Clear

C # sin WPF, 36 bytes

System.Windows.Forms.Clipboard.Clear

Función incorporada que vacía el portapapeles.

Programa completo con caso de prueba:

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


44
Además, Clipboard.Clear()ya es una función, por lo que se puede descartar el lambda.
Nat

1
No me molestaré en agregar una respuesta para LINQPad ya que esta respuesta simplemente se ejecutará en ella. System.Windows.Clipboard.Clear();Pero, lprun podría ser una forma más ligera de ejecutar esta respuesta que VS o incluso VS Code.
JMD

@Nat Al omitir .Forms, no se compiló en Linux y no tengo una máquina Windows en este momento.
adrianmp

2
@adrianmp esa clase solo está contenida en PresentationCore.dll, una referencia agregada por defecto en proyectos de tipo WPF. No tengo idea si ese dll está incluido en Mono / .NET Core
BgrWorker

6

Haskell, 34 bytes

import System.Hclip
setClipboard""

Solo una función de biblioteca aburrida. También hay clearClipboardpara el mismo recuento de bytes.


6

Notepad ++, 3 pulsaciones de teclas

a<c-A><c-C>

Inserta la letra a, la selecciona, la copia en el teclado.

Notepad ++ es un lenguaje válido, admite expresiones regulares y, por lo tanto, es un superconjunto de expresiones regulares, y consideramos que la expresión regular es un lenguaje válido.


consider regex to be a valid languageReferencias Aparentemente, RegExp no está Turing completo por sí mismo.
zepelín

2
@zeppelin No tiene que ser Turing Complete para ser un idioma válido.
Pavel

It doesn't have to be Turing Complete to be a valid languageSegún esa medida, podemos afirmar que casi cualquier cosa es un "lenguaje". Es decir, XML o HTML también tienen una sintaxis (e incluso se llaman a sí mismos idiomas, a diferencia de RegExp), sin embargo, no creo que sean aceptables. ¿Puede proporcionar un ejemplo de una respuesta Regexp pura, que ha sido votada por la comunidad? Además, creo que Notepad ++, en realidad no "admite regexp" en el sentido de que puede invocarlo mediante programación, y abrir el cuadro "Buscar y reemplazar" de la interfaz de usuario para escribir un RegExp allí, no es un "código de programa" en ninguna medida.
zepelín

1
@zeppelin meta.codegolf.stackexchange.com/a/4817/60042 <- meta publicación relevante. Tenga en cuenta que puede acceder a buscar y reemplazar en N ++ con <c-H>y usar <tab>para navegar por la interfaz de usuario e interactuar con todos los campos relevantes. También tenga en cuenta que la expresión regular puede determinar la originalidad de y agregar números. (Ambos en unario, que es la representación numérica predeterminada para expresiones regulares)
Pavel

La meta-publicación en cuestión se refiere a los editores de clase Vim y Emacs, que son extremadamente programables, no el Bloc de notas. Y sí, he visto a personas usar RegExp para las pruebas de primalidad en este sitio, pero eso es solo un caso curioso y no una prueba real de que RegExp sea un lenguaje. Por lo tanto, proporcione una referencia a cualquier respuesta "puro-Regexp" votada para probar su punto.
zepelín

6

Python 33 bytes (solo funciona en Windows) .

4 bytes guardados de la versión @hubacub.

3 bytes cambiando a Windows, usando la solución @Divcy

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

Acabo de registrarme en stackexchange, así que no tengo la reputación de comentar solo en @hubacub submition. No es necesario gastar 5 bytes con "como o" en la importación para guardar 1 byte para reducir "os.system" a "o.system".


Bienvenido al sitio!
Luis Mendo

6

J (Windows), 12 bytes

wd'clipcopy'

wdes la biblioteca estándar de J para Windows. wd 'clipcopy password'pondría el texto passworden el portapapeles. No especificar nada borra el portapapeles.

Si desea que un programa ponga su contraseña de texto sin formato en su portapapeles, puede usar lo siguiente:

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

Esta no es una función o un programa de relleno, sino un fragmento. Tendría que convertirlo en un verbo para que sea válido. podrías hacer algo como'clipcopy 'wd@,]
Conor O'Brien el

¿A qué "esto" te refieres? Ambos fragmentos de código son archivos .ijs ejecutables.
Dane

Podría haber simplemente entendido mal. Perdón por eso jaja. De todos modos, puede eliminar el espacio entre wdy 'clipcopy'.
Conor O'Brien

¡Gracias! Afeitado de un byte. Estoy tan acostumbrado a los espacios para ayudarme a leer J que no lo pensé.
Dane

5

JavaScript 175 148 139 135 69 Bytes

Golfizado:

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

Violín

Sin golf

Obtuve ayuda de 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);


Probado en FF y Chrome
TecBrat

1
No lo publiques hasta que lo juegues. Por ahora, puede eliminar su respuesta, editarla para jugar golf y luego eliminar la eliminación de su respuesta.
NoOneIsHere

@NoOneIsHere, está bien, seguí adelante y jugué al golf. Aquí está el nuevo violín .
TecBrat

1
En lugar de comentar, edite el violín en su respuesta. Además, gran trabajo en el golf. Te di un +1. (Para su información, el lenguaje es técnicamente HTML + JavaScript.)
NoOneIsHere

5

Java 8 (JavaFX), 61 bytes

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

La API JavaFX para manipular el portapapeles es un poco más breve que la de AWT;)


5

Tcl / Tk wish shell (REPL), 5 bytes

cli c

Wish shell (REPL) permite los comandos incompletos, siempre que no haya ambigüedad, el comando completo sería:

clipboard clear

4

PHP + PHP GTK 2.0 , 24 bytes

Esto supone que ya tiene cargada la extensión PHP GTK.

<?GtkClipboard::clear();

Referencia de documentación: http://gtk.php.net/manual/en/html/gtk/gtk.gtkclipboard.method.clear.html


No necesita la <?etiqueta de apertura ya que puede ejecutar el código sin la <?etiqueta en la línea de comando con el -rinterruptor. Ver más información aquí: meta.codegolf.stackexchange.com/questions/7098/…
Kodos Johnson

@KodosJohnson Dejé intencionalmente la etiqueta de apertura allí.
Ismael Miguel

@KodosJohnson Todavía tendría que agregar los bytes en las banderas.
ckjbgames

@ckjbgames No, no lo haría. La bandera es gratis. No cambié el código porque dejé intencionalmente las etiquetas de apertura.
Ismael Miguel

@IsmaelMiguel He visto a personas agregar las banderas de intérprete / compilador al conteo de bytes.
ckjbgames
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.