Hai…Bro…kali ini saya berbagi tentang tutorial pengecekan port menggunakan bash scripting.
Sebelumnya apa sih itu portcheck..??
Portcheck itu sendiri merupakan suatu aktifitas untuk mengecek dan mengetahui suatu port yang ada tertutup atau terbuka.
Untuk bash scriptnya teman-teman bisa copy dibawah ini.

#!/usr/bin/bash

penggunaan="
penggunaan: $0 [url/ip] [port_awal] [port_akhir]

contoh:
$0 contoh.com 79 80
"

if [ $# -lt 3 -o $# -gt 3 ]; then
        echo "$penggunaan"
        exit 1
fi

function pingcheck () {
ping=`ping -c 1 $1  2>&1 | grep "bytes from" | wc -l`
if [ "$ping" -eq 1 ];then
    echo "$1 is up";
else
    echo "can't ping $1";
fi
}

function portchecktcp () {
for ((counter=$2; counter<=$3; counter++))
do
    timeout 2 bash -c "echo > /dev/tcp/$1/$counter" > /dev/null 2>&1 && echo "port $counter/tcp is open" || echo "port $counter/tcp is closed"
done
}

pingcheck $1
portchecktcp $1 $2 $3

penjelasan kode

skrip ini dibuat dan dijalankan pada arch linux sehingga pada bagian #!/usr/bin/bash terlihat berbeda karena binary file bash secara default terletak di /usr/bin/ pada arch linux, dimana distro linux lain kebanyakan menggunakan #!/bin/bash.

baris pertama, #!/usr/bin/bash berfungsi memberi tahu OS apa yang akan digunakan sebagai interpreter untuk skrip pada baris selanjutnya, dalam hal ini interpreter yang digunakan adalah bash.

baris ke-3 sampai ke-8, merupakan deklarasi variabel penggunaan, yang berisi string keterangan cara menjalankan skrip.

baris ke-10 sampai ke-13, kondisional checking apakah parameter yang dilewatkan saat skrip dijalankan adalah bernilai 3 parameter, jika tidak tampilkan isi variabel penggunaan, lalu exit, jika ya, lanjutkan eksekusi.

baris ke-15 sampai baris ke-22, membuat fungsi bernama pingcheck, untuk mencek apakah url/ip tujuan bisa di-ping atau tidak, menggunakan perintah

ping -c 1 $1  2>&1 | grep "bytes from" | wc -l

dimana perintah tersebut berarti melakukan ping sebanyak 1 kali terhadap url/ip tujuan kemudian hasilnya di-pipe (|) ke perintah grep untuk mencari baris yang terdapat kata “bytes from”, dimana baris yang terdapat kata tersebut berarti url/ip tujuan bisa di-ping, hasil dari perintah grep selanjutnya di-pipe (|) ke perintah wc -l, untuk dihitung hasilnya ada berapa baris, jika hasilnya sama dengan 1, maka url/ip tujuan bisa di-ping, jika tidak sama dengan 1 berarti url/ip tidak bisa di-ping.

baris ke-24 sampai ke-29, membuat fungsi bernama portchecktcp, yang melakukan perulangan dari port_awal sampai port_akhir dari parameter yang diberikan ketika skrip dijalankan, untuk dilakukan pengecekan apakah port terbuka atau tertutup menggunakan perintah

timeout 2 bash -c "echo > /dev/tcp/$1/$counter" > /dev/null 2>&1 && echo "port $counter/tcp is open" || echo "port $counter/tcp is closed"

perintah tersebut berarti, melakukan echo sesuatu ke /dev/tcp/[url/ip]/[port], jika berhasil, hasilnya dikirim ke /dev/null, agar tidak menampilkan ada error yang mungkin terjadi ke display terminal, ditambah dengan perintah && untuk menampilkan keterangan port yang terbuka, jika bernilai true

"port $counter/tcp is open"

perintah || untuk menampilkan keterangan port yang tertutup

echo "port $counter/tcp is closed"
timeout 2

berfungsi sebagai timer waktu tunggu ketika perintah

echo > /dev/tcp/$1/$counter" > /dev/null 2>&1

dijalankan.

baris ke-31 dan ke-32, memanggil fungsi pingcheck dan portcheck dengan parameter dari built-in variabel yang ada di bash, yaitu $1 $2 $3.

referensi

ebook Coding for Penetration Testers: Building Better Tools