[Share] bermain dengan perintah awk
#1
Smile 
pengertian perintah awk

"Awk" adalah sebuah perintah pada Linux / Unix yang mempunyai kegunaan untuk mem-parsing atau mengurai sebuah file. Hampir mirip dengan "grep", namun bedanya grep digunakan ketika kita akan mem-filter sebuah isi direktori dengan sebuah ketentuan. awk paling sering digunakan untuk me-scan dan memproses sebuah pola. Pencarian pada sebuah file yang cocok dengan pola yang dibuat lalu menyaring pencarian tersebut kedalam sebuah file baru.

Berikut ini adalah fitur-fitur yang dimiliki Awk :
-Awk menjadikan text file sebagai records dan fields
-Seperti bahasa pemrograman lainnya, Awk mengandung variabel, kondisi, dan looping
-Awk mempunyai operator aritmatika dan string
-Awk bisa digenerate menjadi laporan yang berformat

contoh perintah default:
pertama kita buat file txt dengan nama terserah,disini saya menggunakan nama listhutang.txt dengan isi sebagai berikut:
Code:
1 sony 200000
2 nicolas 300000
3 amin 50000
4 yoga 10000
5 mizan 85000
berikut contoh perintah dan hasilnya:
Code:
pandora@pandorabox:~/awk$ awk '{print;}' listhutang.txt
1 sony 200000
2 nicolas 300000
3 amin 50000
4 yoga 10000
5 mizan 85000
contoh perintah menampilkan baris tertentu:
Code:
pandora@pandorabox:~/awk$ awk '/sony/' listhutang.txt
1 sony 200000
contoh perintah menampilkan field tertentu:
Code:
pandora@pandorabox:~/awk$ awk '{print $2,$3}' listhutang.txt
sony 200000
nicolas 300000
amin 50000
yoga 10000
mizan 85000
contoh perintah menampilkan jumlah paling banyak/terkecil berdasarkan field ke 3:
Code:
pandora@pandorabox:~/awk$ awk '{$3>90000}' listhutang.txt
1 sony 200000
2 nicolas 300000

contoh inisialisasi dan final action:
Awk memiliki 2 pola penting yang dibuat spesifik berdasarkan kata kunci yang disebut BEGIN dan END.

Syntax:
Code:
BEGIN { Actions}
{ACTION} # Action for everyline in a file
END { Actions }

# is for comments in Awk
contoh:
Code:
pandora@pandorabox:~/awk$ awk 'BEGIN {print "no\tnama\tjumlah";}
>{print $1,"\t",$2,"\t",$3,"\t";}
>END {print "----------------------"
>}'  listhutang.txt

untuk contoh pengembangan awk saya kasih contoh mengabungkan perintah awk dan grep untuk menganalisa file httpd.log pada sebuah server untuk membuat report tertentu:

pertama kita lihat format file yang akan kita proses
kira-kira format dari file httpd.log ini adalah:
Code:
1   2 3        4              5           6                     7            8                     9
ip  -  -  Date/time    timezone  Request type  Req content http response     size

Contoh mencari serangan sqli:

pertama kita masukan file httpd.log ke folder “workshop/sql”
lalu kita masuk ke dalam folder yang telah ditentukan dengan perintah “cd workshop/sql”
setelah masuk kita masukkan perintah di terminal :
Code:
pandora@pandorabox:~/workshop/sql$ for file in $(ls ~/workshop/sql); do awk '{print $1, $4, $6, $7}' $file |grep GET| grep -E "SELECT|UNION|select|union" > $file"_sqli_report.txt"; done
Contoh mencari serangan sqli:

pertama kita masukan file httpd.log ke folder “workshop/sql”
lalu kita masuk ke dalam folder yang telah ditentukan dengan perintah “cd workshop/sql”
setelah masuk kita masukkan perintah di terminal :
Code:
pandora@pandorabox:~/workshop/sql$ for file in $(ls ~/workshop/sql); do awk '{print $1, $4, $6, $7}' $file |grep GET| grep -E "SELECT|UNION|select|union" > $file"_sqli_report.txt"; done
keterangan:

script ini berarti list semua file dalam folder "~/workshop/sql" kemudian parse dengan awk dan ambil informasi yang diperlukan dimana $1 adalah ip address, $4 adalah DateTime, $6 adalah Request Type dan $7 adalah Request Content kemudian filter baris yang mengandung kata2 GET dan filter sekali lagi baris yang mengandung kata-kata select atau union yang mana merupakan kata-kata yang biasa digunakan dalam melakukan sql injection. lakukan parse dan filter pada setiap file yang dtemukan pada folder "~/workshop/sql" sampai habis. Lalu hasilnya dimasukan ke dalam nama yang diproses ditambah dengan imbuhan “_sqli_report.txt”(httpd.log_sqli_report.txt)

Contoh mencari serangan xss:

pertama kita masukan file httpd.log ke folder “workshop/xss”
lalu kita masuk ke dalam folder yang telah ditentukan dengan perintah “cd workshop/xss”
setelah masuk kita masukkan perintah di terminal :
Code:
for file in $(ls ~/workshop/xss); do awk '{print $1, $4, $6, $7}' $file |grep GET| grep -E "javascript" > $file"_xss_report.txt"; done

