Welcome to Our Website

Linux nc command (Português)

Updated: 03/06/2020 by Computer Hope

On Unix-like operating systems, the nc command Run Netcat, a utility for sending raw data over a network connection.

Este documento cobre a versão Linux do nc.

Descrição

Netcat é um utilitário que lê e grava dados através de conexões de rede, usando o protocolo TCP ou UDP. Ele é projetado para ser uma ferramenta confiável “back-end” que pode ser usado diretamente ou impulsionado por outros programas e scripts., Ao mesmo tempo, é uma ferramenta de depuração e exploração de rede rica em recursos, uma vez que pode criar quase qualquer tipo de conexão que você precisa e tem várias capacidades embutidas interessantes. Os usos comuns incluem:

  • Simples de TCP proxies
  • Shell-script baseado HTTP clientes e servidores
  • Network daemon de teste
  • Um Socks ou HTTP ProxyCommand para o ssh

Sintaxe

Opções

-4 Forças nc usar endereços IPv4 somente.
-6 força nc a usar apenas endereços IPv6.,
-b permite a difusão.
-c Send CRLF as line-ending.
-D permitir a depuração no socket.
-d não tente ler a partir de stdin.
-h imprime a ajuda nc.
-I comprimento especifica o tamanho do buffer de recepção TCP.
-I intervalo especifica um intervalo de tempo de atraso entre as linhas de texto enviadas e recebidas. Além disso, causa um tempo de atraso entre conexões para várias portas.,
-k força nc a permanecer à escuta de outra conexão após a sua conexão atual estar concluída. É um erro usar esta opção sem a opção-l.
-l usado para especificar que nc deve ouvir uma ligação recebida em vez de iniciar uma ligação a um host remoto. É um erro usar esta opção em conjunto com as opções-p, -s, ou-Z. Além disso, todos os tempos-limite especificados com a opção-w são ignorados.
-n não faça nenhuma pesquisa de DNS ou serviços em quaisquer endereços, nomes de host ou portos especificados.,
-o comprimento especifica o tamanho do buffer de envio TCP.
– P proxy_ utilizador especifica um utilizador para apresentar a um servidor proxy que necessita de autenticação. Se não for indicado nenhum utilizador, a autenticação não será tentada. Actualmente, a autenticação por ‘Proxy’ só é suportada para os proxies de ligação HTTP.
-p source_port especifica o porto fonte que nc deve usar, sujeito a restrições de privilégios e disponibilidade.,
-q segundos após EOF em stdin, espere o número especificado de segundos e então saia. Se os segundos forem negativos, espera para sempre.
-r Especifica que os portos de origem ou de destino devem ser escolhidos aleatoriamente em vez de sequencialmente dentro de uma gama ou na ordem em que o sistema os atribui.
-s permite a opção de assinatura MD5 RFC 2385 TCP.
-s fonte especifica o IP da interface que é usada para enviar os pacotes., Para sockets datagram de domínio UNIX, especifica o arquivo local temporário socket para criar e usar para que datagrams possam ser recebidos. É um erro usar esta opção em conjunto com a opção-l.
-t toskeyword alterar o valor de IPv4 TOS. toskeyword pode ser um dos pontos críticos, inetcontrol, lowcost, lowdelay, netcontrol, débito, confiabilidade, ou um dos pontos de código DiffServ: ef, af11 … af43, cs0 … cs7; ou um número em hexadecimal ou decimal.
-t causa nc para enviar RFC 854 não e não vai responder a RFC 854 DO e WILL pedidos., Isto torna possível usar nc para script sessões telnet.
-U especifica para usar sockets UNIX-domain.
-u Use UDP em vez da opção padrão do TCP. Para soquetes UNIX-domain, use um soquete datagram em vez de um soquete stream. Se um soquete de domínio UNIX for usado, um soquete de recepção temporária é criado em /tmp, a menos que a bandeira-s seja dada.
-V rtable define a tabela de roteamento a ser utilizada. O padrão é 0.
-v tem nc dar uma saída mais descritiva.,
-W Tempo-limite ligações que não podem ser estabelecidas ou São tempo-limite de inactividade após tempo-limite de segundos. A bandeira-w não tem efeito na opção-l, ou seja, nc escutará para sempre por uma conexão, com ou sem a bandeira-W. O valor por omissão é sem tempo-limite.
-X proxy_protocol solicita que nc deve usar o protocolo especificado ao falar com o servidor proxy. Protocolos suportados são ” 4 “(SOCKS v. 4),” 5 “(SOCKS v. 5) e” connect ” (https proxy). Se o protocolo não for especificado, é usada a versão 5 do SOCKS.,
-x proxy_address solicita que nc se conecte ao destino usando um proxy em proxy_address e port. Se o porto não for especificado, o porto bem conhecido para o protocolo proxy é usado (1080 para SOCKS, 3128 para HTTPS).
-Z modo DCCP.
-z Especifica que nc só deve procurar por servidores de escuta, sem enviar quaisquer dados para eles. É um erro usar esta opção em conjunto com a opção-l.,

destino pode ser um endereço IP numérico ou um hostname simbólico (a menos que a opção-n seja dada). Em geral, um destino deve ser especificado, a menos que a opção-l seja dada (neste caso, o host local é usado). Para sockets UNIX-domain, um destino é necessário e é o caminho do socket para se conectar (ou ouvir se a opção-l é dada).

a porta pode ser um único inteiro ou uma gama de portas. As gamas são apresentadas sob a forma nn-mm. em geral, deve ser especificado um porto de destino, a menos que seja indicada a opção-U.,

Client / Server model

é muito simples construir um modelo cliente / servidor muito básico usando nc. Em uma consola, inicie a escuta nc em uma porta específica para uma conexão. Por exemplo:

nc -l 1234

nc está agora a ouvir na porta 1234 para uma ligação. Em uma segunda consola (ou uma segunda máquina), conecte-se à máquina e porta sendo escutada em:

nc 127.0.0.1 1234

deve haver agora uma conexão entre as portas. Qualquer coisa digitada no segundo console será concatenado para o primeiro, e vice-versa., Depois que a conexão foi configurada, nc realmente não se importa qual lado está sendo usado como um ‘servidor’ e qual lado está sendo usado como um ‘cliente’. A conexão pode ser terminada usando um EOF (‘^D’).

não existe nenhuma opção-C ou-e no netcat moderno, mas você ainda pode executar um comando após a conexão ser estabelecida através do redirecionamento de descritores de arquivos. Seja cauteloso aqui porque abrir uma porta e deixar qualquer um conectado executar comando arbitrário em seu site é perigoso., Se você realmente precisa fazer isso, aqui está um exemplo:

Em ‘servidor’ lado:

rm -f /tmp/f; mkfifo /tmp/f
cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f

Em ‘cliente’ lado:

nc host.example.com 1234

(prompt do shell host.example.com)

Por isso, você criar uma fifo no /tmp/f e fazer nc escutar na porta 1234 do endereço 127.0.0.1 em ‘server’ do lado, quando um ‘cliente’ estabelece uma ligação com êxito a essa porta, /bin/sh é executado em ‘servidor’ de lado e o prompt do shell é dado para o ‘cliente’ de lado.

Quando a conexão é terminada, nc sai também., Use-k se quiser que continue a ouvir, mas se o comando sair desta opção não irá reiniciá-la ou manter o nc em execução. Além disso, não se esqueça de remover o descritor de arquivo uma vez que você não precisa mais:

rm -f /tmp/f

Data transfer

o exemplo na seção anterior pode ser expandido para construir um modelo básico de transferência de dados. Qualquer entrada de informação em uma extremidade da conexão será saída para a outra extremidade, e entrada e saída pode ser facilmente capturado para emular transferência de arquivo.,

Comece usando nc para escutar em uma porta específica, com saída capturados em um arquivo:

nc -l 1234 > filename.out

a Utilização de uma segunda máquina, conectar-se a ouvir nc processo, alimentando-o com o arquivo a ser transferido:

nc host.example.com 1234 < filename.in

Depois que o arquivo é transferido, a conexão será fechada automaticamente.

falar com os servidores

às vezes é útil falar com os servidores “à mão” ao invés de através de uma interface de usuário., Ele pode ajudar na solução de problemas, quando pode ser necessário verificar que dados um servidor está enviando em resposta aos comandos emitidos pelo cliente. Por exemplo, para recuperar a página inicial de um site:

printf "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80

Note que isto também mostra os cabeçalhos enviados pelo servidor web. Eles podem ser filtrados, usando uma ferramenta como sed, se necessário.

exemplos mais complicados podem ser construídos quando o usuário conhece o formato de Pedidos exigidos pelo servidor., Como outro exemplo, um e-mail pode ser submetido a um servidor SMTP usando:

varredura de portas

pode ser útil saber quais portas estão abertas e rodando serviços em uma máquina de destino. A bandeira-z pode ser usada para dizer a nc para relatar portas abertas, em vez de iniciar uma conexão. Normalmente, é útil ligar a saída descritiva ao stderr usando esta opção em conjunto com a opção-v.

Por exemplo:

nc -zv host.example.com 20-30
Connection to host.example.com 22 port succeeded!Connection to host.example.com 25 port succeeded!

a gama de Portos foi especificada para limitar a busca aos portos 20 – 30, e é digitalizada por ordem crescente.,

pode também indicar uma lista de portos a analisar, por exemplo:

nc -zv host.example.com 80 20 22

As portas são digitalizadas pela ordem que indicou.

alternativamente, pode ser útil saber que software de servidor está rodando, e quais versões. Esta informação é frequentemente contida nos banners de saudação. Para recuperar estes, é necessário primeiro fazer uma conexão, e então quebrar a conexão quando o banner foi recuperado., Isso pode ser feito especificando-se um pequeno tempo de espera com a bandeira w, ou, talvez, mediante a emissão de uma “SAIA” de comando para o servidor:

echo "QUIT" | nc host.example.com 20-30
SSH-1.99-OpenSSH_3.6.1p2 Protocol mismatch. 220 host.example.com IMS SMTP Receiver Version 0.84 Ready

Exemplos

nc -p 31337 -w 5 host.example.com 42

Abre uma conexão TCP para a porta de 42 host.example.com, usando a porta 31337 como a porta de origem, com um tempo de espera de 5 segundos.

nc -u host.example.com 53

Abre uma conexão UDP porta 53. host.example.com.

nc -s 10.1.2.3 host.example.com 42

Abre uma conexão TCP para a porta de 42 host.example.com usando 10.1.2.3 como o IP para o local final da ligação.,

nc -lU /var/tmp/dsocket

cria e ouve num soquete de fluxo de domínio UNIX.

nc -x10.2.3.4:8080 -Xconnect host.example.com 42

conecta-se ao porto 42 de host.example.com via um proxy HTTP em 10.2.3.4, porta 8080. Este exemplo também pode ser usado pelo ssh.

nc -x10.2.3.4:8080 -Xconnect -Pruser host.example.com 42

o mesmo que o exemplo acima, mas desta vez permitindo a autenticação do ‘proxy’ com o nome de utilizador “ruser” se o ‘proxy’ o exigir.

ifconfig-ver ou modificar a configuração das interfaces de rede.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *