- Linux send tcp packet
- NAME
- SYNOPSIS
- DESCRIPTION
- OPTIONS
- EXAMPLES
- SEE ALSO
- AUTHOR
- Как отправить TCP или UDP пакет в Linux?
- Как отправить TCP пакет на определенный ip:порт в Linux
- Как отправить UDP пакет на определенный ip:порт в Linux
- Send TCP/UDP Packets on Linux using /dev/tcp & /dev/udp Pseudo Devices
- Base Command
- UDP
- TCP
- 👉 Any questions? Please comment below.
- Share on
- Leave a comment
- You may also enjoy
- [SOLVED] Fix Kubernetes Flannel & CoreDNS Failure with Error: x509: certificate is valid for , , not
- JavaScript: Remove element from Array — by index / value / position / range / filter function (programmatically)
- [SOLVED] Fix Kubernetes Client Certificates Issue with Error: Part of the existing bootstrap client certificate is expired . failed to run Kubelet: unable to load bootstrap kubeconfig: stat /etc/kubernetes/bootstrap-kubelet.conf: no such file or directory
- [SOLVED] Fix npm ERR! code EINTEGRITY , integrity checksum failed , tarball data seems to be corrupted , npm ERR! shasum check failed , npm WARN registry Unexpected warning issues during npm install
- Как отправить и получить сырые TCP и UDP данные
- Как передавать и получать сырые данные по протоколу UDP
- Как передавать и получать сырые данные по протоколу TCP
Linux send tcp packet
NAME
packetsender - Network utility for sending and receiving TCP, UDP, SSL packets
SYNOPSIS
packetsender [options] address port data
DESCRIPTION
Packet Sender is a utility that sends and receives TCP, UDP and SSL (encrypted TCP) packets on the ports of your choosing. It supports IPv4 and IPv6 and provides a GUI for final users. However, is also possible use Packet Sender in text mode via command line. Some features: • Can act as client/server to send and receive network traffic. • A payload can be created in ASCII or hex. • Command line mode is available for automation and scripting. • Packet Sender cloud is a disposable resource to be used to publicly display and distribute packets (via an URL) for collaboration, tutorials, end users, etc. Packet Sender may import public packet sets with public URL. Some uses: • Control network-based devices in ways beyond their original apps. • Test automation (using command line tool and/or hotkeys). • Test network APIs (using the built-in TCP, UDP, SSL clients). • Malware analysis (using the built-in UDP, TCP, SSL servers). • Troubleshoot secure connections (using SSL). • Test network connectivity/firewalls (by having 2 Packet Senders talk to each other). • Stress-test a device (using intense network generator tool). • Tech support (by sending customers a portable Packet Sender with pre-defined settings and packets). • Share/Save/Collaborate using the Packet Sender Cloud service.
OPTIONS
-h, --help Displays this help. -v, --version Displays version information. -q, --quiet Quiet mode. Only output received data. -x, --hex Parse data-to-send as hex (default). -a, --ascii Parse data-to-send as mixed-ascii (like the GUI). -A, --ASCII Parse data-to-send as pure ascii (no \xx translation). -w, --wait Wait up to for a response after sending. Zero means do not wait (Default). It is compulsory if a reply from a server, as an HTTP server, is needed. In this case, -w 500 is a good start value. -f, --file Send contents of specified path. Max 10 MiB for UDP, 100 MiB for TCP/SSL. -b, --bind port> Bind port. Default is 0 (dynamic). -6, --ipv6 Force IPv6. Same as -B "::". Default is IP:Any. -4, --ipv4 Force IPv4. Same as -B "0.0.0.0". Default is IP:Any. -B, --bindip Bind custom IP. Default is IP:Any. -t, --tcp Send TCP (default). -s, --ssl Send SSL and ignore errors. -S, --SSL Send SSL and stop for errors. -u, --udp Send UDP. -n, --name Send previously saved packet named . Other options overrides saved packet parameters. Arguments: address Destination address. Optional for saved packet. port Destination port. Optional for saved packet. data Data to send. Optional for saved packet.
EXAMPLES
The following command line will send a TCP packet, with a mixed-ascii as payload, to example.com, port 22. The command will wait 500 ms for a reply. $ packetsender -taw 500 example.com 22 "Hello\nWorld" Similar to last command, but the TCP packet will be sent to port 21. An anonymous authentication will be used. $ packetsender -taw 500 example.com 21 "USER anonymous\r\nPASS chrome@example.com\r\n" The command below uses SSL and will ignore SSL errors. The command will wait 500 ms for a reply. $ packetsender -saw 500 expired.packetsender.com 443 "GET / HTTP/1.0\r\n\r\n" Other good example how to access a homepage: $ packetsender -w 500 -a example.com 80 "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" Packet Sender command line also can bind to custom ports to force IPv4/6 modes or multiple NIC, as shown below: $ packetsender -taw 3000 fe80::c07b:d517:e339:5a08 5005 "Hello\r" $ packetsender -taw 3000 192.168.0.201 5005 "Hello\r" $ packetsender -B 192.168.0.200 -taw 3000 192.168.0.201 5005 "Hello\r" $ packetsender -B fe80::a437:399a:3091:266a%ethernet_32769 -taw 3000 fe80::c07b:d517:e339:5a08 5005 "Hello\r" $ packetsender -B fe80::a437:399a:3091:266a -taw 3000 fe80::c07b:d517:e339:5a08 5005 "Hello\r"
SEE ALSO
tcpdump(8), wireshark(1), https://packetsender.com/documentation
AUTHOR
Packet Sender was written by Dan Nagle dan@dannagle.com> and is available at https://packetsender.com This manual page was written by Joao Eriberto Mota Filho eriberto@debian.org> for the Debian project (but may be used by others).
© 2019 Canonical Ltd. Ubuntu and Canonical are registered trademarks of Canonical Ltd.
Как отправить TCP или UDP пакет в Linux?
Часто при тестировании каких-либо приложений может возникнуть необходимость проверить, доходят ли определенные пакеты по udp/tcp до адресата, например, при проверке функционирования фаервола или же проверки работоспособности проброса портов. В данной статье будет описан простой способ это сделать с помощью командой строки.
Как отправить TCP пакет на определенный ip:порт в Linux
Для отправки tcp пакета на определенный IP адрес и определенный порт, можно воспользоваться следующей командой:
echo -n "test" >/dev/tcp/1.2.3.4/12345
1.2.3.4 — это IP адрес, на который мы будем посылать наш tcp пакет.
12345 — это порт, на который мы будем посылать наш tcp пакет Альтернативным вариантом может быть использование утилиты nmap:
sudo nmap -sT -p 12345 1.2.3.4
Как отправить UDP пакет на определенный ip:порт в Linux
Для отправки udp пакета на определенный IP адрес и определенный порт, можно воспользоваться следующей командой:
echo -n "test" >/dev/udp/1.2.3.4/12345
1.2.3.4 — это IP адрес, на который мы будем посылать наш udp пакет.
12345 — это порт, на который мы будем посылать наш udp пакет Альтернативным вариантом может быть использование утилиты nmap:
sudo nmap -sU -p 12345 1.2.3.4
Проверить получение tcp и udp пакетов на определенный порт на удаленном компьютере можно с помощью различных утилит, например, с помощью tcpdump.
tcpdump -i eth0 port 12345 -vvv -X
Send TCP/UDP Packets on Linux using /dev/tcp & /dev/udp Pseudo Devices
Pseudo tools like /dev/tcp & /dev/udp can be used to easily send an instant TCP/UDP packet on Linux terminal.
Here is a quick tutorial on sending UDP and TCP data on Linux terminal using /dev/udp and /dev/tcp .
Base Command
UDP
$ echo "This is my UDP message" > /dev/udp/127.0.0.1/30000
TCP
$ echo "This is my TCP message" > /dev/tcp/127.0.0.1/30100
👉 Any questions? Please comment below.
Updated: January 02, 2020
Share on
Leave a comment
You may also enjoy
[SOLVED] Fix Kubernetes Flannel & CoreDNS Failure with Error: x509: certificate is valid for , , not
Use the correct cluster configuration for your control plane when regenerating new certificates
JavaScript: Remove element from Array — by index / value / position / range / filter function (programmatically)
Many ways to remove items from a JavaScript array
[SOLVED] Fix Kubernetes Client Certificates Issue with Error: Part of the existing bootstrap client certificate is expired . failed to run Kubelet: unable to load bootstrap kubeconfig: stat /etc/kubernetes/bootstrap-kubelet.conf: no such file or directory
Renew the expiring/expired Kubernetes PKI (client certificates & keys)
[SOLVED] Fix npm ERR! code EINTEGRITY , integrity checksum failed , tarball data seems to be corrupted , npm ERR! shasum check failed , npm WARN registry Unexpected warning issues during npm install
Clean npm cache, node_modules, package-lock.json files to recover from all ‘npm ERR! code EINTEGRITY’ error messages during ‘npm install’
Как отправить и получить сырые TCP и UDP данные
Передавать сырые данные TCP и UDP умеют программы Ncat, Netcat, nc.
В качестве сырых данных могут быть двоичные, для сохранения бинарных данных в файл можно использовать любой шестнадцатеричный редактор, например, Bless.
Как передавать и получать сырые данные по протоколу UDP
Чтобы не просто выполнить подключение, когда данные вводятся вручную (вводить шестнадцатеричные данные вручную затруднительно для нас), а чтобы подключиться и сразу передать данные, можно использовать команду вида:
cat ФАЙЛ | ncat -u -C IP-АДРЕС ПОРТ
Опция -u означает использовать UDP протокол (по умолчанию используется TCP).
Пример команды, которая отправляет данные из файла hello-camera.bin на удалённый IP 255.255.255.255 на UDP порт 34569:
cat hello-camera.bin | ncat -u -C 255.255.255.255 34569
UDP протокол не дожидается ответа, он разрывает соединение. Для отправки ответа удалённых хост запускает новое UDP соединение, но дело в том, что для его подключения мы должны прослушивать порт. Ответ придёт на UDP порт 34569. Прослушивать порт можно также командой ncat. Для этого используется команда вида:
В этой команде опция -u означает использовать UDP протокол (по умолчанию используется TCP). Опция -l означает прослушивать входящие соединения. IP-АДРЕС — это IP сетевого интерфейса на локальной машине, где запущена утилита ncat. ПОРТ — это порт для прослушивания.
IP адрес компьютера, где будет запущена ncat, 192.168.0.88, нужно прослушивать на 34569 порту, тогда команда следующая:
Кажется, что ничего не происходит, но программа и не завершает работу — она просто ожидает входящее соединение.
Не закрывая это окно терминала, откроем другую консоль и вновь повторяем первую команду:
cat hello-camera.bin | ncat -u -C 255.255.255.255 34569
После этого в первой консоли будет показан полученный ответ:
Чтобы сохранить присланный ответ (вместо того, чтобы выводить его на экран), можно использовать следующую команду для прослушивания входящих подключений:
ncat -u -l 192.168.0.88 34569 > response.bin
В результате присланный ответ будет сохранён в файле response.bin.
Как передавать и получать сырые данные по протоколу TCP
Чтобы просто отправить сырые данные протоколом TCP в ncat, достаточно убрать опцию -u. Но в этом случае вы не получите ответа. Для того чтобы отправить данные и получить ответ нужно использовать конструкцию:
- ФАЙЛ — это файл, содержащий данные для отправки
- IP-АДРЕС — IP удалённого хоста, куда мы хотим отправить данные
- ПОРТ — порт удалённого хоста, на который мы хотим отправить данные
Как можно увидеть, мы получили ответ.
Если вам нужно организовать «диалог» с удалённым хостом, то есть в рамках одной TCP сессии отправить несколько наборов данных, то данные для отправки запишите в отдельные файлы, например, если данные записаны в файлы ФАЙЛ1, ФАЙЛ2, ФАЙЛ3, ФАЙЛ4, тогда команда следующая:
Для своих целей я записал всех бинарные строки, которые отправляла программа CMS на камеру в отдельные файлы с именами hex1, hex2 и так далее до hex12. Для воспроизведения полного диалога с камерой можно использовать команду вида:
< cat hex; cat;> | ncat -C 192.168.0.167 34567