File: bindump.py

package info (click to toggle)
pythoncad 0.1.35-4
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 3,536 kB
  • ctags: 4,286
  • sloc: python: 62,752; sh: 743; makefile: 39
file content (81 lines) | stat: -rw-r--r-- 1,682 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/usr/bin/python
#
# simply binary dump
#

import sys
import array

if len(sys.argv) < 4:
    print "bindump.py file offset count"
    sys.exit(1)
else:
    try:
        _fname = file(sys.argv[1])
    except:
        print "invalid file: " + sys.argv[1]
        sys.exit(1)
    try:
        _offset = int(sys.argv[2])
    except:
        print "invalid offset: " + sys.argv[2]
        sys.exit(1)
    if _offset < 0:
        print "invalid offset: %d" % _offset
        sys.exit(1)
    try:
        _count = int(sys.argv[3])
    except:
        print "invalid byte count: " + sys.argv[3]
        sys.exit(1)
    if _count < 0:
        print "invalid byte count: %d" % _count
        sys.exit(1)

print "opening file: " + _fname.name
print "offset: %d" % _offset
print "count: %d" % _count 

try:
    _fname.seek(_offset, 0)
except:
    _fname.close()
    print "invalid offset into file: %d" % _offset
    sys.exit(1)

_data = array.array('B')
try:
    _data.fromfile(_fname, _count)
except:
    _fname.close()
    print "invalid read of %d bytes from file: %s" % (_count, _fname.name)
    sys.exit(1)

_fname.close()

_patterns = [
    '0 0 0 0', # 0
    '0 0 0 1', # 1
    '0 0 1 0', # 2
    '0 0 1 1', # 3
    '0 1 0 0', # 4
    '0 1 0 1', # 5
    '0 1 1 0', # 6
    '0 1 1 1', # 7
    '1 0 0 0', # 8
    '1 0 0 1', # 9
    '1 0 1 0', # A
    '1 0 1 1', # B
    '1 1 0 0', # C
    '1 1 0 1', # D
    '1 1 1 0', # E
    '1 1 1 1'  # F
    ]

_i = 0
while (_i < _count):
    _bitoffset = _i * 8
    _nib1 = _patterns[((_data[_i] & 0xf0) >> 4)]
    _nib2 = _patterns[(_data[_i] & 0x0f)]
    print "%d [%d]: 0x%02x %s %s" % (_i, _bitoffset, _data[_i], _nib1, _nib2)
    _i = _i + 1