PDA

Просмотр полной версии : Нужно написать Аналог Microsoft Security Centre


CrewToy
06.05.2009, 14:22
Всем доброго всемени суток
Накануне диплома появилась проблема с созданием программы.
Вообще программа должна оценивать уровень безопасности на компе. Чем-то подобным является интегрированый в Windows Центр Безопасности , выводящий инфу о защищённости компьютера и показываюшего актуальность баз обновления.

необходимо реализовать следующие шаги

программа-клиент
1)ставится на комп
2)запускается
3)соединяется к серверу ( который я почти написал уже), на котором хранится инфа о существующем в его базе защитном ПО и его рейтинге
4)качает с сервера необходимые данные для проверки машины ( название + тип ПО ( антивирь,файрвол и тд) + путь в реестре + путь в реестре + на инфу о версии обновления )

на примере NOD Smart Security это что то вроде

"NOD32 Smart Security"
"Antivirus"
HKEY_LOCAL_MACHINE\SOFTWARE\Eset\ESET Security\
HKEY_LOCAL_MACHINE\SOFTWARE\Eset\ESET Security\CurrentVersion\Info (тут находится ключ Scanner Version со значением "4055 (20090506)" )


5) Из скачаного списка идёт проверка на наличие этого ПО на машине ( поиск по реестру )
6) отправляет полученный список найденого ПО и версии его обновлений на сервер

сервер принимает данные, сверяет какое на машине стоит ПО и как оно обновлено и сверяет со своей базой ( это уже частично написано )


С сервером я разберусь, а вот с клиентом получилась реальная запара.

Программы-аналоги в сети есть, исходников их я не смог найти ( оно и понятно )


чем-то наподобие является программа Belarc Advisor .

ХЕЛП!

Языки - С++ либо C#
п.с. может быть кто сможет посоветовать, где я могу найти отдельные части ( например реализацию поиска по реестру, скачку через инет с базы данных и тд )

CybFreak
06.05.2009, 17:03
Если говорить о языках то советую брать С# на нем быстрее можно написать то что нужно и у него есть хорошая система классов. Если бы было побольше времени можно было бы оформить как опенсорсный проект, тема интересная и нужная поэтому желающих помочь было бы достаточно. Жаль что я не прикасался к С# уже давно поэтому могу помочь только советами.

CrewToy
06.05.2009, 18:00
да я тоже остановился на C#
пишу под дотнет)

ivanko.rus
06.05.2009, 21:19
А языки можно использовать только C++ и C#? Или всё же возможно использование других?

CrewToy
06.05.2009, 21:51
я честно говоря больше по базам как-то ) поэтому если честно вопрос не очень понимаю)

пишу под дотнет ) если там можно на нескольких языках разные части реализовывать - тогда не принципиально)

m13/40
07.05.2009, 08:40
Для поиска в реестре есть класс в .Net
Microsoft.Win32.Registry (http://msdn.microsoft.com/en-us/library/microsoft.win32.registry.aspx )
Для подключения клиента к серверу по tcp сокеты: http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.aspx
Для подключения к бд тебе нужно использовать ADO.NET (если ты писал сервер с бд, то скорее всего уже использовал ADO.NET)
А вообще тебе нужно перед тем как начинать писать определиться с архитектурой приложений (разделить какие именно методы должны работать на сервере а какие на клиенте, построить объектную модель приложений (системы в целом))
Далее определить и описать протокол взаимодействия клиента с сервером (определить комманды используемые, ответы на эти комманды, действие по истечению таймаута и прочее), решить как вообще будет происходить взаимодействие - через сокеты, COM+, служба сообщений или прочее.
Если нужна помощь в написании пиши в ЛС, обсудим. Могу кинуть хорошие книжки по дот нет.

CrewToy
07.05.2009, 12:36
гранд мерси
сейчас разберусь) если будут вопросы,обращусь по ходу! )

ivanko.rus
08.05.2009, 08:34
Кстати, вспомнил что WMI имеет возможность выводить список установленных программ! Может тогда и не надо будет в реестре рыться. Я небольшую прогу на Питоне накатал, которая по сети отправляет кой-какую инфу о системе. Если интересно, могу выложить.

m13/40
08.05.2009, 08:54
Кстати, можно использовать скрипты на MS PowerShell (http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx) . Полная поддержка классов .Net, лёгкий доступ к WMI, готовые скрипты на многое ))

ivanko.rus
08.05.2009, 10:05
Да в любом случае - к WMI можно доступ иметь почти со всего что хочешь =) Включая C/C++/C# . Так что дерзай! Для примера: вот код получения информации о юзерах из WMI на Питоне:
def GetUsers(SID=1, Status=1):

a = ''

for c in wmi.Win32_Account():

m = a + c.Caption + ' '

a = m

if SID:

m = a + 'with ' + 'SID: ' + c.SID + '\n'

a = m

if Status:

m = a + c.Status

a = m

m = a + "\n\n"

a = '<USERS>' + m + '</USERS>'

return a

CrewToy
18.05.2009, 19:15
Парни)
возник по ходу создания вопрос следующий)

Мучу поиск по реестру по следующему принципу
есть в рестре директория

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Uninstall\

в не записи обо всех установленных прогах =)
в поддиректориях есть ключ DisplayName где собсна и находится название установленной программы.

База где собсна хранятся имена прог, которые надо найти на компе , стоит на мускуле
Следовательно пользуюсь MySQL коннектором.
Будьте добры подскажите, как в нём формировать запрос таким образом , чтоб он брал значение какого то атрибута из базы и присваивал его какой то переменной.

сразу на примере скажу
база называется TestBase
таблица с именами проги выглядит примерно так -
ID NAME
1 NOD32
и тд по аналогии

я реализовал поиск сам. вовремя обхода он смотрит
If DisplayName == X ( где Х - какая то переменная) , то выдаёт сообщение о том что такая прога найдена

кто юзал MySQL коннектор , подскажите как сформировать запрос пользуясь коннектором и как сделать так, чтоб значение , которое вернёт запрос записывалось в переменную?

Заранее большое спасибо)


п.с. пишу на C# (это к вопросу о рприсвоении значения)

формирование запроса думаю там не зависит от языка ( ? )

CrewToy
24.05.2009, 12:19
Последний вопрос отпал) я разобрался уже)
остаалсь маленькая просьба, она требует просто нормальных знаний Си шарп))) не могу никак цикл организовать грамотно) кто может помочь с этим, отпишитесь пожалуйста)

пока что прога работает тока с каким то определённым кортежом из БД )
подскажите как узнать число всех записей в таблице
что то вроде COUNT чтоли)

CrewToy
29.05.2009, 23:29
благодарю за тему тех,ребят, кто отозвался =) Я уже сам со всем разобрался, реализовал и сдал =)

тему можно удалять =)