1. A computer-readable medium encoded with a computer program for a system that uses dynamic data flow analysis to automatically reverse engineer an input data format, the system comprising: a binary program component that selects a binary program file for use in the input data analysis; an input data component that selects an input data source for analysis; a binary program translator component that simulates binary program execution in combination with the selected input data source; and a data flow engine component that analyses the simulated binary program execution and further comprises a grammar inference component that generates a grammar based on the analysis.