- •1.2 Особенности восприятия звука человеком
- •2.2 Методы защиты от перехвата акустической (речевой) информации
- •2.3 Обзор технических средств активной защиты информации
- •3.2 Типовое содержание протокола специального исследования
- •3.3 Методика проведения контрольных замеров в области акустики и виброакустики
- •3.4 Обзор технических средств для проведения акустических и виброакустических измерений
- •4 Расчет показателя защищенности акустической речевой информации
- •4.1 Пример расчета словесной разборчивости при представлении сигнала 20-равноартикуляционными полосами
- •4.2Пример расчета словесной разборчивости при представлении спектра речевого сигнала 7 октавными полосами
- •4.3 Программная реализация расчета утечки звука из помещения
- •5.2 Методы и средства улучшения условий труда
- •5.3 Пожарная безопасность
- •5.4 Защита окружающей среды
- •6.2Обоснование выбора аналога для сравнения
- •6.3Обоснование выбора критериев для сравнения
- •6.4.2 Расчет затрат на этапе проектирования
- •6.4.3 Расчет эксплуатационных расходов
- •6.4.4 Экономия от увеличения производительности труда пользователя
- •6.5 Сопоставление технико-интегрального экономического показателя разработанной системы с аналогом
- •6.6 Прогнозирование необходимых объемов производства
- •2Хорев а.А. Защита информации от утечки по техническим каналам. Часть 1. Технические каналы утечки информации: Учебное пособие.М.: Гостехкомиссия России, 1998. - 320 с.
- •2.Запуск программы невозможен, так как на компьютере отсутствует *.Dll. Попробуйте переустановить программу.(осWindows) - проверьте наличие в папке с программой файла *.Dll.
- •5.Запуск программы невозможен, так как на компьютере отсутствует *.Dll. Попробуйте переустановить программу.(осWindows) - проверьте наличие в папке с программой файла *.Dll.
2.Запуск программы невозможен, так как на компьютере отсутствует *.Dll. Попробуйте переустановить программу.(осWindows) - проверьте наличие в папке с программой файла *.Dll.
.Dontsave - не удалос�
� сохранить таблицу с исходными данными (возможно, файл куда производилось сохранение защищен от записи, либо пользователь не имеет права на его создание/изменение) - попробуйте сохранить в другой файл или повысить права доступа.
Д.5 Установка QtCreator + QtSDK
В ОС Windowsпроцесс установки QtCreator + QtSDK ничем не отличается от установки любого другого приложения, поэтому не требует разъяснений.
В ОС Linuxдля установки QtCreator + QtSDK достаточно набрать в терминале sudoapt-getinstallqtcreator.
Другим вариантом установки для ОС Linux является следующая последовательность действий (данный вариант предпочтительней в случае установки QtCreator + QtSDKна несколько машин):
1.;
.перейти в папку со скачанным файлом (в консолиcd);
.набрать в консолиsudochmod u+x ;
.набрать в консоли./;
.ответить на вопросы инсталлятора;
.установить необходимые библиотеки (sudoapt-getinstalllibglib2.0-dev libSM-dev libxrender-dev libfontconfig1-dev libxext-devlibgl-dev libglu-dev).
Примечание: libgl-dev libglu-dev - необязательны, если не предполагается разработка приложений использующих библиотеку OpenGL.
ПРИЛОЖЕНИЕ Е
Руководство системного программиста
Е.1 Общие сведения
Обозначение программы For7Ch, наименование - программа расчета акустической защищенности помещения. Функционирование программы возможно на ПЭВМ под управлением ОС семейства Windowsи ОС семейства Linux. Программа написана на языке C++, с использованием QtSDK. Для сборки требуется наличие в системе компилятора Mingw, gccи утилиты Qmake (поставляются вместе с QtSDK). Программа имеет зависимости от сторонних библиотек Qtс открытым кодом.
Е.2 Структура программы
Программа состоит из исполняемого файла, динамических библиотек и файла с табличными данными.
Запуск исполняемого файла невозможен при отсутствии любой из составных частей программы. Исполняемый файл связан с динамическими библиотеками и файлом с табличными данными. Из динамических библиотек берутся сведения об используемых в программе классах QtSDK, из файла с табличными данными берутся данные необходимые для заполнения таблицы окна ввода исходных данных программы.
Связи с другими программами отсутствуют.
Е.3 Настройка программы
Разработанная программа не нуждается в дополнительной настройке и способна корректно исполняться в том виде, в котором поставляется.
Е.4 Проверка программы
Для проверки функционирования программы рекомендуется выполнить контрольный расчет (данные для такого расчета поставляются вместе с программой). В случае, если программа в процессе работы не выдает сообщений об ошибках, программу можно считать настроенной и готовой к использованию. Результат корректной работы программы представлен в приложении Г.3.
Е.5 Дополнительные возможности
Дополнительные возможности в данной программе отсутствуют.
Е.6 Сообщения системному программисту
Сообщения об ошибках (выводятся в отдельном окне):
.Dontload7ChInitial.bd - проверьте наличие файла 7ChInitial.bd
5.Запуск программы невозможен, так как на компьютере отсутствует *.Dll. Попробуйте переустановить программу.(осWindows) - проверьте наличие в папке с программой файла *.Dll.
ПРИЛОЖЕНИЕ Ж
Исходный код программы
Листинг 1 ─ Содержимое файла main.cpp
// Целью данного программного кода является инициализация и вывод на экран стартового окна программы
#include
#include "modeselect.h"main(int argc, char *argv[])
show();app.exec();">{app(argc, argv);*modeSelect = new ModeSelect;>show();app.exec();
}
Листинг 2 ─ Содержимоефайла modeselect.h
// Заголовочныйфайлдляmodeselect.cpp
#ifndef MODESELECT_H
#define MODESELECT_H
#include
#include
#include firstscreen7ch.hModeSelect : public Qdialog
{_OBJECT:();ChFill *firstScreen;*soundLevel1;*soundLevel2;*soundLevel3;*soundLevel4;*soundLevelLayout;*soundLevel;:*startButton;*closeButton;*buttonsLayout;*mainLayout;slots:
//float setLs();
};
#endif // MODESELECT_H
Листинг 3 ─ Содержимоефайлаmodeselect.cpp
// Целью данного программного кода является создание окна для выбора уровня речевого сигнала в //помещении и заполнение таблицы со справочными данными в соответствии с выбором
#include
#include
#include ::ModeSelect()
{= new FirstScren7ChFill;= new QRadioButton(tr("Low level of speech (64 dB)"));= new QRadioButton(tr("Medium level of speech (70 dB)"));= new QRadioButton(tr("High level of speech (76 dB)"));= new QRadioButton(tr("Technicaly increased level of speech (84 dB)"));= new QVBoxLayout;>addWidget(soundLevel1);>addWidget(soundLevel2);>addWidget(soundLevel3);>addWidget(soundLevel4);->setChecked(true);(soundLevel1, SIGNAL(clicked()), firstScreen, SLOT(setLs1()));(soundLevel2, SIGNAL(clicked()), firstScreen, SLOT(setLs2()));(soundLevel3, SIGNAL(clicked()), firstScreen, SLOT(setLs3()));(soundLevel4, SIGNAL(clicked()), firstScreen, SLOT(setLs4()));= new QGroupBox;>setTitle("Level of sound");>setLayout(soundLevelLayout);;= new QPushButton(tr("Next >>"));= new QPushButton(tr("Exit"));= new QHBoxLayout;>addWidget(startButton);>addWidget(closeButton);= new QVBoxLayout;>addWidget(soundLevel);>addLayout(buttonsLayout);(mainLayout);(closeButton, SIGNAL(clicked()), firstScreen->secondScreen, SLOT(close()));(closeButton, SIGNAL(clicked()), firstScreen, SLOT(close()));(closeButton, SIGNAL(clicked()), this, SLOT(close()));(startButton, SIGNAL(clicked()), firstScreen, SLOT(show()));(tr("Welcome!!!"));
}
Листинг 4 ─ Содержимоефайла firstscreen7ch.h
// Заголовочныйфайлдля firstscreen7ch.cpp
#ifndef FIRSTSCREEN7CH_H
#define FIRSTSCREEN7CH_H
#include
#include
#include "secondscreen7ch.h"FirstScren7ChFill : public QDialog
{_OBJECT:ChFill();ChFill *secondScreen;* floatLs;:*secondTable;*firstTable;*Ls;*saveButton;*loadButton;*backButton;*startCalculation;curFile;Kp;saveFile(const QString &fileName);slots:setLs1();setLs2();setLs3();setLs4();slots:save();saveAs();load();loadFile(QTableWidget *table, const QString &fileName);clearTable();calcKp();calcW();
};
#endif // FIRSTSCREEN7CH_H
Листинг 5 ─ Содержимоефайла firstscreen7ch.cpp
// Целью данного программного кода является создание окна д
ля ввода исходных данных и вывод //справочных данных. В нем же производятся расчеты и передаются данные для заполнения таблицы //результатов расчетов
#include
#include
#include
#include "secondscreen7ch.h"e = 2.71828;ChFill::FirstScren7ChFill()
{= new SecondScren7ChFill;= new QTableWidget;>setRowCount(7);>horizontalHeader()->setResizeMode(QHeaderView::Stretch);>setColumnCount(5);>verticalHeader()->setResizeMode(QHeaderView::Stretch);>setWordWrap(true);>setEditTriggers(0);firstLabels;<<tr("Border of band \nf1 - f2, Hz")<<tr("Medium frequ-\nency Fcp, Hz")<<tr("Bandwidth \ndf, Hz")
setHorizontalHeaderLabels(firstLabels);fileName="7ChInitial.bd";(firstTable,fileName);=newQTableWidget;>setRowCount(2);>horizontalHeader()->setResizeMode(QHeaderView::Stretch);>setColumnCount(7);>verticalHeader()->setResizeMode(QHeaderView::Stretch);>setMaximumHeight(80);secondLabels;setItem(row, column, item);
}
}= new QPushButton(tr("Save..."));= new QPushButton(tr("Load..."));= new QPushButton(tr("addLayout(buttonsLayout);(mainLayout);(saveButton, SIGNAL(clicked()), this, SLOT(save()));(loadButton, SIGNAL(clicked()), this, SLOT(load()));(backButton, SIGNAL(clicked()), this, SLOT(clearTable()));(backButton, SIGNAL(clicked()), this, SLOT(close()));(startCalculation, SIGNAL(clicked()), this, SLOT(calcKp()));(startCalculation, SIGNAL(clicked()), secondScreen, SLOT(show()));(650,350);(tr("Base"));
}FirstScren7ChFill::setLs1()
{floatLs[7] = {35.6, 36.2, 34.5, 27.0, 18.5, 10.5, 4.5};(int row=0; row!=firstTable->rowCount(); ++row) {= new QTableWidgetItem;>setText(QString::number(floatLs[row]));>setItem(row, 3, Ls);
}
}FirstScren7ChFill::setLs2()
{floatLs [7] = {41.6, 42.2, 40.5, 33.0, 24.5, 16.6, 10.5};(int row=0; row!=firstTable->rowCount(); ++row) {= new QTableWidgetItem;>setText(QString::number(floatLs[row]));>setItem(row, 3, Ls);
}
}FirstScren7ChFill::setLs3()
{floatLs [7] = {47.6, 48.2, 46.5, 39.0, 30.5, 22.6, 16.5};(int row=0; row!=firstTable->rowCount(); ++row) {= new QTableWidgetItem;>setText(QString::number(floatLs[row]));>setItem(row, 3, Ls);
}
}FirstScren7ChFill::setLs4()
{floatLs [7] = {55.6, 56.2, 54.5, 47.0, 38.5, 30.6, 24.5};(int row=0; row!=firstTable->rowCount(); ++row) {= new QTableWidgetItem;>setText(QString::number(floatLs[row]));>setItem(row, 3, Ls);
}
}FirstScren7ChFill::save()
{(curFile.isEmpty()) {saveAs();
} else {saveFile(curFile);
}
}FirstScren7ChFill::saveAs()
{fileName = QFileDialog::getSaveFileName(this);(fileName.isEmpty())false;saveFile(fileName);
}FirstScren7ChFill::saveFile(const QString &fileName)
{file(fileName);(!file.open(QIODevice::WriteOnly)){notSaved;.setText(tr("Dont save"));.exec();false;
rowCount();++row){(intcolumn=0;column!=secondTable->columnCount();++column){str;=secondTable->item(row,column)->text();(!str.isEmpty())text();(!str.isEmpty())<<int(row)<<int(column)<<str;
}
}::restoreOverrideCursor();true;
}FirstScren7ChFill::load()
{fileName = QFileDialog::getOpenFileName(this);(!fileName.isEmpty())(secondTable, fileName);
}FirstScren7ChFill::loadFile(QTableWidget *table, const QString &fileName)
{file(fileName);(!file.open(QIODevice::ReadOnly)) {notLoaded;.setText(tr("Dont load"));.exec();false;
>row>>column>>str;>setText(str);>setItem(row,column,item);">}in(&file);.setVersion(QDataStream::Qt_4_1);row;column;str;*item;::setOverrideCursor(Qt::WaitCursor);(!in.atEnd()) {= new QTableWidgetItem();>>row>>column>>str;>setText(str);>setItem(row, column, item);
}::restoreOverrideCursor();true;
}FirstScren7ChFill::clearTable()
{(int row=0; row!=secondTable->rowCount(); ++row){(int column=0; column!=secondTable->columnCount(); ++column){>item(row, column)->setText(" ");
}
}
}FirstScren7ChFill::calcKp()
{= 0;(int column = 0; column!=secondScreen->firstTable->columnCount(); column++) {Ei;Kpi;razn;fsr;w;= firstTable->item(column,3)->text().toFloat() - secondTable->item(0,column)->text().toFloat() ->item(1,column)->text().toFloat();= Ei - firstTable->item(column, 4)->text().toFloat();= sqrt(firstTable->item(column,2)->text().toFloat()*2*firstTable->item(column,2)->text().toFloat());(razn <= 0) {verh;niz;stepen;= -0.0043*pow((razn+27.3),2.0);= 0.78 + 5.46*pow(e,stepen);= 1 + pow(10.0,-razn/10);= verh/niz;
}(fsr text().toFloat();= 2.57*pow(10.0,-8.0)*pow(2*fv,2.4);= fv - fn;
}{stepen;fn;fv;= pow(10.0, -4.0)*pow(firstTable->item(column,2)->text().toFloat(),1.18);= 1 - 1.074*pow(e, - stepen);= pow(10.0, -4.0)*pow(2*firstTable->item(column,2)->text().toFloat(),1.18);= 1 - 1.074*pow(e, - stepen);= fv - fn;
}= Kp + Kpi*w;*item1 = new QTableWidgetItem;*item2 = new QTableWidgetItem;*item3 = new QTableWidgetItem;*item4 = new QTableWidgetItem;->setText(QString::number(Ei));->setText(QString::number(fsr));->setText(QString::number(Kpi));->setText(QString::number(w));>firstTable->setItem(0,column,item1);>firstTable->setItem(1,column,item2);>firstTable->setItem(2,column,item3);>firstTable->setItem(3,column,item4);
}>Kp->setText("Kp = " + QString::number(Kp));();
}FirstScren7ChFill::calcW()
{S;WotS;stepen;WotKp;(Kp = 0.15){= -11*Kp/(1 + 0.7*Kp);= 1 - pow(e, stepen);
}>WotKp->setText("W(Kp) = " + QString::number(WotKp));
}
Листинг 6 ─ Содержимоефайла secondscreen7ch.h
// Заголовочныйфайлдля secondscreen7ch.cpp
#ifndef SECONDSCREEN7CH_H
#define SECONDSCREEN7CH_H
#include
#include SecondScren7ChFill : public QDialog
{_OBJECT:ChFill();*firstTable;*Kp;*S;*WotS;*WotKp;:*mainLayout;
};
#endif // SECONDSCREEN7CH_H
Листинг 7 ─ Содержимоефайла secondscreen7ch.cpp
// Целью данного программного кода является вывод результатов расчета в виде таблицы на экран
#include
#include ChFill::SecondScren7ChFill()
{= new QTableWidget;>setRowCount(4);>horizontalHeader()->setResizeMode(QHeaderView::Stretch);>setColumnCount(7);>verticalHeader()->setResizeMode(QHeaderView::Stretch);>setEditTriggers(0);(int row=0; row!=firstTable->rowCount(); ++row) {>setRowHeight(row,21);
}(int column=0; column!=firstTable->columnCount(); ++column) {>setColumnWidth(column,100);
}firstLabels;addWidget(WotKp);(mainLayout);(750,240);(tr("Calculation results"));
}
