Martin,
You should post the code in code format to make it easier to read. I hope that I am properly understanding what you want to do.
Using Do is *almost never the best approach in Mathematica -- it is best to use lists.
I would create a list of your permutations and then map your counting function onto the list. For example:
pp=3
perms =Permutations[Flatten[Table[Range[0,pp],pp]],{3}]
(*{{0,1,2},{0,1,3},{0,1,0},{0,1,1},{0,2,1},{0,2,3},{0,2,0},{0,2,2},{0,3,1},{0,3,2},{0,3,0},{0,3,3},{0,0,1},{0,0,2},{0,0,3},{0,0,0},{1,0,2},{1,0,3},{1,0,0},{1,0,1},{1,2,0},{1,2,3},{1,2,1},{1,2,2},{1,3,0},{1,3,2},{1,3,1},{1,3,3},{1,1,0},{1,1,2},{1,1,3},{1,1,1},{2,0,1},{2,0,3},{2,0,0},{2,0,2},{2,1,0},{2,1,3},{2,1,1},{2,1,2},{2,3,0},{2,3,1},{2,3,2},{2,3,3},{2,2,0},{2,2,1},{2,2,3},{2,2,2},{3,0,1},{3,0,2},{3,0,0},{3,0,3},{3,1,0},{3,1,2},{3,1,1},{3,1,3},{3,2,0},{3,2,1},{3,2,2},{3,2,3},{3,3,0},{3,3,1},{3,3,2},{3,3,3}}*)
Now map the GF8 onto it, but only at the second level:
Map[GF8,perms,{2}]
This returns a list of all your "info" lists from inside your do loop.
(*{{GF8[0],GF8[1],GF8[2]},{GF8[0],GF8[1],GF8[3]},{GF8[0],GF8[1],GF8[0]},{GF8[0],GF8[1],GF8[1]},{GF8[0],GF8[2],GF8[1]},{GF8[0],GF8[2],GF8[3]},{GF8[0],GF8[2],GF8[0]},{GF8[0],GF8[2],GF8[2]},{GF8[0],GF8[3],GF8[1]},{GF8[0],GF8[3],GF8[2]},{GF8[0],GF8[3],GF8[0]},{GF8[0],GF8[3],GF8[3]},{GF8[0],GF8[0],GF8[1]},{GF8[0],GF8[0],GF8[2]},{GF8[0],GF8[0],GF8[3]},{GF8[0],GF8[0],GF8[0]},{GF8[1],GF8[0],GF8[2]},{GF8[1],GF8[0],GF8[3]},{GF8[1],GF8[0],GF8[0]},{GF8[1],GF8[0],GF8[1]},{GF8[1],GF8[2],GF8[0]},{GF8[1],GF8[2],GF8[3]},{GF8[1],GF8[2],GF8[1]},{GF8[1],GF8[2],GF8[2]},{GF8[1],GF8[3],GF8[0]},{GF8[1],GF8[3],GF8[2]},{GF8[1],GF8[3],GF8[1]},{GF8[1],GF8[3],GF8[3]},{GF8[1],GF8[1],GF8[0]},{GF8[1],GF8[1],GF8[2]},{GF8[1],GF8[1],GF8[3]},{GF8[1],GF8[1],GF8[1]},{GF8[2],GF8[0],GF8[1]},{GF8[2],GF8[0],GF8[3]},{GF8[2],GF8[0],GF8[0]},{GF8[2],GF8[0],GF8[2]},{GF8[2],GF8[1],GF8[0]},{GF8[2],GF8[1],GF8[3]},{GF8[2],GF8[1],GF8[1]},{GF8[2],GF8[1],GF8[2]},{GF8[2],GF8[3],GF8[0]},{GF8[2],GF8[3],GF8[1]},{GF8[2],GF8[3],GF8[2]},{GF8[2],GF8[3],GF8[3]},{GF8[2],GF8[2],GF8[0]},{GF8[2],GF8[2],GF8[1]},{GF8[2],GF8[2],GF8[3]},{GF8[2],GF8[2],GF8[2]},{GF8[3],GF8[0],GF8[1]},{GF8[3],GF8[0],GF8[2]},{GF8[3],GF8[0],GF8[0]},{GF8[3],GF8[0],GF8[3]},{GF8[3],GF8[1],GF8[0]},{GF8[3],GF8[1],GF8[2]},{GF8[3],GF8[1],GF8[1]},{GF8[3],GF8[1],GF8[3]},{GF8[3],GF8[2],GF8[0]},{GF8[3],GF8[2],GF8[1]},{GF8[3],GF8[2],GF8[2]},{GF8[3],GF8[2],GF8[3]},{GF8[3],GF8[3],GF8[0]},{GF8[3],GF8[3],GF8[1]},{GF8[3],GF8[3],GF8[2]},{GF8[3],GF8[3],GF8[3]}}*)
Now you can map a simple function that takes your dot product and counts zeros. This approach simplifies your code.
I hope this helps. Did I understand what you want?
Regards