clGetPlatformIDs(): CL_PLATFORM_NOT_FOUND_KHR Hashcat
Я пытаюсь запустить hashcat на моем Zen Archlinux
я нахожусь на 4.15.4-1-zen
версия ядра. У меня есть NVIDIA GeForce 920MX и Intel i6189DU. я установил последнюю nvidia-dkms
водители, а также opencl-nvidia
пакет. Я также установил последнюю версию Hashcat.
Когда я запускаю команду hashcat, я получаю эту ошибку:clGetPlatformIDs(): CL_PLATFORM_NOT_FOUND_KHR
, Я использовал инструмент для определения доступных платформ OpenCL clinfo
и вывод показывает только мою платформу процессора, а не мой графический процессор еще hashcat
Команда все еще выводит ту же ошибку.
Любая помощь?
3 ответа
Товарищ Лучник, я нашел способ починить сломанный хэш-код, как вы можете видеть:
$ hashcat -b
hashcat (...) starting in benchmark mode...
clGetPlatformIDs(): CL_PLATFORM_NOT_FOUND_KHR
ATTENTION! No OpenCL-compatible or CUDA-compatible platform found.
You are probably missing the OpenCL or CUDA runtime installation.
$ pacman -S clinfo
$ clinfo
Number of platforms 0
Один из способов исправить это — установить pocl (Portable OpenCL — это реализация OpenCL с открытым исходным кодом):
$ pacman -S pocl
$ clinfo
Number of platforms 1
Platform Name Portable Computing Language
Platform Vendor The pocl project
...
$ hashcat -b
hashcat (...) starting in benchmark mode...
OpenCL API (...) - Platform #1 [The pocl project]
=========================================================================================================================
* Device #1: pthread-Intel(R) ...
Benchmark relevant options:
===========================
* --optimized-kernel-enable
Hashmode: 0 - MD5
Speed.#1.........: ...
...
Удачного взлома! ( ͡° ͜ʖ ͡°)
import binascii, hashlib
import sys
def generate_ntlm_hash(text):
ntlm_hash = binascii.hexlify(hashlib.new('md4', text.encode('utf-16le')).digest())
return ntlm_hash
min_distance = float('inf')
closest_hash = ""
closest_word = ""
def read_hashes_from_file(filename):
hashes = []
with open(filename, 'r') as file:
for line in file:
line = line.strip()
if line:
hashes.append(line)
return hashes
def hamming_distance(hash1, hash2):
bin_hash1 = bin(int(hash1, 16))[2:].zfill(32)
bin_hash2 = bin(int(hash2, 16))[2:].zfill(32)
distance = sum(bit1 != bit2 for bit1, bit2 in zip(bin_hash1, bin_hash2))
return distance
def find_closest_hash(target_hash, hash_list, word):
global min_distance
global closest_hash
global closest_word
for hash_value in hash_list:
distance = hamming_distance(target_hash, hash_value)
if distance < min_distance:
min_distance = distance
closest_hash = hash_value
closest_word = word
return
def main():
dictionary_file = input("Enter the name of the dictionary file (e.g., michael.txt): ")
hash_file = input("Enter the name of the hashes file (e.g., hashes.txt): ")
try:
with open(dictionary_file, 'r') as file:
words = [word.strip() for word in file]
except FileNotFoundError:
print("Dictionary file not found.")
return
known_hashes = read_hashes_from_file(hash_file)
total_words = len(words)
current_word = 0
for word in words:
ntlm_hash = generate_ntlm_hash(word)
if ntlm_hash in known_hashes:
print(f"Word: {word}, NTLM Hash: {ntlm_hash}, Status: Cracked!")
else:
find_closest_hash(ntlm_hash, known_hashes,word)
completion_percentage = (current_word / total_words) * 100
sys.stdout.write(f"\rProcessing: {completion_percentage:.2f}% closest_word: {closest_word}, Min_distance: {min_distance:.2f}")
sys.stdout.flush()
current_word += 1
print(f"Word: {closest_word}, Closest Hash: {closest_hash}")
print("\nProcessing completed.")
if __name__ == "__main__":
main()
Теперь он показывает процент взлома и находит ближайшее расстояние Хэмминга из всех текстов паролей, которые вы пробовали, а также печатает вместе с ним самое близкое слово.