The cross should be asymmetrical (like a christian cross); this will let you ID the markers by their relative distances to each other.
If you loop through the markers and compare each one's distance to each other's distance (and the relative distances are unique), then you should be figure out which one is which.
From there, it's just Quaternion.LookRotation(ForwardPoint - BackwardPoint, UpPoint - DownPoint);
(Also, I don't have the code for the gun demo anymore ¯\_(ツ)_/¯ )