2012-04-23 11 views
0

Python을 사용하여 지정된 파일에 대한 디지털 서명 및 저작권 정보가 설치되어 있는지 확인하는 스크립트를 만들려고합니다.Python : 파일에 대한 디지털 서명 정보 얻기

누구에게 아이디어가 있습니까? 나는 win32file.GetFileAttributes와 같은 다른 방법을 시도했지만, 내가 찾고있는 정보를 얻지 못했다.

이상적으로는 가능한 한 디지털 서명이 필요합니다.

감사합니다.

+2

당신이 어떤 종류의 정보를 원하십니까 :

여기 파이썬에서 CAPICOM을 사용하는 방법의 예? –

+0

가능한 한 디지털 서명에서 많은 정보를 원합니다. 유효한 서명자 정보, 버전, 일련 번호, 유효 기간은 – user1351549

+0

입니다. 사용 가능한 서명 및 파일 형식에 따라 가능합니다. 파이썬에는 여러 종류의 서명을 검증 할 수있는 여러 라이브러리가 있습니다. 더 구체적으로 말하십시오. –

답변

1

win32com을 통해 CAPICOM 인터페이스를 사용하여 바이너리 실행 파일에서 서명 정보를 얻을 수 있습니다. 이러한 라이브러리는 일반적으로 기본적으로 설치되지 않지만 free download from MSDN입니다.

import win32com.client 
s=win32com.client.gencache.EnsureDispatch('capicom.signedcode',0) 
s.FileName=r'J:\Program Files\Adobe\Flash Player\AddIns\airappinstaller\airappinstaller.exe' 
signer = s.Signer 
print (signer.Certificate.IssuerName, signer.Certificate.SerialNumber) 
+0

는 내가 CAPICOM의 SDK를 설치하고 코드를 실행하려하지만 실패 역 추적 (가장 최근 통화 최종) : 파일 "C : \ 사용자 \ 사용자 \ 바탕 화면 \의 test.py", 라인 (23), 의의 =에 win32com.client.gencache.EnsureDispatch ('capicom.signedcode', 0) 파일 "C : \ Python27 \ lib \ site-packages \ win32com \ client \ gencache.py"529 행의 에 EnsureDispatch disp = win32com. client.Dispatch (prog_id) 파일 "C : \ Python27 \ lib 디렉토리의 \ 사이트 - 패키지 \ win32com 클라이언트 \ __ init__.py \" 파견 파견에서, 라인 (95), 사용자 이름 = dynamic._GetGoodDispatchAndUserName (파견, 사용자 이름, C lsctx) – user1351549

+0

파일 "C : \ Python27 \ lib \ sit"_GetGoodDispatchAndUserName return (_GetGoodDispatch (IDispatch, clsctx), userName) 파일 "C : \ Python27 \ lib \ site-packages \ win32com \ client \ dynamic 파일을 \ 패키지 \ win32com \ client \ dynamic.py" _ GetGoodDispatch 의 IDispatch = pythoncom.CoCreateInstance의 평 ", 라인 (85), (IDispatch를, 없음, CLSCTX, pythoncom.II D_IDispatch) pywintypes.com_error : (-2147221005, '잘못된 클래스 문자열', 없음, 없음) – user1351549

+0

구성 요소를 수동으로 등록 해보십시오. –