Skip to content

Add NetMotion Mobility (IMP) protocol detection#3195

Merged
IvanNardi merged 3 commits into
ntop:devfrom
cmonroe:netmotion
Jul 14, 2026
Merged

Add NetMotion Mobility (IMP) protocol detection#3195
IvanNardi merged 3 commits into
ntop:devfrom
cmonroe:netmotion

Conversation

@cmonroe

@cmonroe cmonroe commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Please sign (check) the below before submitting the Pull Request:

Link to the related issue:

Describe changes:
NetMotion Mobility (Mobility XE) tunnels clients to the Mobility server using the Internet Mobility Protocol (IMP), by default over UDP/5008. The payload is encrypted, but every datagram carries a fixed header: a 0x4c magic, a self-inclusive length prefix, a per-direction connection id plus sequence, and a per-direction session token. Detection verifies these framing invariants are constant within a direction and differ across directions, following the same stateful approach as the Hamachi dissector.

Add NDPI_PROTOCOL_NETMOTION (VPN category) with the netmotion dissector and its unit test. The remaining unit-test results are regenerated because the new protocol id shifts the auto-numbered custom-rule ids and adds one dissector call per UDP flow.

This feels a little hacky to me but I didn't see any other good way. I'm happy to look into it more if you don't like it.

Comment thread doc/protocols.rst
=========================
NetMotion Mobility (formerly Mobility XE) is an enterprise mobile VPN that keeps sessions persistent across network changes, widely deployed in public-sector and first-responder fleets. Clients tunnel to the Mobility server using the Internet Mobility Protocol (IMP), by default over UDP/5008.

References: `Official site: <https://www.netmotionsoftware.com>`_

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unrelated to your PR, but it is funny that the site of a VPN provider triggers:

Image

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found this odd (unfortunate?) as well and dug a bit more.. it seems like NetMotion was maybe acquired by a company called Aboslute so I guess they abandoned the old domain? The only clients I've seen running are all still branded NetMotion and point to this old URL. I can dig more if you want but the new owner has very little useful info on their site.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is fine as it is

Comment thread src/lib/protocols/netmotion.c
Comment thread src/lib/ndpi_main.c Outdated
@cmonroe

cmonroe commented Jul 14, 2026

Copy link
Copy Markdown
Contributor Author

Oops, I will fix the error here shortly.

NetMotion Mobility (Mobility XE) tunnels clients to the Mobility
server using the Internet Mobility Protocol (IMP), by default over
UDP/5008. The payload is encrypted, but every datagram carries a
fixed header: a 0x4c magic, a self-inclusive length prefix, a
per-direction connection id plus sequence, and a per-direction
session token. Detection verifies these framing invariants are
constant within a direction and differ across directions, following
the same stateful approach as the Hamachi dissector.

Add NDPI_PROTOCOL_NETMOTION (VPN category) with the netmotion
dissector and its unit test. The remaining unit-test results are
regenerated because the new protocol id shifts the auto-numbered
custom-rule ids and adds one dissector call per UDP flow.

Signed-off-by: Chad Monroe <chad@monroe.io>
@sonarqubecloud

Copy link
Copy Markdown

@IvanNardi IvanNardi left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!
I simply rebased the code

@IvanNardi IvanNardi merged commit 54e194a into ntop:dev Jul 14, 2026
28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants