Дипломы, курсовые, рефераты, контрольные...
Срочная помощь в учёбе

Расработка автоматизированной системы обеспечения информационной безопасности электронной коммерции в онлайн-банке ООО

Дипломная Купить готовую Узнать стоимостьмоей работы

Объектом исследования в дипломной работе является ООО «Росбанк», частный универсальный банк в составе международной банковской группы Societe Generale, оказывающий все виды услуг частным и корпоративным клиентам. Защита информации является важной задачей, которую должны решать специалисты банка. В работе приведена его организационная структура, которая является линейно-функциональной. Под… Читать ещё >

Содержание

  • ВВЕДЕНИЕ
  • I. АНАЛИТИЧЕСКАЯ ЧАСТ
    • 1. 1. Технико-экономическая характеристика предметной области и предприятия. Анализ деятельности «КАК ЕСТЬ»
      • 1. 1. 1. Характеристика предприятия и его деятельности
      • 1. 1. 2. Организационная структура управления предприятием
      • 1. 1. 3. Программная и техническая архитектура ИС предприятия
    • 1. 2. Характеристика комплекса задач, задачи и обоснование необходимости автоматизации
      • 1. 2. 1. Выбор комплекса задач автоматизации и характеристика существующих бизнес процессов
      • 1. 2. 2. Определение места проектируемой задачи в комплексе задач и ее описание
      • 1. 2. 3. Обоснование необходимости использования вычислительной техники для решения задачи
    • 1. 3. Анализ существующих разработок и выбор стратегии автоматизации «КАК ДОЛЖНО БЫТЬ»
      • 1. 3. 1. Анализ существующих разработок для автоматизации задачи
      • 1. 3. 2. Выбор и обоснование стратегии автоматизации задачи
      • 1. 3. 3. Выбор и обоснование способа приобретения ИС для автоматизации задачи
    • 1. 4. Обоснование проектных решений
      • 1. 4. 1. Обоснование проектных решений по информационному обеспечению
      • 1. 4. 2. Обоснование проектных решений по программному обеспечению
      • 1. 4. 3. Обоснование проектных решений по техническому обеспечению
  • II. ПРОЕКТНАЯ ЧАСТ
    • 2. 1. Разработка проекта автоматизации
      • 2. 1. 1. Этапы жизненного цикла проекта автоматизации
      • 2. 1. 2. Ожидаемые риски на этапах жизненного цикла и их описание
      • 2. 1. 3. Организационно-правовые и программно-аппаратные средства обеспечения информационной безопасности и защиты информации
    • 2. 2. Информационное обеспечение задачи
      • 2. 2. 1. Информационная модель и её описание
      • 2. 2. 2. Характеристика нормативно-справочной, входной и оперативной информации
      • 2. 2. 3. Характеристика результатной информации
    • 2. 3. Программное обеспечение задачи
      • 2. 3. 1. Общие положения (дерево функций и сценарий диалога)
      • 2. 3. 2. Характеристика базы данных
      • 2. 3. 3. Структурная схема пакета (дерево вызова программных модулей)
      • 2. 3. 4. Описание программных модулей
    • 2. 4. Контрольный пример реализации проекта и его описание
  • III. ОБОСНОВАНИЕ ЭКОНОМИЧЕСКОЙ ЭФФЕКТИВНОСТИ ПРОЕКТА
    • 3. 1. Выбор и обоснование методики расчёта экономической эффективности
    • 3. 2. Расчёт показателей экономической эффективности проекта
  • ЗАКЛЮЧЕНИЕ
  • СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
  • Приложение А. Листинг программы

Расработка автоматизированной системы обеспечения информационной безопасности электронной коммерции в онлайн-банке ООО (реферат, курсовая, диплом, контрольная)

час. Занятые исполнители Доля выполняемых работ, % Трудоемкость по исполнителям, чел. час. 1. Подготовительная стадия 48 Инженер-программист 100 48 2.

Теоретическая разработка 37 Инженер-программист 100 37 3. Алгоритмизация и программирование 240 Инженер-программист 100 240 4. Обобщение и выводы 18 Инженер-программист 100 18 5. Техническая отчетность 18 Инженер-программист 100 18 6. Заключительная стадия 7 Инженер-программист 100 7

Среднемесячный должностной оклад инженера-программиста — 24 000 рублей. Среднедневные показатели по формуле 11 составят:

инженера-программиста 24 000: 20,8=1153,85 руб.

По данным таблицы 3.3 определим время занятости специалиста на разработку программного продукта.

Т дней инженера-программиста =(48+37+240+18+18+7):8 час = 368:

8=46 рабочих дня.

Т календарных дней работы инженера-программиста =368 1,2/(0,73×8) = 76 календарных дней.

Затраты на заработную плату состоят из зарплаты инженера-программиста, основная зарплата 1153,85 руб.

76 дней = 87 692,6 руб.

Отчисления на социальные нужды 26,2% от 87 692,6 рублей или 87 692,626,2/100 = 22 975,46 руб.

Величина накладных расходов при создании приложении составляет 120% от основной заработной платы, следовательно:

120% от 87 692,6 руб.=105 231,15 руб.

Для проектирования и отладки программ используется ПК, для обслуживания которого нужен специалист, заработная плата которого составляет 15 000 руб. в месяц.

Один наладчик обслуживает 6 ПК с периферией. Таким образом, финансовые затраты на зарплату при эксплуатации одного ПК в месяц составляют — 15 000:

6= 2500 руб.

В год — 2500×12= 30 000 руб.

Отчисления на социальные нужды 30 000×0,262=7860 руб.

Первоначальная стоимость ПЭВМ с периферией — 25 000 рублей.

Срок полезного использования (службы) ПЭВМ — 5 лет.

Норма амортизационных отчислений по формуле (3.13) составит:

НА = 100%: 5 лет = 20% в год.

Амортизационные расходы составляют:

А= 25 000×20%: 100% = 5000 руб. в год.

Необходимо определить сумму амортизационных отчислений, относимых на программный продукт.

Эту сумму амортизационных отчислений можно определить после расчета продолжительности затрат машинного времени на разработку программного продукта (таблица 3.4).

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

4.

Таблица 3.4 — Использование машинного времени на различных стадиях создания приложения Наименование стадии Трудоемкость, чел. часов Доля работ, вып. на комп.,

% Необходимое машинное время, час. Стадия подготовки 48 20 10 Изучение теоретических основ 37 10 4 Составление алгоритмов и разработка программного кода -изучение и описание задачи 10 10 1 -разработка алгоритмов 20 — - - разработка блок-схем 20 10 2 -создание программного кода 100 50 50 -отладка 40 100 40 -расчеты 20 100 20 -оформление документации 30 20 6 Обобщение и выводы 18 10 2 Техническая отчетность 18 20 4 Заключительная стадия 7 40 3 Всего: 142

Годовой фонд машинного времени составляет Фд = 12 мес. x 250 раб. дней x 8 час=24 000 час. Затраты машинного времени на разработку программного продукта составляют 142 час. Таким образом, сумма амортизационных отчислений, относимых на программный продукт, составляет

5000 руб.: 24 000 час x 142 час.= 30 руб.

Необходимо определить себестоимость одного часа машинного времени.

Затраты на заработную плату наладчика

30 000 руб./год: (250×8) x142=2130 руб.

Отчисления на социальные нужды 26,2% от 2130 руб. = 558,06 руб.

Затраты на электроэнергию определяются принимаем 3 эл. эн = 400 руб.

Затраты на использование машинного времени:

3атраты маш. вр = 2130 + 558,06 + 400 = 3088,06 руб.

При разработке программного продукта предполагается использовать:

500 листов бумаги для принтера формата А4 (1 пачка) стоимостью 200 рублей за пачку; стоимость бумаги 200×1 = 200 руб.;

один картридж для принтера марки HP1100 (черно-белый) стоимостью 2000 рублей.

Общая сумма затрат на разработку программного продукта составит:

Заработная плата инженера-программиста — 87 692,6 руб.

Отчисления на социальные нужды — 22 975,46 руб.

Накладные расходы — 105 231,15 руб.

Амортизационные отчисления — 30 руб.

Затраты на машинное время -3088,06 руб.

Расходы на материалы — 2200 руб.

Всего затрат — 221 217,27 руб.

Для расчета эффективности примем, что без использования АС сотрудник может обработать 10 документов, при ее использовании — 50.

Заработная плата специалиста по обработке документов составляет 20 000 руб. в месяц. Тогда по формуле (3.17) считая, что N0 равняется 10 документам, найдем С1= 20 000: (10×20,8) = 96,15 руб. за 1 документ Тогда по формуле (3.18) считая, что N1 равняется 50 документам, найдем С2= 20 000: (50×20,8) = 19,23 руб. за 1 документ К капитальным затратам отнесены текущие годовые затраты на электроэнергию ~ 4800 руб.

К уд. 1 = 4800: (10×20,8×12) = 1,92 руб.

Удельные капитальные вложения при использовании программного продукта:

К уд. 2= 221 217,27: (50×20,8×12) = 17,73 руб.

Приведенные затраты составят:

З1= 96,15 +0,32×1,92=96,76 руб.

З2= 19,23 +0,32×17,73 =24,90 руб.

Планируемый годовой объем документооборота:

Qгод =40 20,8×12 = 9984 документа.

Годовой экономический эффект от внедрения программного продукта:

Эгод. = (96,76 -24,90) x9984 = 717 450,24 руб.

Срок окупаемости капиталовложений составит:

Ток = 221 217,27: 717 450,24 = 0,31 года или 12мес. x 0,31 (4 месяца.

Найдем Еэф по формуле (3.20)

Еэф = = 3,22

Таким образом, Еэф при внедрении программного продукта равно 3,22 > Еэф норм = 0,32;

Срок окупаемости при внедрении программного продукта не более 4 месяцев < Ток норм = 3 года, следовательно, внедрение программного продукта экономически эффективно и целесообразно.

Заключение

Объектом исследования в дипломной работе является ООО «Росбанк», частный универсальный банк в составе международной банковской группы Societe Generale, оказывающий все виды услуг частным и корпоративным клиентам. Защита информации является важной задачей, которую должны решать специалисты банка. В работе приведена его организационная структура, которая является линейно-функциональной. Под организационной структурой понимается структура, которая отвечает за все протекающие на предприятии бизнес-процессы, взаимосвязи и области ответственности сотрудников, а также определяет путь к получению конечного результата деятельности.

ГОСТ Р 50 922−96 «Защита информации. Основные термины и определения» устанавливает основные термины и их определения в области защиты информации. Защита документированной информации в документопотоках обеспечивается комплексом разнообразных мер режимного, технологического, аналитического и контрольного характера.

Аудит ИБ организации позволяет оценить состояние защиты информации на предприятии. Аудит может проводиться как собственными работниками предприятия, и сотрудниками лицензированных аудиторских фирм.

Комплексность как принцип оценки эффективности защиты означает необходимость: установления содержания проверяемых мер и средств; оценки организационно-режимных мероприятий; проверки категории объекта; проверки эффективности защиты информации; проверки воспрещения несанкционированного доступа; составления акта комплексной проверки; разработки рекомендаций по совершенствованию защиты.

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

В настоящее время на российском рынке для обеспечения ИБ имеется много программных продуктов. Разработчиком трех рассмотренных программ является ООО «Атом Безопасность» (г. Новосибирск).

StaffCop Home Edition предусматривает контроль домашнего компьютера, предназначен для работы на одном ПК, возможность подключения агента к административной панели по локальной сети отсутствует.

StaffCop Standard проводит мониторинг деятельности пользователей ПК и контроль информационной безопасности предприятия, идеален как для малого, так и крупного бизнеса.

Security Curator обеспечивает информационную безопасность компании с расширенными функциями блокировки программ и процессов, а также имеет систему уведомления о нарушении политик безопасности, предназначен для среднего и крупного бизнеса.

В работе отмечается, что возможность применения работодателем программного обеспечения, имеющего функции контроля за использованием работниками рабочих компьютеров и сети Интернет в процессе их трудовой деятельности, не противоречит действующему законодательству РФ.

При рассмотрении предметной области был выявлен бизнес-процесс, подлежащий автоматизации. Он связан с регистрацией событий, происходящих на ПК сотрудников банка, так как анализ действий персонала имеет важное значение для ИБ организации.

Основу любой информационной системы составляет БД, т. е. набор данных, организованных специальным образом. В ходе проектирования было дано обоснование выбора среды разработки (Borland Delphi 7) и БД (Microsoft Access).

В ходе дипломного проектирования было создано прикладное приложение, позволяющее осуществлять мониторинг событий на ПК сотрудника организации. В разработанной программе реализована запись и просмотр следующих событий:

мониторинг посещений Интернет-ресурсов;

вставка и извлечения USB-устройств;

проверка списка ПК в ЛВС с учетом времени появления ПК в сети.

Разработанная программа представляет собой загрузочный файл с именем mlan.exe. Установки приложения не требуется, БД также создается при запуске приложения в случае ее отсутствия.

Интерфейс пользователя представляет собой многостраничную форму. Вызов нужной формы определяется выбором пункта меню в верхней части формы. После активизации вкладки возможен переход на нее с сохранением ранее выбранного временного промежутка и результатов отображения информации.

Реализованные в дипломном проекте контрольные примеры показали корректную работу приложения. Цель дипломного проектирования достигнута, так как разработанная система соответствует предъявленным требованиям, выполняет функции мониторинга событий на ПК сотрудников, позволяет менеджерам получать выходные документы в виде файла формата Microsoft Excel.

В дипломном проекте работе сделан технико-экономический расчет эффективности разработки системы, рассчитаны затраты труда на разработку, определена общая продолжительности ее разработки, а также общая сумма затрат на разработку, которая составляет около двухсот двадцати тысяч рублей. Срок окупаемости при внедрении БД составит не более 4 месяцев.

Простой набор мер и средств защиты информации нейтрализует лишь отдельные угрозы ее безопасности, оставляя бреши в обороне. Только постоянно развивающаяся система ИБ может сдержать натиск непрерывно совершенствующихся средств и методов негласного съема информации.

Список использованной литературы Арустамов, Э. А. Охрана труда: Справочник / Э. А. Арустамов. — М.: Издательско-торговая корпорация «Дашков и К», 2008. — 588 с. — ISBN 978−5-91 131−551−1.

Архангельский, А. Я. Программирование в Delphi 7 / А. Я. Архангельский — Бином-Пресс, 2003. — 1152 с. — ISBN 5−9518−0042−0.

Архангельский, А.Я. Delphi 2006

Справочное пособие. Язык Delphi, классы, функции Win32 и .NET / А. Я. Архангельский — Бином-Пресс, 2003. — 1152 с. — ISBN 5−9518−0138−9.

Бакнелл, Д. Фундаментальные алгоритмы и структуры данных в Delphi / Д. Бакнелл — СПб.: Питер, 2006. — 560 с. — ISBN 5−469−1 495−9, 5−93 772−087−3.

Безопасность жизнедеятельности: Учебник для вузов. / С. В. Белов, А. В. Ильницкая, А. Ф.

Козьяков и др.; Под общ. редакцией С. В. Белова.

— М.: Высшая школа, 2007.- 616 с. — ISBN 978−5-06−4 171−2.

Бобровский, С.И. Delphi 7. Учебный курс / С. И. Бобровский — СПб.: Питер, 2008. — 736 с.: ил. — ISBN 978−5-8046−0086−1.

Бузов, Г. А., Калинин С. В., Кондратьев А. В. Защита от утечки информации по техническим каналам. / Г. А. Бузов, С. В. Калинин, А. В. Кондратьев. — М.: Горячая линя-Телеком, 2005. — 416 с. — ISBN 5−93 517−204−6.

Грабауров, В. А. Информационные технологии для менеджеров / В. А. Грабауров — М.: Финансы и статистика, 2001. — 368 с.: ил. ISBN 5−279−2 299−3.

Грабер, М.

Введение

в SQL: Самое простое введение в SQL с полезными примерами и пробными объяснениями и др. / Пер. с англ. В. Ястребов — Издательство «Лори», 2008.

— 375 с. — ISBN — 5−85 582−010−6.

Дарахвелидзе, П.Г., Марков, Е. П. Программирование в Delphi 7 / П. Г. Дарахвелидзе, Е. П.

Марков. — СПб.: БХВ-Петербург, 2003. — 784 с.

— ISBN 5−94 157−116-Х.

Занько, Н.Г., Малаян, К.Р., Русак, О. Н. Безопасность жизнедеятельности. Учебник. 13-е изд., испр. / Н. Г. Занько, К. Р. Малаян, О. Н. Русак: Под ред. О.

Н. Русака. — СПб.: Лань, 2010.

— 672 с.: ил. — ISBN 978−5-8114−0284−7.

Кадлец, В. Delphi. Книга рецептов. Практические примеры, трюки и секреты / В. Кадлец — СПб.: Наука и техника, 2006. — 384 с. — ISBN 5−94 387−269−8, 80−251−0017−0.

Карпов, Б. Delphi: специальный справочник / Б. Карпов — СПб.: Питер, 2002. — 688 с.: ил. — ISBN 5−272−353−5.

Коннолли, Т., Бегг, К., Страчан, А. Базы данных: Проектирование, Реализация и сопровождение. Теория и практика / Т. Коннолли, К. Бегг, А. Страчан — М.: Вильямс, 2003. — 1436 с. — ISBN 5−8459−0527−3, 0−201−70 857−4.

Корнеев, И.К., Степанова, И. А. Защита информации в офисе. / И. К. Корнеев, И. А. Степанова. — М.: ТК ВЕЛБИ, Проспект, 2008 г. — 336 с. — ISBN 978−5-482−1 976;4.

Криптографическая защита информации: учебное пособие / А. В. Яковлев, А. А. Безбогов, В. В. Родин, В. Н. Шамкин. — Тамбов: Изд-во ТАМБ. ГОС. ТЕХН. УН-ТА, 2006. — 140 с. — ISBN 5−8265−0503−6.

Кузин, А. В. Базы данных: учеб. пособие для студ. высш. учеб. заведений /

А.В. Кузин, С. В. Левонисова. — 2-е изд., стер. — М.: Издательский центр «Академия», 2008. — 320 с.

ISВN 978−5-7695−4833−8.

Малюк, А. А. Информационная безопасность: концептуальные и методологические основы защиты информации. Учеб. пособие для вузов. — М: Горячая линия-Телеком, 2004. — 280 с. ил. — ISBN 5−93 517−197-Х.

Марков А.С., Лисовский К. Ю. Базы данных.

Введение

в теорию и методологию: Учебник / А. С. Марков, К. Ю. Лисовский — М.: Финансы и статистика, 2006. — 512 с: ил. — ISBN 5−279−2 298−5.

Мельников В. П. Информационная безопасность и защита информации: учеб. пособие для студ. высш. учеб. заведений / В. П. Мельников, С. Л. Клейменов, Л.

М. Петраков; под. ред. С. Л. Клейменова. — М.: Издательский центр «Академия», 2005.

— 336 с. — ISBN 978−5-7695−4884−0.

Михеева, Е. В. Информационные технологии в профессиональной деятельности: учеб. пособие. — М.: ТК Велби, Изд-во Проспект, 2007. — 448 с. — ISBN 978−5-482−1 569−8.

Основы защиты информации. / А. И. Куприянов, А. В. Сахаров, В. А. Шевцов. — М.: Академия, 2006. — 256 с. — ISBN 5−7695−2438−3.

Основы информационной безопасности. / Е. Б. Белов, В. П. Лось, Р. В. Мещеряков, А. А. Шелупанов. — М.: Горячая линя-Телеком, 2006. — 544 с. — ISBN 5−93 517−292−5.

Панасенко, С. П. Алгоритмы шифрования. Специальный справочник / С. П. Панасенко — СПб.: БХВ-Петербург, 2009. — 576 е.: ил. — ISBN 978−5-9775−0319−8.

Скляров, Д. В. Искусство защиты и взлома информации. / Д. В. Скляров.

— СПб.: БХВ-Петербург, 2004. — 288 с.: ил. — ISBN 5−94 157−331−6.

Стивенс, Р. Delphi. Готовые алгоритмы / Р. Стивенс — М.: ДМК Пресс; СПб.: Питер, 2004. — 384 с.: ил. — ISBN 5−94 074−202−5.

Фленов, М. Е. Библия Delphi. / М. Е. Фленов — СПб.: БХВ-Петербург, 2005. — 880 с. — ISBN 5−94 157−456−8.

Фленов, М. Е. Программирование в Delphi глазами хакера. / М. Е. Фленов — СПб.: БХВ-Петербург, 2005. — 368 с.: ил. — ISBN 5−94 157−351−0.

Хармон, Э. Разработка COM-приложений в среде Delphi / Э. Хармон — Вильямс, 2000. — 464 с.: ил. — ISBN 5−8459−0074−3, 1−57 870−221−6.

Цирлов, В. Л. Основы информационной безопасности автоматизированных систем / В. Л. Цирлов.

— М.: Феникс, 2008. — 172 с. — ISBN 978−5-222−13 164−0.

Чекмарев, Ю. В. Локальные вычислительные сети. Издание второе, испр. и доп. / Ю. В. Чекмарев.

— М.: ДМК Пресс, 2009. — 200 с.: ил. — ISBN 978−5-94 074−460−3.

Черняков, М. В. Петрушин, А. С. Основы информационных технологий. Учебник для вузов. / М. В. Черняков, А. С. Петрушин. — М.: ИКЦ «Академкнига», 2007. — 406 с. — ISBN: 978−5-94 628−273−4.

Шумаков, П.В. Delphi 3 и разработка приложений баз данных / П. В. Шумаков. — М.: Нолидж, 1999. — 704 с.: ил. — ISBN 5−89 251−022−0.

Шпак, Ю. А. D elphi 7 на примерах / Ю. А. Шпак. — М.: Юниор, 2003.

— 344 с. — ISBN 966−7323−28−5.

Ярочкин, В. И. Информационная безопасность: Учебник для студентов вузов. / В. И.

Ярочкин. — М.: Академический Проект; Гаудеамус, 2-е изд., 2004. — 544 с. — ISBN 5−8291−0408−3, 5−98 426−008−5.

Приложение А. Листинг программы

{

Среда разработки — Delphi 7. Дополнительные компоненты не используются.

Разрабатываемая программа будет находится в трее.

Информация о происходящих событиях будет записываться в таблицы базы данных Access.

В случае отсутствия базы данных файл с расширением mdb будет создаваться автоматически в каталоге с исполняемым модулем.

Из событий, происходящих в ЛВС, планируется реализовать: время вставки и удаления флеш-накопителя,

время посещения сайтов указанием их адреса в сети Интернет.

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

}

unit monit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, ShellAPI, ExtCtrls, StdCtrls, ADODB, DB, Grids, DBGrids,

Spin, Buttons,

DateUtils, OleCtrls, SHDocVw, ComCtrls,

Activex, Comobj, CommCtrl ;

type

TForm1 = class (TForm)

PopupMenu: TPopupMenu;

N1: TMenuItem;

N2: TMenuItem;

Image1: TImage;

Image2: TImage;

DataSource1: TDataSource;

ADOConnection1: TADOConnection;

ADOQuery1: TADOQuery;

Timer1: TTimer;

MainMenu1: TMainMenu;

N3: TMenuItem;

N12: TMenuItem;

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

TabSheet3: TTabSheet;

Panel1: TPanel;

Label1: TLabel;

SpinEdit1: TSpinEdit;

ComboBox1: TComboBox;

LBdisk: TListBox;

Panel2: TPanel;

DateTimePicker1: TDateTimePicker;

DateTimePicker2: TDateTimePicker;

N4: TMenuItem;

Label2: TLabel;

DBGrid1: TDBGrid;

StatusBar1: TStatusBar;

ADODataSet1: TADODataSet;

N5: TMenuItem;

Panel3: TPanel;

Label3: TLabel;

DateTimePicker3: TDateTimePicker;

DateTimePicker4: TDateTimePicker;

ADODataSet2: TADODataSet;

DataSource2: TDataSource;

DBGrid2: TDBGrid;

N6: TMenuItem;

N7: TMenuItem;

StatusBar2: TStatusBar;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

N11: TMenuItem;

CheckBox1: TCheckBox;

N13: TMenuItem;

TabSheet4: TTabSheet;

Panel4: TPanel;

Label4: TLabel;

DateTimePicker5: TDateTimePicker;

DateTimePicker6: TDateTimePicker;

N14: TMenuItem;

N15: TMenuItem;

Excel1: TMenuItem;

DBGrid3: TDBGrid;

DataSource3: TDataSource;

ADODataSet3: TADODataSet;

StatusBar3: TStatusBar;

function Col_name (i_col:Integer):String;

procedure excel_array (QQ:TDataSet;Page_Orientation:Integer;Title_Excel:String;Header_Excel:TStringList);

function FileTimeToDt (Ft: TFileTime): TDateTime;

function StringToPWide (sStr: string; var iNewSize: integer): PWideChar;

procedure CreateMSAccessDB (filename: String);

procedure IconCallBackMessage (var Mess: TMessage); message WM_USER + 100;

procedure WMSYSCOMMAND (var msg: TMessage); message WM_SYSCOMMAND;

procedure VisitURL;

function GetComputerNetName: string;

procedure List_computer;

procedure EnumRec (start:PNetResource; lev: LongInt);

//function FindComputers: DWORD;

//procedure FillCompList (aArr: TStrings; FromResources: Pointer);

procedure FormCreate (Sender: TObject);

procedure N1Click (Sender: TObject);

procedure N2Click (Sender: TObject);

procedure FormDestroy (Sender: TObject);

procedure FormClose (Sender: TObject; var Action: TCloseAction);

procedure Timer1Timer (Sender: TObject);

procedure N4Click (Sender: TObject);

procedure DBGrid1DrawColumnCell (Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

procedure DataSource1DataChange (Sender: TObject; Field: TField);

procedure DBGrid1DblClick (Sender: TObject);

procedure N5Click (Sender: TObject);

procedure FormResize (Sender: TObject);

procedure DataSource2DataChange (Sender: TObject; Field: TField);

procedure N8Click (Sender: TObject);

procedure N9Click (Sender: TObject);

procedure N7Click (Sender: TObject);

procedure N6Click (Sender: TObject);

procedure N11Click (Sender: TObject);

procedure SpinEdit1Change (Sender: TObject);

procedure CheckBox1Click (Sender: TObject);

procedure N14Click (Sender: TObject);

procedure N15Click (Sender: TObject);

procedure Excel1Click (Sender: TObject);

procedure DataSource3DataChange (Sender: TObject; Field: TField);

procedure DBGrid2DrawColumnCell (Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

procedure DBGrid3DrawColumnCell (Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

private

{ Private declarations }

public

nid: TNotifyIconData;

eventlan: Boolean;

{ Public declarations }

end;

const

STATURL_QUERYFLAG_ISCACHED = $ 10 000;

STATURL_QUERYFLAG_NOURL = $ 20 000;

STATURL_QUERYFLAG_NOTITLE = $ 40 000;

STATURL_QUERYFLAG_TOPLEVEL = $ 80 000;

STATURLFLAG_ISCACHED = $ 1;

STATURLFLAG_ISTOPLEVEL = $ 2;

IID_IEnumStatUrl: TGUID = (D1: $ 3C374A42; D2: $BAE4; D3: $ 11CF; D4: ($BF, $ 7D, $ 00, $AA, $ 00, $ 69, $ 46, $EE));

IID_IUrlHistoryStg: TGUID = (D1: $ 3C374A41; D2: $BAE4; D3: $ 11CF; D4: ($BF, $ 7D, $ 00, $AA, $ 00, $ 69, $ 46, $EE));

IID_IUrlHistoryStg2: TGUID = (D1: $AFA0DC11; D2: $C313; D3: $ 831A; D4: ($ 83, $ 1A, $ 00, $C0, $4 °F, $D5, $AE, $ 38));

IID_IUrlHistoryNotify: TGUID = (D1: $BC40BEC1; D2: $C493; D3: $ 11D0; D4: ($ 83, $ 1B, $ 00, $C0, $4 °F, $D5, $AE, $ 38));

SID_IEnumStatUrl = '{3C374A42-BAE4−11CF-BF7D-00AA006946EE}';

SID_IUrlHistoryStg = '{3C374A41-BAE4−11CF-BF7D-00AA006946EE}';

SID_IUrlHistoryStg2 = '{AFA0DC11-C313−11d0−831A-00C04FD5AE38}';

SID_IURLHistoryNotify = '{BC40BEC1-C493−11d0−831B-00C04FD5AE38}';

CLSID_CUrlHistory: TGUID = '{3C374A40-BAE4−11CF-BF7D-00AA006946EE}';

MaxEntries = 250;

type

STATURL = record

cbSize: DWORD;

pwcsUrl: DWORD;

pwcsTitle: DWORD;

ftLastVisited: FILETIME;

ftLastUpdated: FILETIME;

ftExpires: FILETIME;

dwFlags: DWORD;

end;

IEnumSTATURL = interface (IUnknown)

['{3C374A42-BAE4−11CF-BF7D-00AA006946EE}']

function Next (celt: Integer; out elt; pceltFetched: PLongint): HRESULT; stdcall;

function Skip (celt: Longint): HRESULT; stdcall;

function Reset: HResult; stdcall;

function Clone (out ppenum: IEnumSTATURL): HResult; stdcall;

function SetFilter (poszFilter: PWideChar; dwFlags: DWORD): HResult; stdcall;

end;

IUrlHistoryStg = interface (IUnknown)

['{3C374A41-BAE4−11CF-BF7D-00AA006946EE}']

function AddUrl (pocsUrl: PWideChar; pocsTitle: PWideChar; dwFlags: Integer): HResult; stdcall;

function DeleteUrl (pocsUrl: PWideChar; dwFlags: Integer): HResult; stdcall;

function QueryUrl (pocsUrl: PWideChar; dwFlags: Integer; var lpSTATURL: STATURL): HResult; stdcall;

function BindToObject (pocsUrl: PWideChar; var riid: TIID; out ppvOut: Pointer): HResult; stdcall;

function EnumUrls (out ppenum: IEnumSTATURL): HResult; stdcall;

end;

IUrlHistoryStg2 = interface (IUrlHistoryStg)

['{AFA0DC11-C313−11D0−831A-00C04FD5AE38}']

function AddUrlAndNotify (pocsUrl: PWideChar; pocsTitle: PWideChar; dwFlags: Integer;

fWriteHistory: Integer; var poctNotify: Pointer;

const punkISFolder: IUnknown): HResult; stdcall;

function ClearHistory: HResult; stdcall;

end;

IUrlHistoryNotify = interface (IOleCommandTarget)

['{BC40BEC1-C493−11d0−831B-00C04FD5AE38}']

end;

var

Form1: TForm1;

IRL_Hist: IUrlHistoryStg2;

implementation

uses usb_activity_log;

{$R *.dfm}

procedure TForm1. FormCreate (Sender: TObject);

var name_bd: String;

TT: TStringList;

i: Integer;

begin

//создадим БД формата ACCESS

name_bd:=ExtractFilePath (Application.ExeName)+'lan.mdb';

CreateMSAccessDB (name_bd);

//строка для соединения с БД

ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.

4.0;Data Source='+name_bd+';Persist Security Info=False';

try

ADOConnection1.Open;

except

ADOConnection1.Close;

ShowMessage ('Ошибка при соединениии с базой данных!');

Application.Terminate;

end;

ADOQuery1.Connection:=ADOConnection1;

//создадим массив с названиями таблиц

TT:=TStringList.Create;

ADOConnection1.GetTableNames (TT);

//проверим на наличие каждой таблицы и в случае отсутствия создадим ее

if (TT.IndexOf ('flash')=-1) then

begin

// создание таблицы для flash-устройств

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add ('CREATE TABLE flash (');

ADOQuery1.SQL.Add ('computer_name varchar (48) not null, ');

ADOQuery1.SQL.Add ('flash_type varchar (24) not null, ');

ADOQuery1.SQL.Add ('flash_action tinyint not null, ');

ADOQuery1.SQL.Add ('flash_dt datetime not null ');

ADOQuery1.SQL.Add (')');

try

ADOQuery1.ExecSQL;

except

ADOConnection1.Close;

ShowMessage ('Ошибка при создании таблицы flash!');

Application.Terminate;

end;

end;

if (TT.IndexOf ('visiturl')=-1) then

begin

// создание таблицы для посещений Интернет-ресурсов

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add ('CREATE TABLE visiturl (');

ADOQuery1.SQL.Add ('computer_name varchar (48) not null, ');

ADOQuery1.SQL.Add ('url varchar (255) not null, ');

ADOQuery1.SQL.Add ('url_title varchar (255) not null, ');

ADOQuery1.SQL.Add ('url_visited datetime not null, ');

ADOQuery1.SQL.Add ('url_updated datetime not null, ');

ADOQuery1.SQL.Add ('url_expires datetime not null, ');

ADOQuery1.SQL.Add ('dt datetime not null ');

ADOQuery1.SQL.Add (')');

try

ADOQuery1.ExecSQL;

except

ADOConnection1.Close;

ShowMessage ('Ошибка при создании таблицы visiturl!');

Application.Terminate;

end;

end;

if (TT.IndexOf ('computer')=-1) then

begin

// создание таблицы для списка компьютеров в ЛВС

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add ('CREATE TABLE computer (');

ADOQuery1.SQL.Add ('computer_name varchar (48) not null, ');

ADOQuery1.SQL.Add ('computer_dt datetime not null ');

ADOQuery1.SQL.Add (')');

try

ADOQuery1.ExecSQL;

except

ADOConnection1.Close;

ShowMessage ('Ошибка при создании таблицы computer!');

Application.Terminate;

end;

end;

//Добавляем иконку в трей при старте программы:

nid.cbSize := SizeOf (TNotifyIconData);

nid.Wnd := Form1. Handle;

nid.uID := 1;

nid.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;

nid.uCallbackMessage := WM_USER + 100;

nid.hIcon := Application.Icon.Handle;

StrPCopy (nid.szTip, 'Мониториг ЛВС');

Shell_NotifyIcon (NIM_ADD, @nid);

PageControl1.Align:=AlClient;

for i:=0 to PageControl1. PageCount-1 do

PageControl1.Pages[i]. TabVisible:=False;

Timer1.Interval:=SpinEdit1.Value;

Timer1.Enabled:=CheckBox1.Checked;

FormResize (Form1);

Timer1Timer (Form1);

end;

procedure TForm1. IconCallBackMessage (var Mess: TMessage);

begin

case Mess. lParam of WM_RBUTTONUP: //Обрабатываем нажатие правой кнопкой мыши.

begin

PopupMenu.Popup (Mouse.CursorPos.x, Mouse.CursorPos.y); //заставляем «всплыть» наше меню:)

end;

end;

end;

procedure TForm1. WMSYSCOMMAND (var msg: TMessage);

begin

inherited;

if (msg.wParam=SC_MINIMIZE) then Form1. Hide;

if (msg.wParam=SC_CLOSE) then Form1. Hide;

end;

procedure TForm1. N1Click (Sender: TObject);

begin

Form1.Show;

Form1.Activate;

end;

procedure TForm1. N2Click (Sender: TObject);

begin

Form1.Close;

Application.Terminate;

end;

procedure TForm1. FormDestroy (Sender: TObject);

begin

Shell_NotifyIcon (NIM_DELETE, @nid);

end;

procedure TForm1. FormClose (Sender: TObject; var Action: TCloseAction);

begin

Action:=caNone;

end;

procedure TForm1. Timer1Timer (Sender: TObject);

begin

Screen.Cursor:=crHourGlass;

FillDrives;

List_computer;

VisitURL;

Screen.Cursor:=crDefault;

end;

procedure TForm1. VisitURL;

var

r: Staturl;

s, ss: string;

Enum: IEnumStatUrl;

X, j, k, Row, iSize: integer;

dat1,dat2: String;

begin

Timer1.Enabled:=False;

IRL_Hist:=CreateComObject (ClsId_CUrlHistory) as IUrlHistoryStg2;

IRL_Hist.EnumUrls (Enum);

Enum.SetFilter (StringToPWide (ComboBox1.Text, iSize), 0);

ComboBox1.Clear;

Row:=0;

if (Enum.Next (1, r, @X) <> S_OK) then

begin

IRL_Hist.EnumUrls (Enum);

Enum.SetFilter (StringToPWide (ComboBox1.Text, iSize), 0);

end;

while Enum. Next (1, r, @X) = S_OK do

begin

inc (Row);

Form1.Caption:='Get IE history (URL''s: '+IntToStr (Row)+')';

s:=Widechar (Pointer (r.pwcsUrl));

ss:=Widechar (Pointer (r.pwcsUrl));

j:=pos ('://', ss);

Delete (ss, 1, j+2);

if pos ('/', ss)<>0 then

begin

k:=pos ('/', ss);

Delete (s,(j+k)+2,Length (s));

end;

ComboBox1.Items.Add (s);

//проверить наличие

ADOQuery1.SQL.Clear;

ADOQuery1.ParamCheck:=False;

ADOQuery1.SQL.Add ('select * from visiturl ');

ADOQuery1.SQL.Add ('where url='+QuotedStr (copy (PWidechar (Pointer (r.pwcsUrl)), 1,255)));

dat1:='#'+copy (DateTimeToStr (FileTimeToDt (r.ftLastVisited)), 4,2)+'/'+copy (DateTimeToStr (FileTimeToDt (r.ftLastVisited)), 1,2)+'/'+copy (DateTimeToStr (FileTimeToDt (r.ftLastVisited)), 7,4)+

' '+copy (DateTimeToStr (FileTimeToDt (r.ftLastVisited)), 12,8)+'#';

dat2:='#'+copy (DateTimeToStr (FileTimeToDt (r.ftExpires)), 4,2)+'/'+copy (DateTimeToStr (FileTimeToDt (r.ftExpires)), 1,2)+'/'+copy (DateTimeToStr (FileTimeToDt (r.ftExpires)), 7,4)+

' '+copy (DateTimeToStr (FileTimeToDt (r.ftExpires)), 12,8)+'#';

ADOQuery1.SQL.Add (' and url_visited='+dat1);

ADOQuery1.SQL.Add (' and url_expires='+dat2);

try

ADOQuery1.Open;

if (ADOQuery1.RecordCount=0) then

begin

//запись в таблицу посещений

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add ('insert into visiturl (computer_name, url, url_title, url_visited, url_updated, url_expires, dt) ');

ADOQuery1.SQL.Add ('values ('+QuotedStr (copy (GetComputerNetName, 1,48))+',');

ADOQuery1.SQL.Add (QuotedStr (copy (PWidechar (Pointer (r.pwcsUrl)), 1,255))+',');

ADOQuery1.SQL.Add (QuotedStr (copy (PWidechar (Pointer (r.pwcsTitle)), 1,255))+',');

ADOQuery1.SQL.Add (QuotedStr (DateTimeToStr (FileTimeToDt (r.ftLastVisited)))+',');

ADOQuery1.SQL.Add (QuotedStr (DateTimeToStr (FileTimeToDt (r.ftLastUpdated)))+',');

ADOQuery1.SQL.Add (QuotedStr (DateTimeToStr (FileTimeToDt (r.ftExpires)))+',');

ADOQuery1.SQL.Add (QuotedStr (FormatDateTime ('dd.mm.yyyy HH: mm:ss', now))+')');

ADOQuery1.ExecSQL;

end;

except

end;

ADOQuery1.Close;

Application.ProcessMessages;

end;

Timer1.Enabled:=CheckBox1.Checked;

end;

function TForm1. StringToPWide (sStr: string; var iNewSize: integer): PWideChar;

var

pw: PWideChar;

iSize: integer;

begin

iSize:=Length (sStr)+1;

iNewSize:=iSize*2;

pw:=AllocMem (iNewSize);

MultiByteToWideChar (CP_ACP, 0, PChar (sStr), iSize, pw, iNewSize);

Result:=pw;

end;

function TForm1. FileTimeToDt (Ft: TFileTime): TDateTime;

var

l: integer;

lft: TFileTime;

begin

FileTimeToLocalFiletime (Ft, lft);

if FileTimeToDosDateTime (lft, Longrec (l).Hi, Longrec (l).Lo)

then result:=FiledateToDatetime (l)

else result:=0;

end;

procedure TForm1. CreateMSAccessDB (filename: String);

var accessMDB, DAOEngine: Variant;

NameBD: String;

begin

//процедура создания БД — файла Access с именем filename

NameBD := ('Provider=Microsoft.Jet.OLEDB.

4.0;Data Source='+ FileName + ';');

if FileExists (FileName) <> TRUE then begin

try

accessMDB := CreateOleObject ('ADOX.Catalog'); // ADOX

DAOEngine := CreateOleObject ('DAO.DBEngine.36');

except

try

DAOEngine := CreateOleObject ('DAO.DBEngine.35');

except

begin

ShowMessage ('Ошибка создания -> DAO. DBEngine');

Exit;

end;

end;

end;

try

accessMDB.Create (NameBD); // работа с ADOX

accessMDB := NULL;

except

begin

ShowMessage ('Ошибка создания БД -> ' + FileName);

Exit;

end;

end;

end;

end;

procedure TForm1. N8Click (Sender: TObject);

begin

//показ 1 страницы

Screen.Cursor:=crDefault;

PageControl1.ActivePageIndex:=0;

PageControl1.Pages[0]. TabVisible:=True;

TabSheet1.Caption:=N3.Caption;

DateTimePicker1.Date:=date;

DateTimePicker2.Date:=date;

end;

procedure TForm1. N4Click (Sender: TObject);

var dat1, dat2: String;

begin

//просмотр посещений интернет-ресурсов за период

Screen.Cursor:=crDefault;

DBGrid1.Visible:=True;

dat1:='#'+copy (DateToStr (DateTimePicker1.Date), 7,4)+'

-'+copy (DateToStr (DateTimePicker1.Date), 4,2)+'

-'+copy (DateToStr (DateTimePicker1.Date), 1,2)+'#';

dat2:='#'+copy (DateToStr (DateTimePicker2.Date+1), 7,4)+'

-'+copy (DateToStr (DateTimePicker2.Date+1), 4,2)+'

-'+copy (DateToStr (DateTimePicker2.Date+1), 1,2)+'#';

ADODataSet1.Close;

ADODataSet1.CommandText:='select * from visiturl where url_visited >= '+dat1+' and url_visited<='+dat2+ ' order by url_visited ';

ADODataSet1.Open;

end;

procedure TForm1. DBGrid1DrawColumnCell (Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin

if (ADODataSet1.RecNo mod 2=0) then

DBGrid1.Canvas.Brush.Color:=$ 00F5EBEC

else

DBGrid1.Canvas.Brush.Color:=$ 00E8E7E3;

DBGrid1.Canvas.Font.Color:=clBlack;

if (Column.Field.FieldName='url') then

begin

DBGrid1.Canvas.Font.Style:=[fsUnderline];

DBGrid1.Canvas.Font.Color:=$ 00FF8080;

end;

DBGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);

end;

procedure TForm1. DataSource1DataChange (Sender: TObject; Field: TField);

begin

StatusBar1.Panels[0]. Text:='Всего: '+IntToStr (ADODataSet1.RecordCount);

StatusBar1.Panels[1]. Text:='Запись: '+IntToStr (ADODataSet1.Recno);

end;

procedure TForm1. DBGrid1DblClick (Sender: TObject);

begin

try

ShellExecute (0,'open', PChar (ADODataSet1.FieldByName ('url').AsString),'','', SW_SHOW);

except

ShowMessage ('Ошибка при загрузке адреса Интернет-ресурса!');

end;

end;

procedure TForm1. N5Click (Sender: TObject);

var varr: String;

TT:TstringList;

i: Integer;

begin

//вывод в Excel

if (not ADODataSet1. Active) then exit;

Screen.Cursor:=crDefault;

TT:=TStringList.Create;

varr:=PageControl1.ActivePage.Caption;

ADODataSet1.DisableControls;

for i:=0 to DBGrid1.Columns.Count-1 do

TT.Add (DBGrid1.Columns[i]. Title. Caption);

excel_array (DBGrid1.DataSource.DataSet, 1, varr, TT);

ADODataSet1.EnableControls;

end;

procedure TForm1. excel_array (QQ:TDataSet;Page_Orientation:Integer;Title_Excel:String;Header_Excel:TStringList);

var XL, TableVals, WorkBook: Variant; // Врем. массив для переноса значений в Excel

i, LineCounter: Integer; // Счетчик строк для переноса записей в Excel

begin

TableVals:=VarArrayCreate ([0, QQ. RecordCount-1,//кол-во строк

0, Header_Excel.Count-1], // кол-во столбцов

varVariant);

QQ.First;

LineCounter := 0;

while not QQ. EOF do

begin

for i := 0 to Header_Excel.Count-1 do

begin

if not QQ. Fields[i]. IsNull then

TableVals[LineCounter, i] := QQ. Fields[i]. AsString

else

TableVals[LineCounter, i] := '';

end;

LineCounter := LineCounter + 1;

QQ.Next;

end;

XL := CreateOleObject ('Excel.Application');

WorkBook := XL.WorkBooks.Add;

WorkBook := XL. WorkBooks[1] ;

XL.Application.WindowState:=1;

try

XL.ActiveSheet.PageSetup.Orientation:=Page_Orientation;

XL.ActiveSheet.PageSetup.LeftMargin:=0;

XL.ActiveSheet.PageSetup.RightMargin:=0;

XL.ActiveSheet.PageSetup.TopMargin:=0;

XL.ActiveSheet.PageSetup.BottomMargin:=0;

except

end;

XL.Cells.Select;

XL.Selection.Font.Name:='Arial Cyr';

XL.Selection.Font.Size:=8;

XL.range['A1']. Select;

XL.ActiveCell.FormulaR1C1:=Title_Excel;

XL.Selection.Font.Size:=10;

XL.Selection.Font.Bold:=True;

for i:=0 to Header_Excel.Count-1 do

begin

XL.range[col_name (i)+'2']. Select;

XL.ActiveCell.FormulaR1C1:=Header_Excel[i];

end;

XL.Rows['2']. Select;

XL.Selection.Font.Bold:=True;

//данные с 3 строки

XL.Range[XL.Cells[3,1], XL. Cells[QQ.RecordCount+2,Header_Excel.Count]]. Value := TableVals;

XL.Range['A2:'+col_name (Header_Excel.Count-1)+IntToStr (QQ.RecordCount+2)]. Select;

XL.Selection.Columns.AutoFit;

XL.Selection.Borders[7]. LineStyle:=1;

XL.Selection.Borders[8]. LineStyle:=1;

XL.Selection.Borders[9]. LineStyle:=1;

XL.Selection.Borders[10]. LineStyle:=1;

XL.Selection.Borders[11]. LineStyle:=1;

XL.Range['A1:'+col_name (Header_Excel.Count-1)+'1'].Select;

XL.Selection.HorizontalAlignment:=-4108;

XL.Selection.MergeCells:=True;

XL.Range['A1:'+col_name (Header_Excel.Count-1)+IntToStr (QQ.RecordCount+2)].Select;

XL.Selection.Font.Size:=8;

XL.Visible := True;

end;

function TForm1. Col_name (i_col:Integer):String;

begin

if i_col>255 then result:=''

else

begin

if i_col<26 then result:=chr (65+i_col)

else

result:=chr ((i_col div 26)+64)+chr ((i_col mod 26)+65);

end;

end;

procedure TForm1. FormResize (Sender: TObject);

var i, cwidth: Integer;

begin

//изменение размеров формы

cwidth:=trunc ((Form1.Width-90)/DBGrid1.Columns.Count);

for i:=0 to DBGrid1.Columns.Count-1 do

DBGrid1.Columns[i]. Width:=cwidth;

cwidth:=trunc ((Form1.Width-90)/DBGrid2.Columns.Count);

for i:=0 to DBGrid2.Columns.Count-1 do

DBGrid2.Columns[i]. Width:=cwidth;

cwidth:=trunc ((Form1.Width-90)/DBGrid3.Columns.Count);

for i:=0 to DBGrid3.Columns.Count-1 do

DBGrid3.Columns[i]. Width:=cwidth;

end;

procedure TForm1. DataSource2DataChange (Sender: TObject; Field: TField);

begin

StatusBar2.Panels[0]. Text:='Всего: '+IntToStr (ADODataSet2.RecordCount);

StatusBar2.Panels[1]. Text:='Запись: '+IntToStr (ADODataSet2.Recno);

end;

procedure TForm1. N9Click (Sender: TObject);

var dat1, dat2: String;

begin

//просмотр с USB-устройствами за период

Screen.Cursor:=crDefault;

DBGrid2.Visible:=True;

dat1:='#'+copy (DateToStr (DateTimePicker3.Date), 7,4)+'

-'+copy (DateToStr (DateTimePicker3.Date), 4,2)+'

-'+copy (DateToStr (DateTimePicker3.Date), 1,2)+'#';

dat2:='#'+copy (DateToStr (DateTimePicker4.Date+1), 7,4)+'

-'+copy (DateToStr (DateTimePicker4.Date+1), 4,2)+'

-'+copy (DateToStr (DateTimePicker4.Date+1), 1,2)+'#';

ADODataSet2.Close;

ADODataSet2.CommandText:='select computer_name, flash_type,'+

'iif (flash_action=0," извлечение" ," вставка") as flash_act,'+

'flash_dt from flash where flash_dt >= '+dat1+' and flash_dt <='+dat2+ ' order by flash_dt ';

ADODataSet2.Open;

end;

procedure TForm1. N7Click (Sender: TObject);

var varr: String;

TT:TstringList;

i: Integer;

begin

//вывод в Excel

if (not ADODataSet2. Active) then exit;

Screen.Cursor:=crDefault;

TT:=TStringList.Create;

varr:=PageControl1.ActivePage.Caption;

ADODataSet2.DisableControls;

for i:=0 to DBGrid2.Columns.Count-1 do

TT.Add (DBGrid2.Columns[i]. Title. Caption);

excel_array (DBGrid2.DataSource.DataSet, 1, varr, TT);

ADODataSet2.EnableControls;

end;

procedure TForm1. N6Click (Sender: TObject);

begin

//показ 2 страницы

Screen.Cursor:=crDefault;

PageControl1.ActivePageIndex:=1;

PageControl1.Pages[1]. TabVisible:=True;

TabSheet2.Caption:=N12.Caption;

DateTimePicker3.Date:=date;

DateTimePicker4.Date:=date;

end;

procedure TForm1. N11Click (Sender: TObject);

begin

//показ 3 страницы

Screen.Cursor:=crDefault;

PageControl1.ActivePageIndex:=2;

PageControl1.Pages[2]. TabVisible:=True;

TabSheet3.Caption:=N10.Caption;

end;

procedure TForm1. SpinEdit1Change (Sender: TObject);

begin

Timer1.Interval:=SpinEdit1.Value;

end;

procedure TForm1. CheckBox1Click (Sender: TObject);

begin

Timer1.Enabled:=CheckBox1.Checked;

end;

function TForm1. GetComputerNetName: string;

var

buffer: array[0.255] of char;

size: dword;

begin

size := 256;

if GetComputerName (buffer, size) then

Result := buffer

else

Result := ''

end;

procedure TForm1. List_computer;

begin

EnumRec (NIL, 0);

end;

procedure TForm1. EnumRec (start:PNetResource; lev: LongInt);

var

i :LongInt;

hEnum :Cardinal;

res, cnt: Cardinal;

bufsize :Cardinal;

p :Cardinal;

nr :PNetResource;

st :String;

pk :String;

begin

Screen.Cursor:=crHourGlass;

Timer1.Enabled:=False;

//Form1.Memo1.Lines.Clear;

st:='';

for i:=1 to lev do st:=st+' ';

res:=WNetOpenEnum (RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, start, hEnum);

if res=NO_ERROR then

repeat

bufsize:=16 384;

p:=GlobalAlloc (GPTR, bufsize);

cnt:=$FFFFFFFF;

res:=WNetEnumResource (hEnum, cnt, Pointer (p), bufsize);

if res=NO_ERROR then

for i:=0 to cnt-1 do

begin

nr:=PNetResource (Pointer (p+Cardinal (i)*SizeOf (NetResource)));

//if nr. lpLocalName<>NIL then Form1. Memo1.Lines.Add (nr.lpLocalName+' '+nr.lpRemoteName);

if nr. lpRemoteName<>NIL then

begin

if ((copy (nr.lpRemoteName, 1,2)='\') and (pos ('', copy (nr.lpRemoteName, 3, length (nr.lpRemoteName)-2))=0)) then

begin

pk:=copy (copy (nr.lpRemoteName, 3, length (nr.lpRemoteName)-2), 1,48);

//проверить наличие

ADOQuery1.SQL.Clear;

ADOQuery1.ParamCheck:=False;

ADOQuery1.SQL.Add ('select DateDiff («d», a. computer_dt, Date ()) as dday ');

ADOQuery1.SQL.Add ('from (select max (computer_dt) as computer_dt ');

ADOQuery1.SQL.Add ('from computer ');

ADOQuery1.SQL.Add ('where computer_name='+QuotedStr (pk)+') a');

ADOQuery1.SQL.Add ('where a. computer_dt is not null ');

ADOQuery1.Open;

if ((ADOQuery1.RecordCount=0) or (ADOQuery1.FieldByname ('dday').AsInteger>0)) then

begin

//запись в таблицу computer

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add ('insert into computer (computer_name, computer_dt) ');

ADOQuery1.SQL.Add ('values ('+QuotedStr (pk)+',');

ADOQuery1.SQL.Add (QuotedStr (FormatDateTime ('dd.mm.yyyy HH: mm:ss', now))+')');

//ShowMessage (ADOQuery1.SQL.Text);

try

ADOQuery1.ExecSQL;

except

end;

ADOQuery1.Close;

end;

end;

end;

if lev<3 then EnumRec (nr, lev+1);

end

else

if res<>ERROR_NO_MORE_ITEMS then

begin

GlobalFree (p);

break;

end;

GlobalFree (p);

until res=ERROR_NO_MORE_ITEMS;

WNetCloseEnum (hEnum);

Timer1.Enabled:=CheckBox1.Checked;

Screen.Cursor:=crDefault;

end;

procedure TForm1. N14Click (Sender: TObject);

begin

//показ 4 страницы

Screen.Cursor:=crDefault;

PageControl1.ActivePageIndex:=3;

PageControl1.Pages[3]. TabVisible:=True;

TabSheet4.Caption:=N13.Caption;

DateTimePicker5.Date:=date;

DateTimePicker6.Date:=date;

end;

procedure TForm1. N15Click (Sender: TObject);

var dat1, dat2: String;

begin

//просмотр ЛВС за период

Screen.Cursor:=crDefault;

DBGrid3.Visible:=True;

dat1:='#'+copy (DateToStr (DateTimePicker5.Date), 7,4)+'

-'+copy (DateToStr (DateTimePicker5.Date), 4,2)+'

-'+copy (DateToStr (DateTimePicker5.Date), 1,2)+'#';

dat2:='#'+copy (DateToStr (DateTimePicker6.Date+1), 7,4)+'

-'+copy (DateToStr (DateTimePicker6.Date+1), 4,2)+'

-'+copy (DateToStr (DateTimePicker6.Date+1), 1,2)+'#';

ADODataSet3.Close;

ADODataSet3.CommandText:='select * from computer where computer_dt>= '+dat1+' and computer_dt<='+dat2+ ' order by computer_name, computer_dt desc ';

ADODataSet3.Open;

end;

procedure TForm1. Excel1Click (Sender: TObject);

var varr: String;

TT:TstringList;

i: Integer;

begin

//вывод в Excel

if (not ADODataSet3. Active) then exit;

Screen.Cursor:=crDefault;

TT:=TStringList.Create;

varr:=PageControl1.ActivePage.Caption;

ADODataSet3.DisableControls;

for i:=0 to DBGrid3.Columns.Count-1 do

TT.Add (DBGrid3.Columns[i]. Title. Caption);

excel_array (DBGrid3.DataSource.DataSet, 1, varr, TT);

ADODataSet3.EnableControls;

end;

procedure TForm1. DataSource3DataChange (Sender: TObject; Field: TField);

begin

StatusBar3.Panels[0]. Text:='Всего: '+IntToStr (ADODataSet3.RecordCount);

StatusBar3.Panels[1]. Text:='Запись: '+IntToStr (ADODataSet3.Recno);

end;

procedure TForm1. DBGrid2DrawColumnCell (Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin

if (ADODataSet2.RecNo mod 2=0) then

DBGrid2.Canvas.Brush.Color:=$ 00F5EBEC

else

DBGrid2.Canvas.Brush.Color:=$ 00E8E7E3;

DBGrid2.Canvas.Font.Color:=clBlack;

DBGrid2.DefaultDrawColumnCell (Rect, DataCol, Column, State);

end;

procedure TForm1. DBGrid3DrawColumnCell (Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin

if (ADODataSet3.RecNo mod 2=0) then

DBGrid3.Canvas.Brush.Color:=$ 00F5EBEC

else

DBGrid3.Canvas.Brush.Color:=$ 00E8E7E3 ;

DBGrid3.Canvas.Font.Color:=clBlack;

DBGrid3.DefaultDrawColumnCell (Rect, DataCol, Column, State);

end;

end.

unit usb_activity_log;

interface

uses

Windows, SysUtils, Classes ;

procedure FillDrives;

implementation

uses monit;

{$ALIGN 8}

const

DeviceMask = '%s:';

VolumeMask = '\.' + DeviceMask;

setupapi = 'SetupApi.dll';

cfgmgr = 'cfgmgr32.dll';

// Константы и типы из winioctl. h

const

FILE_DEVICE_CONTROLLER = $ 4;

FILE_DEVICE_FILE_SYSTEM = $ 9;

FILE_DEVICE_MASS_STORAGE = $ 02D;

METHOD_BUFFERED = $ 0;

FILE_ANY_ACCESS = $ 0;

FILE_READ_ACCESS = $ 1;

FILE_WRITE_ACCESS = $ 2;

IOCTL_STORAGE_BASE = FILE_DEVICE_MASS_STORAGE;

IOCTL_SCSI_BASE = FILE_DEVICE_CONTROLLER;

FSCTL_LOCK_VOLUME = (FILE_DEVICE_FILE_SYSTEM shl 16) or

(FILE_ANY_ACCESS shl 14) or ($ 6 shl 2) or METHOD_BUFFERED;

FSCTL_DISMOUNT_VOLUME = (FILE_DEVICE_FILE_SYSTEM shl 16) or

(FILE_ANY_ACCESS shl 14) or ($ 8 shl 2) or METHOD_BUFFERED;

IOCTL_STORAGE_MEDIA_REMOVAL = (IOCTL_STORAGE_BASE shl 16) or

(FILE_READ_ACCESS shl 14) or ($ 0201 shl 2) or METHOD_BUFFERED;

IOCTL_STORAGE_EJECT_MEDIA = (IOCTL_STORAGE_BASE shl 16) or

(FILE_READ_ACCESS shl 14) or ($ 0202 shl 2) or METHOD_BUFFERED;

IOCTL_STORAGE_GET_DEVICE_NUMBER = (IOCTL_STORAGE_BASE shl 16) or

(FILE_ANY_ACCESS shl 14) or ($ 0420 shl 2) or METHOD_BUFFERED;

IOCTL_SCSI_PASS_THROUGH = (IOCTL_SCSI_BASE shl 16) or

((FILE_WRITE_ACCESS or FILE_READ_ACCESS) shl 14) or

($ 0401 shl 2) or METHOD_BUFFERED;

GUID_DEVINTERFACE_DISK: TGUID = (

D1:$ 53f56307; D2:$b6bf; D3:$ 11d0; D4:($ 94, $f2, $ 00, $a0, $c9, $ 1e, $fb, $ 8b));

type

DEVICE_TYPE = DWORD;

PStorageDeviceNumber = ^TStorageDeviceNumber;

TStorageDeviceNumber = packed record

DeviceType: DEVICE_TYPE;

DeviceNumber: DWORD;

PartitionNumber: DWORD;

end;

// Константы и типы из setupapi. h

const

ANYSIZE_ARRAY = 1024;

DIGCF_PRESENT = $ 2;

DIGCF_DEVICEINTERFACE = $ 10;

type

HDEVINFO = THandle;

PSPDevInfoData = ^TSPDevInfoData;

SP_DEVINFO_DATA = packed record

cbSize: DWORD;

ClassGuid: TGUID;

DevInst: DWORD; // DEVINST handle

Reserved: ULONG; // ULONG_PTR;

end;

TSPDevInfoData = SP_DEVINFO_DATA;

PSPDeviceInterfaceData = ^TSPDeviceInterfaceData;

SP_DEVICE_INTERFACE_DATA = packed record

cbSize: DWORD;

InterfaceClassGuid: TGUID;

Flags: DWORD;

Reserved: ULONG; // ULONG_PTR;

end;

TSPDeviceInterfaceData = SP_DEVICE_INTERFACE_DATA;

PSPDeviceInterfaceDetailDataA = ^TSPDeviceInterfaceDetailDataA;

PSPDeviceInterfaceDetailData = PSPDeviceInterfaceDetailDataA;

SP_DEVICE_INTERFACE_DETAIL_DATA_A = packed record

cbSize: DWORD;

DevicePath: array [0.ANYSIZE_ARRAY — 1] of AnsiChar;

end;

TSPDeviceInterfaceDetailDataA = SP_DEVICE_INTERFACE_DETAIL_DATA_A;

TSPDeviceInterfaceDetailData = TSPDeviceInterfaceDetailDataA;

function SetupDiGetClassDevsA (ClassGuid: PGUID; const Enumerator: PAnsiChar;

hwndParent: HWND; Flags: DWORD): HDEVINFO; stdcall; external setupapi;

function SetupDiDestroyDeviceInfoList (

DeviceInfoSet: HDEVINFO): LongBool; stdcall; external setupapi;

function SetupDiEnumDeviceInterfaces (DeviceInfoSet: HDEVINFO;

DeviceInfoData: PSPDevInfoData; const InterfaceClassGuid: TGUID;

MemberIndex: DWORD; var DeviceInterfaceData: TSPDeviceInterfaceData):

LongBool; stdcall; external setupapi;

function SetupDiGetDeviceInterfaceDetailA (DeviceInfoSet: HDEVINFO;

DeviceInterfaceData: PSPDeviceInterfaceData;

DeviceInterfaceDetailData: PSPDeviceInterfaceDetailDataA;

DeviceInterfaceDetailDataSize: DWORD; var RequiredSize: DWORD;

Device: PSPDevInfoData): LongBool; stdcall; external setupapi;

// Константы и типы из cfgmgr32. h

const

CR_SUCCESS = 0;

PNP_VetoTypeUnknown = 0;

PNP_VetoLegacyDevice = 1;

PNP_VetoPendingClose = 2;

PNP_VetoWindowsApp = 3;

PNP_VetoWindowsService = 4;

PNP_VetoOutstandingOpen = 5;

PNP_VetoDevice = 6;

PNP_VetoDriver = 7;

PNP_VetoIllegalDeviceRequest = 8;

PNP_VetoInsufficientPower = 9;

PNP_VetoNonDisableable = 10;

PNP_VetoLegacyDriver = 11;

PNP_VetoInsufficientRights = 12;

type

DEVINST = DWORD;

CONFIGRET = DWORD;

PPNP_VETO_TYPE = ^PNP_VETO_TYPE;

PNP_VETO_TYPE = DWORD;

function CM_Get_Parent (var dnDevInstParent: DEVINST;

dnDevInst: DEVINST; ulFlags: ULONG): CONFIGRET; stdcall;

external cfgmgr;

function CM_Request_Device_EjectA (dnDevInst: DEVINST;

pVetoType: PPNP_VETO_TYPE; pszVetoName: PWideChar;

ulNameLength: ULONG; ulFlags: ULONG): CONFIGRET; stdcall;

external setupapi;

// Константы и типы из ntddscsi. h

const

SCSI_IOCTL_DATA_IN = 1;

SCSIOP_MECHANISM_STATUS = $BD;

type

USHORT = Word;

PSCSI_PASS_THROUGH_DIRECT = ^SCSI_PASS_THROUGH_DIRECT;

_SCSI_PASS_THROUGH_DIRECT = {packed} record

Length: USHORT;

ScsiStatus: UCHAR;

PathId: UCHAR;

TargetId: UCHAR;

Lun: UCHAR;

CdbLength: UCHAR;

SenseInfoLength: UCHAR;

DataIn: UCHAR;

DataTransferLength: ULONG;

TimeOutValue: ULONG;

DataBuffer: ULONG;

SenseInfoOffset: ULONG;

Cdb: array [0.15] of UCHAR;

end;

SCSI_PASS_THROUGH_DIRECT = _SCSI_PASS_THROUGH_DIRECT;

TSCSIPassThroughDirectBuffer = record

Header: SCSI_PASS_THROUGH_DIRECT;

SenseBuffer: array [0.31] of UCHAR;

DataBuffer: array [0.191] of UCHAR;

end;

// Процедура производит поиск подходящих устройств

procedure FillDrives;

const

NameSize = 4;

VolumeCount = 26;

TotalSize = NameSize * VolumeCount;

var

i, j, Count: integer;

dadd, dremove: boolean;

s, ss, Buff, Volume: string;

lpQuery: array [0.MAXCHAR — 1] of Char;

Tvolume: TStringList;

begin

Tvolume:=TStringList.Create;

Tvolume.Clear;

SetLength (Buff, TotalSize);

// Получаем список всех дисков в системе

Count:=GetLogicalDriveStrings (TotalSize, @Buff[1]) div NameSize;

if Count>0 then

begin

for i:=0 to Count-1 do

begin

Volume:=PChar (@Buff[(i*NameSize)+1]);

// определяем тип каждого диска

case GetDriveType (PChar (Volume)) of DRIVE_REMOVABLE: // флэш или флоппи

begin

Volume[3]: =#0;

QueryDosDevice (PChar (Volume), @lpQuery[0], MAXCHAR);

Volume[3]: ='';

if Copy (string (lpQuery), 1,14)<>'DeviceFloppy' then

begin

dadd:=true;

for j:=0 to Form1.LBdisk.Items.Count-1 do

begin

s:=Form1.LBdisk.Items.Strings[j];

if s=Volume[1]

then

begin

dadd:=false;

Break;

end;

end;

if dadd=true then // Если диск не флоппи, добавляем в список

begin

Tvolume.Add (TimeToStr (time)+': '+Volume[1]+' - Флэш накопитель');

//Form1.ListBox1.Items.AddObject (TimeToStr (time)+': Найден флэш накопитель (диск «'+Volume[1]+'»)', Pointer (1));

Form1.LBdisk.Items.Add (Volume[1]);

Form1.ADOQuery1.SQL.Clear;

Form1.ADOQuery1.SQL.Add ('insert into flash (computer_name, flash_type, flash_action, flash_dt) ');

Form1.ADOQuery1.SQL.Add ('values ('+QuotedStr (copy (Form1.GetComputerNetName, 1,48))+',');

Form1.ADOQuery1.SQL.Add (QuotedStr (Volume[1])+',');

Form1.ADOQuery1.SQL.Add ('1,');

Form1.ADOQuery1.SQL.Add (QuotedStr (FormatDateTime ('mm/dd/yyyy HH: mm:ss', now)));

Form1.ADOQuery1.SQL.Add (')');

try

Form1.ADOQuery1.ExecSQL;

except

end;

end

else

Tvolume.Add (TimeToStr (time)+': '+Volume[1]+' - Флэш накопитель');

end;

end;

end;

end;

i:=0;

while i<=Form1.LBdisk.Items.Count-1 do

begin

s:=Form1.LBdisk.Items.Strings[i];

dremove:=true;

for j:=0 to Tvolume. Count-1 do

begin

ss:=Tvolume.Strings[j];

ss:=Copy (ss, 11,1);

if s=ss then

begin

dremove:=false;

Break;

end;

end;

if dremove=true then

begin

Form1.LBdisk.Items.Delete (Form1.LBdisk.Items.IndexOf (s));

Form1.ADOQuery1.SQL.Clear;

Form1.ADOQuery1.SQL.Add ('insert into flash (computer_name, flash_type, flash_action, flash_dt) ');

Form1.ADOQuery1.SQL.Add ('values ('+QuotedStr (copy (Form1.GetComputerNetName, 1,48))+',');

Form1.ADOQuery1.SQL.Add (QuotedStr (Volume[1])+',');

Form1.ADOQuery1.SQL.Add ('0,');

Form1.ADOQuery1.SQL.Add (QuotedStr (FormatDateTime ('dd.mm.yyyy HH: mm:ss', now)));

Form1.ADOQuery1.SQL.Add (')');

try

Form1.ADOQuery1.ExecSQL;

except

end;

end

else inc (i);

end;

end;

end;

end.

Грабауров, В. А. Информационные технологии для менеджеров / В. А. Грабауров — М.: Финансы и статистика, 2001.- с.132−141.

Корнеев, И.К., Степанова, И. А. Защита информации в офисе. / И. К. Корнеев, И. А. Степанова. — М.: ТК ВЕЛБИ, Проспект, 2008 г. — с. 27−28.

Корнеев, И.К., Степанова, И. А. Защита информации в офисе. / И. К. Корнеев, И. А. Степанова. — М.: ТК ВЕЛБИ, Проспект, 2008 г. — с. 224.

Малюк, А. А. Информационная безопасность: концептуальные и методологические основы защиты информации. Учеб. пособие для вузов. — М: Горячая линия-Телеком, 2004. — с. 19−30.

Ярочкин, В. И. Информационная безопасность: Учебник для студентов вузов. / В. И. Ярочкин.

— М.: Академический Проект; Гаудеамус, 2-е изд., 2004. — с. 326−327.

Ярочкин, В. И. Информационная безопасность: Учебник для студентов вузов. / В.

И. Ярочкин. — М.: Академический Проект; Гаудеамус, 2-е изд., 2004.

— с. 326−327.

Дарахвелидзе, П.Г., Марков, Е. П. Программирование в Delphi 7 / П. Г. Дарахвелидзе, Е. П. Марков. — СПб.: БХВ-Петербург, 2003. — с. 83.

Фленов, М. Е. Библия Delphi. / М. Е. Фленов — СПб.: БХВ-Петербург, 2005. — с.48

Шумаков, П.В. Delphi 3 и разработка приложений баз данных / П. В. Шумаков. — М.: Нолидж, 1999. — с.22−23

Дженнингс, Р. Использование Microsoft Office Access 2003 / Пер. с англ. Р. Дженнингс: пер. с англ. И. Тараброва — «Вильямс». 2005, С.46

Ярочкин, В. И. Информационная безопасность: Учебник для студентов вузов. / В. И. Ярочкин.

— М.: Академический Проект; Гаудеамус, 2-е изд., 2004. — с.31−98.

Руководство банка

Бухгалтерия

Отдел безопасности

Отдел кассовых операций

Отдел ценных бумаг

Кредитный отдел

Отдел автоматизации

Операционный отдел

Валютный отдел

начало Запись массива посещенных адресов Интернет

Конец списка

нет

Есть в таблице

да

нет

Запись в таблицу посещенных адресов Интернет

да

конец Запись массива всех дисков на ПК пользователя

начало Конец списка

нет

USB-устройство

да

нет

Конец предыдуще-го списка

нет

да

Есть в списке

да

Есть в новом списке

да

да

нет

нет

Было в предыдущем списке

нет

Запись в таблицу об извлечении flash-диска

Запись в таблицу о появлении нового flash-диска

да

конец нет

Есть в таблице

Конец списка

Получение массива из списка имен ПК в ЛВС

начало нет

да

да

Время ПК < 1 день

нет

Запись в таблицу имен ПК в ЛВС с учетом текущего времени

да

конец Главное меню системы

Настройки ЛВС

Работа с flash

Посещение Интернет

Сохранить в Excel

Вывести за период

Показать

Сохранить в Excel

Вывести за период

Показать

Показать

Вывести за период

Сохранить в Excel

Показать весь текст

Список литературы

  1. , Э.А. Охрана труда: Справочник / Э. А. Арустамов. — М.: Издательско-торговая корпорация «Дашков и К», 2008. — 588 с. — ISBN 978−5-91 131−551−1.
  2. , А.Я. Программирование в Delphi 7 / А. Я. Архангельский — Бином-Пресс, 2003. — 1152 с. — ISBN 5−9518−0042−0.
  3. Архангельский, А.Я. Delphi 2006. Справочное пособие. Язык Delphi, классы, функции Win32 и .NET / А. Я. Архангельский — Бином-Пресс, 2003. — 1152 с. — ISBN 5−9518−0138−9.
  4. , Д. Фундаментальные алгоритмы и структуры данных в Delphi / Д. Бакнелл — СПб.: Питер, 2006. — 560 с. — ISBN 5−469−1 495−9, 5−93 772−087−3.
  5. Безопасность жизнедеятельности: Учебник для вузов. / С. В. Белов, А. В. Ильницкая, А. Ф. Козьяков и др.; Под общ. редакцией С. В. Белова. — М.: Высшая школа, 2007.- 616 с. — ISBN 978−5-06−4 171−2.
  6. Бобровский, С.И. Delphi 7. Учебный курс / С. И. Бобровский — СПб.: Питер, 2008. — 736 с.: ил. — ISBN 978−5-8046−0086−1.
  7. , Г. А., Калинин С. В., Кондратьев А. В. Защита от утечки информации по техническим каналам. / Г. А. Бузов, С. В. Калинин, А. В. Кондратьев. — М.: Горячая линя-Телеком, 2005. — 416 с. — ISBN 5−93 517−204−6.
  8. , В. А. Информационные технологии для менеджеров / В. А. Грабауров — М.: Финансы и статистика, 2001. — 368 с.: ил. ISBN 5−279−2 299−3.
  9. , М. Введение в SQL: Самое простое введение в SQL с полезными примерами и пробными объяснениями и др. / Пер. с англ. В. Ястребов — Издательство «Лори», 2008. — 375 с. — ISBN — 5−85 582−010−6.
  10. , П.Г., Марков, Е. П. Программирование в Delphi 7 / П. Г. Дарахвелидзе, Е. П. Марков. — СПб.: БХВ-Петербург, 2003. — 784 с. — ISBN 5−94 157−116-Х.
  11. , Н.Г., Малаян, К.Р., Русак, О. Н. Безопасность жизнедеятельности. Учебник. 13-е изд., испр. / Н. Г. Занько, К. Р. Малаян, О. Н. Русак: Под ред. О. Н. Русака. — СПб.: Лань, 2010. — 672 с.: ил. — ISBN 978−5-8114−0284−7.
  12. Кадлец, В. Delphi. Книга рецептов. Практические примеры, трюки и секреты / В. Кадлец — СПб.: Наука и техника, 2006. — 384 с. — ISBN 5−94 387−269−8, 80−251−0017−0.
  13. Карпов, Б. Delphi: специальный справочник / Б. Карпов — СПб.: Питер, 2002. — 688 с.: ил. — ISBN 5−272−353−5.
  14. , Т., Бегг, К., Страчан, А. Базы данных: Проектирование, Реализация и сопровождение. Теория и практика / Т. Коннолли, К. Бегг, А. Страчан — М.: Вильямс, 2003. — 1436 с. — ISBN 5−8459−0527−3, 0−201−70 857−4.
  15. , И.К., Степанова, И.А. Защита информации в офисе. / И. К. Корнеев, И. А. Степанова. — М.: ТК ВЕЛБИ, Проспект, 2008 г. — 336 с. — ISBN 978−5-482−1 976−4.
  16. Криптографическая защита информации: учебное пособие / А. В. Яковлев, А. А. Безбогов, В. В. Родин, В. Н. Шамкин. — Тамбов: Изд-во ТАМБ. ГОС. ТЕХН. УН-ТА, 2006. — 140 с. — ISBN 5−8265−0503−6.
  17. , А. В. Базы данных: учеб. пособие для студ. высш. учеб. заведений / А. В. Кузин, С. В. Левонисова. — 2-е изд., стер. — М.: Издательский центр «Академия», 2008. — 320 с. ISВN 978−5-7695−4833−8.
  18. , А. А. Информационная безопасность: концептуальные и методологические основы защиты информации. Учеб. пособие для вузов. — М: Горячая линия-Телеком, 2004. — 280 с. ил. — ISBN 5−93 517−197-Х.
  19. А.С., Лисовский К. Ю. Базы данных. Введение в теорию и методологию: Учебник / А. С. Марков, К. Ю. Лисовский — М.: Финансы и статистика, 2006. — 512 с: ил. — ISBN 5−279−2 298−5.
  20. В. П. Информационная безопасность и защита информации: учеб. пособие для студ. высш. учеб. заведений / В. П. Мельников, С. Л. Клейменов, Л. М. Петраков; под. ред. С. Л. Клейменова. — М.: Издательский центр «Академия», 2005. — 336 с. — ISBN 978−5-7695−4884−0.
  21. , Е.В. Информационные технологии в профессиональной деятельности: учеб. пособие. — М.: ТК Велби, Изд-во Проспект, 2007. — 448 с. — ISBN 978−5-482−1 569−8.
  22. Основы защиты информации. / А. И. Куприянов, А. В. Сахаров, В. А. Шевцов. — М.: Академия, 2006. — 256 с. — ISBN 5−7695−2438−3.
  23. Основы информационной безопасности. / Е. Б. Белов, В. П. Лось, Р. В. Мещеряков, А. А. Шелупанов. — М.: Горячая линя-Телеком, 2006. — 544 с. — ISBN 5−93 517−292−5.
  24. , С. П. Алгоритмы шифрования. Специальный справочник / С. П. Панасенко — СПб.: БХВ-Петербург, 2009. — 576 е.: ил. — ISBN 978−5-9775−0319−8.
  25. , Д. В. Искусство защиты и взлома информации. / Д. В. Скляров. — СПб.: БХВ-Петербург, 2004. — 288 с.: ил. — ISBN 5−94 157−331−6.
  26. Стивенс, Р. Delphi. Готовые алгоритмы / Р. Стивенс — М.: ДМК Пресс; СПб.: Питер, 2004. — 384 с.: ил. — ISBN 5−94 074−202−5.
  27. , М.Е. Библия Delphi. / М. Е. Фленов — СПб.: БХВ-Петербург, 2005. — 880 с. — ISBN 5−94 157−456−8.
  28. , М.Е. Программирование в Delphi глазами хакера. / М. Е. Фленов — СПб.: БХВ-Петербург, 2005. — 368 с.: ил. — ISBN 5−94 157−351−0.
  29. , Э. Разработка COM-приложений в среде Delphi / Э. Хармон — Вильямс, 2000. — 464 с.: ил. — ISBN 5−8459−0074−3, 1−57 870−221−6.
  30. , В. Л. Основы информационной безопасности автоматизированных систем / В. Л. Цирлов. — М.: Феникс, 2008. — 172 с. — ISBN 978−5-222−13 164−0.
  31. , Ю. В. Локальные вычислительные сети. Издание второе, испр. и доп. / Ю. В. Чекмарев. — М.: ДМК Пресс, 2009. — 200 с.: ил. — ISBN 978−5-94 074−460−3.
  32. , М.В. Петрушин, А.С. Основы информационных технологий. Учебник для вузов. / М. В. Черняков, А. С. Петрушин. — М.: ИКЦ «Академкнига», 2007. — 406 с. — ISBN: 978−5-94 628−273−4.
  33. Шумаков, П.В. Delphi 3 и разработка приложений баз данных / П. В. Шумаков. — М.: Нолидж, 1999. — 704 с.: ил. — ISBN 5−89 251−022−0.
  34. , Ю. А. Delphi 7 на примерах / Ю. А. Шпак. — М.: Юниор, 2003. — 344 с. — ISBN 966−7323−28−5.
  35. , В. И. Информационная безопасность: Учебник для студентов вузов. / В. И. Ярочкин. — М.: Академический Проект; Гаудеамус, 2-е изд., 2004. — 544 с. — ISBN 5−8291−0408−3, 5−98 426−008−5.
Заполнить форму текущей работой
Купить готовую работу

ИЛИ