Posso reindirizzare / reindirizzare un'applicazione console tramite netcat in modo che possa essere utilizzata in remoto?


10

È possibile "reindirizzare" un'istanza di un'applicazione console tramite netcat, in modo che netcat sia in attesa di una nuova connessione e reindirizzi la stdine stdoutsulla connessione di rete.


sì, ma potrebbe essere necessario un solo rivestimento, il che va bene, i tubi lo sono. Non so se puoi dire nc e pipe a un'istanza già in esecuzione tramite pid. puoi nc a un ip e inoltrarlo a un nc che sta ascoltando e inoltrarlo a un nc che sta ascoltando ecc. e inoltrarlo a nc a un ip.
barlop

Ho cambiato il titolo perché quello che dici sembra più il reindirizzamento I / O piuttosto che l'uso di una pipe (che si occupa solo di spostare l' output di un processo sull'input di un altro).
Breakthrough

@Breakthrough in cosa differisce dalle pipe? mentre parla del reindirizzamento IO e non dei file, in che cosa differisce dal piping?
barlop

Il reindirizzamento I / O di @barlop ( <o >) è significativamente diverso da piping ( |), sebbene a volte sia possibile ottenere un'operazione equivalente con una combinazione di entrambi. Ancora una volta, però, con il reindirizzamento I / O, è possibile modificare la posizione di entrambi i flussi; piping reindirizza l'output standard di un processo all'input standard di un altro.
Breakthrough

@Breakthrough vedi cosa ti ho chiesto però. > e <è ovviamente diverso dal piping perché <e> ​​utilizzano i file. Ma non sta parlando di file. Ti ho chiesto "in che modo [il reindirizzamento di I / O] differisce dalle pipe?
Mentre

Risposte:


16

Bene, come documentato in Wikipedia e nella netcatdocumentazione, esiste -eun'opzione che provoca la generazione ( e xecute) di un programma alla ricezione di una connessione, collegando il socket a stdin, stdout e stderr del processo. Esempio di utilizzo:

nc -l -pnumero_porta -enome_programma

Gli esempi mostrano /bin/sho bashvengono comunemente usati come nome_programma . L'uso di questa opzione è sconsigliato perché fondamentalmente apre un portale di accesso anonimo e senza password nel computer. Naturalmente, questo viene mitigato usando un programma con meno potenza della shell (uno che non ha la capacità di sfuggire a una shell), minimizzando il suo uso e mantenendolo segreto. Ciononostante, gli sviluppatori originali hanno netcatritenuto abbastanza forte che questa opzione fosse una cattiva idea che la disabilitassero di default e la condizionarono sotto l'opzione di compilazione "GAPING_SECURITY_HOLE". Questo è menzionato brevemente in questo Tutorial NetCat e altra netcatdocumentazione.

Una ricerca su Google mi ha portato a discutere di questo problema su altri siti Stack Exchange: StackTranslate.it e Server Fault . Collaboratori multipli hanno offerto la seguente tecnica per fare la stessa cosa senza usare l' -eopzione (ovvero, in una versione netcatche ha l' -eopzione disabilitata):

Sul server:
mkfifopipe_name
nc -l -pnumero_porta <pipe_name   | program_name >pipe_name

Sul client:
nc server_machine_name  numero_porta

Un paio di note:

  • In alcune versioni di netcat, -limplica -p, quindi dovresti dire solo -le poi il numero di porta.
  • Potresti voler avvolgere la soluzione in un while trueciclo.
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.