0
fuzzy_compare関数が正しい比較値を返すことに問題があります。これは、0〜100を返すが、常に(c_char_p)とcreate_string_buffer()にキャスト、ファジーがout1.valueと比較呼び出す0ssdeepのfuzzy_compareは常にctypesのPythonからロードされた0を返します
from ctypes import *
fuzzy = CDLL('fuzzy.dll')
out1 = create_string_buffer('\x00'*512)
out2 = create_string_buffer('\x00'*512)
print fuzzy.fuzzy_hash_buf('hashme', len('hashme'), out1)
print fuzzy.fuzzy_hash_buf('hashme2', len('hashme2'), out2)
print out1.value
print out2.value
print fuzzy.fuzzy_compare(out1, out2)
# output
# 0
# 0
# 3:cA:x <-- correct hash
# 3:cy:R <-- correct hash
# 0 <-- fuzzy_compare returning 0...
私が試した返しますが、それは常に私が見てきた0を返すべきですそれはデバッガで(ファジー・コンパイル関数のbpをセットして、値を正しく渡しているので、なぜそれが常に0を返すのか分かりません。)
あなたは私のヒーローです。魅力のように働く、私は地獄ctypesがどのように動作するかを研究すべきだと思う! – omgpants