1. A method to determine valid input sequences for an unknown binary program, the method comprising: obtaining a plurality of input sequences of unknown validity for the unknown binary program, each of the input sequences including two or more different inputs, the inputs for the input sequences determined as valid inputs for the unknown binary program, the unknown binary program being unknown based on source code of the unknown binary program being unavailable; executing an instrumented version of the unknown binary program separately for each input sequence, each execution of the instrumented version of the unknown binary program using one of the input sequences as inputs to the instrumented version of the unknown binary program; for each execution of the instrumented version of the unknown binary program, generating a set of execution traces by recording execution traces generated by the execution of the instrumented version of the unknown binary program; generating at least two control flow graphs for at least two execution traces; comparing the sets of execution traces including comparing the at least two control flow graphs with each other; and determining which of the plurality of input sequences the unknown binary program accepts as valid based on the comparison of the sets of execution traces, wherein a valid input sequence includes a first input that is a precondition for a subsequent second input in the valid input sequence.