Forum: Diğer Konular RSS
İnternet Trafiğini Denetlemek
İbrahim #1
Üye Eki 2015 tarihinden beri · 142 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: İnternet Trafiğini Denetlemek
Selamün Aleyküm;
Ben internet trafiğini denetlemek istiyorum. Bildiğimiz üzere gerek mobil işletim sistemlerinde gerek pc işletim sistemlerinde bazı uygulamalar internet kullanarak indirme ve/veya yükleme yaparlar. Ben de sistemde kullanıcının kurduğu bu uygulamalar nelerdir ve ne kadar internet harcıyorlar uygulamamda göstermek istiyorum. Ayrıca bu uygulamaların internet kullanımını kısıtlamak istiyorum. Bunu nasıl yapabilirim? Yani bunu yapabilmek için hangi kütüphaneleri veya sdk'ları kullanmak gerekiyor? Ben C++ / Qt ile yapmak istiyorum ama zorunlu değil. Bu işin genel mantığı nedir? Teşekkürler!
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4448 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Geçmekte olan IP paketlerine bakılıyor. İşletim sisteminde bunu sağlayan olanaklar var. Ama artık yazmaya hiç gerek yok çünkü bu işi yapan ücretsiz araçlar da var. "monitor and analyze internet traffic" diye aratınca bulunuyor.

Ali
İbrahim #3
Üye Eki 2015 tarihinden beri · 142 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Mobilde bu iş bilidğim kadarıyla tam gelişmemiş. Tabii ki benim bildiğim kadarıyla öyle.
acehreli:
Geçmekte olan IP paketlerine bakılıyor.
Bu tam olarak ne demek?
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4448 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ağ kartı, yerel ağdaki trafiğin kendisine yönlenmiş olmayanlarını da görebilir. Ağa bu biçimde bağlanmaya promiscuous mode deniyor.

Tabii bu işin yalnızca gözlemleme tarafını hallediyor. Bu bilgiden yola çıkarak firewall vs. ayarlar değiştirilebilir.

Ali
İbrahim #5
Üye Eki 2015 tarihinden beri · 142 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Tekrardan merhaba;
Ben bu işi Android tarafında yapmak için TrafficStats (http://developer.android.com/reference/android/net/Traffic…) adlı sınıfı buldum (Java ile kullanılıyor). Ama bu sınıfta en fazla yapabildiğimiz şey gördüğüm kadarıyla hangi uygulama ne kadar internet verisi tüketiyor onu göstermek. Tamam ama benim bir de bu uygulamalara veri kullanımı konusunda kısıtlama getirmem gerekli lakin bunu nasıl yapacağım? İnternette Android ile ilgili böyle bir şeye rastlamadım. Acaba istediğimiz şeyi yapamayacak mıyız ki? Ayrıca bunu java yerine C++'da veya başka dillerde kullanma şansımız hiç yok mu? Tüm sınıflar malum Java sınıfları :). JNI falan var ama neredeyse tüm Java sınıflarını C++'a gömmek gerekiyor.
acehreli (Moderatör) #6
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4448 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Bu konu beni aşıyor. Belki "data limiter" gibi sözcüklerle aratılabilir.

Ali
kerdemdemir #7
Üye Eyl 2013 tarihinden beri · 94 mesaj · Konum: Danimarka
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
İbrahim Merhaba,

Bu işi 3 sene yapmış biri olarak sorularına cevap verebilirim diye düşünüyorum.

Eğer Trafik dinleyici(Network Sniffer) yapmak istiyorsan en alt seviyede kullanılan kütüphane libpcap'tir.
https://sourceforge.net/projects/libpcap/, http://www.tcpdump.org/. Bu kütüphaneyi kullanarak işletim sistemini atlayarak direk FPGA ile(network kartı) haberleşebilirsin. Bu kütüphane ile network kartı bende dinlemek istiyorum diye istekde bulunursan işletim sistemine yollanan her paketin bir kopyasıda senin programına gönderilir. Bu konu biraz derin tabi tamam paketleri aldın ama TCP/IP katmanını yazman gerekicektir. Artık arkanda bir işletim sistemi yok çünkü. Senin sorduğun kadar konuyu derinleştirebileceğimi umuyorum. Örn https parse etmek istiyosan OpenSLL veya HTTP parse etmek istiyosan LibHTTP gibi kütüphaneler tavsiye edebilirim.

Eğer kod yazmadan bir şeyler yapmak istersen "WireShark" programını indir. Kurduğun bilgisayardaki paketleri direk gözlemleyebildiğini göreceksin.

Daha performanslı bir şey lazımsa  https://www.snort.org/ gibi açık kaynaklı programları deneyebilirsin. Bunlar ciddi miktarda trafik dinleyebilirler saniyede gigabytelar seviyesinde.

Tabi önemli olan dinlemek istediğin trafiğe nasıl ulaşıcağın. Biz network operatörlerine çalıştığımız için Örn vodafone bize networkunde bütün trafiğin geçtiği çok güçlü bir server veriyordu bunu izinsiz yapman imkansız. Küçük çaplı networkleri korsan yollarla yapma işleri apayrı konular ve etik olmadığı için paylaşmayacağım.

Saygılarımla
Erdem.
İbrahim #8
Üye Eki 2015 tarihinden beri · 142 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
@kerdemdemir Teşekkürler. Peki bu kütüphaneler ile internet ağını dinleyebiliriz lakin buna müdahale edebilir miyiz?
Mesela X uygulaması kişinin sisteminde 500MB internet yedikten sonra (yani kişinin interneti 500MB gitmiş) bu X uygulamasının artık interneti kullanmamasını sağlayabilir miyiz? Yani interneti yemeyi bıraktırabilir miyiz? Teşekkürler.
acehreli (Moderatör) #9
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4448 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ben bu konunun yalnızca adını biliyorum: "traffic shaper", "bandwith limiter", vs. diye aratabilirsin.

Ali
kerdemdemir #10
Üye Eyl 2013 tarihinden beri · 94 mesaj · Konum: Danimarka
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Evet edebiliriz. Ali hocamın bahsettiği "Traffic Shaper" yazmıştım ben.

Internet trafiğini iki şekilde alabilirsin a paketi gönderen olduğunu düşünelim örn. youtube.com.
b bizim dinleyicimiz(man in the middle) c de videoyu oynatmak isteyen kişi.

1 - Capture modunda, bize paketin bir kopyası gelir. 


a ------------- |----------------- c
                   |
                   |
                   b

Bu durumda şunu yapıp paketi engelleyebiliriz:


a -------------  |----------------- c
 |                  |                     |
 |                  |                     |
 --------------- b------------------
     TCP(Reset)    HTTP(Redirection 307)



Bu durumda a'nın paketini alır almaz a'ya TCP reset gönderebiliriz ve C'ye eğer söz konusu HTTP request'i ise
307 gönderebiliriz. Bu durumda bu TCP oturumu sonlandırılmış olur.


2 - Inline modunda

a ------------- b----------------- c

Inline modu riskli bir moddur. Eğer senin makineye bir şey olursa bütün internet kesilebilir.
Burumda sadece a 'ya reset gönderip. Paketi "drop" etme olasılığımız vardır. Çünkü artık C ye bir kopyası gitmez.


b makinesinde genelde kurallar koyulur. İşte 192.168.10.23 Ip li makine bittorrent hızı 100Kb yi geçmesin veya 1 ayda 500 mb yi geçmesin gibi. Bu kuralları okuyan b makinesindaki programımız her IP için paketleri ayrı ayrı inceler ve o IP nin ne kadar trafik kullandığını(bazen protocol bazlı) filan bellekte tutar.  Sonra en sonunda eğer
kurallardan fazla kullanım olursa yukardaki işlemlerle bağlantıyı sonlandırır.
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-08-16, 20:44:02 (UTC -07:00)