Làm thế nào để tìm thuật toán băm được sử dụng để băm mật khẩu?


11

Tôi có mật khẩu làm việc và có thể thấy hàm băm (/ etc / passwd). Làm cách nào để tìm thuật toán băm được sử dụng để băm mật khẩu mà không cần thử các thuật toán khác nhau cho đến khi tôi tìm thấy kết quả khớp?


1
Bạn đang sử dụng biến thể Unix nào?
Kusalananda

3
Tôi rất ngạc nhiên khi bạn có thể thấy một hàm băm /etc/passwd. Tôi nghĩ rằng tất cả các biến thể Unix / Linux đã chuyển sang phân chia từ /etc/shadownhiều năm trước. (Tôi biết hệ thống như vậy vẫn ủng hộ băm trong passwdnhưng tôi biết không có tiện ích đó đặt chúng ở đó nữa Một hệ thống nhúng, có lẽ.?
roaima

Đó là OpenWrt Backfire 10.03. Băm vẫn được lưu trữ ở /etc/passwdđây. Điều này tuy nhiên không thay đổi vấn đề của câu hỏi. Phải không?
Dorin Botan

1
Chỉ để ghi lại: Các BSD có hai tệp Berkeley DB, roaima. Nó vẫn bị chia tách, nhưng nó không phải /etc/shadowvà họ không có tập tin theo tên đó.
JdeBP

Câu trả lời:


27

Điều này được ghi lại trong crypt(3)trang của bạn , mà bạn có thể tìm thấy thông qua shadow(5)trang của man , hoặc passwd(5)của . Những liên kết này phù hợp với các hệ thống dựa trên Linux hiện đại; mô tả có:

Nếu muối là một chuỗi ký tự bắt đầu bằng các ký tự "$ id $" theo sau là một chuỗi tùy ý kết thúc bằng "$", thì kết quả có dạng:

$id$salt$encrypted

id xác định phương thức mã hóa được sử dụng thay vì DES và sau đó xác định cách phần còn lại của chuỗi mật khẩu được diễn giải. Các giá trị sau của id được hỗ trợ:

ID  | Method
─────────────────────────────────────────────────────────
1   | MD5
2a  | Blowfish (not in mainline glibc; added in some
    | Linux distributions)
5   | SHA-256 (since glibc 2.7)
6   | SHA-512 (since glibc 2.7)

Blowfish, còn được gọi là bcrypt, cũng được xác định bởi các tiền tố 2, 2b, 2x, và 2y(xem tài liệu PassLib của ).

Vì vậy, nếu mật khẩu băm được lưu trữ ở định dạng trên, bạn có thể tìm thấy thuật toán được sử dụng bằng cách xem id ; mặt khác, đó là cryptthuật toán DES mặc định (có hàm băm 13 ký tự) hoặc cryptDES của big big (được mở rộng để hỗ trợ mật khẩu 128 ký tự, với độ dài băm lên tới 178 ký tự) hoặc BSDI mở rộng (có _tiền tố theo sau là hàm băm 19 ký tự).

Một số các bản phân phối sử dụng libxcrypt mà hỗ trợ và các văn bản khá một vài phương pháp khác:

  • y: yescrypt
  • gy: gost-yescrypt
  • 7: tiền điện tử
  • sha1: sha1crypt
  • md5: CNM5

Các nền tảng khác hỗ trợ các thuật toán khác, vì vậy hãy kiểm tra crypttrang chủ ở đó. Ví dụ: OpenBSDcrypt(3) chỉ hỗ trợ Blowfish, được xác định bằng cách sử dụng id 2bb.



2
Mật khẩu dựa trên DES là BTW luôn dài 13 ký tự và bao gồm các ký tự chữ và số cũng như ./. 2 ký tự đầu tiên là muối và 11 ký tự còn lại là giá trị băm (sắp xếp). Và nó là một trong những thuật toán được hỗ trợ cryptyếu đến mức bạn không thể bù cho nó bằng cách chọn một mật khẩu mạnh hơn.
kasperd
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.