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