|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Получение контрольных сумм файлов (MD5, и т.д.) и их проверка в Online-сервисах |
|
C/C++ - Получение контрольных сумм файлов (MD5, и т.д.) и их проверка в Online-сервисах
|
Будем жить, Маэстро... Сообщения: 6694 |
Профиль | Сайт | Отправить PM | Цитировать
Приветы. Вот собственно, такой вопрос возник в связи с темой - VT Checker - утилита пакетной проверки файлов на VirusTotal.com Хочу дополнительно прикрутить к своей программе поиск вредоносов по их контрольной сумме MD5 с дальнейшей проверкой на различных онлайн сервисах. Прошу помочь в этом. Задача состоит из трёх подзадач.
1. Как получить контрольную сумму (MD5) файла - Решена 2. Как сделать запрос на онлайн-сервис (http://www.virustotal.com/search.html) 3. Как вернуть результат проверки Спасибо. |
|
------- Отправлено: 17:30, 17-08-2010 |
Старожил Сообщения: 232
|
Профиль | Сайт | Отправить PM | Цитировать Вот готовые проект со вторым и третьим пунктами. В третьем пункте для парсинга использовал TinyXML. Парсер получился очень простым, так как первый раз имел дело с TinyXML (советую почитать инфу по нему и переписать).
|
------- Последний раз редактировалось ganselo, 14-11-2010 в 00:31. Отправлено: 14:45, 19-08-2010 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать За проект спасибо, но он открывается с ошибками и не компилируется, проблема с компонентом HTTPQuery, выше я писал об этом.
Цитата Drongo:
Цитата:
Цитата:
|
|||
------- Отправлено: 16:34, 19-08-2010 | #12 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Так, я немного торможу, понял что HTTPQuery это переименованый IdHTTP, но при старте проекта всё же ошибки выдаёт.
Убрал галочку "Создавать пакеты во время выполнения". Ругалось на эти строки Удалил запись, теперь при компиляции ошибка линковки |
------- Последний раз редактировалось Drongo, 19-08-2010 в 17:05. Отправлено: 16:49, 19-08-2010 | #13 |
Старожил Сообщения: 232
|
Профиль | Сайт | Отправить PM | Цитировать HTTPQuery это TIdHTTP *HTTPQuery. Кидаете на форму TIdHTTP и переименовываете его на HTTPQuery.
Я использую Borland C++ Builder 2006 с установленной поверх Indy 2010. Попробуйте создать пустой проект и на форму перетащите следующее: TMemo, TButton, TIdHTTP и переименуйте их в Memo, Button, HTTPQuery соответственно. Далее добавьте в проект *.cpp файлы из папки TinyXML. Подключите хидеры: В обработчике события OnClick класса Button впишите следующее: AnsiString md5Hesh = "d8578edf8458ce06fbc5bb76a58c5ca4"; TStringList *post = new TStringList; TStringStream *response = new TStringStream(""); post->Add("chain=" + md5Hesh); try { HTTPQuery->Post("http://www.virustotal.com/search.html", post, response); } catch(EIdSocketError &se) { ShowMessage(se.Message); } catch(EIdHTTPProtocolException &se) { } catch(Exception &e) { ShowMessage(e.Message); } ShowMessage(response->DataString); delete HTTPQuery, post, response; //--------------------------------------------------------------------------- const char * getIndent( unsigned int numIndents ) { static const char * pINDENT=" + "; static const unsigned int LENGTH=strlen( pINDENT ); unsigned int n=numIndents*NUM_INDENTS_PER_SPACE; if ( n > LENGTH ) n = LENGTH; return &pINDENT[ LENGTH-n ]; } //--------------------------------------------------------------------------- int dump_attribs_to_stdout(TiXmlElement* pElement, unsigned int indent, TIdent &ident) { if ( !pElement ) return 0; TiXmlAttribute* pAttrib=pElement->FirstAttribute(); int i=0; int ival; double dval; const char* pIndent=getIndent(indent); while (pAttrib) { ident.insert(make_pair(pAttrib->Name(), pAttrib->Value())); i++; pAttrib=pAttrib->Next(); } return i; } //--------------------------------------------------------------------------- void __fastcall dump_xml(TiXmlNode *pParent, TListRes &lst, unsigned int indent = 0) { if(!pParent) return; TiXmlNode* pChild; int t = pParent->Type(); static TIdent ident; static bool flag = false; switch (t) { case TiXmlNode::TINYXML_ELEMENT: { AnsiString val = pParent->Value(); if(val == "table") { dump_attribs_to_stdout(pParent->ToElement(), indent+1, ident); if(ident["id"] == "tablaMotores") flag = true; ident.clear(); } else { if(flag && (val != "th" && val != "tr" && val != "td")) { flag = false; return; } } } break; case TiXmlNode::TINYXML_TEXT: if(flag) { lst.push_back(pParent->Value()); } break; default: break; } for ( pChild = pParent->FirstChild(); pChild != 0; pChild = pChild->NextSibling()) dump_xml(pChild, lst, indent + 1); } //---------------------------------------------------------------------------- void __fastcall ParseXml(const AnsiString &xml, TResult &result) { TListRes lst; RESULT_NODE res_node; int count; TiXmlDocument xml_doc; xml_doc.Parse(xml.c_str(), 0, TIXML_ENCODING_UTF8); dump_xml(&xml_doc, lst); for(int i = 4; i < lst.size(); i+=4) { res_node.antivirus = lst[i]; res_node.version = lst[i + 1]; res_node.last_upd = lst[i + 2]; res_node.result = lst[i + 3]; result.push_back(res_node); } } void __fastcall TForm1::HTTPQueryRedirect(TObject *Sender, AnsiString &dest, int &NumRedirect, bool &Handled, AnsiString &VMethod) { TResult result; AnsiString res = HTTPQuery->Get(dest); Memo->Lines->Add(res); ParseXml(res, result); Handled = false; bool flag = true; for(TResult::iterator i = result.begin(); i != result.end(); i++) { if(i->result != "-") { Application->MessageBoxA( AnsiString("Обнаружен вирус " + i->result).c_str(), "Внимание", MB_OK + MB_ICONWARNING); flag = false; } } if(flag) Application->MessageBoxA("Вирусов не обнаружено", "Информация", MB_OK + MB_ICONINFORMATION); } Попробуйте скомпилировать. |
------- Отправлено: 17:33, 19-08-2010 | #14 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать ganselo, Сделал по последней инструкции, скомпилировалось без ошибок. Но по функционалу, получилось тоже самое что и утром с первым проектом, запрос делает, получает пустую\главную страницу без результатов проверки. Если не сложно посмотрите проект - 65 КБ.
|
------- Отправлено: 19:22, 19-08-2010 | #15 |
Старожил Сообщения: 232
|
Профиль | Сайт | Отправить PM | Цитировать После перекомпиляции у меня всё работает (скрины и полученная html страничка в атаче). А после запуска вашего exe'шника получается стартовая страница. Думаю связано это с тем, что у вас старая версия Indy. Поставьте последнюю версию Indy с офф сайта.
|
------- Отправлено: 22:12, 19-08-2010 | #16 |
Старожил Сообщения: 232
|
Профиль | Сайт | Отправить PM | Цитировать Проснифал пакетики с вашей версии программы и своей. Выяснилось, что в вашей редирект не верно работает. Попробуйте в обработчике события OnRedirect вывести параметр dest (ShowMessage(dest); ) и вышлете мне результат.
|
------- Отправлено: 22:22, 19-08-2010 | #17 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Цитата ganselo:
|
|
------- Отправлено: 22:48, 19-08-2010 | #18 |
Старожил Сообщения: 232
|
Профиль | Сайт | Отправить PM | Цитировать Drongo, какую версию Builder'a используете? Какую версию Indy используете? Попробуйте потестить в CodeGear C++ Builder 2009.
|
------- Отправлено: 00:29, 20-08-2010 | #19 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Цитата Drongo:
Цитата Delirium:
|
||
------- Отправлено: 00:55, 20-08-2010 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Info - Онлайн проверка всего компьютера и отдельных файлов на вирусы | iskander-k | Защита компьютерных систем | 6 | 27-01-2013 22:30 | |
Прочие - Программы для подсчёта контрольных сумм файлов | ALEXEY_DFD | Программное обеспечение Windows | 14 | 18-11-2011 15:30 | |
CMD/BAT - [решено] Проверка установки определенных файлов в директорию | korenza | Скриптовые языки администрирования Windows | 17 | 03-06-2010 13:25 | |
Проверка защищенных файлов | SergOst | Microsoft Windows NT/2000/2003 | 11 | 15-10-2006 18:07 | |
Проверка новых файлов налету, чем? | sash minsk | Защита компьютерных систем | 5 | 03-06-2005 16:46 |
|