R, 141 135 bytes
function(x,y="I":"A":"O")intToUtf8(matrix(match(el(strsplit(gsub("D","",x),"B"))[-1],paste0(rep("":y,e=4),y:"U"))-1,,2,T)%*%16:1)
":"=c
Thanks to JayCe for saving 6 bytes!
Using some modular magic is likely to be shorter, but I'm pretty happy with this as a naive first pass.