IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   mIRC Scripting Sorunları (https://www.ircforumlari.net/mirc-scripting-sorunlari/)
-   -   hızlı giriş korumasına muaf ip nick (https://www.ircforumlari.net/mirc-scripting-sorunlari/536956-hizli-giris-korumasina-muaf-ip-nick.html)

Dangerous123 11 Temmuz 2013 18:38

hızlı giriş korumasına muaf ip nick
 
merhaba mudin ve h4pp3n in yazdıkları hızlı giriş proxy vs. korumasına muaf ip eklentisi lazım

nomercy nin yan botlarıda aynı iple hızlı giriş yaptıgı için bo kodu kullanamıyoruz.

bu koda muaf ip 88.252.44.66 | 95.123.55.77 gibi muaf tutulcak ipleri nasıl ekleriz

birde bu koddakı proxy taraması yapılan sitelerin coğu kapanmıs yada calısmamakta bu adresleride değişebilirmiyiz örnek yeni adrese ircproxy.net adresini ekleye biliriz kodu inceleyip yardımcı olursanız sevinirim..

Kod:

alias bilgi {
  if !$1- {
    echo -a  2Lütfen botun bilgilerini girin.
    echo -a  2Örnek:  10/bilgi serverip serverport botnick botnicksifre botoper botopersifre botlogkanal
  }
  else {
    set  %serverip $1 | set %serverport $2 | set %botnick $3 | set %botnicksifre $4 | set %botopernick $5 | set %botopersifre $6 | set %botlogkanal $7
    echo -a  2Botun bilgileri girildi.
    echo -a  2Botu sunucuya sokmak için :  10/bot1 2 yazınız
  }
}
on *:sockopen:bot1:{
  if ($sockerr) { echo $color(info) -st Bağlantı kesildi.Lütfen Scripti Kapatıp Tekrar Açın. | return }
  swbot1 NICK %botnick
  swbot1 USER aLn * * :  proxy/clone avcısı ¦:)
}
on *:sockread:bot1:{
  if ($sockerr) { echo $color(info) -st Bağlantı kesildi.Lütfen Scripti Kapatıp Tekrar Açın. | return }
  var %:; | sockread %:; | tokenize 32 %:;
  if !$window(@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]1) { window -ne @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]1 %:; }
  echo @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]1 %:;
  swalias1 $1-
}
alias swbot1 { if $sock(bot1) { sockwrite -n bot1 $1- } }
alias swalias1 {
  if $sock(bot1) {
    var %: = echo $color(info) -st > Socket bot:
    if *: VERSION * iswm $4- { swbot1 NOTICE  $bnick($1) VERSION mIRC v6.21 Khaled Mardam-Bey }
    if $1 == PING { swbot1 PONG $2- }
    if $2 == NOTICE && $3 == %botnick && *Bu kayitli ve sifre korumali bir nick* iswm $4- {
      swbot1 JOIN 0,
      swbot1 PRIVMSG nickserv identify %botnicksifre
      swbot1 oper %botopernick %botopersifre
      swbot1 JOIN 0,
      swbot1 JOIN %botlogkanal
      swbot1 PRIVMSG %botlogkanal Krouma botu aktif.
    }
    if $3 == %botlogkanal && $4 == :.guncelle {
      if $5 == oto {
        swbot1 PRIVMSG $3 Otomatik güncelleme sistemi 1800ms. olarak ayarlandı.
        guncelle oto
      }
      else {
        swbot1 PRIVMSG $3 Güncelleme başlatıldı. Tahmini süre 1800ms.
        guncelle
      }
    }
    if $2 == 352 {
      tor_ $6
      madgir $6
    }
    if *Client connecting* iswm $7- {
      inc %mad
      if $read(tor.txt,w,$remove($gettok($13,2,64),$chr(41))) {
        swbot1 gline *@ $+ $remove($gettok($13,2,64),$chr(41)) +1d  2Proxy yasaktır.
      }
      else {
        swbot1 who +I $12
      }
      var %ipcik = $remove($gettok($13,2,64),$chr(41))
      hinc -mu2 pp %ipcik 1
      if ($hget(pp,%ipcik) >= 3) {
        swbot1 gzline $+(*@,%ipcik) +15m  2Kurallara aykırı davranış yüzünden banlandınız.
        if $gettok(%ipcik,1,45) == adsl || $gettok(%ipcik,1,45) == dslb {
          write tor.txt $replace($gettok(%ipcik,2-4,45),-,.)
          .halt
        }
        if !$read(tor.txt,w,$remove($gettok($13,2,64),$chr(41))) {
          write tor.txt $remove($gettok($13,2,64),$chr(41))
          swbot1 PRIVMSG %botlogkanal $remove($gettok($13,2,64),$chr(41)) karalisteme eklendi.
        }
      }
    }
  }
}
alias bot1 {
  if !$sock(bot1) {
    sockopen bot1 %serverip %serverport
  }
}
alias bnick return  $gettok($remove($1,:),1,33)
#------- on
on *:Sockopen:proxy2:{
  sockwrite -n $sockname GET [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] HTTP/1.1
  sockwrite -n $sockname User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) 
  sockwrite -n $sockname Host: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] $crlf 
  sockwrite -n $sockname Connection: Keep-Alive $+ $crlf $+ $crlf
}
on *:Sockread:proxy2:{
  var %proxy2
  sockread %proxy2
  .tokenize 32 %proxy2
  if !$read(tor.txt,w,%proxy2) && $1 != HTTP/1.1 && $1 != Date: && $1 != Server: && $1 != X-Powered-By: && $1 != Location: && $1 != Content-Length: && $1 != Keep-Alive: && $1 != Connection: && $1 != Content-Type: {
    write tor.txt %proxy2
  }
}
on *:Sockopen:proxy3:{
  sockwrite -n $sockname GET [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] HTTP/1.1
  sockwrite -n $sockname User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) 
  sockwrite -n $sockname Host: proxy.org $crlf 
  sockwrite -n $sockname Connection: Keep-Alive $+ $crlf $+ $crlf
}
on *:Sockread:proxy3:{
  var %proxy
  sockread %proxy
  .tokenize 32 %proxy
  if *^* iswm $1- && $+(*,$chr(36),*) iswm $1- && *\* iswm $1-  {
    if !$read(tor.txt,w,$remove($3,^,\,$)) {
      write tor.txt $remove($3,^,\,$)
    }
  }
}
on *:Sockopen:proxy4:{
  sockwrite -n $sockname GET [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]  HTTP/1.1
  sockwrite -n $sockname User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) 
  sockwrite -n $sockname Host: multiproxy.org $crlf 
  sockwrite -n $sockname Connection: Keep-Alive $+ $crlf $+ $crlf
}
on *:Sockread:proxy4:{
  var %proxy
  sockread %proxy
  .tokenize 32 %proxy
  if *:* iswm $1- && *.* iswm $1- {
    if !$read(tor.txt,w,$gettok($1,1,58)) {
      write tor.txt $gettok($1,1,58)
    }
  }
}
on *:Sockopen:proxy5:{
  sockwrite -n $sockname GET /proxylist.txt  HTTP/1.1
  sockwrite -n $sockname User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) 
  sockwrite -n $sockname Host: tubeincreaser.com $crlf 
  sockwrite -n $sockname Connection: Keep-Alive $+ $crlf $+ $crlf
}
on *:Sockread:proxy5:{
  var %proxy5
  sockread %proxy5
  .tokenize 32 %proxy5
  if *:* iswm $1- && *.* iswm $1-  && *Server* !iswm $1- {
    if !$read(tor.txt,w,$gettok($1,1,58)) {
      write tor.txt $gettok($1,1,58)
    }
  }
}
on *:Sockopen:proxy6:{
  sockwrite -n $sockname GET /tor.shtml HTTP/1.1
  sockwrite -n $sockname User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) 
  sockwrite -n $sockname Host: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] $crlf 
  sockwrite -n $sockname Connection: Keep-Alive $+ $crlf $+ $crlf
}
on *:Sockread:proxy6:{
  var %proxy6
  sockread %proxy6
  .tokenize 32 %proxy6
  if $1 == HTTP/1.1 { goto end }
  if $1 == Date: { goto end  }
  if $1 == Server: { goto end }
  if $1 == Last-Modified: { goto end }
  if $1 == ETag: { goto end }
  if $1 == Accept-Ranges: { goto end }
  if $1 == Content-Length: { goto end }
  if $1 == Content-Type: { goto end }
  if *-* iswm $1- { goto end }
  if *Connection* iswm $1- { goto end }
  if */* iswm $1- { goto end }
  if $1 == 0 { goto end }
  if $regex($1-,[a-z]) { goto end }
  if $read(tor.txt,w,$gettok($remove($1,$chr(42)),1,58)) { goto end }
  else {
    write tor.txt $gettok($remove($1,$chr(42)),1,58)
  }
  :end
}
on *:Sockopen:proxy7:{
  sockwrite -n $sockname GET /socks4.txt HTTP/1.1
  sockwrite -n $sockname User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) 
  sockwrite -n $sockname Host: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] $crlf 
  sockwrite -n $sockname Connection: Keep-Alive $+ $crlf $+ $crlf
}
on *:Sockopen:tor:{
  sockwrite -n $sockname GET /?list=tor HTTP/1.1
  sockwrite -n $sockname User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) 
  sockwrite -n $sockname Host: list.iblocklist.com $crlf 
  sockwrite -n $sockname Connection: Keep-Alive $+ $crlf $+ $crlf
}
on *:Sockread:tor:{
  var %'
  sockread %'
  if *The Onion Router:* iswm %' {
    if !$read(tor.txt,w,$gettok(%',2,45)) {
      write tor.txt $gettok(%',2,45)
    }
  }
}
on *:Sockread:proxy7:{
  var %proxy7
  sockread %proxy7
  .tokenize 32 %proxy7
  if *:* iswm $1- && *.* iswm $1- && !$read(tor.txt,w,$gettok($1,1,58)) && $gettok($1,1,58) != proxy.cjb.net  {
    write tor.txt $gettok($1,1,58)
  }
}
on *:Sockopen:proxy8:{
  sockwrite -n $sockname GET /socks5.txt HTTP/1.1
  sockwrite -n $sockname User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) 
  sockwrite -n $sockname Host: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] $crlf 
  sockwrite -n $sockname Connection: Keep-Alive $+ $crlf $+ $crlf
}
on *:Sockread:proxy8:{
  var %proxy8
  sockread %proxy8
  .tokenize 32 %proxy8
  if *:* iswm $1- && *.* iswm $1- && !$read(tor.txt,w,$gettok($1,1,58)) && $gettok($1,1,58) != proxy.cjb.net  {
    write tor.txt $gettok($1,1,58)
  }
}
alias proxy8 { sockopen proxy8 [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] 80 }
alias proxy7 { sockopen proxy7 [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] 80 }
alias proxy6 { sockopen proxy6 [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] 80 }
alias proxy5 { sockopen proxy5 [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] 80 }
alias proxy4 { sockopen proxy4 [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] 80 }
alias proxy3 { sockopen proxy3 [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] 80 }
alias proxy2 { sockopen proxy2 [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] 80 }
alias guncelle {
  if $1 == oto {
    timer 0 1800 guncelle
  }
  else {
    sockopen tor list.iblocklist.com 80
  }
}
on *:sockclose:proxy8:{
  swbot1 PRIVMSG %botlogkanal  10 8.Proxy listesinin 2 güncellemesi yapıldı.
  pbn
}
on *:sockclose:proxy7:{ swbot1 PRIVMSG %botlogkanal  10 7.Proxy listesinin 2 güncellemesi yapıldı. | proxy8 }
on *:sockclose:proxy6:{ swbot1 PRIVMSG %botlogkanal  10 6.Proxy listesinin 2 güncellemesi yapıldı. | proxy7 }
on *:sockclose:proxy5:{ swbot1 PRIVMSG %botlogkanal  10 5.Proxy listesinin 2 güncellemesi yapıldı. | proxy6 }
on *:sockclose:proxy4:{ swbot1 PRIVMSG %botlogkanal  10 4.Proxy listesinin 2 güncellemesi yapıldı. | proxy5 }
on *:sockclose:proxy3:{ swbot1 PRIVMSG %botlogkanal  10 3.Proxy listesinin 2 güncellemesi yapıldı. | proxy4 }
on *:sockclose:proxy2:{ swbot1 PRIVMSG %botlogkanal  10 2.Proxy listesinin 2 güncellemesi yapıldı. | proxy3 }
on *:sockclose:tor:{ swbot1 PRIVMSG %botlogkanal  10 1.TOR/Proxy listesinin 2 güncellemesi yapıldı. | proxy2  }
#------- end
alias tor_ { if ($1) { inc %tor | sockopen $+(tor-*,%tor) [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] 80 | sockmark $+(tor-*,%tor) $1 } }
on *:sockopen:tor-*:{
  var %s sockwrite -n $sockname
  %s GET /tor.php?ip= $+ $sock($sockname).mark HTTP/1.1
  %s host: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
  %s $crlf
}
on *:sockread:tor-*:{
  var %> [ $+ [ $sockname ] ]
  sockread %> [ $+ [ $sockname ] ]
  $+(.timer,%mad,$md5($rand($rand(A,Z),$rand(A,Z)))) 1 60 sockclose $sockname
  if (*IP is LISTED* iswm %> [ $+ [ $sockname ] ]) {
    swbot1 gzline $+(*@,$sock($sockname).mark) 2h Proxy/TOR/Wingate/SC5 Alert.
    sockclose $sockname
  }
}
on *:sockopen:hppn:{
  var %s sockwrite -n $sockname
  if %sira == 0 { %s GET /proxy/socks.htm HTTP/1.1 }
  if %sira == 1 { %s GET /proxy/socks2.htm HTTP/1.1 }
  if %sira == 2 { %s GET /proxy/socks3.htm HTTP/1.1 }
  if %sira == 3 { %s GET /proxy/socks4.htm HTTP/1.1 }
  if %sira == 4 { %s GET /proxy/socks5.htm HTTP/1.1 }
  if %sira == 5 { %s GET /proxy/socks6.htm HTTP/1.1 }
  if %sira == 6 { %s GET /proxy/socks7.htm HTTP/1.1 }
  if %sira == 7 { %s GET /proxy/socks8.htm HTTP/1.1 }
  if %sira == 8 { %s GET /proxy/socks9.htm HTTP/1.1 }
  if %sira == 9 { %s GET /proxy/socks10.htm HTTP/1.1 }
  if %sira == 10 { %s GET /proxy/socks11.htm HTTP/1.1 }
  if %sira == 11 { %s GET /proxy/socks12.htm HTTP/1.1 }
  if %sira == 12 { %s GET /proxy/socks13.htm HTTP/1.1 }
  if %sira == 13 { %s GET /proxy/socks14.htm HTTP/1.1 }
  if %sira == 14 { %s GET /proxy/socks15.htm HTTP/1.1 }
  if %sira == 15 { %s GET /proxy/socks16.htm HTTP/1.1 }
  if %sira == 16 { %s GET /proxy/socks17.htm HTTP/1.1 }
  if %sira == 17 { %s GET /proxy/socks18.htm HTTP/1.1 }
  if %sira == 18 { %s GET /proxy/socks19.htm HTTP/1.1 }
  if %sira == 19 { %s GET /proxy/socks20.htm HTTP/1.1 }
  %s Host: samair.ru $+ $crlf $+ $crlf
}
/*
;h4pp3n yazdığı kod satırıdır. Sadece ekleme ve düzenleme yapılmıştır
*/
on *:sockread:hppn:{
  sockread %hppn
  if $gettok($gettok(%hppn,1,32),2,58) == 1080 {
    var %hp $gettok(%hppn,1,58)
    if !$read(tor.txt,w,%hp) {
      write tor.txt %hp
    }
  }
}
on *:sockclose:hppn:{
  if %sira == 20 {
    swbot1 PRIVMSG %botlogkanal  2Hızlandırılmış proxy listesi çekildi. Toplam $lines(tor.txt) kadar IP mevcut.
  }
  else {
    inc %sira
    sockclose hppn*
    sockopen hppn samair.ru 80
  }
}
alias pbn {
  sockclose hppn
  sockopen hppn samair.ru 80
  set %sira 0
  set %prox 0
}
 
 
alias madgir {
  if ($1) {
    inc %x1
    sockopen $+(mor*,%x1) rbls.org 80
    sockmark $+(mor*,%x1) $1
  }
}
on *:sockopen:mor*:{
  var %m sockwrite -n $sockname
  %m GET / $+ $sock($sockname).mark HTTP/1.1
  %m Host: rbls.org
  %m $crlf
}
on *:sockread:mor*:{
var %x [ $+ [ $sockname ] ]
sockread %x [ $+ [ $sockname ] ]
$+(.timer,%mad,$md5($rand($rand(A,Z),$rand(A,Z)))) 1 60 sockclose $sockname
if *is listed in opm.tornevall.org* iswm %x [ $+ [ $sockname ] ] || *is listed in rbl.efnetrbl.org* iswm %x [ $+ [ $sockname ] ] || *is listed in tor.dan.me.uk* iswm %x [ $+ [ $sockname ] ]  {
swbot1 gline $+(*@,$sock($sockname).mark) 2h Proxy/TOR/Wingate/SC5 Alert.
if !$read(tor.txt,w,$sock($sockname).mark) { write tor.txt $sock($sockname).mark }
}
}


KuL 11 Temmuz 2013 19:58

Cevap: hızlı giriş korumasına muaf ip nick
 
Paylastigin Kodlarin icinde söyle bir Kisim var, yani IP leri atmasi icin.

Kod:

    if *Client connecting* iswm $7- {
      inc %mad
      if $read(tor.txt,w,$remove($gettok($13,2,64),$chr(41))) {
        swbot1 gline *@ $+ $remove($gettok($13,2,64),$chr(41)) +1d  2Proxy yasaktır.
      }
      else {
        swbot1 who +I $12
      }
      var %ipcik = $remove($gettok($13,2,64),$chr(41))
      hinc -mu2 pp %ipcik 1
      if ($hget(pp,%ipcik) >= 3) {
        swbot1 gzline $+(*@,%ipcik) +15m  2Kurallara aykırı davranış yüzünden banlandınız.
        if $gettok(%ipcik,1,45) == adsl || $gettok(%ipcik,1,45) == dslb {
          write tor.txt $replace($gettok(%ipcik,2-4,45),-,.)
          .halt
        }
        if !$read(tor.txt,w,$remove($gettok($13,2,64),$chr(41))) {
          write tor.txt $remove($gettok($13,2,64),$chr(41))
          swbot1 PRIVMSG %botlogkanal $remove($gettok($13,2,64),$chr(41)) karalisteme eklendi.
        }
      }
    }
  }
}

Ve bunu belirteyim Coder Bilgisine Sahip falan degilim, benimki sadece bir Düsünce.

Sanirim Kodunda bulunan IP ler %ipcik diye gecmekte.

O yüzden oraya söyle birsey yazsan

if %ipcik != 88.252.44.66 {

Yani eger IP buysa islememesi icin?

Bunuda sanirim söyle ekliyebilirsin.

Kod:

    if *Client connecting* iswm $7- {
      inc %mad
      if $read(tor.txt,w,$remove($gettok($13,2,64),$chr(41))) {
      if %ipcik != 88.252.44.66 {
        swbot1 gline *@ $+ $remove($gettok($13,2,64),$chr(41)) +1d  2Proxy yasaktır.
      }
      }
      else {
        swbot1 who +I $12
      }
      var %ipcik = $remove($gettok($13,2,64),$chr(41))
      hinc -mu2 pp %ipcik 1
      if ($hget(pp,%ipcik) >= 3) {
      if %ipcik != 88.252.44.66 {
        swbot1 gzline $+(*@,%ipcik) +15m  2Kurallara aykırı davranış yüzünden banlandınız.
        if $gettok(%ipcik,1,45) == adsl || $gettok(%ipcik,1,45) == dslb {
          write tor.txt $replace($gettok(%ipcik,2-4,45),-,.)
          .halt
        }
        }
        if !$read(tor.txt,w,$remove($gettok($13,2,64),$chr(41))) {
          write tor.txt $remove($gettok($13,2,64),$chr(41))
          swbot1 PRIVMSG %botlogkanal $remove($gettok($13,2,64),$chr(41)) karalisteme eklendi.
        }
      }
    }
  }
}


Dangerous123 12 Temmuz 2013 19:15

Cevap: hızlı giriş korumasına muaf ip nick
 
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] ilgin için tşk ederim tam emin olmadığımız için denemedim bunu userleri yada sunucu botlarını atmayalım diye.. dier coder arkadaslarda yardımcı olurlarsa sağlıklı sekılde ekleriz..
olmadı son care senın dediğin şekıl deneriz

aLone 12 Temmuz 2013 23:09

Cevap: hızlı giriş korumasına muaf ip nick
 
Kod:

if *Client connecting* iswm $7- {      inc %mad      if $read(tor.txt,w,$remove($gettok($13,2,64),$chr(41))) {       if %ipcik != 88.252.44.66 {         swbot1 gline *@ $+ $remove($gettok($13,2,64),$chr(41)) +1d  2Proxy yasaktır.



       
Kod:

       
ilk bu bölüm ü algılıyacaktır giriş olduğunda bu şekilde çalışmıcana eminim ama başka ne şekilde aşılır
if !$regex($gettok($address($nick,1),2,64),/(88.244.55.66 şuan aklıma gelen bu ama yinede sen deneme bunu benımde içime sinmedi açıkcası





Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 04:46.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk