C++ ve PHP kullanarak hwid lisans sistemi için basit kodlama ve bazı güvenlik önlemleri hakkında bilgi!

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
re work
Süper Üye
Katılım
31 Ocak 2016
Mesajlar
952
Çözümler
8
Tepki puanı
458
Ödüller
9
10 HİZMET YILI
C++ ve PHP dillerini kullanarak bir HWID lisans sistemi kodlarını paylaşabilirim. Ancak, kodların tamamını burada paylaşmak zor olabilir, çünkü oldukça detaylı bir konu ve kod miktarı fazla olabilir. Bunun yerine, size örnek bir çerçeve sunabilirim ve ihtiyaçlarınıza göre uyarlamalar yapabilirsiniz. Ayrıca, bazı güvenlik önlemlerini ve API'yi şifreleme ile ilgili detayları içeren açıklamaları da verebilirim.

Öncelikle, PHP tarafındaki PDO kullanarak HWID lisans sistemi kodlarını aşağıda bulabilirsiniz:

PHP:
<?php
// Veritabanı bağlantısı
$host = "localhost";
$dbname = "your_database_name";
$username = "your_username";
$password = "your_password";
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');

try {
    $db = new PDO("mysql:host=$host;dbname=$dbname", $username, $password, $options);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    die("Veritabanı bağlantısı başarısız oldu: " . $e->getMessage());
}

// Lisansı kontrol etmek için API endpoint'i
if(isset($_GET['hwid'])) {
    $hwid = $_GET['hwid'];
 
    // API'ye gönderilen verileri şifreleme
    // Örneğin, burada hash işlemi yapabilirsiniz
    // $hwid = hash('sha256', $hwid);
 
    try {
        // Lisansı veritabanında kontrol etme
        $stmt = $db->prepare("SELECT * FROM licenses WHERE hwid = :hwid AND expiry_date > NOW() LIMIT 1");
        $stmt->bindParam(':hwid', $hwid);
        $stmt->execute();
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
     
        if($result) {
            // Lisans geçerli
            echo "Lisans geçerli.";
        } else {
            // Lisans geçersiz
            echo "Lisans geçersiz.";
        }
    } catch(PDOException $e) {
        echo "Hata: " . $e->getMessage();
    }
}
?>

Yukarıdaki PHP kodu, GET isteği ile hwid parametresini alır ve bu HWID'nin veritabanında geçerli bir lisans olup olmadığını kontrol eder. Bu noktada, veritabanı bağlantısı ve lisans tablosunun yapısını uygun şekilde ayarlamanız gerekmektedir.

C++ tarafında, HWID lisans sistemiyle ilgili örnek bir kod aşağıda verilmiştir:

C++:
#include <iostream>
#include <string>
#include <Windows.h>

// HWID'yi alma fonksiyonu
std::string GetHWID()
{
    std::string hwid;

    // CPU ID
    char cpuID[1024];
    DWORD bufSize = sizeof(cpuID);
    __asm
    {
        push eax
        push ebx
        push ecx
        push edx

        mov eax, 1
        cpuid
        mov ebx, cpuID
        mov[ebx], eax
        mov[eax + 4], ebx
        mov[eax + 8], ecx
        mov[eax + 12], edx

        pop edx
        pop ecx
        pop ebx
        pop eax
    }

    hwid += cpuID;

    // Diğer bileşenlerin HWID'ye eklenmesi (MAC adresi, hardware ID, Windows key, BIOS ID, SSD ID, vb.)

    return hwid;
}

int main()
{
    std::string hwid = GetHWID();

    // HWID'yi API'ye gönderme işlemi
    // Burada GET isteği yapabilir ve PHP API endpoint'iyle iletişim kurabilirsiniz

    return 0;
}

Yukarıdaki C++ kodu, HWID'yi alma işlevini sağlar ve bu HWID'yi PHP tarafındaki API'ye göndermek için kullanabilirsiniz. Bu koddaki diğer bileşenlerin HWID'ye eklenmesi işlemlerini gerçekleştirmeniz gerekmektedir (MAC adresi, hardware ID, Windows key, BIOS ID, SSD ID, vb.).

Güvenlik önlemleri için, HTTPS protokolünü kullanmanızı ve API'ye veri gönderirken şifreleme yöntemlerini (örn. SSL/TLS) kullanmanızı öneririm. Bunlar, verilerin güvenli bir şekilde iletilmesini sağlar.

Ayrıca, lisansın başlangıç ve bitiş tarihlerini takip etmek için bir veritabanı tablosu veya başka bir yöntem kullanmanız gerekebilir. Süresi dolan lisanslara erişimi engellemek için, PHP kodunda "expiry_date" alanını kontrol etmekteyiz ve geçerli tarihten önceki lisansları reddetmekteyiz.

Unutmayın, veritabanı tablolarını ve diğer kod kısımlarını kendi ihtiyaçlarınıza göre uyarlamalısınız. Ayrıca, güvenlik konularında dikkatli olmanız ve ihtiyaçlarınıza göre ek güvenlik önlemleri eklemeniz önemlidir. Bu sadece bir örnek çerçeve olduğu için, tam bir güvenlik çözümü sağlamayabilir.
Aşağıda veritabanı bağlantısı ve lisans tablosunun yapısını gösteren bir örnek kod vereceğim. Ayrıca, diğer bileşenlerin HWID'ye eklenmesi işlemlerini ve lisansın başlangıç ve bitiş tarihlerini takip etme ve süresi dolan lisanslara erişimi engelleme kodlarını da ekleyeceğim.

MySQL veritabanı bağlantısı ve lisans tablosu yapısı:

PHP:
<?php
$host = "localhost";
$dbname = "your_database_name";
$username = "your_username";
$password = "your_password";
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');

try {
    $db = new PDO("mysql:host=$host;dbname=$dbname", $username, $password, $options);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    die("Veritabanı bağlantısı başarısız oldu: " . $e->getMessage());
}

// Lisans tablosunun oluşturulması
try {
    $db->exec("CREATE TABLE IF NOT EXISTS licenses (
        id INT(11) AUTO_INCREMENT PRIMARY KEY,
        hwid VARCHAR(255) NOT NULL,
        expiry_date DATETIME NOT NULL
    )");
} catch(PDOException $e) {
    die("Lisans tablosu oluşturulamadı: " . $e->getMessage());
}
?>


Yukarıdaki PHP kodu, veritabanı bağlantısını gerçekleştirir ve licenses adında bir tablo oluşturur. Bu tablo, lisansları ve bunların geçerlilik sürelerini tutmak için kullanılır.

Diğer bileşenlerin HWID'ye eklenmesi işlemlerini gerçekleştirmek için, HWID'yi alırken ilgili bileşenlerin değerlerini toplamanız gerekmektedir. Örneğin, MAC adresini almak için exec() fonksiyonunu kullanabilirsiniz:


PHP:
<?php
// MAC adresini alma fonksiyonu
function GetMacAddress()
{
    $macAddr = false;
    $arp = `arp -a`;
    $lines = explode("\n", $arp);

    foreach($lines as $line) {
        $cols = preg_split('/\s+/', trim($line));

        if(isset($cols[1]) && $cols[1] == "(Interface)") {
            $macAddr = $cols[2];
            break;
        }
    }

    return $macAddr;
}

$macAddress = GetMacAddress();
?>

Bu örnekte, arp -a komutu kullanarak MAC adresini alıyoruz. Diğer bileşenlerin değerlerini de benzer şekilde alabilir ve HWID'ye ekleyebilirsiniz.

Lisansın başlangıç ve bitiş tarihlerini takip etmek için, expiry_date adında bir sütun oluşturduk. Lisansın süresini ayarladıktan sonra, bu tarihle ilgili karşılaştırmaları yaparak lisansın geçerli olup olmadığını kontrol edebilirsiniz. Örneğin, API kodunda aşağıdaki gibi bir kontrol yapabilirsiniz:


PHP:
<?php
// Lisansı kontrol etmek için API endpoint'i
if(isset($_GET['hwid'])) {
    $hwid = $_GET['hwid'];
 
    // API'ye gönderilen verileri şifreleme
    // Örneğin, burada hash işlemi yapabilirsiniz
    // $hwid = hash('sha256', $hwid);
 
    try {
        // Lisansı veritabanında kontrol etme
        $stmt = $db->prepare("SELECT * FROM licenses WHERE hwid = :hwid AND expiry_date > NOW() LIMIT 1");
        $stmt->bindParam(':hwid', $hwid);
        $stmt->execute();
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
     
        if($result) {
            // Lisans geçerli
            echo "Lisans geçerli.";
        } else {
            // Lisans geçersiz
            echo "Lisans geçersiz.";
        }
    } catch(PDOException $e) {
        echo "Hata: " . $e->getMessage();
    }
}
?>

Yukarıdaki kod, expiry_date > NOW() kontrolüyle lisansın geçerli olup olmadığını kontrol eder. Lisansın başlangıç ve bitiş tarihlerini uygun şekilde ayarlamalısınız.

Bu örnekler, veritabanı bağlantısı, lisans tablosu yapısı, diğer bileşenlerin HWID'ye eklenmesi ve lisansın başlangıç ve bitiş tarihlerinin takip edilmesi için size bir temel sağlar. Kodları ihtiyaçlarınıza göre uyarlayabilir ve ek güvenlik önlemleri ekleyebilirsiniz. Güvenlik açısından SSL/TLS kullanımını öneririm ve API verilerini doğru bir şekilde şifreleyerek güvenliği artırabilirsiniz.

SSL/TLS kullanımını ve API verilerini doğru bir şekilde şifreleyerek güvenliği artırmak için örnek bir kod verebilirim. Aşağıdaki örnekte, PHP tarafında HTTPS protokolünü kullanarak güvenli bir bağlantı kuracağız ve API verilerini şifreleyeceğiz:


PHP:
<?php
// Veritabanı bağlantısı
$host = "localhost";
$dbname = "your_database_name";
$username = "your_username";
$password = "your_password";
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');

try {
    $db = new PDO("mysql:host=$host;dbname=$dbname", $username, $password, $options);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    die("Veritabanı bağlantısı başarısız oldu: " . $e->getMessage());
}

// Lisansı kontrol etmek için API endpoint'i
if(isset($_GET['hwid'])) {
    $hwid = $_GET['hwid'];
 
    // API'ye gönderilen verileri şifreleme
    // Örneğin, burada SSL/TLS kullanabilirsiniz
    // ve verileri şifreleyip çözmek için openssl_encrypt() ve openssl_decrypt() işlevlerini kullanabilirsiniz

    // SSL/TLS kullanarak güvenli bağlantı oluşturma
    $contextOptions = array(
        'ssl' => array(
            'verify_peer' => false, // SSL sertifikasını kontrol etme
            'verify_peer_name' => false, // SSL sertifikasının ismini kontrol etme
        ),
    );
    $context = stream_context_create($contextOptions);

    $url = 'https://your-domain.com/your-api-endpoint.php?hwid=' . urlencode($hwid);
    $response = file_get_contents($url, false, $context);

    if($response !== false) {
        // API yanıtını çözme
        // Örneğin, burada openssl_decrypt() işlevini kullanabilirsiniz

        echo "API yanıtı: " . $response;
    } else {
        echo "API isteği başarısız oldu.";
    }
}
?>

Yukarıdaki kodda, HTTPS protokolünü kullanarak güvenli bir bağlantı oluşturmak için stream_context_create() fonksiyonunu ve $contextOptions değişkenini kullanıyoruz. Bu, sunucu ile güvenli bir şekilde iletişim kurmamızı sağlar. file_get_contents() fonksiyonunu kullanarak API endpoint'ine HTTPS üzerinden istek yapıyoruz.

Verileri şifrelemek için openssl_encrypt() fonksiyonunu kullanabilir ve verileri çözmek için openssl_decrypt() fonksiyonunu kullanabilirsiniz. Bu fonksiyonları kullanarak, API verilerini şifreleyebilir ve çözebilirsiniz. Şifreleme ve çözme işlemleri için uygun anahtarlar ve algoritma parametrelerini ayarlamanız gerekmektedir.

Bu örnekte, SSL/TLS kullanımı ve API verilerinin şifrelenmesiyle güvenliği artırabilirsiniz. Ancak, gerçek uygulamada daha kapsamlı güvenlik önlemleri almanız ve güvenlik gereksinimlerinize göre kodları uyarlamak önemlidir.

