What is go dpi? - mushorg/go-dpi GitHub Wiki
go-dpi is an open source Go library that performs application layer protocol identification of traffic flows. In addition to its own heuristic methods, it contains wrappers for other popular and well-established libraries that also perform protocol identification, such as nDPI and libprotoident, and SVC-based classification using trained models. It aims to provide a simple, easy-to-use interface and the capability to be easily extended by a developer with new detection methods and protocols.
It attempts to classify flows to different protocols regardless of the ports used. This makes it possible to detect protocols on non-standard ports, which is ideal for honeypots, as malware might often try and throw off detection methods by using non-standard and unregistered ports. Also, with its layered architecture, it aims to be fast in its detection, only using heavier classification methods when the simpler ones fail.
It is being developed in the context of the Google Summer of Code 2017 program, under the mentorship of The Honeynet Project.
go-dpi is available under the MIT license and distributed in source code format.