Just a lazy solution:
import java.math.BigInteger;
public class K {
public static void main(String[] args) {
BigInteger start = new BigInteger("0552e025571c01bcd9eda59365a2fb3ae0bd7547dfeeeb13d971d848bcbf0467", 16);
BigInteger stride = BigInteger.valueOf(58L).pow(32);//depends on the position of most-right unknown character
BigInteger range = BigInteger.valueOf(58L).pow(5);//5=number of unknown characters
BigInteger end = start.add(range);
System.out.println("START: "+start.toString(16));
System.out.println("END: "+end.toString(16));
System.out.println("STRIDE: "+stride.toString(16));
}
}
I think there is still something wrong with calculations with checksum - for longer ranges (>6 unknown characters) it does not return result, while when there is case without checksum (just a stride) it works good.