A raster image processor would work I guess, although these tend to be quite expensive (as in thousands of dollars). An RGB or CMYK value doesn't indicate a color, it indicates a position within a certain color space. C=100,M=0,Y=0,K=0 in SWOPv2 is not the same as the same value in Euroscale Coated v2. Just the value is useless without indicating a color space. The meaning of #FF0000 to the printer depends on factors like what color profile you indicated or what the driver guessed, what the driver did with the colors (maybe it increases saturation), the color management settings in your driver.
You can't use CMYK with a desktop printer without an expensive RIP. Most photo printers aren't even CMYK, they have more process colors. Any CMYK document will be converted into RGB before sending it the printer driver. I think trial and error (with constant settings and all automatic corrections turned off) will be the only way unless someone else has already done the work.
I wouldn't count on the pigments corresponding to process colors in any popular color space, there's no point for the manufacturer to go through the trouble, compensating it in software is much easier.