Php kodlarında bukadar detaylı yazmamın sebebi karşılaştırma yapmanızın daha kolay olması için.

Aşağıda C++ dilinde diğer bileşenlerin HWID'ye eklenmesi ve HWID'nin API'ye gönderilmesi için bir örnek kod vereceğim:



C++:
#include <iostream>

#include <windows.h>

#include <winreg.h>

#include <winsock2.h>

#include <ws2tcpip.h>

#include <string>



// MAC adresini alma fonksiyonu

std::string GetMacAddress() {

    std::string macAddress;

    IP_ADAPTER_INFO adapterInfo[16];

    DWORD bufferSize = sizeof(adapterInfo);



    DWORD result = GetAdaptersInfo(adapterInfo, &bufferSize);

    if (result == ERROR_SUCCESS) {

        PIP_ADAPTER_INFO adapter = adapterInfo;

        macAddress = adapter->Address[0];

        for (int i = 1; i < adapter->AddressLength; ++i) {

            char hex[3];

            sprintf_s(hex, "%.2X", adapter->Address[i]);

            macAddress += ":" + std::string(hex);

        }

    }



    return macAddress;

}



// Diğer bileşenlerin HWID'ye eklenmesi ve API'ye gönderilmesi

int main() {

    // MAC adresini al

    std::string macAddress = GetMacAddress();



    // Diğer bileşenlerin değerlerini al

    std::string hardwareID = "1234567890"; // Örnek bir hardware ID

    std::string windowsKey = "ABCDE-12345-FGHIJ-67890"; // Örnek bir Windows key

    std::string biosID = "ABC123"; // Örnek bir BIOS ID

    std::string ssdID = "SSD-1234567890"; // Örnek bir SSD ID



    // HWID'yi oluştur

    std::string hwid = macAddress + hardwareID + windowsKey + biosID + ssdID;



    // API endpoint adresini ve parametreleri belirle

    std::string apiEndpoint = "https://your-domain.com/your-api-endpoint.php";

    std::string apiParams = "?hwid=" + hwid;



    // API'ye GET isteği yap

    WSADATA wsaData;

    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {

        std::cerr << "WSAStartup failed." << std::endl;

        return 1;

    }



    struct addrinfo* result = NULL, * ptr = NULL, hints;

    ZeroMemory(&hints, sizeof(hints));

    hints.ai_family = AF_UNSPEC;

    hints.ai_socktype = SOCK_STREAM;

    hints.ai_protocol = IPPROTO_TCP;



    if (getaddrinfo(apiEndpoint.c_str(), "https", &hints, &result) != 0) {

        std::cerr << "getaddrinfo failed." << std::endl;

        WSACleanup();

        return 1;

    }



    SOCKET connectSocket = INVALID_SOCKET;

    for (ptr = result; ptr != NULL; ptr = ptr->ai_next) {

        connectSocket = socket(ptr


C++ kodlarının çalışma mantığını açıklayayım:


İlk olarak, GetMacAddress() fonksiyonunu kullanarak MAC adresini alıyoruz. Bunun için Windows API'lerini (GetAdaptersInfo) kullanıyoruz.

Ardından, diğer bileşenlerin değerlerini örnek olarak belirliyoruz. Bu değerleri gerçek sistemde ilgili bileşenlerden almanız gerekecektir.

Sonra, diğer bileşenlerin değerlerini kullanarak HWID'yi oluşturuyoruz. Bu, MAC adresi, hardware ID, Windows key, BIOS ID ve SSD ID'nin birleşimidir.

API endpoint adresini ve parametreleri belirliyoruz. apiEndpoint değişkenine API endpoint URL'sini, apiParams değişkenine ise HWID'yi içeren GET parametrelerini ekliyoruz.

WSAStartup işlevini kullanarak Winsock'u başlatıyoruz.

getaddrinfo işlevini kullanarak API endpoint'inin IP adresini alıyoruz.

Soket oluşturarak API'ye bağlanıyoruz.

API endpoint'i ve parametrelerini içeren GET isteğini API'ye gönderiyoruz.

Bu kod parçacığı, C++ dilinde MAC adresi almayı, diğer bileşenlerin değerlerini belirlemeyi, HWID oluşturmayı ve API'ye GET isteği göndermeyi sağlar. Gerçek sistemde, diğer bileşenlerin değerlerini almak için ilgili Windows API'lerini ve yöntemleri kullanmanız gerekecektir.


Bu kodları ihtiyaçlarınıza göre uyarlayarak, örneğin diğer bileşenlerin değerlerini doğru bir şekilde alarak ve güvenlik önlemleri ekleyerek kullanabilirsiniz.
 
Son düzenleme:
re work
Süper Üye
Katılım
31 Ocak 2016
Mesajlar
952
Çözümler
8
Tepki puanı
458
Ödüller
9
10 HİZMET YILI
Thanks.
 
re work
Süper Üye
Katılım
31 Ocak 2016
Mesajlar
952
Çözümler
8
Tepki puanı
458
Ödüller
9
10 HİZMET YILI
Thanks for the additional information you provided.
 
Süper Üye
Katılım
23 Nis 2019
Mesajlar
981
Çözümler
2
Tepki puanı
79
Ödüller
6
7 HİZMET YILI
c
chatgptden aldığın çıktıyı buraya yapıştırmanın anlamı nedir?
 
Ultra Üye
Katılım
16 May 2017
Mesajlar
2,346
Çözümler
10
Tepki puanı
530
Ödüller
11
Yaş
27
Sosyal
9 HİZMET YILI
güzel olmus ellerine saglik emekk kokiyirr.
 
Onaylı Üye
Katılım
16 Nis 2018
Mesajlar
103
Tepki puanı
5
Ödüller
5
Yaş
29
8 HİZMET YILI
Main içerisine yazmaktansa yeni bir class oluşturup içerisine fonksiyonlar halinde Get() -Set() ler ayarlanabilir daha modüler kullanımı kolay olur. şifreleme kısmında md5 sha kullanmak yerine randomize edilmiş küçük bir şifreleme algoritması iş görür.
private string name; public string Name { get { return this.name; } set { this.name = value; } } tarzında.
PHP KULLANAN DİNOZORDUR.
 
Seçkin Üye
Katılım
19 Mar 2023
Mesajlar
308
Tepki puanı
4
Ödüller
3
Yaş
27
3 HİZMET YILI
hocam bilgilendirici bi konu olmuş teşekkürler
 
CoreCheat CSGO
Griffin Premium
Katılım
10 May 2016
Mesajlar
1,766
Çözümler
5
Tepki puanı
720
Ödüller
14
Yaş
25
Sosyal
10 HİZMET YILI
Packet sniffleyip serveri lokale yönlendirip fake return verip lisans sistemi kandırılınca gelen pişmanlık hissi. Get ssl tel i bir tık etkisiz kılıyor onun yerine post kullanmak daha mantıklı.
Şakası bir yana ellerine sağlık paylaşım için teşekkürler.
 
Banlı Üye
Katılım
17 Tem 2023
Mesajlar
179
Tepki puanı
18
Yaş
25
2 HİZMET YILI
çok ısıme yaradı vallahı saolasın bro
 
Onaylı Üye
Katılım
7 Eki 2015
Mesajlar
52
Tepki puanı
0
Ödüller
8
10 HİZMET YILI
Usta teşekkürler gayet açıklayalı ve resmen aptala anlatır gibi anlatmışsın
 
Üye
Katılım
6 Şub 2020
Mesajlar
42
Tepki puanı
0
Ödüller
6
Yaş
27
6 HİZMET YILI
Thanks for the additional information you provided.
 
Üye
Katılım
7 May 2021
Mesajlar
49
Tepki puanı
1
Ödüller
2
Yaş
38
5 HİZMET YILI
hocam böyle bilgiler çok faydalı oluyor elinize sağlık öğrenmemde yardımcı oldu
 
Onaylı Üye
Katılım
28 Kas 2023
Mesajlar
51
Tepki puanı
0
Yaş
25
2 HİZMET YILI
Ellerinize sağlık hocam çok işime yaradı teşekkürler.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...