Domanda:
Perché i sistemi operativi non rendono disponibili le sequenze di tasti solo per l'app corrente?
user66309
2015-10-12 00:15:13 UTC
view on stackexchange narkive permalink

Sembra che un modo relativamente ovvio per prevenire il keylogging (software) sarebbe quello di forzare solo l'app corrente (in focus) a essere in grado di ricevere sequenze di tasti.

Potrebbe esserci un modo per fare eccezioni esplicite per le app macro ecc. Interrogare l'elenco delle eccezioni renderebbe banale trovare un keylogger.

C'è qualche motivo per cui i sistemi operativi non lo applicano politica di default?

La possibilità di premere Ctrl-Alt-Canc? Ctrl-C? Alt-Tab?
Il kernel del sistema operativo deve intercettare l'input della chiave. Metti un keylogger a livello di kernel e hai tutto.
La maggior parte dei sistemi operativi mobili lo applica. Con il sistema operativo desktop è una questione di storia. Non sono mai state progettate pensando al malware: le app vengono eseguite con tutti i privilegi dell'utente che le esegue.
I key logger vengono generalmente installati con privilegi di root. Per definizione, root può fare qualsiasi cosa. I key logger che non richiedono root hanno funzionalità molto più limitate.
@schroeder: Ctrl + C? Perché non dovrebbe essere gestito solo dal programma corrente?
@schroeder Nei sistemi operativi progettati da zero per la sicurezza (ciò significa attualmente iOS e Android), non puoi farlo.
Per vedere cosa si perde dalle applicazioni sandbox, guarda tutte le cose che sono possibili in Windows o GNU / Linux ma non su Android o iOS. Classic Shell e f.lux sono le prime cose che mi vengono in mente. Potresti anche immaginare un'app che aggiunge StickyKeys.
@immibis - con il sandboxing, puoi avere un permesso speciale come "accesso permanente alla tastiera". Questo è effettivamente ciò che fanno le app come le tastiere di terze parti. È ancora molto più sicuro che dare questa autorizzazione a ogni app
@Thomas, Per quanto riguarda CTRL + C, non ha senso aspettarsi che ogni singola applicazione implementi la copia quando potrebbe essere implementata una volta per ogni applicazione. Molteplici implementazioni portano anche alla frammentazione delle funzionalità e all'interfaccia utente incoerente.
@Thomas cosa succede quando il programma corrente è in un ciclo o va in crash?
Ricordati alcuni malware che aprono esattamente la stessa finestra sopra quella reale quando viene eseguita un'applicazione specifica (che è nascosta nella barra delle applicazioni). Forse possono fare qualcosa di ancora più semplice: basta sostituire l'applicazione originale.
@paj28 I sistemi attuali sembrano evitare di avere autorizzazioni così ampie, forse perché sanno quanto sarebbe facile entrare in una situazione in cui ogni app richiede il pieno controllo e gli utenti lo accettano sempre perché altrimenti non possono utilizzare alcuna app.
Simile ma diverso: lo trovo esasperante quando sto digitando, e un'altra app si apre e "ruba" la tastiera. ** Se sto digitando attivamente, questo non dovrebbe essere consentito! ** (Ciò si verifica quando il mio PC è lento e sto provando ad aprire più cose e ad accedere a più di un posto alla volta, per esempio.)
Non solo il kernel del sistema operativo ha bisogno di intercettare l'input della chiave, il kernel del sistema operativo _handle_ l'IO relativo all'input della chiave in arrivo, ma non c'è modo di impedire al sistema operativo di vedere l'input senza impedire che l'input si verifichi affatto. Non credo sia quello che vuoi.
Ho visto alcuni programmi di progettazione scadenti in qualche modo impediscono a ctrl + C di funzionare e l'unico modo per copiare del testo è fare clic con il tasto destro> copia
Immagino che qui non si sia parlato della scorciatoia per copiare i testi. Si è parlato della scorciatoia da terminale Linux per fermare l'esecuzione del programma corrente.
@schroeder, si cambia / si apre un altro programma utilizzando il mouse o una combinazione globale (ad es. Alt + Tab o Ctrl + Alt + Supr), e si usa per fermare il programma che si comporta male, come il Task manager o il classico [kill (1) ] (http://manpages.ubuntu.com/manpages/vivid/en/man1/kill.1.html). Per un programma di console, ha senso che l'emulatore di terminale o possa rilevare alcune sequenze di tasti o il tuo DE, ma non altri programmi.
@LưuVĩnhPhúc: Hai provato Ctrl + Ins (Copia) e Maiusc + Ins (Incolla)? Quelle sono le chiavi CUA (Common User Access) utilizzate in OS / 2 e altri sistemi operativi compatibili con CUA, come Windows ...
Dieci risposte:
Mark
2015-10-12 00:22:56 UTC
view on stackexchange narkive permalink

Perché non sarebbe di aiuto.

La maggior parte dei keylogger è installata a livello di sistema operativo e il sistema operativo deve avere accesso alle sequenze di tasti. Il cambio di programma Alt-Tab, l'utilizzo di Ctrl-Alt-Canc per terminare i programmi malfunzionanti e il rilevamento dell'attività della tastiera per impedire l'attivazione del salvaschermo richiedono che il sistema operativo visualizzi le sequenze di tasti.

C'è anche la questione minore che se tu eliminato l'accesso del sistema operativo alla tastiera, ogni applicazione dovrebbe avere un set completo di driver della tastiera incorporati.

Cosa intendi per "installato a livello di sistema operativo"? Come i conducenti?
In genere in un modo simile a un guidatore, sì.
In realtà, esiste una [gestione specifica per Ctrl + Alt + Canc] (https://en.wikipedia.org/wiki/Secure_attention_key) che rende più difficile la cattura con un keylogger.
@Philipp, true, Ctrl + Alt + Canc può * solo * essere rilevato da un keylogger a livello di sistema operativo (o hardware).
Mark, hai collegamenti o ulteriori letture sulla maggior parte dei keylogger come driver?
Dove prendi le tue informazioni sulla "maggior parte" dei keylogger? Prese alla lettera, se il 51% è a livello di kernel e il 49% è a livello di utente, tagliare il 49% sarebbe molto utile. Diavolo, anche se il 10% sono logger userland, eliminare il 10% sarebbe un progresso. Non conosco alcun dato su cosa siano i keylogger a livello di kernel, ma la tua risposta solleva la domanda su che quel numero sia davvero.
@SteveSether Non ho il numero a portata di mano, ma "La stragrande maggioranza" è a livello di sistema operativo (a parte qualsiasi altra cosa, qualsiasi cosa al di sopra di quel livello tende ad essere ovvia per l'utente e verrà rilevata molto rapidamente)
@JonStory Ciao Jon. Qual è la fonte delle tue informazioni?
I moduli di sicurezza della mia laurea in Informatica - purtroppo come detto non ho i numeri a portata di mano (era ormai qualche anno fa e all'epoca non avevo annotato le fonti!), Ma non avevo motivo di dubitare informazioni ed è stato presentato da un accademico con una buona familiarità con il campo.
Se mirerai a un sistema operativo desktop leader non avrai bisogno di andare al livello del kernel, l'implementazione sarà banale nello spazio utente, come puoi vedere da molti programmi di esempio che registrano le sequenze di tasti. Non riesco proprio a vedere perché la maggior parte dei keylogger sarebbe mai stata scritta come moduli del kernel anche se fosse vero.
I moduli del kernel @SampoSarrala, sono più facili da nascondere.
Dubito dell'esattezza di questo. Sono d'accordo sul fatto che la maggior parte dei keylogger utilizzerà le funzionalità del sistema operativo (altrimenti avrebbero bisogno di iniettarsi in ogni processo, cosa che alcuni fanno-), ma non credo che saranno moduli del kernel. Sono più difficili da codificare e non essere un amministratore ti manterrebbe al sicuro.
phyrfox
2015-10-12 02:56:28 UTC
view on stackexchange narkive permalink

L'interfaccia da tastiera a applicazione attraversa diverse fasi, alcune delle quali il sistema operativo ha scarso controllo e altre che forniscono agganci espliciti per funzionalità aggiuntive. Il design di base è questo: gli eventi hardware vengono ricevuti dalle catene di driver, che quindi passano i messaggi al kernel, che quindi lo invia a una catena di tasti di scelta rapida globale e infine all'applicazione prevista (se non cancellati da alcun passaggio precedente nella catena ).

La catena dei driver consente al kernel di non preoccuparsi di "come" vengono generate le battiture, ma solo di quello che sono. Potrebbero provenire da una tastiera, da un dispositivo IR o da qualsiasi altra sorgente che potrebbe inviare un segnale progettato per essere interpretato come una tastiera. Un registratore di tastiera hardware, ad esempio, è un dongle che ha un ingresso USB o PS / 2 su un'estremità e una porta USB o PS / 2 sull'altra, in modo tale che la tastiera passi i dati attraverso questo dispositivo e venga intercettata. Il sistema operativo letteralmente non è in grado di rilevare che tale registrazione è in corso.

L'altro tipo comune di registrazione avviene nel software, che può accadere prima che il sistema operativo abbia la possibilità di vedere i messaggi della tastiera, o dopo. I driver possono fare praticamente tutto ciò che vogliono e il sistema operativo non può rilevare rigorosamente che un driver sta deviando i messaggi per scopi nefasti, perché riescono a ispezionare i messaggi prima che lo faccia il sistema operativo. Questa è la natura dell'Hardware Abstraction Layer (HAL) di cui fanno parte i driver. Fortunatamente, poiché sono in memoria, il software anti-malware può rilevare e disabilitare tale comportamento.

Infine, hai un "buco" intenzionale nel sistema operativo, di solito indicato come "tasti di scelta rapida globali", che consente a qualsiasi applicazione di richiedere che i messaggi della tastiera vengano passati a loro prima dell'applicazione in focus. Ciò consente non solo il funzionamento di Alt-Tab (il gestore delle finestre intercetta questi messaggi per cambiare app), ma anche la maggior parte dei programmi multimediali richiede ai gestori di supportare tasti multimediali come riproduzione, riavvolgimento e avanzamento rapido e altre app di terra dell'utente per controllo del volume, ecc. Senza tutti questi tasti di scelta rapida globali, il sistema operativo sarebbe molto fastidioso da usare e di conseguenza le app sarebbero molto più complesse. Tuttavia, proprio poiché questa è una grande funzionalità da avere, può anche essere usata in modo improprio da un programma.

Tuttavia, dovresti notare che non "tutti" i programmi ricevono una copia di un messaggio della tastiera, solo i driver, gestori di tasti di scelta rapida globali e l'applicazione a fuoco. Il problema non ha nulla a che fare con il fatto che ogni programma riceve una copia di un evento della tastiera, ma il fatto che l'HAL deve essere in grado di trasformare i messaggi dall'hardware ai messaggi del kernel e sono necessari tasti di scelta rapida globali per fornire funzionalità al utente senza che ogni programma debba essere creato per fornire le stesse funzionalità.

Ci sono stati progressi per bloccare il processo, come la richiesta di "driver firmati", che riduce il probabilità che driver dannosi entrino nella catena dei driver e antivirus in grado di rilevare comportamenti scorretti da parte delle app. Tuttavia, fino a quando non verranno risolte molte delle vulnerabilità di sicurezza, come la registrazione della tastiera a livello di hardware e la registrazione di tasti di scelta rapida globale non sicura, i logger avranno ancora la possibilità di registrare le sequenze di tasti. Anche se le normali sequenze di tasti sembrano andare semplicemente dall'hardware a un'app, in realtà sono necessari diversi passaggi intermedi e questi passaggi sono necessari per la compatibilità di base (driver) e la funzionalità (tasti di scelta rapida globali).

Inoltre, il software IME deve adattarsi alla catena da qualche parte per consentire la digitazione in determinate lingue, principalmente cinese, giapponese e coreano.
I driver potrebbero essere bloccati impedendo loro di effettuare una connessione di rete (a meno che non si registrino come driver di rete, nel qual caso non dovrebbero essere in grado di accedere ai dispositivi che si registrano come tastiere). È vero, sarebbe difficile impostare un sistema del genere, ma la tua storia fa sembrare che sarebbe impossibile. E ovviamente l'installazione di driver arbitrari in primo luogo può essere disabilitata soprattutto su dispositivi come i laptop (ad esempio, come fatto sui Chromebook). Inoltre, i keylogger hardware sono estremamente rari, quindi non sono sicuro del motivo per cui presti così tanta attenzione.
@DavidMulder Un framework di driver in cui tutti i driver sono essenzialmente applicazioni utente non attendibili sarebbe complesso nel migliore dei casi, ma non necessariamente impossibile. Il problema è trovare un equilibrio tra sicurezza e usabilità. Naturalmente, nessuno sta dicendo che vogliamo installare driver arbitrari (quindi, perché i driver "firmati" sono ormai all'ordine del giorno), ma vogliamo che gli utenti siano in grado di utilizzare effettivamente il computer. L'unico punto che stavo cercando di fare sui logger hardware è che il sistema operativo non può fidarsi del proprio hardware: i dispositivi possono fingere di essere quello che vogliono. Non c'è modo di assicurarsi che una tastiera sia solo una tastiera.
* I driver potrebbero essere bloccati impedendo loro di stabilire una connessione di rete * potrebbero essere facilmente aggirati ad es. scrivere le chiavi registrate su disco o semplicemente creare una nuova API di sistema per trasferire le sequenze di tasti a un componente in modalità utente.
"Fortunatamente, dal momento che sono in memoria, il software anti-malware può rilevare e disabilitare tale comportamento." Cosa intendi? I driver risiedono nello spazio del kernel, a cui l'antivirus come qualsiasi altro processo dello spazio utente non può accedere.
@black: È un antivirus scadente che funziona (solo) nello spazio utente.
Un driver di keylogger non avrebbe nemmeno bisogno di una backdoor per inviare le chiavi tramite la rete o metodi furtivi simili. Può semplicemente salvare le sequenze di tasti e quando l'applicazione complementare si avvia (ad esempio uno screensaver), quella companion richiederà le sequenze di tasti e il driver le riprodurrà semplicemente utilizzando l'interfaccia del sistema operativo predefinito. Ricorda, avevi già bisogno dell'accesso a livello di root per installare quel driver, l'aggiunta di un altro screensaver è banale a quel punto.
È importante notare che questo è principalmente un problema risolto sui sistemi operativi mobili e basati su browser. Solo i sistemi operativi precedenti come OS X, Linux e Windows che devono supportare il software legacy hanno ancora questo problema.
Dalla lettura di vari elementi della tua risposta (in particolare, "La catena dei driver consente al kernel di non preoccuparsi di" come "vengono generate le battiture ... Potrebbero provenire da ... un segnale progettato per essere interpretato come una tastiera") , Ho teorizzato che alcuni keylogger potrebbero non avere problemi a intercettare i tasti premuti utilizzando la funzione di accessibilità ** Tastiera su schermo ** di Windows. È esatto?
@DanHenderson Sì, per la natura del loro funzionamento (simulando la pressione dei tasti tramite l'API dell'evento), possono anche essere monitorati. Ci sono alcuni siti web sicuri, come quello che usano i militari, che non attivano eventi chiave usando una tastiera casuale e JavaScript, ma la maggior parte delle app native che non utilizzano la propria tastiera finta, come appena accennato, sarebbero suscettibili a key logger. Altre forme di input, come Dash, possono anche essere registrate dai key logger, nonostante l'utilizzo di input basato sul mouse.
@MSalters Ovviamente un corretto sandboxing fa parte di una tale configurazione in cui le applicazioni non possono parlare ciecamente tra loro (o in particolare un driver non dovrebbe avere privilegi di scrittura negli stessi posti delle normali applicazioni). Considerando che il sandboxing delle applicazioni è stata una preoccupazione sempre più importante, ciò non è impossibile (solo difficile, poiché ci sono molti modi per le applicazioni di comunicare tra loro, ma questo è tutto il sandboxing).
David Mulder
2015-10-12 02:09:54 UTC
view on stackexchange narkive permalink

Il motivo per cui questo non viene fatto per impostazione predefinita è perché la progettazione del sistema operativo della generazione precedente non si concentrava molto sul sandboxing e simili, quindi in questo momento sarebbero necessarie grandi modifiche all'architettura per far funzionare tali modifiche. Mark tocca questi in una certa misura nella sua risposta, ma si riduce al fatto che non puoi consentire alle applicazioni di funzionare alla cieca con i privilegi del sistema operativo.

È tuttavia molto più interessante notare che i sistemi operativi moderni come Ad esempio, Android di Google, iOS di Apple e persino ChromeOS (desktop) di Google limitano le sequenze di tasti solo alle applicazioni correnti 1 . Ora, concentrandoti solo su ChromeOS poiché è l'unico sistema operativo desktop nell'elenco, è anche importante notare che i collegamenti globali non creano problemi in questo caso. Un'applicazione può "semplicemente" dire al sistema operativo che desidera associarsi a un collegamento specifico che può essere configurato nel sistema operativo dall'utente. La specifica pertinente può essere trovata qui per quelli di voi che sono curiosi di vedere come appare.

Allo stesso modo, dando un'occhiata ad Android, possiamo trovare quel software di accessibilità che richiede l'accesso globale alla tastiera può ancora essere scritto in ambienti così moderni esponendo tali informazioni se e solo se all'applicazione sono esplicitamente concesse tali autorizzazioni nel pannello delle impostazioni di accessibilità. Ciò rende la configurazione di tale software un po 'complicata, ma impedisce la distribuzione dei keylogger.

In conclusione, l'unica ragione per cui non viene eseguita è non perché non lo fa " Non aiuta o è impossibile, ma perché a causa delle priorità storiche ci vuole solo un po 'più di tempo per arrivarci. Ci arriveremo in tempo e nel frattempo può avere senso utilizzare un sistema operativo più moderno e bloccato in ambienti sicuri.


1 So che Mac OS X ha recentemente ampliato il proprio impegno di sandboxing delle applicazioni. Presumo che anche un'applicazione correttamente sandbox (una che non richiede privilegi di amministratore) non sarà in grado di agire come keylogger, tuttavia ho passato pochissimo tempo a leggere come funziona davvero il loro sandboxing. Se qualcuno lo sa per certo, condividi!

* "un'applicazione può 'semplicemente' dire al sistema operativo che desidera associarsi a un collegamento specifico che può essere configurato nel sistema operativo dall'utente" * E il sistema operativo impedisce alle applicazioni di 'autoregistrarsi' tale associazione ... Come? È un software che registra l'associazione; in linea di principio, cosa impedisce ad altri software di fare la stessa cosa? (E non sono sicuro di voler impostare Alt + Tab, Ctrl + Esc, Windows + L, Windows + R, Windows + Maiusc + 2 e così via da zero su ogni nuovo sistema ... )
@MichaelKjörling Non sei sicuro di quello che stai cercando di dire, avresti collegamenti a livello di sistema operativo che potrebbero o non potrebbero essere sovrascritti, ma non ci sarebbe modo per associare semplicemente "a", ad esempio, quindi non c'è pericolo di keylogger.
@MichaelKjörling In questo modo: http://i.imgur.com/Y9EHvJs.png
pjc50
2015-10-12 20:13:18 UTC
view on stackexchange narkive permalink

Su Windows, la protezione tra le applicazioni eseguite con lo stesso utente è minima. Se provi a rimuovere SetWindowsHookEx , gli autori di malware passeranno all'iniezione di DLL e a tutta una serie di altre tecniche. Potresti anche disegnare una finestra trasparente sopra l'applicazione mirata che dovrebbe essere attiva e ricevere le sequenze di tasti, quindi trasmetterle inviando messaggi di Windows. Fondamentalmente Windows non è stato progettato pensando alla possibilità di eseguibili dannosi.

Un sistema progettato per eseguire applicazioni non attendibili può eseguirne il sandbox l'uno dall'altro. Ma è ancora vulnerabile agli exploit (molto più rari) che si aprono dalla sandbox al kernel.

C'è anche un'altra tecnica che potrebbe essere utilizzata: l'esecuzione di codice arbitrario nel browser offre a un exploit la possibilità di registrare ogni sequenza di tasti visualizzata dal browser, anche se non può sfuggire a una sandbox.

Questo non è più vero, Windows Vista ha aggiunto "Isolamento dei privilegi dell'interfaccia utente" e la maggior parte dei browser lo utilizza (eseguendo pagine Web con privilegi di interfaccia utente bassi). Hai ragione sul fatto che questo non protegge dall'acquisizione di sequenze di tasti digitate nel browser web in una finestra / scheda diversa.
Questa discussione https://security.stackexchange.com/questions/3759/how-does-the-windows-secure-desktop-mode-work afferma che l'iniezione di DLL è ancora un attacco praticabile.
Hai collegato una risposta che ammette che l'autore non sa come funziona l'iniezione di DLL. [Questa documentazione] (https://msdn.microsoft.com/en-us/library/bb625963.aspx) afferma che UIPI blocca l'iniezione di DLL (almeno usando mezzi convenzionali come `CreateRemoteThread` ... se il codice è in esecuzione da una directory scrivibile dall'utente, quindi c'è ancora il rischio di dirottamento attraverso un percorso di ricerca DLL non sicuro)
X su Linux non è migliore in questo senso. http://unix.stackexchange.com/questions/129159/record-every-keystroke-and-store-in-a-file
David-
2015-10-13 01:29:15 UTC
view on stackexchange narkive permalink

Ci sono ragioni molto valide per cui desideri che le sequenze di tasti siano visibili alle applicazioni al di fuori del processo in primo piano attualmente in esecuzione. A meno che ogni programmatore non implementi taglia / copia / incolla, ad esempio, il sistema operativo deve monitorare determinate sequenze di tasti. Supponiamo che tu abbia un programma per acquisire schermate e desideri che venga attivato da una determinata sequenza di tasti, quel programma deve essere in grado di monitorare l'attività della tastiera per rilevare quando vengono attivati ​​i suoi tasti. Avrebbe più senso eseguire tutto in una sandbox e se il monitoraggio dell'input fosse un requisito per un programma in background è un'autorizzazione che deve essere consentita, ma indipendentemente da ciò che viene fatto, c'è sempre un modo per aggirarlo. Se qualcuno vuole sapere cosa stai digitando, troverà un modo. Tutto quello che possiamo fare è cercare di renderlo più difficile. L'offuscamento potrebbe essere un metodo interessante. Iniettare molti messaggi di input falsi nel sistema operativo che il programma in esecuzione genera per ingannare qualcosa al di fuori di esso?

Questo non è sbagliato, ma in realtà le applicazioni Windows * sono * obbligate a implementare da sole il taglia / copia / incolla (e Ctrl-Z / X / C / V / B sono solo una convenzione).
Anche in Windows, però, taglia, copia e incolla funzionerà sempre nella maggior parte delle applicazioni. Dovremmo implementarlo noi stessi sì, ma anche se non lo facciamo, è ancora disponibile tramite Windows. Crea una semplice finestra con una casella di testo e Windows si occuperà del resto.
La casella di testo è una libreria fornita dal sistema operativo, ma per quanto riguarda la coda degli eventi globale, fa parte della tua applicazione. Quello che sto dicendo è che le sequenze di tasti di modifica standard sono diverse da cose come Alt-Tab (gestita dal gestore delle finestre, l'applicazione non lo vede mai) e Ctrl-Alt-Canc (che non esce nemmeno dal kernel IIUC) .
Mike Maxwell
2015-10-13 02:33:41 UTC
view on stackexchange narkive permalink

Molti hanno osservato che altre applicazioni legittime potrebbero aver bisogno di trasformare l'input da tastiera originale (che si presenta sotto forma di tasto X premuto / rilasciato) in una sorta di testo. Le persone che hanno perso l'uso di una mano, per esempio.

Esistono anche strumenti di mappatura della tastiera che consentono alle persone di digitare in lingue per le quali il sistema operativo non fornisce una mappa della tastiera per quella lingua (o l'utente non desidera utilizzare la mappa della tastiera definita dal sistema operativo- -per esempio, un layout simile a Dvorak per una lingua diversa dall'inglese). Una di queste app è Keyman (keyman.com).

E infine, ci sono persone come me (o forse sono l'unico) che hanno mappatori di tastiera che mappano cose come -H sul cursore sinistro freccia, -B a - e così via. Quindi noi pigri (o solo io) non dobbiamo muovere le mani dalla parte alfabetica della tastiera per muoverci.

JamEngulfer
2015-10-13 19:29:22 UTC
view on stackexchange narkive permalink

Esistono infatti alcuni sistemi operativi che lo consentono, ovvero Mac OS X. Le pressioni di tasti che non sono combinazioni di tasti di sistema "riservate" o tasti di "modifica" (alt, ctrl, shift ecc.) vengono inviate solo all'applicazione attualmente al centro dell'attenzione.

Ovviamente, ciò renderebbe molto fastidioso alcune applicazioni progettate per l'accessibilità e programmi che utilizzano VoIP che richiedono tasti push-to-talk. Per questo motivo, c'è una parte delle Preferenze di Sistema in cui puoi abilitare questa funzionalità per applicazioni specifiche.

Per quanto riguarda Windows, immagino che non sia fatto perché l'attuale metodo di gestione della pressione dei tasti è piuttosto complesso ed è progettato per funzionare con tutti i driver e i programmi correnti.

Nzall
2015-10-15 03:41:14 UTC
view on stackexchange narkive permalink

Uno dei motivi è che per alcuni software, essere in grado di leggere le sequenze di tasti mentre è attivo ma non attualmente selezionato è vitale per il funzionamento del software.

  • Ad esempio, push-to - i tasti di conversazione su software VoIP come Teamspeak o Ventrilo consentono ai giocatori di chattare nel momento in cui vogliono chattare in modo da non avere un torrente di rumore.
  • Le persone che registrano lo schermo per vivere (come YouTube / Streamer, tutoristi informatici e revisori di software) si affidano a scorciatoie da software come Fraps, OBS, Xsplit, ... per garantire che le loro registrazioni funzionino correttamente.
  • Gli sviluppatori di software spesso traggono vantaggio dalla possibilità di concentrare il loro progetto mentre procedono attraverso il loro codice su l'altro monitor con i tasti funzione.
  • Personalmente mi piace il fatto di poter concentrare il mio World of Warcraft mentre utilizzo la rotellina del mouse per scorrere in Chrome e non è necessario passare da un programma all'altro costantemente. / li>
Ian Ringrose
2015-10-13 00:36:28 UTC
view on stackexchange narkive permalink

Facciamo un esempio pratico.

Alcune persone disabili trovano difficile digitare e sono molto lente a digitare. Spesso utilizzano il software di " previsione delle parole" che mostra un elenco delle parole che corrispondono a ciò che hanno digitato fino a quel momento, consentendo di selezionare una parola dall'elenco con un solo tasto.

I non vedenti utilizzano un software che legge il testo visualizzato sullo schermo (lettori di schermo). Questo software può anche pronunciare ogni lettera mentre viene premuta sulla tastiera. Il software ha alcuni tasti di scelta rapida che leggono la riga corrente, ecc.

Nel Regno Unito, esiste un software che ti consente di digitare un indirizzo in una lettera digitando il codice postale, quindi premendo un tasto di scelta rapida per ottenere il codice postale si è espanso in quasi l'indirizzo completo. Questo software viene spesso utilizzato con il database dei clienti, ecc. Che non supportano l'immissione "rapida" dell'indirizzo.

I tester desiderano essere in grado di registrare tutte le sequenze di tasti e i movimenti del mouse effettuati durante il test del software, quindi può quindi riprodurli per ripetere il test.

In tutti i casi sopra indicati il ​​software DIPENDE dalla possibilità di vedere quali sequenze di tasti vengono inviate ad altri programmi.


Smartphone e tablet limitano il modo in cui le applicazioni possono interagire tra loro, nella misura in cui la maggior parte delle persone si rivolge ancora a un "PC" o Mac quando desidera portare a termine un lavoro che richiede l'uso di più di un'applicazione.

La sicurezza e la libertà di essere produttivi non sempre vanno insieme; c'è un compromesso da fare. L'iPhone si trova a un'estremità dello spettro e Windows / Max all'altra.

Questo non è certo il motivo per cui non è disponibile nei tradizionali sistemi operativi desktop. Se, ad esempio, dai un'occhiata ad Android, tali informazioni vengono esposte solo quando un'applicazione viene selezionata in accessibilità come autorizzata ad accedere esplicitamente a tali informazioni.
Alex Cannon
2018-02-14 06:08:32 UTC
view on stackexchange narkive permalink

Il sistema X Window lo fa già in una certa misura. Consente ai programmi di afferrare il mouse e la tastiera e nient'altro può intercettare gli input. Nemmeno il window manager. È piuttosto fastidioso per i giochi a schermo intero poiché non è possibile abbandonare il gioco. Prova ad aprire xterm e tieni premuto il tasto ctrl e fai clic con il pulsante destro del mouse (credo) e seleziona afferra tastiera. Ora quello che digiti in xterm non può essere visto da nessun altro client che si connette al server X. Modifica: sembra che X abbia ancora una funzione XQueryKeymap che può aggirarla ed essere usata da un keylogger.

Modifica: Windows implementa tale funzionalità facendo in modo che premendo ctrl + alt + del porti sempre una schermata di gestione dell'account Windows valida, purché il cambio utente rapido sia disattivato. Quindi non sono possibili schermate di immissione di password false.

Questa è la funzione `XGrabKeyboard`, credo.Sfortunatamente non è utile per la sicurezza, in quanto può essere bypassato piuttosto banalmente (il che è sciocco perché alcuni programmi tentano di usarlo per la sicurezza, come xterm come hai detto).
Ti riferisci alla combinazione di tasti ctrl + alt + * per rilasciare le sequenze da tastiera?Le distribuzioni moderne hanno disabilitato questa funzione.Può essere comunque utilizzato solo dagli utenti del server X, non da altri client che si connettono al server X.
No, mi riferisco a un comando di protocollo X11.La `XQueryKeymap` può bypassare l'acquisizione della tastiera su Xorg.
Ri.la tua modifica, Linux e molti Unix hanno qualcosa di simile chiamato SAK (Secure Attention Key).Per Linux, se abilitato, è Ctrl + Alt + SysRq + K.Ucciderà tutti i processi nell'attuale TTY, causando il respawn di agetty / logind e assicurando che ti venga presentato un prompt di accesso non dirottato e non contraffatto.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...