Igroman787

Перепись населения Star Conflict

Опрос  

17 голосов

  1. 1. Добавить возможность регистрировать кто сколько никнеймов перебрал

    • Все равно -_-
      2
    • Да ^_^
      12
    • Нет :Р
      3


Recommended Posts

Всем привет! :)
Торжественно открываю ивент на перепись населения Star Conflict: ts2.scorpclub.ru :015j: Надеюсь на вашу помощь и поддержку в данном треше :012j:

025.PNG.25fa7bffba84d2fba6c3455bd60ec33d

 

Как участвовать в данном мероприятии:

  1. Скачать архив по ссылке: https://yadi.sk/d/jcVr7YOd3UvhXX
  2. Распаковать содержимое архива в отдельную папку (а это аж целых два файла activscan.exe и Newtonsoft.Json.dll).
  3. Запустить и войти в игру Star conflict. (если игра уже запущена, то лучше перезапустить, что бы прога не читала лишние логи)
  4. Открыть игровой чат и установить ввод в поле ввода чата (должен мигать индикатор ввода текста)
  5. Запустить activscan.exe.
  6. Выбрать пункт SC population census.
  7. Нажать кнопку Start.
  8. Теперь дайте программе спокойно поработать)

 

Примечания:

  1. При запуске модуля SC population census программа будет запрашивать с сервера пачку uid (10шт) и искать их никнеймы методом ping-pong (или просто по человечески - пинговать). После того, как он пропингует пачку этих никнеймов, он отправит найденные 10 никнеймов на сервер. После чего цикл повторяется.
  2. Сервер выдает пачку никнеймов, основываясь на том, у которых uid еще нет никнеймов. Поэтому может возникнуть дубль проверки некоторых uid (одну и ту же пачку могут взять несколько activscan.exe клиентов). Защита от данного казуса встроена, но отключена, так как очень сильно начинает загружать ЦП (слишком много нужно проверять записей в таблице - какие uid были взяты, а какие еще нет). Пришлось включить.
  3. При движении мышкой, программа приостанавливает свою работу на 3 сек. 
  4. По идее можно добавить возможность регистрировать кто сколько никнеймов перебрал (добавил опрос)

 

UPD: В скором времени перенесу ~57к никнеймов с schistory.space.

Изменено пользователем Igroman787

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Первый подводный камень - обнаружил странный баг с uid 81.

В игре по uid=81 проживает никнейм UnDeadMoroz. Но! если смотреть uid данного никнейма через публичный апи SC, получаем соверешшно другую картуну (uid=89080). Как так то? :015j:
Что бы не пинговать данного пилота снова и снова пришлось включить на стороне сервера режим распределения вывода uid.

screenshot-180429-190128.thumb.jpg.c97ff

Изменено пользователем Igroman787

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Привет! Ты на C# же пишешь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, _KOPM сказал:

Привет! Ты на C# же пишешь?

Да) Пытался как то на С++, но решил не заморачиваться. Поэтому для работы програмки обязательно наличие Framework.net 4.5

Изменено пользователем Igroman787

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

НЯП, ты решил схитрить и задействовать большее количество машин для сканирования))

Тогда используй еще это:

https://jakeroid.com/ru/blog/mnogopotochny-e-prilozheniya-v-c-dlya-chajnikov.html

Там очень просто расписано как использовать многопоточность - ускоришь процесс еще в несколько раз.

  • Благодарю 1
  • Не понял 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 минут назад, _KOPM сказал:

НЯП, ты решил схитрить и задействовать большее количество машин для сканирования))

Тогда используй еще это:

https://jakeroid.com/ru/blog/mnogopotochny-e-prilozheniya-v-c-dlya-chajnikov.html

Там очень просто расписано как использовать многопоточность - ускоришь процесс еще в несколько раз.

Многопоточность это конечно хорошо) Оно даже там используется, например для одновременного чтения логов и выполнеия самого скрипта) Кстати, логи читаются через потоковый читатель StreamReader, что позволяет не перечитывать логи каждый раз целиком, а читать только новые сточки) Так же есть дополнительный поток, который удерживает игру в активном состоянии - это конечно уже на грани автоматизации и читерства, но все же во благо)
Но вот СК не любит, когда в его чат пишешь чаще, чем нормальный человек - выкидывает из игры, а потом вообще начинает банить через несколько таких попыток)

Изменено пользователем Igroman787

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добавил возможность записывать никнейм того, кто первый нашел пару uid-nickname. Для этого нужно скачать новую версию activscan.exe по ссылке: https://yadi.sk/d/jcVr7YOd3UvhXX И вписать свой никнейм в поле Searcher nickname (optional). По умолчанию данное поле пустое и на сервере воспринимается как НЛО :015j: 100 лучших никнеймов будут висеть в таблице на главной странице ts2.scorpclub.ru :)

 

