python ctypes GetFileVersion

Posted by nopsled
2016.11.09 23:39 프로그래밍

몇일 전부터 혼자 삽질해보려고 했는데 국방망이라서 할수도 없고... 열심히 기본적으로 제공해주는 모듈로도 할 수 있을꺼같아서 사지방에서 검색하고 또 검색해서 찾은 아웃풋..


import array

from ctypes import *


def get_file_info(filename, info):

    size = windll.version.GetFileVersionInfoSizeA(filename, None)

    if not size:

        return ''

    res = create_string_buffer(size)

    windll.version.GetFileVersionInfoA(filename, None, size, res)

    r = c_uint()

    l = c_uint()

    windll.version.VerQueryValueA(res, '\\VarFileInfo\\Translation',

                                  byref(r), byref(l))

    if not l.value:

        return ''

    codepages = array.array('H', string_at(r.value, l.value))

    codepage = tuple(codepages[:2].tolist())

    windll.version.VerQueryValueA(res, ('\\StringFileInfo\\%04x%04x\\'

+ info) % codepage,byref(r), byref(l))

    return string_at(r.value, l.value)


print get_file_info(r'C:\WINDOWS\system32\calc.exe', 'FileVersion') 

출처 : https://mail.python.org/pipermail//python-list/2006-November/402797.html


기본적으로 제공해주는 ctypes와 array 모듈... 처음에 API도 없다고 떠서 한참 고민했다.


get_file_info의 두번째 파라미터인 info에는 Comments, CompanyName, FileDescription, InternalName, LegalCopyright, OriginalFilename, ProductVersion, ProductName, FileVersion 등등이 들어갈 수 있다.


python Get File Version from binary

저작자 표시 비영리
신고

'프로그래밍' 카테고리의 다른 글

python ctypes GetFileVersion  (0) 2016.11.09
python 윈도우 한글문제  (0) 2016.04.26
python unicode unescape (html unescape)  (0) 2015.11.07
django standard install..  (0) 2015.10.13
Convert Facebook username to id  (0) 2015.04.12
[파밍 크롤러] pharming crawler  (1) 2015.01.28

2016.08.11

Posted by nopsled
2016.08.11 22:45 분류없음

입대한지 80일이 됬다.


정보보호병으로 7군단에 오게 되었고 업무는 많이 힘든것 같진 않다.


바쁠땐 바쁘고 널널할땐 널널하고. 하지만 무엇보다 자기개발하고싶다. 악성코드 분석이나.. 코딩이나.. 개인공부 할 수 있었으면 좋겠다.


여행도 가고싶고! 군대에 오니까 하고싶은게 많아졌다.

저작자 표시 비영리
신고

python 윈도우 한글문제

Posted by nopsled
2016.04.26 21:30 프로그래밍
아오 인코딩 때문에 4시간은 삽질한거 같다.



문제점_____________________________________


1. 윈도우 cmd 쉘에서는 한글이 자꾸 깨진다.

2. raw_input으로 입력받아서 urllib.quote()로 url encoding해주면 윈도우와 리눅스는 다른 결과값이 나온다.




주절주절___________________________________


# -*- coding: utf-8 -*-

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

print u'한글' # 고정으로 변수에 한글을 넣을 경우 맨앞에 u를 붙인다.

print repr(raw_input('input korean : ')) # 윈도우 cmd 쉘에서 "한글" 단어를 입력할시 '\xc7\xd1\xb1\xdb'로 보여진다.

#print repr(raw_input('input korean : ')) # 리눅스 bash 쉘에서 "한글" 단어를 입력할시 '\xed\x95\x9c\xea\xb8\x80'로 보여진다.



삽질하다가 알게된건 다음과 같다.

윈도우 cmd 쉘에서 입력 받은 한글(\xc7\xd1\xb1\xdb)은 euc-kr로 되어 있는 것이고,

리눅스 bash 쉘에서 입력 받은 한글( \xed\x95\x9c\xea\xb8\x80)은 utf-8로 되어 있는 것이다.




해결방법___________________________________


# -*- coding: utf-8 -*-

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

print repr(raw_input('input korean : ').decode('euc-kr').encode('utf-8')) # '\xed\x95\x9c\xea\xb8\x80' 결과는 결국 utf-8로 나오고 잘 출력된다.









저작자 표시 비영리
신고

'프로그래밍' 카테고리의 다른 글

python ctypes GetFileVersion  (0) 2016.11.09
python 윈도우 한글문제  (0) 2016.04.26
python unicode unescape (html unescape)  (0) 2015.11.07
django standard install..  (0) 2015.10.13
Convert Facebook username to id  (0) 2015.04.12
[파밍 크롤러] pharming crawler  (1) 2015.01.28