2019-2020-1 20175302 201752314 20175316実験3つの並行プログラム

2019-2020-1 20175302 201752314 20175316実験3つの並行プログラム

3つの並行プログラムを実験-1

コンテンツ実験

LinuxコマンドWC(1)を使用することを学ぶ;
設計と実装のWC(1)サーバー(ポート番号が学籍番号の後に6である)、およびクライアントベースのLinuxソケットプログラム、
クライアントはサーバーにテキストファイルを転送し、
サーバーの背面のテキストファイルを追加します単語の数。

設計と実装

  • コマンドパラメータ
    -c:バイト統計の数
    -l:統計行
    -m:統計の文字数。このフラグは、-cフラグと一緒に使用することはできません。
    -w:単語を数えます。単語はスペース、タブ、または改行文字として区切られた文字列を定義している
    -L:最長ラインの印刷長
    -help表示ヘルプ情報:
    --version:バージョン情報の表示

  • 擬似コード
    int main() { fd = fopen()//打开文件; fscanf()//对文件的内容以字符串的形式进行读取 if..count++//设置条件,当满足字符串条件时计数; }
    米国と同様、WC -w機能の単語の数をカウントするが、現時点で実際に:「」、「\ n」は、 「\ T」、「\ R」 セパレータとして
    パーティションに加えて、場合単語の数を数えますフーは、また、テキストファイルに共通のシンボルに入社しました: '' '' ''( ' ')'、 ':'、 ';'、' - '' ''! '?'。セパレータとして」

  • トイレ-wを達成
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define BUFFERSIZE 1024

int main()
{
    FILE *fp;
    char ch;
    char filename[100];
    int flag=0,num=0;
        printf("input filename: ");
    scanf("%s",filename);
    if((fp = fopen(filename,"r"))==NULL)
    {
        printf("Failure to open %s\n",filename);
        exit(0);
    }
    while((ch=fgetc(fp))!=EOF)
    {
        if(ch==' ' || ch=='\n' || ch=='\t' || ch=='\r')
        {
            flag=0;
        }
        else
        {
            if(flag==0)
            {
                flag=1;
                num++;
            }

        }

    }
    printf("%c\n",num+48);
    fclose(fp);
    return 0;
}
  • トイレのtxt

  • 言葉の統計情報の数を達成するために
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define BUFFERSIZE 1024
/*int num=0;
void wc(char buffer[],int size)
{
    int i,flag=0;
    for(i=0;i<size;i++)
    {
        if(buffer[i]==' ' || buffer[i]=='\n' || buffer[i]=='\t' || buffer[i]=='\0' || buffer[i]=='!' || buffer[i]=='?' || buffer[i]=='"' || buffer[i]=='.' || buffer[i]== ',' || buffer[i]==':' || buffer[i]=='(' || buffer[i]==')' || buffer[i]==';' || buffer[i]=='■ ' || buffer[i]=='•' )
        {
            flag=0;
        }
        else
        {
            if(flag==0)
            {
                num++;
            }
            flag=1;
        }
    }
    return num;
}*/
int main()
{
    FILE *fp;
    char ch;
    char filename[100];
    int flag=0,num=0;
        printf("input filename: ");
    scanf("%s",filename);
    if((fp = fopen(filename,"r"))==NULL)
    {
        printf("Failure to open %s\n",filename);
        exit(0);
    }
    while((ch=fgetc(fp))!=EOF)
    {
        if(ch==' ' || ch=='\n' || ch=='\t' ||  ch=='\!' || ch=='\?' || ch=='\"' || ch=='\.' || ch== '\,' || ch=='\:' || ch=='\(' || ch=='\)'     || ch=='\;' || ch=='\-')
        {
            flag=0;
        }
        else
        {
            if(flag==0)
            {
                flag=1;
                num++;
            }

        }

    }
    printf("%d\n",num);
    fclose(fp);
    return 0;
}
  • クライアントとサーバーの通信プロセス

  • 業績

0.注意不经老师允许不准烧写自己修改的代码
1.两人(个别三人)一组
2.参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.1-1.5安装MDK,JLink驱动,注意,要用系统管理员身分运行uVision4,破解MDK(破解程序中target一定选ARM)
3.提交破解程序中产生LIC的截图
4.提交破解成功的截图

実験手順

  • 実行exp2/软件资料/MDK4.74/.exeインストールMDK-ARMを
  • インストールJLINK
  • 亀裂MDK4.74:コピーCID Keil社-MDKには、マシンを登録し、ターゲットは、クリックLICを生成生成する、ARMを選択しました
  • 追加LICをクリックし、入力ボックスにLIC LICのkeil4にコピーし、完全に割れました。


2つのファームウェアプログラミング実験-2- LED

コンテンツ実験

0.  注意不经老师允许不准烧写自己修改的代码
1.  参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加Z32 SC-000芯片库,提交安装截图
2.  参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.9”完成LED实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
3.  实验报告中分析代码

実験手順

  • 実行しexp2\软件资料\MDK-ARM-SC000\MDK-ARM_AddOn_SC000_Support.exe、インストールSC000ライブラリを
  • インストールパスの選択が終了し、新たなuVisionプロジェクトの設立、ポップアップチップライブラリの選択ボックス、ドロップダウンボックスジェネリックSC000デバイスのデータベースを選択し、ボックスのARMディレクトリにポップアップスポットを開いて、SC000を選択:プログラミング環境の基盤を構築するためのZ32プロジェクト。
  • オープン实验1-LED 闪烁\Z32HUA.uvprojLEDが点滅パイロットプロジェクトを開くために、コンパイラは、プロジェクトを生成し、实验1-LED 闪烁\bin\Z32HUA.bin
  • 電源への実験的なボックスアクセス、コンピュータに接続されたテスト箱、Z32が開いてデバッグツールダウンロードし软件资料\Z32下载调试工具\NZDownloadTool.exe、電源スイッチZ32を入れる前に再起動ボタンとホールドを保持し、二回の電源スイッチをオンにし、Z32は、表示装置が接続され、コンピュータに認識することができます、選択し、[参照]をクリックします\实验 1-LED 闪烁\bin\Z32HUA.bin緑色のプログレスバーがロードされた後、[ダウンロード]をクリックしますプログラムのダウンロードの成功を
  • Z32電源オフ、その後は再び、プログラムがダウンロードされ、自動的に実行、コア基板は、LEDが点滅していることがわかります。

  • コンパイルダウンロードファイル(ここでは、このソフトウェアの将来の使用を容易にするために、コンパイルされたファイル)
  • チップセレクト

  • そして、基本的な環境を構築するためのデバイスを接続

  • 点滅成功

第二の実験ファームウェアプログラミング-3- UART

コンテンツ実験

0.  注意不经老师允许不准烧写自己修改的代码
1.  参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加Z32 SC-000芯片库,提交安装截图
2.  参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.0”完成UART发送与中断接收实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
3.  实验报告中分析代码

実験手順

  • 2-UART受信実験割り込み送信を開き\Z32HUA.uvproj送受信パイロットプロジェクト割り込みオープンUARTに、プロジェクトコンパイラは、送受信割り込み実験2-UARTを生成します\bin\Z32HUA.bin
  • 電源への実験的なボックスアクセスは、テストボックスは、コンピュータに接続され、9ピンのシリアルケーブルZ32、コンピュータモジュールのシリアルポートUSBインタフェースは、デバッグツールがオープンZ32をダウンロードし软件资料\Z32下载调试工具\NZDownloadTool.exe、電源スイッチZ32を入れる前に再起動ボタンとホールドを保持し、2倍のパワーをオンにしますスイッチデバイスが接続された後、Z32は、ディスプレイは、コンピュータに認識することができ、[参照]をクリックし、送信および受信割り込み\実験2-UARTを選択\ binに\ Z32HUA.bin、緑色のプログレスバーがロードされた後、ダウンロードをクリックし、プログラムのダウンロード成功
  • シリアルポートアシスタントを開き、対応するパラメータを設定します。
  • Z32のパワーは、文字列の入力ボックスシリアルデバッグアシスタントに文字列を入力し、自動的に実行するプログラムをダウンロードしてから再起動し、オフになっabcdefghた後、送信ボタンをクリックします。
  • ドライバのインストール
  • シリアルデバッグ

第二の実験ファームウェアプログラミング-4-国家機密アルゴリズム

コンテンツ実験

0.  网上搜集国密算法标准SM1,SM2,SM3,SM4
1.  网上找一下相应的代码和标准测试代码,在Ubuntu中分别用gcc和gcc-arm编译
2.  四个算法的用途?
3.  《密码学》课程中分别有哪些对应的算法?
4.  提交2,3两个问题的答案
5.  提交在Ubuntu中运行国密算法测试程序的截图
  • SM1対称暗号化。AESの暗号化強度はかなり持ちます。あなたは、アルゴリズムは、暗号化チップ・インターフェースによって呼び出される必要がある呼び出すときアルゴリズムは、開きません。
  • SM2:デジタル署名とデータ暗号化を実装するためのキー合意。
  • SM3:商用暗号アプリケーションと検証と乱数を発生し、メッセージ認証コードを生成する検証にデジタル署名するために、暗号化アプリケーションの種々のセキュリティのニーズを満たすことができます。
  • SM4:データと情報の機密性を確保するために、データの暗号化/復号化を実装します。
  • SM1:AES暗号化の程度と、かなり
  • SM2:楕円曲線公開鍵暗号、鍵交換プロトコル楕円曲線、楕円曲線公開鍵暗号化アルゴリズム
  • SM3:暗号ハッシュアルゴリズム
  • SM4:パケット対称暗号

  • SM3の実行ショット

  • SM4実行ショット

第二の実験ファームウェアプログラミング-5- SM1

コンテンツ実験

0.注意不经老师允许不准烧写自己修改的代码
1.参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加Z32 SC-000芯片库,提交安装截图
2.参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.16”完成SM1加密实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
3.实验报告中分析代码

実験手順

  • 送信および受信パイロットプロジェクト割り込みUARTを開くためのオープンな実験5-SM1 \ Z32HUA.uvprojは、プロジェクトは実験的な8-SM1 \ binに\ Z32HUA.binを生成するためにコンパイルされています
  • コンピュータのシリアルポートUSBインタフェースモジュールとZ32、Z32オープンデバッグツールのダウンロードへのパワーに実験的なボックスアクセス、コンピュータに接続されたテスト箱、9ピンのシリアルケーブル软件资料\Z32下载调试工具\NZDownloadTool.exe、電源スイッチZ32を開く前に、プレスと保留再起動ボタンを2回電源スイッチをオンにした表示装置1が接続された後、Z32は、コンピュータに認識することができ、[参照]をクリックし、選択し\实验 8-SM1\bin\Z32HUA.bin、ダウンロードをクリックし、緑色のプログレスバーがロードされた後、プログラムのダウンロードの成功
  • シリアルポートアシスタントを開き、対応するパラメータを設定します。
  • クローズZ32パワーは、その後、表示が「SLE4428実験!ICカードを挿入してください。」自動的に実行するプログラムをダウンロードして開きます。ICカードが挿入された後:ユーザーコード:「4行目が示すユーザコード」D27600000400」。
  • その後、画面の指示に従ってください。

第二の実験ファームウェアのプログラミング-6-クリーンアップ

实验结束后,把实验室原来的网线插回,否则以后做实验的同学无法开机
0.只有用实验室机器的小组做
1.提交你们小组使用的计算机的编号照片
2.提交插好网线的照片
3.提交盖好后盖的照片

実験的に発生する問題と解決策

  • 一つの問題:CファイルSM2をコンパイルするときに問題がライブラリを見つけることができません。
  • ソリューション:2つのコマンドを入力してリロード
sudo apt-get remove openssl libssl-dev
sudo apt-get install openssl libssl-dev -y
  • 第二の問題:UARTコードコンパイラによってLEDとではありません
  • ソリューション:開くための力に実験的なボックスアクセス、コンピュータに接続されたテスト箱、Z32下载调试工具软件资料\Z32下载调试工具\NZDownloadTool.exe電源スイッチZ32を開く前に、再起動ボタンとホールドを保持し、電源スイッチを2回入れ、Z32がコンピュータに認識することができ、表示装置が接続されており、 、選択し、[参照]をクリックします\实验 1-LED 闪烁\bin\Z32HUA.bin緑色のプログレスバーがロードされた後、[ダウンロード]をクリックしますプログラムのダウンロードの成功を

実験の経験と経験

  • 実験的使用は、MDK、暗号化アルゴリズムの標準的な試験室にプログラムをダウンロードする方法を学びましたシリアル・ポート・アシスタントを通じて室とZ32コンピュータ間のデータ転送と通信し、私たちのSM1、SM2、SM3、SM4をクラックuVision4、実験は比較的簡単ですしかし、デバッグソフトウェアへの必要性は、あなたが忍耐を必要とします。

  • SM1:広く電子政府、電子商取引や(経由国の重要なエリア、警察通信、などを含む)国民経済の様々な応用分野で使用される、対応する暗号ブロック暗号アルゴリズム、。

  • SM2:暗号化とデジタル署名のために対応する暗号、公開鍵暗号アルゴリズムRSA、。

  • SM3:対応する暗号ダイジェストアルゴリズムMD5、デジタル署名および商用暗号化アプリケーションの検証のため。

  • SM4:無線LAN製品に対応する暗号ブロック暗号アルゴリズムDES、。

参考資料

おすすめ

転載: www.cnblogs.com/sms369/p/11923868.html