Learning Device Models with Recurrent Neural Networks
  Recurrent neural networks (RNNs) are powerful constructs capable of modeling
complex systems, up to and including Turing Machines. However, learning such
complex models from finite training sets can be difficult. In this paper we
empirically show that RNNs can learn models of computer peripheral devices
through input and output state observation. This enables automated development
of functional software-only models of hardware devices. Such models are
applicable to any number of tasks, including device validation, driver
development, code de-obfuscation, and reverse engineering. We show that the
same RNN structure successfully models six different devices from simple test
circuits up to a 16550 UART serial port, and verify that these models are
capable of producing equivalent output to real hardware.
