Indian stock markets gained mostly driven by massive buying in financial stocks. The BSE Sensex ended at 31,605.22, up 995.92 or 3.25%. The Nifty was at 9,314.95, up 285.90 points or 3.17%