keterangan:
script ini berarti list semua file dalam folder "~/workshop/xss" kemudian parse dengan awk dan ambil informasi yang diperlukan dimana $1 adalah ip address, $4 adalah DateTime, $6 adalah Request Type dan $7 adalah Request Content kemudian filter baris yang mengandung kata-kata GET dan filter sekali lagi baris yang mengandung kata-kata javascript yang mana salah satu ciri serangan xss. lakukan parse dan filter pada setiap file yang dtemukan pada folder "~/workshop/xss" sampai habis. Lalu hasilnya dimasukan ke dalam nama yang diproses ditambah dengan imbuhan “_sqli_report.txt”(httpd.log_xss_report.txt)

Contoh mencari serangan directory jumping:

pertama kita masukan file httpd.log ke folder “workshop/dirjump”
lalu kita masuk ke dalam folder yang telah ditentukan dengan perintah “cd workshop/dirjump”
setelah masuk kita masukkan perintah di terminal :
Code:
for file in $(ls ~/workshop/dirjump); do awk '{print $1, $4, $6, $7}' "$file" |grep GET| grep -E "/etc|cmd.exe" > $file"_dirjump_report.txt"; done

keterangan:
Dengan script ini, bias dilakukan automatisasi pembuatan report tentang adanya directory jumping dari apache log. Script ini berarti list semua file dalam folder "~/workshop/dirjump" kemudian parse dengan awk dan ambil informasi yang diperlukan dimana $1 adalah ip address, $4 adalah DateTime, $6 adalah Request Type dan $7 adalah Request Content kemudian filter baris yang mengandung kata-kata GET dan filter sekali lagi baris yang mengandung /etc atau cmd.exe karena biasanya file-file yang dicari ada di folder /etc atau bisa diakses dengan cmd.exe.

Kita juga dapat melakukan pencacahan tentang ip mana yang melakukan jenis serangan sql injection/serangan yg lain dengan script/perintah berikut:
Code:
for file in $(ls ~/workshop/sqli_report); do awk '{print $1}' $file |sort|uniq -c|sort -n > $file"_stats.txt"; done
contoh menganalisis file secure.log

kita pertama-tama mencari log ssh yang berhasil login menggunakan script berikut ini
Code:
cat secure.log | sort | grep 'Accepted' | awk '{print $1 " " $2 " " $3 " User: " $9 " IP:" $11 }' > "ssh_log_success.txt"
lalu mencari log ssh yang gagal login dengan menggunakan script berikut ini
Code:
cat secure.log | sort | grep 'Failed' | awk '{print $1 " " $2 " " $3 " User: " $9 " IP:" $11 }' > "ssh_log_success.txt"

disini saya sertakan juga file httpd.log dan secure.log buat latihan .file nya bisa di download disini :d

kalo tutorialnya berkenan mungkin bisa bagi yang ijo2 nya Smile)Smile)

Wink

#2
bah surem nice share bro coba" dulu dah Big Grin

#3
hahahaha,, sory bro kalo g di quote ma nambahin gambar. ane buat dari libre langsung paste di thread.lupa g di edit dlu Big Grin

#4
(01-07-2014, 05:14 AM)ano21 Wrote: hahahaha,, sory bro kalo g di quote ma nambahin gambar. ane buat dari libre langsung paste di thread.lupa g di edit dlu Big Grin

Big Grin usahakan kasih prefix bro (share). terus usahain kasih tag forum code. Big Grin biar yang laen ngga males bacanya. padahal isinya bagus. apalagi yang lagi cinta ama bash programming Big Grin. sayang kalo thread bro cuman di liat, dijempolin, terus ditinggal Wink

#5
(01-07-2014, 06:25 AM)alkaaf Wrote:
(01-07-2014, 05:14 AM)ano21 Wrote: hahahaha,, sory bro kalo g di quote ma nambahin gambar. ane buat dari libre langsung paste di thread.lupa g di edit dlu Big Grin

Big Grin usahakan kasih prefix bro (share). terus usahain kasih tag forum code. Big Grin biar yang laen ngga males bacanya. padahal isinya bagus. apalagi yang lagi cinta ama bash programming Big Grin. sayang kalo thread bro cuman di liat, dijempolin, terus ditinggal Wink

makasih masukkan nya bro Big Grin .. maklum pelupa lupa g ngasih tag code Big Grin

#6
bahhh surem, napa nama ane yang di situ Smile)
but, nice share bro Big Grin

#7
sedot dulu ah baru ntar di jajal Big Grin
soop

#8
tambahan sedikit dari saya Smile `awk` ini sering di masukkan dalam bahasa pemograman bash umumnya untuk mempermudah output dari hasil yg di inginkan.
nice post bro.
+1

#9
Exclamation 
bro, mau nanya ni. saya coba perintah ini tapi tentunya saya kondisikan berbeda dengan keadaan data saya. Tapi hasilnya kok aneh ya?
File yang di create hilang, dan data didalam file-file sebelumnya juga sudah tidak ada lagi. Itu kenapa ya? 

pandora@pandorabox:~/workshop/sql$ for file in $(ls ~/workshop/sql); do awk '{print $1, $4, $6, $7}' $file |grep GET| grep -E "SELECT|UNION|select|union" > $file"_sqli_report.txt"; done





Users browsing this thread: 1 Guest(s)