Bem, conforme documentado na Wikipedia e na documentação netcat , há uma opção -e que causa para gerar (xe) um programa após o recebimento de uma conexão, anexando o soquete a stdin, stdout e stderr do processo. Exemplo de uso:
nc -l -pport_number-eprogram_name
Os exemplos geralmente mostram /bin/sh ou bash sendo usado como o program_name . O uso desta opção é desencorajado porque basicamente abre um portal de acesso anônimo e sem senha em sua máquina. Claro, isso é mitigado usando um programa com menos energia do que o shell (um que não tem a capacidade de escapar para um shell), minimizando o uso e mantendo-o em segredo. No entanto, os desenvolvedores originais de netcat acharam que esta opção era uma má idéia que eles a desativaram por padrão, e a condicionaram sob a opção de compilação “GAPING_SECURITY_HOLE”. Isto é mencionado brevemente neste NetCat Tutorial e outra documentação netcat .
Uma pesquisa no Google levou-me a discussões sobre este problema noutros sites do Stack Exchange: Stack Overflow e Server Fault . Vários colaboradores ofereceram a seguinte técnica para fazer a mesma coisa sem usar a opção -e (por exemplo, em uma versão de netcat que tenha a opção -e desabilitada):
On the server:
mkfifopipe_namenc -l -pport_number<pipe_name|program_name>pipe_nameOn the client:
ncserver_machine_nameport_number
Algumas notas:
- Em algumas versões de
netcat,-limplica em-p, você deve dizer apenas-le, em seguida, o número da porta. - Você pode querer envolver sua solução em um loop
while true.