Add dbg_dump_to_raw.py
This commit is contained in:
parent
036f6554c5
commit
5d3076606e
@ -21,3 +21,7 @@ Similarly, debug commands may be passed as command-line arguments to `synacor.py
|
||||
For example, to load the `dumps/init` state to skip the self-test and decryption, run:
|
||||
|
||||
./synacor.py dbg_load dumps/init
|
||||
|
||||
Dump files are stored in Python [pickle](https://docs.python.org/3/library/pickle.html) format, so if you want to inspect the memory in a hex editor, for example, it will be necessary to extract a raw memory dump:
|
||||
|
||||
./tools/dump_to_raw.py dumps/init dumps/init.raw
|
||||
|
31
tools/dump_to_raw.py
Executable file
31
tools/dump_to_raw.py
Executable file
@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env python3
|
||||
# synacor.py - An implementation of the Synacor Challenge
|
||||
# Copyright © 2016 RunasSudo
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import pickle
|
||||
import struct
|
||||
import sys
|
||||
|
||||
if len(sys.argv) < 3:
|
||||
print('Usage: {} <input> <output>'.format(sys.argv[0]))
|
||||
else:
|
||||
with open(sys.argv[1], 'rb') as f:
|
||||
model = pickle.load(f)
|
||||
|
||||
SYN_MEM = model['SYN_MEM']
|
||||
|
||||
with open(sys.argv[2], 'wb') as f:
|
||||
f.write(struct.pack('<32768H', *SYN_MEM))
|
Reference in New Issue
Block a user