NetCat

Když vytváříme program co komunikuje se síti, hodí se nám nástroj, díky kterému můžeme tyto věci snadno testovat. Jedním z takových nástrojů je NetCat.

NetCat pro Windows je možné stáhnout zde: https://github.com/filip2cz/netcat-precompiled/raw/main/nc64.exe
Pokud pracujete na jiném operačním systému než jsou 64-bitové Windows, je třeba si stáhnout netcat odjinud. Můžete také zkusit, jestli není na vašem systému předinstalován, zkuste v příkazové řádce příkaz nc, ncat nebo netcat.

Program netcat se používá jinak, než programy se kterými většina z vás již pracovala. Je používám z příkazové řádky. První se musíte dostat do složky, kam jste netcat stáhli. Pokud jste ho uložili na plochu, dostanete se tam následujícím příkazem v PowerShellu:

cd ~\Desktop\
        

Powershell spustíte tak, že kliknete pravým tlačítkem myši na tlačítko Windows na liště a vyberete Windows Powershell nebo Terminál (záleží na vaší verzi Windows).

Odtud již můžete spustit program netcat. Program se spouští následovně .\nc64.exe [instrukce pro program]
Příkazem .\nc64.exe -h si zobrazíte informace o programu.

PS C:\Users\student\Desktop> .\nc64.exe -h
[v1.12 NT http://eternallybored.org/misc/netcat/]
connect to somewhere:   nc [-options] hostname port[s] [ports] ...
listen for inbound:     nc -l -p port [options] [hostname] [port]
options:
        -d              detach from console, background mode

        -e prog         inbound program to exec [dangerous!!]
        -g gateway      source-routing hop point[s], up to 8
        -G num          source-routing pointer: 4, 8, 12, ...
        -h              this cruft
        -i secs         delay interval for lines sent, ports scanned
        -l              listen mode, for inbound connects
        -L              listen harder, re-listen on socket close
        -n              numeric-only IP addresses, no DNS
        -o file         hex dump of traffic
        -p port         local port number
        -r              randomize local and remote ports
        -s addr         local source address
        -t              answer TELNET negotiation
        -c              send CRLF instead of just LF
        -u              UDP mode
        -v              verbose [use twice to be more verbose]
        -w secs         timeout for connects and final net reads
        -z              zero-I/O mode [used for scanning]
port numbers can be individual or ranges: m-n [inclusive]
        

Program se dá použít dvěma způsoby: jako klient a jako server.

Pokud se chceme na někoho připojit, použíjeme příkaz následovně:

nc [ip adresa] [port]
        

Pokud chceme otevřít port pro to, aby se někdo připojil k nám, použijeme příkaz takto:

.\nc64.exe -l -p [port]
        

V obou případech je může být port jakékoliv číslo mezi 1 a 65535. Pokud se ovšem dva lidé připojují k sobě, musí použít stejný port. Je ovšem doporučeno vyvarovat se portům menším než 1024, protože tyto porty používají konkrétní služby a na každém portu může běžet pouze jedna věc. Například webové stránky běží na portu 80.

Ip adresu můžete zjistit příkazem ipconfig následovně:

PS C:\Users\student\Desktop> ipconfig
Windows IP Configuration


Ethernet adapter Ethernet:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::978f:e12a:ab5f:ae65%10
   IPv4 Address. . . . . . . . . . . : 192.168.1.107
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : fe80::1%10
                                       192.168.1.1
        

Zde můžeme vidět, že IP adresa našeho stroje je 192.168.1.107. Můžete si všimnout, že je zde napsáno IPv4. Existuje také IPv6, která funguje velmi podobně, ale nebudeme se jí zde zabývat.

Zadání:

Utvořte dvojice. Jeden u sebe otevře nějaký port a druhý se na něj připojí. Pokud si nebudete vědět rady, nebojte se zeptat vašeho lektora. Pokud je vás lichý počet a není možné utvořit dvojice, můžete se prostřídat tak aby si to zkusili všichni.

Ukončení programu uděláte zkratkou ctrl+c. Normálně je tato zkratka pro kopírování, nicméně zkratky v příkazové řádce se fungují jinak.

Už máte hotovo?

V minulých hodinách jsme si utvořili programy komunikující se sítí. Pokud tyto programy stále máte, můžete otestovat, jak se budou chovat, když se budou připojovat na vaši ip adresu, když otevřete port pomocí netcat.