วิธีค้นหาอัลกอริทึมการแฮชที่ใช้ในการแฮรหัสผ่าน


11

ฉันมีรหัสผ่านที่ใช้งานได้และสามารถดูแฮช (/ etc / passwd) ฉันจะค้นหาอัลกอริทึมการแฮชที่ใช้ในการแฮชรหัสผ่านได้อย่างไรโดยไม่ต้องลองใช้อัลกอริทึมที่แตกต่างกันด้วยตนเองจนกว่าฉันจะหาคู่ที่ตรงกัน?


1
คุณใช้ Unix รุ่นใด?
Kusalananda

3
/etc/passwdผมประหลาดใจมากที่คุณสามารถดูกัญชาใน ฉันคิดว่าตัวแปร Unix / Linux ทั้งหมดได้ย้ายไปที่แยกเมื่อ/etc/shadowหลายปีก่อน (ฉันรู้ว่าระบบดังกล่าวยังคงสนับสนุนแฮชในpasswdแต่ฉันรู้ว่าไม่มีสาธารณูปโภคที่ทำให้พวกเขามีอีกต่อไประบบฝังตัวอาจ?
roaima

มันเป็น OpenWrt Backfire 10.03 ยังคงเก็บแฮชไว้/etc/passwdที่นี่ อย่างไรก็ตามเรื่องนี้ไม่ได้เปลี่ยนเรื่องของคำถาม ทำมัน?
Dorin Botan

1
เพียงบันทึก: BSDs มีไฟล์ Berkeley DB สองไฟล์คือ roaima มันยังแยกกันอยู่ แต่มันไม่ได้/etc/shadowและพวกเขาไม่มีไฟล์ตามชื่อนั้น
JdeBP

คำตอบ:


27

นี้ถูกบันทึกไว้ในcrypt(3)'s manpageซึ่งคุณสามารถหาผ่านทาง shadow(5)‘s manpageหรือ'spasswd(5) ลิงก์เหล่านั้นเหมาะสมสำหรับระบบที่ใช้ Linux สมัยใหม่ คำอธิบายมี:

หากsaltเป็นสตริงอักขระที่ขึ้นต้นด้วยอักขระ "$ id $" ตามด้วยสตริงที่ถูกยกเลิกโดยเลือก "$" ผลลัพธ์จะมีรูปแบบดังนี้:

$id$salt$encrypted

idระบุวิธีการเข้ารหัสที่ใช้แทน DES จากนั้นจะเป็นตัวกำหนดวิธีการตีความสตริงรหัสผ่านที่เหลือ สนับสนุนค่า id ต่อไปนี้:

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)

ปักเป้ายังเป็นที่รู้จักbcryptก็จะถูกระบุด้วยคำนำหน้า2, 2b, 2xและ2y(ดูเอกสารของ PassLib )

ดังนั้นหากรหัสผ่านที่แฮชถูกเก็บไว้ในรูปแบบข้างต้นคุณสามารถค้นหาอัลกอริทึมที่ใช้โดยดูที่id ; ไม่เช่นนั้นจะเป็นcryptอัลกอริทึม DES เริ่มต้น (พร้อมแฮช 13 ตัวอักษร) หรือcryptDES "ใหญ่" (ขยายเพื่อรองรับรหัสผ่าน 128 ตัวอักษรโดยมีแฮชยาวไม่เกิน 178 อักขระ) หรือ BSDI ส่วนขยาย DES (พร้อมส่วน_นำหน้า ตามด้วยแฮช 19 ตัวอักษร)

ดิสทริบิวชันบางตัวใช้libxcryptซึ่งรองรับและจัดทำเอกสารเพิ่มเติมอีกสองสามวิธี:

  • y: yescrypt
  • gy: gost-yescrypt
  • 7: scrypt
  • sha1: sha1crypt
  • md5: SunMD5

แพลตฟอร์มอื่น ๆ รองรับอัลกอริธึมอื่น ๆ ดังนั้นให้ตรวจสอบcryptmanpage ที่นั่น ตัวอย่างเช่นOpenBSDcrypt(3)รองรับเพียงปักเป้าซึ่งระบุว่าใช้id “ 2b”


2
DES ตามรหัสผ่าน BTW เสมอ 13 ตัวและต้องประกอบด้วยตัวอักษรและตัวเลขเช่นเดียวกับและ. /อักขระสองตัวแรกคือเกลือและอีก 11 ตัวเป็นค่าแฮช (เรียงลำดับ) และมันก็เป็นอัลกอริธึมเดียวเท่านั้นcryptที่อ่อนแอซึ่งคุณไม่สามารถชดเชยได้ด้วยการเลือกรหัสผ่านที่ดีกว่า
kasperd
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.