require 'socket'
require 'win32ole'
# Memoryhackers.org tutorial.
# BIOS bilgilerini almak için WMI sınıfını kullanır.
def get_bios_info
wmi = WIN32OLE.connect("winmgmts://")
query = "SELECT Manufacturer, SMBIOSBIOSVersion, IdentificationCode FROM Win32_BIOS"
result = wmi.ExecQuery(query)
bios_info = result.map do |bios|
"#{bios.Manufacturer.strip}|#{bios.SMBIOSBIOSVersion.strip}|#{bios.IdentificationCode.strip}"
end
bios_info.join("|")
end
# CPU bilgilerini almak için WMI sınıfını kullanır.
def get_cpu_info
wmi = WIN32OLE.connect("winmgmts://")
query = "SELECT ProcessorId, UniqueId, Name FROM Win32_Processor"
result = wmi.ExecQuery(query)
cpu_info = result.map do |cpu|
"#{cpu.ProcessorId.strip}|#{cpu.UniqueId.strip}|#{cpu.Name.strip}"
end
cpu_info.join("|")
end
# HDD bilgilerini almak için WMI sınıfını kullanır.
def get_hdd_info
wmi = WIN32OLE.connect("winmgmts://")
query = "SELECT Model, TotalHeads FROM Win32_DiskDrive"
result = wmi.ExecQuery(query)
hdd_info = result.map do |hdd|
"#{hdd.Model.strip}|#{hdd.TotalHeads}"
end
hdd_info.join("|")
end
# GPU bilgilerini almak için WMI sınıfını kullanır.
def get_gpu_info
wmi = WIN32OLE.connect("winmgmts://")
query = "SELECT DriverVersion, Name FROM Win32_VideoController"
result = wmi.ExecQuery(query)
gpu_info = result.map do |gpu|
"#{gpu.DriverVersion.strip}|#{gpu.Name.strip}"
end
gpu_info.join("|")
end
# MAC adresini almak için Socket kütüphanesini kullanır.
def get_mac_address
Socket.getifaddrs.select { |ifaddr| ifaddr.addr.ipv4? && !ifaddr.addr.ipv4_loopback? }.map { |ifaddr| ifaddr.addr.mac_address }.first
end
# OS bilgilerini almak için WMI sınıfını kullanır.
def get_os_info
wmi = WIN32OLE.connect("winmgmts://")
query = "SELECT SerialNumber, Name FROM Win32_OperatingSystem"
result = wmi.ExecQuery(query)
os_info = result.map do |os|
"#{os.SerialNumber.strip}|#{os.Name.strip}"
end
os_info.join("|")
end
# SCSI bilgilerini almak için WMI sınıfını kullanır.
def get_scsi_info
wmi = WIN32OLE.connect("winmgmts://")
query = "SELECT DeviceID, Name FROM Win32_SCSIController"
result = wmi.ExecQuery(query)
scsi_info = result.map do |scsi|
"#{scsi.DeviceID.strip}|#{scsi.Name.strip}"
end
scsi_info.join("|")
end
# HDD ID, CPU bilgisi, BIOS ID, GPU bilgisi, MAC adresi, OS bilgisi ve SCSI bilgisi kullanılarak benzersiz bir HWID oluşturulur.
def generate_hwid
bios_info = get_bios_info
cpu_info = get_cpu_info
hdd_info = get_hdd_info
gpu_info = get_gpu_info
mac_address = get_mac_address
os_info = get_os_info
scsi_info = get_scsi_info
hwid = "#{hdd_info}|#{cpu_info}|#{bios_info}|#{gpu_info}|#{mac_address}|#{os_info}|#{scsi_info}"
hwid.gsub!(' ', '') # Boşlukları kaldırır
hwid.downcase! # Tüm harfleri küçük harfe çevirir
hwid
end
# Memoryhackers.org
# Oluşturulan HWID'yi ekrana yazdırır.
puts "Benzersiz HWID: #{generate_hwid}"