does Rex::Socket.portspec_crack() not do this? It seems to be the way the other tcp-scanner type auxiliaries do it...