Ho copiato la mia password negli appunti! Puoi cancellarlo?


96

Seguendo le migliori pratiche di sicurezza , tengo un semplice file di testo con le mie password sul mio disco rigido. In effetti, ne ho appena copiato e incollato uno per accedere al mio account PPCG.

In un momento lucido, decido che la password non dovrebbe rimanere negli appunti dopo il suo utilizzo. Dal momento che questo mi capita spesso, potrei usare un programma per rimuovere il contenuto degli appunti.

Sfida

Scrivi un programma o una funzione che elimina o sovrascrive qualsiasi testo contenuto negli Appunti, usando un linguaggio di programmazione a tua scelta.

Dettagli aggiuntivi:

  • Se il tuo sistema ha diversi appunti, puoi scrivere il programma per ognuno di essi. L'unico requisito è che per l'utente debba essere possibile copiare e incollare il testo utilizzando gli Appunti.

  • Se gli Appunti conservano una cronologia delle voci copiate recenti, assumere la voce più recente.

  • Se la tua risposta è specifica per un sistema operativo o appunti, indicala nel titolo del tuo post, insieme alla lingua usata.

  • Gli Appunti sono garantiti per contenere testo quando il programma è in esecuzione. Puoi eliminare il contenuto dagli Appunti o sovrascriverlo con qualcos'altro (non necessariamente testo). L'unico requisito è che dopo aver eseguito il programma, incollando dagli appunti non verrà prodotto il testo originale.

  • Se si sceglie di sovrascrivere con del testo fisso o scelto casualmente, si può presumere che il contenuto degli appunti precedenti sia diverso da quel testo, quindi la password viene effettivamente rimossa. In altre parole, ignora la possibilità che il testo di riempimento coincida con la password.

  • Il programma non dovrebbe avere effetti collaterali come riavviare il sistema, chiudere i programmi, spegnere il computer o congelarlo. Dopo aver eseguito il programma, l'utente dovrebbe essere in grado di continuare a utilizzare il computer normalmente, solo con la password rimossa dagli Appunti. Inoltre, sono vietate le scappatoie standard .

Vince il codice più breve in byte.


Cosa succede se gli Appunti hanno un numero indeterminato di voci?
LarsW,

20
Una nota più seria: usa qualcosa come keepass per farlo per te.
Flawr,

17
"Ignora la possibilità che il testo di riempimento coincida con la password." Soluzione: ``, 0 byte. Sovrascrive la password con se stessa.
Esolanging Fruit,

2
@ Challenger5 ma questo è solo se scegli di sovrascrivere con del testo fisso o scelto a caso
Luis Mendo,

11
La parte peggiore di questa domanda è che posso relazionarmi completamente con la storia dell'intro nonostante sappia che è satirico. ... così, keepass, eh? Dovrei esaminare questo ...
Nat

Risposte:


14

Excel, 1 sequenza di tasti

Ctrl-C

Funziona perché Excel, in modo univoco, ha sempre una selezione. Probabilmente funziona anche in altre applicazioni per fogli di calcolo. A differenza delle altre voci scherzose, le risposte di Excel sono in realtà piuttosto frequenti su PPCG.


2
Non sono questi 2 tasti? "Un tasto è una singola pressione di un tasto su una tastiera. Ogni tasto premuto è un tasto." computerhope.com/jargon/k/keystroke.htm
Martijn

@Martijn Forse. Ho appena copiato da qui .
Adám

Non sono sicuro che sia davvero valido segnare con i tasti. Inoltre, dal momento che dici A differenza delle altre voci scherzose , interpreto che mentre ammetti che questa non è una risposta effettivamente valida. Quindi non lo accetterò anche se è il più corto. Se riesci a indicarmi alcuni meta-post pertinenti che stabiliscono la validità delle sequenze di tasti come metodo di punteggio, accetterò felicemente questa presentazione
Luis Mendo,

@LuisMendo La tua analisi tra le righe è corretta, ma ora che in realtà ho preso il tempo per la ricerca su Meta: codegolf.meta.stackexchange.com/a/4817/43319 sembrerebbe indicare che è accettabile, al contrario di "Windows" che non è un editor.
Adám,

@ Adám Comprendo che quel meta-post si riferisce a un'ipotetica categoria di sfide "editor golf" , non all'uso del numero di sequenze di tasti come metodo di punteggio per le sfide "code golf". Ho telefonato a Doorknob e Dennis per conoscere la loro opinione
Luis Mendo il

123

PowerShell, 3 byte

scb

Questo è un alias predefinito per Set-Clipboard. Quando viene chiamato senza nulla inoltrato e senza argomenti forniti, fa esplodere il contenuto attuale degli appunti.


23
La risposta più breve che cancella effettivamente gli Appunti invece di impostarlo su una nuova riga o qualcosa di non abbastanza vuoto.
Luna,

1
Questo è molto carino.
beppe9000,

72

Vim, 3 byte

"*Y

Imposta il contenuto degli appunti su una nuova riga.

Per impostazione predefinita, vim apre un buffer vuoto all'avvio. Ora il programma Ycrea (copia) l'intera riga (inclusa una nuova riga) e la memorizza negli appunti trascinando il testo nel registro "*. Il *può essere cambiato in a +per gli altri appunti.


6
Aaargh, stavo solo per pubblicare questa risposta! +1, lo strumento giusto per il lavoro. :)
DJMcMayhem

Se ci sono più installazioni di VIM che di PowerShell, questa dovrebbe essere la risposta accettata sulla base di "Universalità";)
JPCF

1
@JPCF e ci sono molte più applicazioni "effettive" scritte in C # di quante ce ne siano caffè ecc. Non è migliore dell'altro quando si tratta di code-golf
Baldrickk,

1
Dubito che ci siano più installazioni di VIM di PowerShell, poiché è installato per impostazione predefinita in Windows 8 e versioni successive.
Robert Fraser,

56

Javascript (Chrome DevTools Console), 6 byte

copy``

Si noti che questa è una funzione della console (che funziona anche nella console FF) e non fa parte dello standard linguistico.


3
Eh, non sapevo che JS avesse questa funzione. Funziona anche con Firefox. (Il contenuto degli appunti diventa [\n ""\n])
ETHproductions

1
Posso confermarlo anche su Chrome. Gli appunti cambiano in:[\n ""\n ]
haykam,

32
@ETHproductions In realtà, questa funzione non esiste davvero in JS. Questa è una console integrata. (Il che non invalida la risposta. Ma forse dovrebbe essere spiegato in modo più esplicito.)
Arnauld,

Beh, non esiste attraverso Document.execCommand("copy")o è un blocco appunti interno al browser? Lo uso in alcuni script di manomissioni di scimmia, ma troppo pigro per controllarlo
pinkfloydx33

1
Okay ... questa è ora la mia nuova risposta più votata
SuperJedi224

55

AppleScript, 20 byte

set the clipboard to

Imposta gli appunti su ... niente.


Ho salvato molti byte rimuovendo il codice per inviarmi il contenuto degli appunti;)


32

Batch (Windows 7 e versione successiva), 7 byte

fc|clip

Nota: risponderà a un messaggio di errore come "FC: ..." ma funziona.

"clip" è un comando per copiare negli appunti l'output di un altro programma (disponibile da Windows 7)

"fc" è un comando per confrontare due o più file. in questo caso non inseriamo alcun file. errore, quindi "clip" imposterà gli appunti su una stringa vuota.

purché tu abbia un file "a" nella tua directory corrente (può essere vuoto), puoi fare di meglio:

clip<a

Modifica: vedi il commento di @Matthew Steeples per la versione più breve (ma in PowerShell non è un batch)


2
È possibile utilizzare scinvece di fcevitare il messaggio di errore. Quindi, il sctesto della guida verrebbe impostato negli Appunti. Inoltre, +1 per avermelo detto clip.
Neil,

2
Il mio usato cd. :-)
Hand-E-Food,

Suppongo che la clip non rileverà l'output di un non comando? Quindi non puoi semplicemente correre x|clip?
djsmiley2k - CoW,

@ djsmiley2k Sì, raccoglierà solo l'output da un comando valido.
Divcy,

4
Puoi sconfiggere un altro personaggio. hè un alias (di default) per get-history, quindi puoi farloh|clip
Matthew Steeples,

32

Bash su macOS, 8 byte

:|pbcopy

: potrebbe essere sostituito con quasi ogni altro personaggio singolo.


6
:|pbcopyfunziona in bash e in zsh.
Trauma digitale

@Nax è stato risolto ora
cat

29

C (su Windows), 65 62 byte

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

Modifica: salvato 3 byte grazie a @Orion.


24
Dal momento che è C, non puoi usare 0invece di NULL?
Orione,

23

AHK , 10 byte(Windows)

clipboard=

Cancella il contenuto del testo negli Appunti. Se clipboardAllutilizzato, cancella tutto.

Dai documenti -

Gli Appunti sono una variabile incorporata che riflette il contenuto corrente degli Appunti di Windows se tali contenuti possono essere espressi come testo. Al contrario, Clipboard All contiene tutto negli appunti, come immagini e formattazione.


22

Java 8, 127 125 byte

golfed:

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

Ungolfed:

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
Potresti usare una stringa vuota invece di null? Salva 2 byte
Colpisci il

1
@Poke sì, funziona. Mi stavo concentrando sul "cancellare" il contenuto degli appunti, come nel cancellarli veramente. Si scopre che anche la sovrascrittura va bene.

17

SmileBASIC 3, 10 byte

Finalmente una sfida praticamente fatta per SmileBASIC 3!

CLIPBOARD"

CLIPBOARDè un builtin che imposta gli appunti di testo dell'ambiente sulla stringa specificata. Qui gli diamo una stringa vuota ( "non è necessaria la chiusura !)


Grazie per la spiegazione, dato che sembrano due '!
msanford,

17

Excel VBA, 9 8 byte

[A1].Cut

Sovrascrive gli appunti con il contenuto della A1cella nel foglio di lavoro attivo (vuoto per impostazione predefinita ma può essere qualsiasi stringa / espressione di tua scelta - assicurati solo che non sia la tua password!).

Utilizza la finestra immediata.

Un byte salvato grazie a Slai


1
Bello! Puoi salvare un byte con[a1].Cut
Slai il

16

Python 56 48 40 byte (funziona solo su Linux) .

8 byte salvati grazie a @wheatwizard.

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

1
Benvenuti nel sito! Ho notato alcuni golf che puoi fare. invece di importare systemda oste puoi import os as oe chiama o.systeminvece. Inoltre non hai bisogno degli spazi attorno alla tua pipe nel comando bash.
Wheat Wizard,

35
È più corto di 6 byte senza la as oparte ... ( import os \n os.system("echo |xclip")
R

4
Puoi anche sostituire echo con :per":|xclip"
Rɪᴋᴇʀ

22
O solo una riga a 37 byte:__import__('os').system("echo|xclip")
Daniel

4
C'è anche un'alternativa ai sistemi Linux xclipchiamati xsel, che ti farebbe risparmiare un altro byte - e come già accennato, rimuovere di nuovo la parte di importazione "as o", allunga le cose: import os;os.system(":|xsel")(29 byte).
Byte Commander

14

Google Chrome Language, 2 battiture

<c-S><c-C>

Sulla base di questa risposta Notepad ++.

Google Chrome supporta Javascript (che a sua volta supporta RegExp), quindi dichiaro di essere un superset di Javascript e una lingua a sé stante.

Come funziona:

Ctrl+Sinvocherà la finestra di dialogo "Salva pagina" con il testo "Nuova scheda" preselezionato, Ctrl+Clo copierà negli appunti, spostando il contenuto precedente.

Nota a margine:

Puoi accedere alla funzionalità Javascript in Chrome, tramite javascript:URL e la console degli strumenti di sviluppo (invocata con Ctrl + Shift + J)


Gah, volevo usare Google Chrome, ma non mi rendevo conto di poterlo sostenere come un superset di JS ... ben suonato.
Pavel,

8
Quindi immagino che premere il pulsante Stampa schermo (1 pressione di tasto) sia una soluzione in lingua Windows, che è un superset di Google Chrome Lang.
Memet Olsen

@MemetOlsen Sì, esattamente, sentiti libero di pubblicarlo. Abbiamo già "Notepad ++ Language" e "Google Chrome Language", quindi "Windows Language" sembra il prossimo passo logico da compiere! :)
zeppelin

1
@MemetOlsen non è proprio un superset di Google Chrome Lang, poiché Chrome è una "libreria" esterna che devi scaricare. Si è un superset di IE Lang, che è un superset di JS.
Pavel

Grazie ragazzi, ho aggiunto il mio suggerimento come prima risposta su questo sito SE.
Memet Olsen

11

bash + xsel 8 7 byte

xsel -c

Spiegazione

-b: Funziona sulla selezione degli appunti

-c: cancella la selezione


1
+1, ma questo non è coreutils
pacholik,

@pacholik Sì, è necessario installare il pacchetto, poiché l'ho utilizzato sul terminale, l'ho citato come coreutils.
Abel Tom,

1
Su Debian, xsel si trova nel pacchetto xsel, non fa parte di coreutils.
Brian Minton,

Dal momento che ci è permesso di usare qualsiasi appunti che vogliamo, penso che tu possa eliminare b.
Dennis,

@Digital Trauma Abbastanza giusto
Abel Tom il

10

Mathematica, 17 byte

CopyToClipboard@0

Imposta gli appunti sul numero 0.


10

R (Windows) 18

writeClipboard("")

Conosci un equivalente di Linux?

Penso che qualcosa come readLines(file("clipboard", "r")) potrebbe funzionare. Prova a cercare nei documenti della guida R in "Funzioni per manipolare le connessioni".
Flounderer,

8

Matlab, 19 13 byte

gcf;print -dm

Imposta il contenuto degli appunti su una figura vuota.


Sono 21 byte UTF-8
CAD97

@LuisMendo Questo è più lungo (23): axes;print -dmeta;closema funziona anche ...
EBH,

@EBH Che closepuò essere probabilmente rimosso. Con "effetti collaterali" pensavo che le cose sparissero, non apparissero. Inoltre, print(gcf,'-dm')funziona
Luis Mendo il

@LuisMendo Beh, non sapevo che -dmfosse così -dmeta, e ho pensato che il programma avrebbe dovuto funzionare 'silenziosamente', senza aprire alcuna finestra :)
EBH,

2
@LuisMendo davvero, è il mio primo. Ora il suggerimento è ancora più breve.
EBH,

8

Bash, 11 10 8 7 byte

2 byte salvati grazie a @seshoumara per l'utilizzo lsanzichéecho

Grazie a hexafraction, isaacg e Riker per aver suggerito diversi 7 byte

w|xclip

Gli appunti sono impostati sul risultato di w . Funziona solo su sistemi basati su X11. Ad esempio, su macOS, è possibile accedere a questi appunti utilizzando un'applicazione basata su X come XQuartz.


Vecchia risposta solo per macOS ( 11 9 byte):

ls|pbcopy

Questo imposta il contenuto degli appunti su una nuova riga.


Che ne dici ls|xclip?
seshoumara,

@seshoumara Grazie! (e pensare che dovrei ls /usr/bin | grep "^.\{1,3\}$"cercare un comando più breve: P)
Kritixi Lithos,

3
O w|xclipper uno in meno. Scarica l'elenco degli utenti che hanno effettuato l'accesso negli Appunti.
ζ--

