Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

TCP port dinleme meselesi (çoklu pot dinleme)


Pluton

Öne çıkan mesajlar

Şimdi AutoIT ile makineye gelen portları dinlemem gerekiyor. Passive mode mudur nedir öyle birşey çok içli dışlı değilim socket işlemlerinde.

Şimdi sormak istediğim şu; Genelde oyunlarda oluyor onun için oyunlardan örnek vericem.

Ben oyuna 1445 portundan giriş yaptığımı varsayalım. Bu elemanda geri dönüş yolu için 50.000 - 60.000 arasında (afaki söyledim) bilemediğim bir portdan geri dönüş sağlıyor.

Bende bu portu bilemediğim için dinleyemiyorum normal olarak. Bazı kişiler tutmuş

for($i=50000; $i<=60000; $i++)
TCPListen("0.0.0.0", $i)

Yapmış ama 10.000 tane portu dinlemek bana çok sağlıklı gelmiyor açıkcası. Bu portları kısıtlayabiliyormuyuz yada herhangi bir yöntem var mıdır bununla ilgili ?

AutoIT dedim ama C#'dan da örnek verebilirsiniz ben ona göre araştırıp bulurum :)
Link to comment
Sosyal ağlarda paylaş

Ben olayı tam anlatamadım zannedersem. Adamın kullandığı port belli ama ben hangi portu dinleyeceğimi bilmiyorum.

Şimdi oyun 1443 portuyla işlem yapıyor. Bana gelen tcp paketleri 50000 - 60000 aralığında değişiyor sürekli oturumdan oturuma.

C# 'da "karşıdan gelen 1443 portundan gelen verileri al" falan gibi bişi yapabiliyorsak çok şukela olur
Link to comment
Sosyal ağlarda paylaş

https://github.com/PcapDotNet/Pcap.Net/wiki/Pcap.Net-Tutorial-Capturing-the-packets-without-the-callback
PcapDotNet said:

Welcome to Pcap.Net - the open-source, .NET wrapper for WinPcap written in C++/CLI and C#, which features almost all WinPcap features and includes a packet interpretation framework.


biraz bakindim da
sunu deneyebilirsin, kullanimi kolay gorunuyor.

bu aralar vaktim olursa bakiyim su PcapDotNet olayina, enteresan gorunuyor sdfsdf
Link to comment
Sosyal ağlarda paylaş

sniffing'se direk pcap ve reyou'nun dedigi wrapperla o zaman işin.

sen sunucu tarafında mısın client tarafın da mı? oyun dediğine göre muhtemelen client tarafındansın, mesajın burdan sonrasında ona göre devam edecem.

yazacağın filter buna göre olacak yani hangi paketlerin pcap tarafından sana verileceği.

bu filterede mesela karşı tarafın belirli sabit bir ip'si varsa veya dns regex'i mevcutsa, bu sayede kafadan oyunla alakasız bütün paketleri dışarda bırakabilirsin.

bu sayede oyunla ilgili paketler hangi porttan geliyo olursa olsun, pcap handle etmen için sana gönderir.

biz vakti zamanın da diablo 3 emulatorunu yaparken, yazdıgımız packet analyzer bu sekilde calısıyordu.

blizzard oyun sunucuları regexle filtreye eklemis, oradan gelen butun paketleri okuyup, istediğimiz paketleri sonra ki adımda analiz etmek için ayırıyorduk.

hatta bak direk örnek source code vereyim;

https://github.com/DarkLotus/mooege/blob/master/src/tools/GameServer/GSPacketDumper/PacketReader.cs



private const string GameServerRange = "12.129.237.0/24";
private const string GameServerIPPattern = "12.129.237";
// Open the capture file
using (PacketCommunicator communicator =
selectedDevice.Open(65536, // portion of the packet to capture
// 65536 guarantees that the whole packet will be captured on all the link layers
PacketDeviceOpenAttributes.Promiscuous, // promiscuous mode
1000)) // read timeout
{
communicator.SetFilter("tcp port 1119 and ip net " + GameServerRange);

// Read and dispatch packets until EOF is reached
communicator.ReceivePackets(0, DispatcherHandler);
}


bak mesela bu filter, senin oyun hangi portu kullanırsan kullansın, oyunun sunucu tarafı 1119 portunu kullarak sessionları accept ettiği için çalışıyor. oyun client'ı istediği portu kullansın farketmez.

birde GameServerRange sayesinde adamların ip subnet'i üzerinden de filtreleme yapıyoruz.

Özetle bu filter, diablo 3'ün game server ip networkune giden, serverın 1119 portunu üzerinde tcp accept yaptığı sessionların paketlerini yakalar.
Link to comment
Sosyal ağlarda paylaş

senko said:

peki bişi sorcam adam 50k-60k arasında değişiyor dedi ya gelen port.
her tcp connection kurulduğunda bu port aralığını taratmak zorunda mı?


Client karsidaki port'a baglaninca iletisimin devamliligi icin random bi local port aciyor iste. 50-60K arasinda aciliyo dedigi random port o random port.

Haliyle network'u sniff ederken source'a gore degil, destination'a gore filtrelemesi gerekiyo.
Link to comment
Sosyal ağlarda paylaş

Pluton said:

İlk amacım sniffing


abi şimdi bi kaç soruyu cevaplarsan daha net yardımcı olabiliriz.

1. seçenek
öncelikle senin yazacağın bu program oyun sunucusu üzerinde mi çalışacak? yani oyun sunucusuna bağlı bütün oyunculardan gelen paketleri mi okumak istiyorsun?

eğer bu seçenek geçerli ise platform linux mu windows mu?

2. seçenek, yazacağın program, client tarafında yani senin oyunun istemcinin olduğu bilgisayarda mı çalışacak ve sunucu ile senin oyunun arasında ki paketleri mi izleyecek.
Link to comment
Sosyal ağlarda paylaş

Abi şimdi olay şu şekilde;

Oyun bana ait değil. Oyun Facebook'da flash (swf) ile tcp işlemleri yapan bir oyun.

Benim ilk amacım bu oyundan gelen TCP paketlerini parse ederek, nerde olduğumu, bilgilerimi alacağım.

İkinci amacım ise TCP paket göndererek oyun içinde bazı işlemler yaptırmam gerekiyor.
Link to comment
Sosyal ağlarda paylaş

öncelikle senin port önemli değil karşıdan gelen port önemli

wireshark i indir paketleri yakalayıp değiştiriğ istediğin paketi geri yollarsın yada intercep yapıp anlık değişiklik bile yaparsın ;)

Yani peki kendi appni yazmana gerek yok ama illa yazcam diyorsanda paketleri bunla yakalayabilirsin hatta .net source u olması gerekiyor svn sitesinde bak bi
Link to comment
Sosyal ağlarda paylaş

  • 2 hafta sonra ...
Portu degil, interface i dinleyerek, gelen paketlerden DstPort 'u 1443 olanlari filtreleyeceksin.

Editor guzel ornek vermis. Wiresharkla falan yap iste ugrasma.

Zaten kazara 1443 'u adam SSL uzerinden REST falanla yapmissa, sittin sene oyunla alakali internal bilgi alamayacaksin.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...