• 13-06-2024, 23:24:46
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Selamlar, son zamanlarda pentesting .c üzerine çalışıyorum. Aşağıdaki kod yapısındaki rand değerini random yerine belirli ip class range vermek istiyorum nasıl yapabilirim.
    while(alive) {
            ip.sourceIP = rand(); // randomize ip
    
            bzero(buf, sizeof(buf));                                  // clear buffer
            memcpy(buf , &ip, sizeof(ip));                            // copy ip structure over to buffer
            ip.checksum = crc16_checksum((uint16_t*)buf, sizeof(ip)); // perform checksum for ip structure with buffer
    
            pseudoheader.saddr = ip.sourceIP;
  • 13-06-2024, 23:36:35
    #2
    Hocam c konusunda bilgim yok ama gpt'den yardım almayı denediniz mi?
  • 14-06-2024, 00:05:07
    #3
    Gpt4:

    Belirli bir IP sınıfı aralığı kullanarak rastgele IP adresleri oluşturmak için mevcut kodunuzu aşağıdaki gibi değiştirebilirsiniz. Örneğin, A sınıfı (1.0.0.0 - 126.255.255.255), B sınıfı (128.0.0.0 - 191.255.255.255), veya C sınıfı (192.0.0.0 - 223.255.255.255) IP adresleri oluşturmak istiyorsanız, bu aralıkları rastgele IP üretmek için kullanabilirsiniz.
    Aşağıdaki örnekte C sınıfı IP adresleri (192.0.0.0 - 223.255.255.255) için rastgele IP adresleri oluşturulmuştur:

    #include <stdlib.h>
    #include <string.h>
    #include <stdint.h>
    
    // IP aralıkları için makrolar
    #define CLASS_A_MIN 1
    #define CLASS_A_MAX 126
    #define CLASS_B_MIN 128
    #define CLASS_B_MAX 191
    #define CLASS_C_MIN 192
    #define CLASS_C_MAX 223
    
    typedef struct {
        uint8_t octet[4];
    } IPAddr;
    
    uint16_t crc16_checksum(uint16_t *buf, size_t len);
    
    int main() {
        while(1) {
            IPAddr ip;
            
            // C sınıfı IP adresi oluştur
            ip.octet[0] = (rand() % (CLASS_C_MAX - CLASS_C_MIN + 1)) + CLASS_C_MIN;
            ip.octet[1] = rand() % 256;
            ip.octet[2] = rand() % 256;
            ip.octet[3] = rand() % 256;
    
            // ip.sourceIP'yi ip.octet ile doldur
            uint8_t buf[sizeof(ip)];
            bzero(buf, sizeof(buf));                   // Clear buffer
            memcpy(buf, &ip, sizeof(ip));              // Copy ip structure over to buffer
            uint16_t ip_checksum = crc16_checksum((uint16_t*)buf, sizeof(ip)); // Perform checksum for ip structure with buffer
    
            // Örneğin pseudoheader.saddr atama
            // pseudoheader.saddr = *(uint32_t*)ip.octet;
    
            // Debug amaçlı IP adresini yazdır
            printf("Generated IP: %d.%d.%d.%d\n", ip.octet[0], ip.octet[1], ip.octet[2], ip.octet[3]);
    
            // Burada gerekli diğer işlemler...
        }
    
        return 0;
    }
    
    // CRC16 checksum hesaplama fonksiyonu örneği
    uint16_t crc16_checksum(uint16_t *buf, size_t len) {
        uint16_t crc = 0xFFFF;
        for (size_t i = 0; i < len; i++) {
            crc ^= buf[i];
            for (uint8_t j = 0; j < 8; j++) {
                if (crc & 0x0001) {
                    crc = (crc >> 1) ^ 0xA001;
                } else {
                    crc = (crc >> 1);
                }
            }
        }
        return crc;
    }
    Bu kodda, rand() fonksiyonunu kullanarak belirli bir IP sınıf aralığında rastgele IP adresleri oluşturulur. Bu örnekte, C sınıfı IP adresleri üretilir, ancak aynı yöntemi kullanarak diğer IP sınıf aralıkları için de rastgele IP adresleri oluşturabilirsiniz. IP adresi oluşturma işlemi sırasında, her oktet için uygun aralıkta rastgele bir değer üretilir.