cxacru-cf.py (1626B)
1#!/usr/bin/env python 2# Copyright 2009 Simon Arlott 3# 4# This program is free software; you can redistribute it and/or modify it 5# under the terms of the GNU General Public License as published by the Free 6# Software Foundation; either version 2 of the License, or (at your option) 7# any later version. 8# 9# This program is distributed in the hope that it will be useful, but WITHOUT 10# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12# more details. 13# 14# You should have received a copy of the GNU General Public License along with 15# this program; if not, write to the Free Software Foundation, Inc., 59 16# Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17# 18# Usage: cxacru-cf.py < cxacru-cf.bin 19# Output: values string suitable for the sysfs adsl_config attribute 20# 21# Warning: cxacru-cf.bin with MD5 hash cdbac2689969d5ed5d4850f117702110 22# contains mis-aligned values which will stop the modem from being able 23# to make a connection. If the first and last two bytes are removed then 24# the values become valid, but the modulation will be forced to ANSI 25# T1.413 only which may not be appropriate. 26# 27# The original binary format is a packed list of le32 values. 28 29import sys 30import struct 31 32i = 0 33while True: 34 buf = sys.stdin.read(4) 35 36 if len(buf) == 0: 37 break 38 elif len(buf) != 4: 39 sys.stdout.write("\n") 40 sys.stderr.write("Error: read {0} not 4 bytes\n".format(len(buf))) 41 sys.exit(1) 42 43 if i > 0: 44 sys.stdout.write(" ") 45 sys.stdout.write("{0:x}={1}".format(i, struct.unpack("<I", buf)[0])) 46 i += 1 47 48sys.stdout.write("\n")