Şimdi Ara

WinPcap TCP Checksum sorunu

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
2
Cevap
0
Favori
267
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhabalar, winpcap ile karşı sunucuya tcp syn paketi göndermek istiyorum fakat şuana kadar denediğim her yöntemde checksum yanlış çıkıyor

    Bu gönderdiğim paket
    unsigned char* vnPSon; 

    vnPSon = new unsigned char[54];
    memset((void*)vnPSon, '\0', 54);

    //ETHERNET II
    memcpy((void*)vnPSon, (void*)"\xFF\xFF\xFF\xFF\xFF\xFF", 6); //Broadcast
    memcpy((void*)(vnPSon+6), (void*)srcMac, 6); //Source MAC
    memcpy((void*)(vnPSon+12), (void*)"\x08", 2); //IP Header

    //IP HEADER
    memcpy((void*)(vnPSon+14), (void*)"\x45", 1); //IPV4
    memcpy((void*)(vnPSon+15), (void*)"\x00", 1); //Differnatied Services
    unsigned short kpr = htons(46);
    memcpy((void*)(vnPSon+16), (void*)&kpr , 2); //Header boyutu
    memcpy((void*)(vnPSon+18), (void*)"\x0000", 2); //Id
    memcpy((void*)(vnPSon+20), (void*)"\x40", 1); //IP Header flag
    memcpy((void*)(vnPSon+21), (void*)"\x00", 1); //Offset
    memcpy((void*)(vnPSon+22), (void*)"\x5F", 1); //TTL 255 saniye
    memcpy((void*)(vnPSon+23), (void*)"\x06", 1); //Protokol
    memcpy((void*)(vnPSon+24), (void*)"\x00\x00", 2); //Checksum
    memcpy((void*)(vnPSon+26), (void*)&srcIp, 4); //Yerel ip
    memcpy((void*)(vnPSon+30), (void*)&dstIp, 4); //Hedef ip

    //TCP HEADER
    memcpy((void*)(vnPSon+34), (void*)"\x0020", 2); //Kaynak port
    unsigned short test = htons(dstPort);
    memcpy((void*)(vnPSon+36), (void*)&test, 2); //Hedef port
    memcpy((void*)(vnPSon+38), (void*)"\x00\x00\x00\x00", 4); //Sequence number
    memcpy((void*)(vnPSon+42), (void*)"\x00\x00\x00\x00", 4); //Ack number
    memcpy((void*)(vnPSon+46), (void*)"\x50", 1); //TCP Offset
    memcpy((void*)(vnPSon+47), (void*)"\x02", 1); //Flag syn
    memcpy((void*)(vnPSon+48), (void*)"\xFF", 2); //Window
    memcpy((void*)(vnPSon+50), (void*)"\x0000", 2); //Checksum
    memcpy((void*)(vnPSon+52), (void*)"\x0000", 2); //Urgent point

    Pakete wireshark ile baktığımda tcp checksum hariç hiçbir sorunu yok

    Bu tcp checksum için kullandığım en son yöntem
    unsigned short *tempTcp = (unsigned short*)malloc(32); 

    memcpy((void*)tempTcp, (void*)(vnPSon+26), 8);//Kaynak ve hedef ip
    memcpy((void*)(tempTcp+8), (void*)"\x00", 1);//Reserved
    memcpy((void*)(tempTcp+9), (void*)"\x06", 1);//Protokol
    memcpy((void*)(tempTcp+10), (void*)"\x0014", 2);//TCP Length
    memcpy((void*)(tempTcp+12), (void*)(vnPSon+34), 20);

    register unsigned long csum=0;
    unsigned short *buffer=(unsigned short*)tempTcp;
    unsigned short size=32;
    while(size>1)
    {
    csum += *buffer++;
    size -= 2;
    }
    if(size>1) csum += *(unsigned char*)buffer;

    csum = (csum>>16) + (csum & 0xFFFF);
    csum += (csum>>16);
    return htons(~csum);


    Başka yöntemler için bolca araştırdım bulduğum her yöntemi denedim fakat hepsi yanlış çıkıyor şimdiden teşekkürler

    Ek olarak paket
     WinPcap TCP Checksum sorunu



    < Bu mesaj bu kişi tarafından değiştirildi Polkakorowakurwa -- 6 Temmuz 2015; 17:54:50 >







  • Aynı sorunla bende 2 yıl önce karşılaşmıştım bende çözümü bulamadım şuan c++yı bırakalı çok oldu aklımda kalan bilgi hesap makinesi yapacak düzeyde bile değil yinede bilen biri arkadaşa cevap verebilir mi?
  • Yapay Zeka’dan İlgili Konular
    Dns Probe started sorunu
    10 yıl önce açıldı
    Swapfile.sys hatası
    7 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.