Saya tidak memiliki akses ke netcat
atau nmap
jadi saya mencoba untuk menggunakan bash
dan /dev/udp/
file khusus untuk menguji port.
Saya bisa melakukan sesuatu seperti:
echo "" > /dev/udp/example.com/8000
Namun $?
selalu 0
saat menggunakan UDP. Saya berasumsi itu karena itu adalah nilai pengembalian dari echo ""
perintah yang benar?
Saya pada dasarnya mencoba meniru apa yang dapat saya lakukan nmap
dan netcat
:
nmap -sU -p 8000 example.com | grep open >/dev/null && echo 'open'
nc -z -u example.com 8000 && echo 'open'
Bagaimana saya melakukan ini /dev/udp
?
bash
networking
devices
Belmin Fernandez
sumber
sumber
Jawaban:
Untuk tcp, cukup periksa
$?
. Jika koneksi gagal,$?
tidak akan0
:Perlu waktu untuk
bash
menyadari bahwa koneksi gagal. Anda dapat menggunakan batas waktu untuk memicubash
:Menguji port udp lebih kompleks.
Sebenarnya, tidak ada keadaan terbuka (tentu saja, udp adalah protokol stateless ) dengan udp. Hanya ada dua negara dengan udp, mendengarkan atau tidak . Jika tidak , Anda akan mendapatkan ICMP Destination Unreachable .
Sayangnya, firewall atau router sering menjatuhkan paket-paket ICMP tersebut, sehingga Anda tidak akan yakin apa port udpnya.
sumber
Secara umum, Anda tidak bisa.
Tidak seperti TCP, UDP tidak terhubung. Anda tidak dapat mendeteksi bahwa port terbuka hanya dengan membuat koneksi do-nothing ke sana seperti yang Anda bisa dengan TCP. Sebaliknya, Anda perlu mengirim data ke pelabuhan dan melihat apa yang terjadi, dan detail UDP seperti yang diterapkan di dunia nyata mempersulit penafsiran hasil. Bahkan alat tingkat paket canggih seperti
nmap
tidak bisa memastikan apakah ada program mendengarkan port UDP yang diberikan.nmap
mengklasifikasikan port UDP menjadi tiga grup:nmap
belum menemukan cara untuk mendapatkan respons; mungkin pengguna hanya beruntung dan semua paket hilang dalam perjalanan.sumber
nmap
. Terima kasih, ini menjelaskan banyak kebingungan.