OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """Retrieves an image's "fingerprint". | 6 """Retrieves an image's "fingerprint". |
7 | 7 |
8 This is used when retrieving the image from the symbol server. The .dll (or cab | 8 This is used when retrieving the image from the symbol server. The .dll (or cab |
9 compressed .dl_) or .exe is expected at a path like: | 9 compressed .dl_) or .exe is expected at a path like: |
10 foo.dll/FINGERPRINT/foo.dll | 10 foo.dll/FINGERPRINT/foo.dll |
11 """ | 11 """ |
12 | 12 |
13 import sys | 13 import sys |
14 import pefile | 14 import pefile |
15 | 15 |
16 | 16 |
17 def GetImgFingerprint(filename): | 17 def GetImgFingerprint(filename): |
18 """Returns the fingerprint for an image file""" | 18 """Returns the fingerprint for an image file""" |
19 pe = pefile.PE(filename) | 19 pe = pefile.PE(filename) |
20 return "%08X%06x" % ( | 20 return "%08X%x" % ( |
21 pe.FILE_HEADER.TimeDateStamp, pe.OPTIONAL_HEADER.SizeOfImage) | 21 pe.FILE_HEADER.TimeDateStamp, pe.OPTIONAL_HEADER.SizeOfImage) |
22 | 22 |
23 | 23 |
24 def main(): | 24 def main(): |
25 if len(sys.argv) != 2: | 25 if len(sys.argv) != 2: |
26 print "usage: file.dll" | 26 print "usage: file.dll" |
27 return 1 | 27 return 1 |
28 | 28 |
29 print GetImgFingerprint(sys.argv[1]) | 29 print GetImgFingerprint(sys.argv[1]) |
30 return 0 | 30 return 0 |
31 | 31 |
32 | 32 |
33 if __name__ == '__main__': | 33 if __name__ == '__main__': |
34 sys.exit(main()) | 34 sys.exit(main()) |
OLD | NEW |