4
Or :|xclip. Cancella effettivamente gli appunti.
isaacg,

1
Huh, lavora sulla mia macchina. E dal momento che gli invii possono aspettarsi input vuoti, così sarebbe un nudo xclipsenza pipe.
Dennis,


7

Python + tkinter, 43 byte

Python 3:

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

Python 2:

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

tkinter è incluso nella distribuzione python?
Cruncher,

@Cruncher È nel mio Python 3.
DLosc,

@Cruncher Sì, fa parte dello stdlib, anche se credo che debian lo comprime in un pacchetto separato ( python-tk) dal "core python".
Bakuriu

Dai un'occhiata al commento di Dopapp per un modo ancora più breve.
jpaugh

@jpaugh Se ti riferisci a cambiare lo stile di importazione in __import__("tkinter").... , in questo caso è più lungo di 1 byte.
Trelzevir,

7

C #, 30 byte

Grazie a Nat , JMD e BgrWorker per i loro suggerimenti!

System.Windows.Clipboard.Clear

C # senza WPF, 36 byte

System.Windows.Forms.Clipboard.Clear

Funzione integrata che svuota gli appunti.

Programma completo con test case:

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
Inoltre, Clipboard.Clear()è già una funzione, quindi la lambda può essere rilasciata.
Nat.

1
Non mi prenderò la briga di aggiungere una risposta per LINQPad poiché questa risposta sarebbe semplicemente presente. System.Windows.Clipboard.Clear();Ma lprun potrebbe essere un modo più leggero per eseguire questa risposta rispetto a VS o persino a VS Code.
JMD,

@Nat Quando si omette .Forms, non è stato compilato su Linux e al momento non ho una macchina Windows.
Adrianmp,

2
@adrianmp quella classe è contenuta solo in PresentationCore.dll, un riferimento aggiunto di default sui progetti di tipo WPF. Non ho idea se quella dll sia inclusa in Mono / .NET Core
BgrWorker il

6

Haskell, 34 byte

import System.Hclip
setClipboard""

Solo una noiosa funzione di libreria. C'è anche clearClipboardper lo stesso numero di byte.


6

Blocco note ++, 3 sequenze di tasti

a<c-A><c-C>

Inserisce la lettera a, la seleziona, la copia sulla tastiera.

Notepad ++ è un linguaggio valido, supporta regex ed è quindi un superset di regex e consideriamo regex un linguaggio valido.


consider regex to be a valid languageRiferimenti ? Apparentemente RegExp non è Turing completo da solo.
Zeppelin,

2
@zeppelin Non deve essere Turing Complete per essere una lingua valida.
Pavel,

It doesn't have to be Turing Complete to be a valid languageCon questa misura, possiamo pretendere che quasi tutto sia un "linguaggio". Vale a dire che anche XML o HTML hanno una sintassi (e persino si definiscono lingue, a differenza di RegExp), tuttavia non penso che siano accettabili. Potete fornire un esempio di una risposta pura-Regexp, che è stata votata dalla community? Inoltre credo Notepad ++, in realtà non "supporta regexp" nel senso che può invocarlo a livello di codice e aprire la casella "Cerca e sostituisci" dell'interfaccia utente per digitare un RegExp lì, non è un "codice di programma" da nessuna misura.
Zeppelin,

1
@zeppelin meta.codegolf.stackexchange.com/a/4817/60042 <- meta post rilevante. Tieni presente che puoi accedere a ricerca e sostituzione in N ++ con <c-H>e utilizzare <tab>per navigare nell'interfaccia utente e interagire con tutti i campi pertinenti. Si noti inoltre che regex può determinare la primalità e aggiungere numeri. (Entrambi in unario, che è la rappresentazione numerica predefinita per regex)
Pavel,

