Ip'den tespit edip sorgulatman için bize gerekli veriler neler olmalıdır?
- Kişinin ip'sini görebilmek
- Bu ip'yi ayıklamak
- Ve kendi ip ağımızla karşılaştırmak.
Kişinin ip'sini görebilmek için gerekli flaglara sahip olduğumuzu varsayıyorum. En basit yolu ile bir nick ipsini "
Whois" çekerek görebiliriz. Yani bize gerekli olan verilerden ilkini sağlıyoruz.
Whois çektiğimizde önümüze şöyle bir tablo gelecektir muhtemelen;
Kod: Kodu kopyalamak için üzerine çift tıklayın!
1 ® Nick : 12 SuLh
1 ® Adres : 12 .@
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]Admin.ESohbet.Net
1 ® Full Name : 12 .
SuLh +iowghraAsOxNWqtp +kcfFvGqSso modlarını kullanıyor
SuLh *@* 12.12.12.12 adresinden bağlantı kuruyor
Burada ip'yi ayıklamaya çalışmamız gerekecek. Aslında whoisin bize döndüğü cevaplar, ham veri dediğimiz
rawlara tekabül ediyor. Server bize bu rawları numaralarıyla dönüyor ve bize buna göre işlem olanağı sunuyor. Daha detaylı anlatımı için:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Bize gerekli olan kısmı bulalım, yani whois içerisinde gelen rawlardan hangisi ip'yi bize veriyor bunu görelim. bunun için şöyle bir kod deneyelim.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
raw *:*: { echo -a $numeric : $1- }
yaptığımızda artık serverın bütün raw mesajlarını numaralarıyla birlikte görebiliriz. şimdi bakalım whoisin rawında neler var?
Kod: Kodu kopyalamak için üzerine çift tıklayın!
311 : SuLh SuLh . RootAdmin.ESohbet.Net * .
379 : SuLh SuLh +iowghraAsOxNWqtp +kcfFvGqSso modlarını kullanıyor
SuLh +iowghraAsOxNWqtp +kcfFvGqSso modlarını kullanıyor
378 : SuLh SuLh *@* 12.12.12.12 adresinden bağlantı kuruyor
yani gördüğümüz gibi 378 rawı benim ip'yi verdi. burası bize ileride lazım olacak. burayıda hallettiysek başlayalım o halde.
öncelikle bir engel adında alias oluşturalım, Kod: Kodu kopyalamak için üzerine çift tıklayın!
alias engel {
daha sonra işi biraz daha süslendirelim ve gerekli
if (eğer) koşullarını ekleyelim.
Not: IF-THEN-ELSE için detaylı anlatım:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Hiçbir şey yazılmadığını varsayalım ve bunun gerçekleşmesi halinde uyarı verip işlemi sonlandıralım:
Kod: Kodu kopyalamak için üzerine çift tıklayın!
if !$1 { echo -a Engellenecek bir ip giriniz! | return }
Not: aliaslarda belirlenen alias kısayolundan sonra gelen kelime mIRC tarafından $1 olarak algılanır, alias için detaylı anlatım:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Daha sonra ip yerine nick girmeye çalıştığımızı varsayalım ve buna uyarı verelim.
+
İçinde "." olmadığı ihtimalini göze alalım, yoksa bu ip olarak belirlenemeyecektir.
+
Son olarak 2 kısımdan fazla ip girme olasılığını göze olalım. ( Statik ip'lerde kurum tarafından atanan ipnin son iki hanesi değişir.)
Kod: Kodu kopyalamak için üzerine çift tıklayın!
if !$regex($1,/^[0-9]/) || !$regex($1,\.) || $token($1,0,46) > 2 { echo -a Lutfen ilk iki hanesini yazacağınız "ip" giriniz. | return }
if !$regex($1,/^[0-9]/) || !$regex($1,\.) : Burada ilk olarak 0-9 arası rakamlarla başlamıyorsa ve içerisinde "." karakteri geçmiyorsa anlamı çıkartabiliriz.
$token($1,0,46) > 2 burada yazdığımız kelime eğer ascii kodu 46 olan "." karakterinden 2 den fazla içeriyorsa anlamı taşır.
Ve son olarak ip'nin daha önce eklendiği ihtimalini göze alalım;
bunu $read ile sorgulatalım, $read ve dosya/klasör identifiersları detaylı kullanımı için:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] Kod: Kodu kopyalamak için üzerine çift tıklayın!
if $read(engel.txt,w,$1) { echo -a Daha once bu ip'yi eklediniz. | return }
şimdi eğer seçeneklerimiz doğrulanıyorsa, $1 ipsini engel.txt'mize yazdıralım..
Kod: Kodu kopyalamak için üzerine çift tıklayın!
write engel.txt $1
ve aliasımızı bitirelim artık, sorgulatmaya geçelim.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
alias engel {
if !$1 { echo -a Engellenecek bir ip giriniz. | return }
if !$regex($1,/^[0-9]/) || !$regex($1,\.) || $token($1,0,46) > 2 { echo -a Lutfen ilk iki hanesini yazacağınız "ip" giriniz. | return }
if $read(engel.txt,w,$1) { echo -a Daha once bu ip'yi eklediniz. | return }
echo -a Engel listesine $1 'i eklediniz.
write engel.txt $1
}
Şimdi "
open" pencere açıldığında anlamı taşıyan eventimizi kullanalım.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
on *:open:? {
ve özelimize gelen nickin sunucu da herhangi bir botun/servisin nicki olup olmadığını algılatalım.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
if $istok(NickServ Chanserv OperServ Radyo SuLh,$nick,32) { return }
gelen nicki bir değişkene aktaralım, bu bize raw kontrolü sırasında kolaylık sağlayacaktır.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
set %:enick $nick
eh nicki de aldığımıza göre bi whois çektirebiliriz artık...
Kod: Kodu kopyalamak için üzerine çift tıklayın!
whois $nick
open eventiyle de işimiz bitti.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
on *:open:? {
if $istok(NickServ Chanserv OperServ Radyo Sr,$nick,32) { echo -a SuLh bu. | return }
set %:enick $nick
whois $nick
}
Şimdi başlayalım
raw sorgusuna:
Kod: Kodu kopyalamak için üzerine çift tıklayın!
raw 378:*: {
evet bu rawı en başta açıklamıştık, şimdi burada 378 numaralı rawdan bilgi geldiğinde harekete geç diyoruz.
şimdi farklı bir zamanda çektiğimiz whoisin etkilememesi için %:enick değişkenine nickimizi atamıştık bunu sorgulatalım.
if $2 = %:enick {
daha sonra ip ağımızda olup olmadığına bakalım, bunu yine $read ile yapacağız ve $token ile ayrıştıracağız.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
if $read(engel.txt,w,$token($4,1-2,46)) {
eğer bu koşulda tutuyor ise;
Kod: Kodu kopyalamak için üzerine çift tıklayın!
ignore %:enick
close -m %:enick
msg %:enick Engel listemdesin!
artık gereken şeyleri uygulatalım.. ve sonlandıralım.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
raw 378:*: {
if $2 = %:enick {
if $read(engel.txt,w,$token($4,1-2,46)) {
ignore %:enick
close -m %:enick
msg %:enick Engel listemdesin!
}
}
}
epeydir hastaydım, özlediğimden bu kadar ayrıntıya girdim :p