This isn't directly an answer to your question, more a comment on your approach. In this binary file, can you be certain that all occurances of these 2 bytes represent start/end image markers, and are not either code or data from the binary stuff surrounding the embedded jpg's?
This is something you may need to consider with your design.
can you be certain that all occurances of these 2 bytes represent start/end image markers
I think that's a good point. I have a jpeg image that certainly begins with the "start marker" that the op quoted ... and it certainly ends with the "end marker" that the op quoted. Unfortunately, I can also find an occurrence of both the "start marker" and the "end marker" within that jpeg file.
That complicates things somewhat.
Is it guaranteed that there's only one image in the stream ? Is it also guaranteed that the image begins with the first/last occurrence of the "start marker" and ends with the last/first occurrence of the "end marker" ? If the answer to both questions is yes then the problem is easily solved - as we can easily remove the cruft from both ends of the stream, leaving us with the image.