В самом примитивном случае задача будет решаться так (это псевдокод, он пародирует язык программирования, передает лишь идею):
a = [алфавит 0-9a-zA-Z]
foreach(i => index_a_0 ... index_a_last )
foreach( j => index_a_0 ... index_a_last )
foreach( k => index_a_0 ... index_a_last)
...
{
filename = a[i] + a[j] + ... a[m] + '.jpg'
result = [функция получения HTTP заголовков по url, метод HEAD](filename)
if(result.responseCode = 200) // Если HTTP код 200, то файл существует
{
// загружаем файл
}
// пишем в лог файл, какие i,j,k...m прошли
}
Если у вас пинг будет в пределах 100 мс, то все комбинации процесс в одном потоке обойдет за 2 месяца.