il meta-post in questione si riferisce agli editor di classe Vim ed Emacs, che sono estremamente programmabili, non con il Blocco note. E sì, ho visto persone usare RegExp per i test di primalità su questo sito, ma questo è solo un caso angolare divertente e non una vera prova del fatto che RegExp sia un linguaggio. Quindi, per favore, fornisci un riferimento a qualsiasi risposta "pure-Regexp" votata, per dimostrare il tuo punto.
Zeppelin,

6

Python 33 byte (funziona solo su Windows) .

4 byte salvati dalla versione @hubacub.

3 byte passando a Windows, usando la soluzione @Divcy

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

Mi sono appena registrato in stackexchange, quindi non ho la reputazione di commentare solo la presentazione di @hubacub. Non è necessario spendere 5 byte con "as o" nell'importazione per salvare 1 byte per ridurre "os.system" a "o.system".


Benvenuti nel sito!
Luis Mendo,

6

J (Windows), 12 byte

wd'clipcopy'

wdè la libreria standard di J per Windows. wd 'clipcopy password'metterebbe il testo passwordnegli appunti. Se non si specifica nulla, gli appunti vengono cancellati.

Se si desidera che un programma inserisca la propria password in chiaro negli Appunti, è possibile utilizzare quanto segue:

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

Questa non è una funzione o un programma di riempimento, ma piuttosto uno snippet. Dovresti renderlo un verbo affinché sia ​​valido. potresti fare qualcosa del genere'clipcopy 'wd@,]
Conor O'Brien,

A quale "questo" ti riferisci? Entrambi i blocchi di codice sono file .ijs eseguibili.
Dane,

Avrei potuto semplicemente frainteso. Mi dispiace per quello ahah. Ad ogni modo, puoi rimuovere lo spazio tra wde 'clipcopy'.
Conor O'Brien,

Grazie! Rasato da un byte. Sono così abituato agli spazi per aiutarmi a leggere J che non ci ho pensato.
Dane,

5

JavaScript 175 148 139 135 69 byte

golfed:

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

Violino

Ungolfed

Ho ricevuto aiuto da 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);


Testato in FF e Chrome
TecBrat il

1
Non pubblicarlo fino a quando non lo giochi. Per ora, puoi eliminare la tua risposta, modificarla per giocare a golf e quindi cancellare la tua risposta.
NoOneIsHere

@NoOneIsHere, okay, sono andato avanti e l'ho giocato a golf. Ecco il nuovo violino .
TecBrat,

1
Invece di commentare, modifica il violino nella tua risposta. Inoltre, ottimo lavoro sul golf. Ti ho dato un +1. (Cordiali saluti, la lingua è tecnicamente HTML + JavaScript.)
NoOneIsHere

5

Java 8 (JavaFX), 61 byte

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

L'API JavaFX per manipolare gli appunti è un po 'più concisa di quella di AWT;)


5

Tcl / Tk wish shell (REPL), 5 byte

cli c

Wish shell (REPL) consente i comandi incompleti, fintanto che non ci sono ambiguità, il comando completo sarebbe:

clipboard clear

4

PHP + PHP GTK 2.0 , 24 byte

Questo presuppone che tu abbia già caricato l'estensione PHP GTK.

<?GtkClipboard::clear();

Riferimenti della documentazione: http://gtk.php.net/manual/en/html/gtk/gtk.gtkclipboard.method.clear.html


Non è necessario il <?tag di apertura poiché è possibile eseguire il codice senza il <?tag nella riga di comando con l' -ropzione Vedi maggiori informazioni qui: meta.codegolf.stackexchange.com/questions/7098/…
Kodos Johnson

@KodosJohnson Ho lasciato intenzionalmente il tag di apertura lì.
Ismael Miguel,

@KodosJohnson Dovrebbe ancora aggiungere i byte tra le bandiere.
ckjbgames

@ckjbgames No, non lo farei. La bandiera è libera Non ho modificato il codice perché ho lasciato intenzionalmente i tag di apertura.
Ismael Miguel,

@IsmaelMiguel Ho visto persone aggiungere i flag interprete / compilatore al conteggio dei byte.
ckjbgames
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.