UPD: Кому интересна вся эта тема с программированием, выкладываю скрипт на python3 для перебора никнеймов через открытую API SC:

  1. Простой перебор никнеймов, содержащие латински буквы и цифры: 
    Скрытый текст
    
    import urllib.request
    import itertools
    import os
    
    def Check(nickname):
    	buffer = GetWeb("http://gmt.star-conflict.com/pubapi/v1/userinfo.php?nickname=" + nickname)
    	if '"result": "error"' in buffer:
    		return
    	else:
    		print(nickname)
    		buffer = GetWeb("http://ts2.scorpclub.ru/api/v1/addnickname.php?nickname=" + nickname)
    #end define
    
    def GetWeb(url):
    	fp = urllib.request.urlopen(url)
    	mybytes = fp.read()
    	mystr = mybytes.decode("utf8")
    	fp.close()
    	return mystr
    #end define
    
    
    ###
    ### Start program
    ###
    
    start = 1
    if (os.path.isfile("backup")):
    	file = open("backup")
    	start = int(float(file.read()))
    	file.close()
    #endif
    
    EN_UPPER = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    EN_LOWER = "abcdefghijklmnopqrstuvwxyz"
    RU_UPPER = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
    RU_LOWER = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
    DIGITS = "1234567890"
    while start < 16:
    	file = open("backup", 'w')
    	file.write(str(start))
    	file.close()
    	for item in itertools.product(EN_UPPER + EN_LOWER + DIGITS, repeat=start): #itertools.random_product
    		nickname = ''.join(item)
    		Check(nickname)
    	#end for
    	start = start + 1
    #end while

     

     

  2. Перебор по словарю: 
    Скрытый текст
    
    import urllib.request
    import itertools
    import os
    
    def Check(nickname):
    	buffer = GetWeb("http://gmt.star-conflict.com/pubapi/v1/userinfo.php?nickname=" + nickname)
    	if '"result": "error"' in buffer:
    		return
    	else:
    		print(nickname)
    		buffer = GetWeb("http://ts2.scorpclub.ru/api/v1/addnickname.php?nickname=" + nickname)
    #end define
    
    def GetWeb(url):
    	fp = urllib.request.urlopen(url)
    	mybytes = fp.read()
    	mystr = mybytes.decode("utf8")
    	fp.close()
    	return mystr
    #end define
    
    
    ###
    ### Start program
    ###
    
    file = open("list.txt")
    for line in file:
    	line = line.replace('\r', '')
    	line = line.replace('\n', '')
    	Check(line)
    file.close()

     

     

  3. Так же теперь можно посмотреть все никнеймы определенной длины, которые есть в базе: http://ts2.scorpclub.ru/api/v1/getnicknames.php?length=15, где 15 - это длина никнейма :)

Скрипты конечно же написаны на коленке и есть что дорабатывать :)

Изменено пользователем Igroman787

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 30.04.2018 в 12:14, Igroman787 сказал:

100 лучших никнеймов...

Оптимистический оптимист 

aa2ff9924203.jpg
 

  • Лайк 1
  • Благодарю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, Notip сказал:

Оптимистический оптимист 

Это даа :D
PS: Спасибо за участие в данном треше :012j: Может найду на складе что нибудь полезное для тебя :)

Изменено пользователем Igroman787

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

сервер неожиданно умер :D

UPD: Сервер заработал. Причина смерти - отключено администрацией из за высокой нагрузки на CPU :006j: Пришлось искусственно ограничить мощность сервера, что бы админы не ругались :004j:

Изменено пользователем Igroman787

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 01.05.2018 в 16:47, Igroman787 сказал:

сервер неожиданно умер :D

UPD: Сервер заработал. Причина смерти - отключено администрацией из за высокой нагрузки на CPU :006j: Пришлось искусственно ограничить мощность сервера, что бы админы не ругались :004j:

Хочешь определить кол-во играющих? 

  • Вверх 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 27.05.2018 в 01:05, NikMAX сказал:

Хочешь определить кол-во играющих? 

Нет. Хочу завершить внутренности сервиса schistory.space :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Просто информация по ходу развития проекта :)

  1. Всего найдено 192344 никнеймов, что примерно составляет 5,7% от общего количества.
    031.PNG.04a4bcd239db8c379dfa4f51170ca82f
     
  2. К сожалению разработчики не хотят не могут нам предоставить весь список игроков SC, сослав на открытую api SC. Поэтому было решено разработать новое тяжелое вооружение: Python скрипт, перебирающий все возможные комбинации никнеймов через открытую api SC, способный перебирать до 50000 никнеймов в секунду через разные прокси, найденные в сети. В данный момент скрипт проходит бетатест.
    032.thumb.PNG.41ad1999773d4273d152ff9d32
     
  3. И спасибо всем вам за поддержку проекта! :fed012:

 

UPD: Надеюсь меня не забанят за такое :D

Изменено пользователем Igroman787
  • Хаха 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах


Вот и подошел к концу проект "перепись населения SC" :fed001: Всего найдено 3 313 203 никнейма :fed006: 

006.png.1ce2c07148c672bf1d5c87b659ea0844
В скором времени начну дорабатывать серверную часть для работы с мертвыми никнеймами и перенесу все найденные никнеймы на сервер schistory.space :santa:
Фрагмент видео, когда запустил программу со старыми игровыми логами :shturm_light:


И всем большое спасибо за участие в данном треше! Особенно Notip :fed012:

Изменено пользователем Igroman787
  • Лайк 4
  • Вверх 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу