Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Получение контрольных сумм файлов (MD5, и т.д.) и их проверка в Online-сервисах

Ответить
Настройки темы
C/C++ - Получение контрольных сумм файлов (MD5, и т.д.) и их проверка в Online-сервисах

Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Drongo
Дата: 18-08-2010
Описание: Актуализировал вопрос...
Приветы. Вот собственно, такой вопрос возник в связи с темой - VT Checker - утилита пакетной проверки файлов на VirusTotal.com Хочу дополнительно прикрутить к своей программе поиск вредоносов по их контрольной сумме MD5 с дальнейшей проверкой на различных онлайн сервисах. Прошу помочь в этом. Задача состоит из трёх подзадач.

1. Как получить контрольную сумму (MD5) файла - Решена
2. Как сделать запрос на онлайн-сервис (http://www.virustotal.com/search.html)
3. Как вернуть результат проверки

Спасибо.

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 17:30, 17-08-2010

 

Аватара для ganselo

Старожил


Сообщения: 232
Благодарности: 90

Профиль | Сайт | Отправить PM | Цитировать


Браузер отправляет запрос на http://www.virustotal.com/search.html (POST запрос chain=md5). Дальше происходит редирект на результат.

-------
К величайшему сожалению "история учит нас тому, что она ничему не учит".

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:55, 20-08-2010 | #21



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Цитата ganselo:
какую версию Builder'a используете? »
При написании использую
Цитата:
Borland C++ Builder 6.0 Enterprise Suite
Дело в том, что собственно программу я написал давно, там 2 500 строк, и переписывать программу для CodeGear C++ Builder 2009 уже попросту нереально. Вот и хочу сделать дополнительный детект по контрольной сумме, тем более что в логах, анализируемых программой MD5 уже есть.
Цитата ganselo:
Какую версию Indy используете? »
Версия Indy в билдере 6.0 такая - 8.0.25
Цитата ganselo:
Попробуйте потестить в CodeGear C++ Builder 2009. »
Да, там всё без проблем, получаю результат контрольной суммы, версия Indy - 10.2.5

Скачал новую Indy10 пробовал установить по инструкции, правда, ничего с установкой компонентов не получилось Как её правильно установить? Я удалил старую Indy, запустил файл .bpk, компиляция нормально - Install в ошибку.

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 11:49, 20-08-2010 | #22


Аватара для ganselo

Старожил


Сообщения: 232
Благодарности: 90

Профиль | Сайт | Отправить PM | Цитировать


Я устанавливал по этой инструкции. Эту инструкцию можно выполнять с 3-его пункта, но перед этим нада удалить старые Indy компоненты.

-------
К величайшему сожалению "история учит нас тому, что она ничему не учит".

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:50, 20-08-2010 | #23


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Цитата ganselo:
но перед этим нада удалить старые Indy компоненты. »
Так и сделал, потом снёс билдер и заново установил без Indy
Установил Indy по инструкции, палитра компонентов появилась, но даже простой вызов

Код: Выделить весь код
void __fastcall TForm1::FormCreate(TObject *Sender)
{
   Label1->Caption = IdHTTP1->Version;
}
//---------------------------------------------------------------------------
Выпадает в ошибку
Цитата:
[Linker Error] Unresolved external '__fastcall Idbasecomponent::TIdBaseComponent::GetVersion()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 19:29, 20-08-2010 | #24


Аватара для ganselo

Старожил


Сообщения: 232
Благодарности: 90

Профиль | Сайт | Отправить PM | Цитировать


А вы указали пути ко всем нужным файлам?
Попробуйте скомпилировать в release версии.

-------
К величайшему сожалению "история учит нас тому, что она ничему не учит".

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:23, 20-08-2010 | #25


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Цитата ganselo:
А вы указали пути ко всем нужным файлам? »
Всё сделал по инструкции
Цитата:
5. Запустил батник "C:\indy10\Lib\Fullc6.bat".
6. Создается папка "C:\indy10\C6", идёт компилирование Indy 10...
7. Дальше распихиваю по папкам:
*.hpp -> "C:\Program files\Borland\CBuilder6\Include"
*.lib, *.bpi -> "C:\Program files\Borland\CBuilder6\Lib"
*.dcp, *.lsp, *.bpl -> "C:\Program files\Borland\CBuilder6\Bin"
8. Добавляю dclIndyCore60.bpl и dclIndyProtocols60.bpl в палитру компонентов ("Component" -> "Install packages.." -> "Add")
Цитата ganselo:
Попробуйте скомпилировать в release версии. »
Без разницы.

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 21:12, 20-08-2010 | #26


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Вложения
Тип файла: rar Send_MD5_VT_1.rar
(399.1 Kb, 15 просмотров)

Так. Установил Indy, версия 10.2.3 параллельно пришлось ещё вручную закинуть в папку Bin файлы indy60.bpl и dclindy60.bpl. Проект собрал. Собирается только при релиз версии. Без этого вылетает окно отладчика.

Правда ожидаемого результата почему-то нет.

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 22:15, 20-08-2010 | #27


Аватара для ganselo

Старожил


Сообщения: 232
Благодарности: 90

Профиль | Сайт | Отправить PM | Цитировать


Запустил я exe'шник и он мне выдал HTTP/1.0 303 See Other. Это означает, что происходит редирект, но метод OnRedirect у HTTPQuery не назначен. Во вкладке Events (события) класса HTTPQuery назначил событию OnRedirect функцию:
Код: Выделить весь код
void __fastcall TForm1::HTTPQueryRedirect(TObject *Sender,
      AnsiString &dest, int &NumRedirect, bool &Handled,
      AnsiString &VMethod)
Скомпилил и всё заработало.

-------
К величайшему сожалению "история учит нас тому, что она ничему не учит".

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:51, 20-08-2010 | #28


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


ganselo, Точно, совсем уже я мозги потерял, удалял старую версию компонента, а видимо нужно было переназначить метод на новую. Заработало всё как надо.

Только мне бы хотелось, чтобы во время работы не выскакивали лишние MessageBox
Код: Выделить весь код
    catch(EIdSocketError &se)
    {
        ShowMessage(se.Message);
    }
    catch(Exception &e)
    {
        ShowMessage(e.Message);
    }
    ShowMessage(response->DataString);
Чтобы запрос был "тихий", запросили, и вернули ответ, если ответа нет, чтобы вернулся ноль. И ещё, мне вывод классикации различными антивирусами тоже не нужен, но его убрать не проблема, мне нужно число в самом результате Result: 32 /40 (80.0%) выделил его красным. Я хочу сделать ComboBox с выбором значений: 20,30,...,80 и выше, при выборе значения из списка, должно происходить сравнение с проверкой результатов, и на этом основании, файл будет помещаться в команду карантина и удаления.

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 23:02, 20-08-2010 | #29


Аватара для ganselo

Старожил


Сообщения: 232
Благодарности: 90

Профиль | Сайт | Отправить PM | Цитировать


Цитата Drongo:
Только мне бы хотелось, чтобы во время работы не выскакивали лишние MessageBox »
Ну ошибки в любом случае нужно ловить.

Цитата Drongo:
не нужно число в самом результате Result: 32 /40 (80.0%) выделил его красным. Я хочу сделать ComboBox с выбором значений: 20,30,...,80 и выше, при выборе значения из списка, должно происходить сравнение с проверкой результатов, и на этом основании, файл будет помещаться в команду карантина и удаления. »
Это легко сделать:

В обработчике события OnRedirect после того как распарсили результат вставляем это:
Код: Выделить весь код
int antivirus_count = result.size();
int true_res = 0;
int procent;

for(TResult::iterator i = result.begin(); i != result.end(); i++)
{
        if(i->result != "-")
        {
             true_res ++;
        }
}

procent = true_res*100/antivirus_count; //получили процент
if(ComboBox->Text.ToInt() == procent) { //поместить в карантин }
else { //вирусов нет}

-------
К величайшему сожалению "история учит нас тому, что она ничему не учит".

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:07, 21-08-2010 | #30



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Получение контрольных сумм файлов (MD5, и т.д.) и их проверка в Online-сервисах

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход