2017-02-18 10 views
1

일반 문자열에서 NTLMv2 해시를 생성 할 수 있어야하는 작은 Clojure 프로젝트에서 작업하고 있습니다. 이 값은 openLDAP 인스턴스의 sambaNTPassword 필드를 채우는 데 사용됩니다. 나는 이것이 무거운 짐을하기 위해 몇몇 자바 라이브러리를 요구할 것을 기대하고 이것을 java example으로 시작했다. 그러나 결과가 옳지 않아 jcifs가 NTLMv2에 대한 좋은 해결책이 아닐 수도있는 게시물을 보았습니다.NTLMv2 해시 및 유효성 검사 생성

그래서 나는 두 가지 질문

    사람이 내가 NTLMv2를 수표 스크립트 즉, 내가 내 솔루션에서지고있어 출력 비교로 내가 사용할 수있는 해시를 생성하는 데 사용할 수있는 간단한 스크립트 알고 있나요

  1. .

  2. 다른 Java 라이브러리에 대한 제안 사항이이 작업에 도움이 될 수 있습니까?

답변

2

실제로 내 Clojure를 조금 더 검색하고 약간 더 디버깅하여 내 질문에 대한 답을 찾았습니다. 다른 누군가에게 유용 할 수 있기 때문에 여기에 게시 할 것입니다.

마지막 부분은 웹 기반 NTLMv2 해시 생성기를 찾았으므로 출력을 확인하는 데 사용할 수있었습니다. Browserling NTLM Hash Generator을 참조하십시오.

내 솔루션입니다. 나는 jcif가 잘 작동하도록 끝내었다. jcifs.jar 파일을 lein-localrepo를 사용하여 로컬 maven 저장소에 설치 한 후 매우 쉽게 사용할 수있었습니다. 대부분의 코드가 이미 Java에있는 경우에도 Clojure를 사용하는 것이 더 좋습니다. 나는 전문가는 아니지만 합리적으로 명확해야한다 (희망)

(ns cifs-clj.core 
    (:import [jcifs.util Hexdump MD4]) 
    (:gen-class)) 

(defn hash-nt-password [pwd] 
    (let [pwd-bytes (.getBytes pwd "UnicodeLittleUnmarked") 
     md4 (doto (MD4.) 
       (.engineUpdate pwd-bytes 0 (alength pwd-bytes))) 
     hash-bytes (.engineDigest md4)] 
    (Hexdump/toHexString hash-bytes 0 (* 2 (alength hash-bytes)))))