Have you considered the dd command? It lets you skip any number of
bytes, then output any number of bytes.
dd if=infilename bs=1 skip=sk count=ct 2>/dev/null
dd, input file name, block size 1, skip first sk bytes of input
file, then copy ct bytes to stdout (or specify a file with
of=name). Redirect error messages to avoid the status messages it
usually prints at the end.