You could try GAP. This is far from being elegant, just if you are very desperate ;-)

gap> g := SymmetricGroup(7);;

gap> regmod := RegularModule(g,GF(19));;

//This not elegant: I chose GF(11) to make the group ring semisimple (as if working over a field of characteristic 0. This is necessary here, as GAP uses the MeatAxe which needs finite fields).
Moreover it would be better to get the simple constituents from another source than the regular module as the regular module soon gets too large in dimension. Maybe one could consider an action of $g$ on cosets of a subgroup where your simples of interest occur as composition factors. Ask for more details if you are interested.
For $g=S_7$ this is too large to handle. So I take the natural PermutationModule, which has two constituents, a module of dimension 1 and a module of dimension 6.//

gap> permod := PermutationGModule(g,GF(11));;

gap> comps := MTX.CompositionFactors(permod);

[ rec( field := GF(11), isMTXModule := true, dimension := 1, generators := [ [ [ Z(11)^0 ] ], [ [ Z(11)^0 ] ] ],
smashMeataxe := rec( algebraElement := [ [ [ 1, 2 ], [ 3, 1 ] ], [ Z(11)^0, Z(11)^0, Z(11)^9, Z(11) ] ], algebraElementMatrix := [ [ Z(11)^5 ] ],
characteristicPolynomial := x_1+Z(11)^0, charpolFactors := x_1+Z(11)^0, nullspaceVector := [ Z(11)^0 ], ndimFlag := 1 ), IsIrreducible := true ),
rec( field := GF(11), isMTXModule := true, dimension := 6, generators := [ < immutable compressed matrix 6x6 over GF(11) >, < immutable compressed matrix 6x6 over GF(11) > ],
smashMeataxe := rec( algebraElement := [ [ [ 2, 1 ], [ 2, 3 ] ], [ Z(11)^6, Z(11)^9, Z(11)^8, Z(11) ] ], algebraElementMatrix := < immutable compressed matrix 6x6 over GF(
11) >, characteristicPolynomial := x_1^6+Z(11)^6*x_1^5+Z(11)^7*x_1^3+Z(11)^3*x_1^2+Z(11)^4*x_1+Z(11)^8, charpolFactors := x_1-Z(11)^0,
nullspaceVector := [ Z(11), Z(11)^8, Z(11)^5, Z(11)^3, Z(11)^7, Z(11)^0 ], ndimFlag := 1 ), IsIrreducible := true ) ]

gap> c1 := comps[1];;

gap> c2 := comps[2];;

gap> TensorProductGModule(c1,c2);

rec( field := GF(19), isMTXModule := true, dimension := 6, generators := [ < immutable compressed matrix 6x6 over GF(19) >, < immutable compressed matrix 6x6 over GF(19) > ] )
gap>

From this point on you can do whatever MTX in GAP allows you to do with modules.
See also http://www.gap-system.org/Manuals/doc/htm/ref/CHAP067.htm#SSEC002.2 for more information on GAP.