欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      中南大學(xué) 數(shù)據(jù)結(jié)構(gòu)實驗報告

      時間:2019-05-12 08:38:58下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《中南大學(xué) 數(shù)據(jù)結(jié)構(gòu)實驗報告》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《中南大學(xué) 數(shù)據(jù)結(jié)構(gòu)實驗報告》。

      第一篇:中南大學(xué) 數(shù)據(jù)結(jié)構(gòu)實驗報告

      數(shù)據(jù)結(jié)構(gòu)實驗報告

      專業(yè)班級: 指導(dǎo)老師:余臘生 姓

      名: 學(xué)

      號: 實驗一 單鏈表的基本操作的實現(xiàn)

      一、實驗?zāi)康?/p>

      掌握單鏈表的基本操作:建立、插入、刪除、查找等運算。

      二、實驗儀器

      安裝VC++的PC機(jī)。

      三、實驗原理

      利用線性表的特性以及其鏈?zhǔn)酱鎯Y(jié)構(gòu)特點對線性表進(jìn)行相關(guān)操作。

      四、實驗內(nèi)容

      程序中演示了單鏈表的創(chuàng)建、插入、刪除和查找。程序如下:

      #include #include #include #include typedef struct node { int data;struct node *next;} NODE;/******************************************/ NODE *Create(){ NODE *p,*head;int x;head=(NODE *)malloc(sizeof(NODE));head->next=NULL;printf(“Input data,-1 to End!n”);

      scanf(“%d”,&x);while(x!=-1){ p=(NODE *)malloc(sizeof(NODE));p->data=x;p->next=head->next;head->next=p;scanf(“%d”,&x);} return(head);} /******************************************/ void Output(NODE *head){ NODE *p;p=head;printf(“Begin to dump the LinkList...n”);while(p->next!=NULL){ printf(“->%d”,p->next->data);p=p->next;} printf(“nThe LinkList ended!n”);} /******************************************/ int Listlen(NODE *head){ int i=0;NODE *p=head;while(p->next!=NULL){ i++;p=p->next;} return(i);} /******************************************/ int Get(NODE *head,int i){ int j=0;NODE *p=head;while(p->next&&jnext;} if(!p->next||j>i)return(0);else return(p->data);} /******************************************/ void Del(NODE *head,int i){ NODE *p=head;int j=0;while(p->next&&jnext;} if(!p->next||j>i-1)printf(“the position is wrongn”);else p->next=p->next->next;} /******************************************/ void Ins(NODE *head,int i,int e){ NODE *p=head,*q;int j=0;while(p->next&&jnext;} if(!p->next&&j>i-1)printf(“Wrong positionn”);else { q=(NODE *)malloc(sizeof(NODE));q->data=e;q->next=p->next;p->next=q;} } /******************************************/ main(){ NODE *head;int length;int i,element;system(“CLS”);head=Create();Output(head);length=Listlen(head);printf(“the length of the link is %dn”,length);printf(“input the order :n”);scanf(“%d”,&i);element=Get(head,i);printf(“the element of the order is %dn”,element);printf(“input the del position n”);scanf(“%d”,&i);Del(head,i);Output(head);printf(“Input the insert posion and element:n”);scanf(“%d%d”,&i,&element);Ins(head,i,element);Output(head);getch();}

      五、數(shù)據(jù)記錄及處理

      1、運行程序,輸入下面一組數(shù)據(jù): 93 94 12 13 20 14 鏈表順序:14 20 13 12 94 93

      2、刪除第二個數(shù)據(jù)結(jié)點,在第一個位置插入數(shù)據(jù)20。

      運行結(jié)果如下: 插入結(jié)果:14 13 12 94 93 刪除結(jié)果:20 14 13 12 94 93 運行結(jié)果截圖:

      實驗二 棧和隊列的實現(xiàn)

      一、目的和要求

      1.理解隊列和棧的順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)。通過本實驗,熟悉隊列、棧的結(jié)構(gòu)特點; 2.熟悉隊列、棧結(jié)構(gòu)上的操作與算法的實現(xiàn)。

      二、實驗內(nèi)容

      1.隊列的基本操作和應(yīng)用。2.棧的基本操作和應(yīng)用。

      三、儀器、設(shè)備和材料

      1.適合實驗要求的計算機(jī)系統(tǒng)。2.VC++編程平臺。

      四、實驗原理

      隊列與棧是一種操作受限制的線性表,在了解線性表的基本原理的基礎(chǔ)上,理解與完成此項實驗。

      五、實驗步驟

      1.采用隊列的順序存儲結(jié)構(gòu)。

      2.用菜單的形式完成隊列的建立,出隊,入隊等基本操作。3.采用棧的鏈?zhǔn)酱鎯Y(jié)構(gòu)。

      4.用菜單的形式完成棧的出棧、入棧等基本操作。

      六、程序算法

      #include #include #define OVERFLOW-2 #define ERROR 0 #define OK 1 #define MAX 100 //棧的最大值 typedef int SElemType;typedef int QElemType;typedef struct {SElemType *base;

      SElemType *top;}SqStack;

      SqStack InitStacka()//順序存儲實現(xiàn)棧的初始化 {SqStack S;S.base=(SElemType *)malloc(MAX*sizeof(SElemType));if(!S.base)exit(OVERFLOW);S.top=S.base;return(S);}

      void Pusha(SqStack &S,int x)//順序存儲實現(xiàn)棧的入棧操作 {if(S.top-S.base>=MAX)exit(OVERFLOW);*S.top++=x;}

      void Popa(SqStack &S)//順序存儲實現(xiàn)棧的出棧操作 {SElemType *p;int x;if(S.top==S.base)return;else {p=S.top;x=*--S.top;printf(“t刪除的棧頂元素是%dnt出棧操作完成后的棧為:n”,x);} } void printa(SqStack S)//輸出 {SElemType *p;p=S.base;printf(“t”);while(p!=S.top){printf(“%d ”,*(p++));} printf(“n”);}

      typedef struct SqNode {SElemType data;SqNode *Link;}*Sqptr,NODE;typedef struct {Sqptr top;}Stack;

      Stack InitStackb()//鏈?zhǔn)酱鎯崿F(xiàn)棧的初始化 {Stack S;S.top=(Sqptr)malloc(sizeof(NODE));if(!S.top)exit(OVERFLOW);S.top->Link=NULL;return(S);}

      void Pushb(Stack &S,int x)//鏈?zhǔn)酱鎯崿F(xiàn)棧的入棧操作 {Sqptr p;p=(Sqptr)malloc(sizeof(NODE));if(!p)return;p->data=x;p->Link=S.top->Link;S.top->Link=p;}

      void Popb(Stack &S)//鏈?zhǔn)酱鎯崿F(xiàn)棧的出棧操作 {int x;Sqptr p;if(S.top->Link==NULL)return;else {p=S.top->Link;

      x=p->data;

      S.top->Link=p->Link;

      printf(“t刪除的棧頂元素是%dn”,x);

      free(p);} }

      typedef struct QNode {QElemType data;struct QNode *next;}*QueuePtr,QNode;typedef struct {QueuePtr front;QueuePtr rear;}LinkQueue;LinkQueue InitQueue()//鏈?zhǔn)酱鎯崿F(xiàn)隊列的初始化 {LinkQueue Q;Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));if(!Q.front)exit(OVERFLOW);Q.front->next=NULL;

      return(Q);} void EnQueue(LinkQueue &Q,QElemType x)//鏈?zhǔn)酱鎯崿F(xiàn)隊列的入隊 {QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));if(!p)exit(OVERFLOW);p->data=x;p->next=NULL;Q.rear->next=p;Q.rear=p;} void DeQueue(LinkQueue &Q)//鏈?zhǔn)酱鎯崿F(xiàn)隊列的出隊 {int x;if(Q.front==Q.rear)return;QueuePtr p;p=Q.front->next;x=p->data;printf(“t刪除的隊頭元素是:%dn”,x);Q.front->next=p->next;if(Q.rear==p)Q.rear=Q.front;free(p);return;}

      typedef struct {SElemType *base;int front,rear;}SqQueue;SqQueue InitQueueb()//順序存儲實現(xiàn)隊列的初始化 {SqQueue S;S.base=(SElemType *)malloc(MAX*sizeof(SElemType));if(!S.base)exit(OVERFLOW);S.front=S.rear=0;return(S);} void EnQueueb(SqQueue &S,int x)

      //順序存儲實現(xiàn)隊列的入隊 {if((S.rear+1)%MAX==S.front)return;S.base[S.rear]=x;S.rear=(S.rear+1)%MAX;} void DeQueueb(SqQueue &S)//順序存儲實現(xiàn)隊列的出隊 {int x;if(S.front==S.rear)return;x=S.base[S.front];S.front=(S.front+1)%MAX;printf(“t刪除的隊頭元素是:%dn”,x);} void main(){int choice;int n,x;printf(“nn”);printf(“t1.采用鏈?zhǔn)酱鎯崿F(xiàn)棧的初始化、入棧、出棧操作n”);printf(“t2.采用順序存儲實現(xiàn)棧的初始化、入棧、出棧操作n”);printf(“t3.采用鏈?zhǔn)酱鎯崿F(xiàn)隊列的初始化、入隊、出隊操作n”);printf(“t4.采用順序存儲實現(xiàn)隊列的初始化、入隊、出隊操作n”);printf(“t請選擇:”);scanf(“%d”,&choice);switch(choice){case 1:Stack Sa;

      printf(“t1.鏈?zhǔn)酱鎯崿F(xiàn)棧的初始化n”);

      printf(“t2.鏈?zhǔn)酱鎯崿F(xiàn)棧的入棧操作n”);

      printf(“t3.鏈?zhǔn)酱鎯崿F(xiàn)棧的出棧操作n”);

      while(1){

      printf(“t請選擇:”);

      scanf(“%d”,&n);

      switch(n)

      {case 1:Sa=InitStackb();

      printf(“t鏈?zhǔn)酱鎯5某跏蓟瓿?n”);break;

      case 2:printf(“t以'0'結(jié)束n”);printf(“t”);

      scanf(“%d”,&x);

      while(x){

      Pushb(Sa,x);scanf(“%d”,&x);}

      printf(“t鏈?zhǔn)酱鎯5娜霔2僮魍瓿?n”);break;

      case 3:Popb(Sa);break;}}break;

      case 2:SqStack S;

      printf(“t1.順序存儲實現(xiàn)棧的初始化n”);

      printf(“t2.順序存儲實現(xiàn)棧的入棧操作n”);

      printf(“t3.順序存儲實現(xiàn)棧的出棧操作n”);

      while(1){

      printf(“t請選擇:”);

      scanf(“%d”,&n);

      switch(n)

      { case 1:S=InitStacka();

      printf(“t順序存儲棧的初始化完成!n”);break;

      case 2:printf(“t以'0'結(jié)束n”);

      printf(“t”);

      scanf(“%d”,&x);

      while(x){

      Pusha(S,x);

      scanf(“%d”,&x);}

      printf(“t順序存儲棧的入棧操作完成!n”);

      printa(S);break;

      case 3:Popa(S);

      printa(S);break;}}break;

      case 3:LinkQueue Q;

      printf(“t1.鏈?zhǔn)酱鎯崿F(xiàn)隊的初始化n”);

      printf(“t2.鏈?zhǔn)酱鎯崿F(xiàn)隊的入棧操作n”);

      printf(“t3.鏈?zhǔn)酱鎯崿F(xiàn)隊的出棧操作n”);

      while(1){

      printf(“t請選擇:”);

      scanf(“%d”,&n);

      switch(n)

      {

      case 1:Q=InitQueue();

      printf(“t鏈?zhǔn)酱鎯﹃牭某跏蓟瓿?n”);break;

      case 2:printf(“t以'0'結(jié)束n”);printf(“t”);scanf(“%d”,&x);

      while(x){

      EnQueue(Q,x);scanf(“%d”,&x);}

      printf(“t鏈?zhǔn)酱鎯﹃牭娜霔2僮魍瓿?n”);break;

      case 3:DeQueue(Q);break;}}break;

      case 4:SqQueue Sv;

      printf(“t1.順序存儲實現(xiàn)隊的初始化n”);

      printf(“t2.順序存儲實現(xiàn)隊的入棧操作n”);

      printf(“t3.順序存儲實現(xiàn)隊的出棧操作n”);

      while(1){

      printf(“t請選擇:”);

      scanf(“%d”,&n);

      switch(n)

      {case 1:Sv=InitQueueb();

      printf(“t鏈?zhǔn)酱鎯5某跏蓟瓿?n”);break;

      case 2:printf(“t以'0'結(jié)束n”);printf(“t”);scanf(“%d”,&x);

      while(x){

      EnQueueb(Sv,x);scanf(“%d”,&x);}

      printf(“t鏈?zhǔn)酱鎯5娜霔2僮魍瓿?n”);break;

      case 3: DeQueueb(Sv);break;}}break;} } 程序調(diào)試截圖:

      1.采用鏈?zhǔn)酱鎯崿F(xiàn)棧的初始化、入棧、出棧操作

      2.采用順序存儲實現(xiàn)棧的初始化、入棧、出棧操作

      3.采用鏈?zhǔn)酱鎯崿F(xiàn)隊列的初始化、入隊、出隊操作

      4.采用順序存儲實現(xiàn)隊列的初始化、入隊、出隊操作

      七、心得體會

      實踐才能出真知,在通過了上機(jī)操作后,才發(fā)現(xiàn)了許多在平時上理論課的時候沒有想到的方方面面,編寫程序時發(fā)現(xiàn)很多語法的錯誤,以及很多英語單詞的記不熟,記錯,程序函數(shù)錯用等等,我想需要在以后多多練習(xí),才能逐步解決這些問題。實驗三 二叉樹的建立和遍歷

      一、目的和要求

      1、了解二叉樹的建立的方法及其遍歷的順序,熟悉二叉樹的三種遍歷

      2、檢驗輸入的數(shù)據(jù)是否可以構(gòu)成一顆二叉樹

      二、實驗內(nèi)容

      1.二叉樹的建立和遍歷

      三、儀器、設(shè)備和材料

      1.適合實驗要求的計算機(jī)系統(tǒng)。2.VC++編程平臺。

      四、實驗的描述和算法

      1、實驗描述

      二叉樹的建立首先要建立一個二叉鏈表的結(jié)構(gòu)體,包含根節(jié)點和左右子樹。因為耳熟的每一個左右子樹又是一顆二叉樹,所以可以用遞歸的方法來建立其左右子樹。二叉樹的遍歷是一種把二叉樹的每一個節(jié)點訪問完并輸出的過程,遍歷時根結(jié)點與左右孩子的輸出順序構(gòu)成了不同的遍歷方法,這個過程需要按照不同的遍歷的方法,先輸出根結(jié)點還是先輸出左右孩子,可以用選擇語句實現(xiàn)。

      2、算法

      #include #include using namespace std;template struct BinTreeNode

      //二叉樹結(jié)點類定義 { T data;

      //數(shù)據(jù)域

      BinTreeNode *leftChild,*rightChild;

      //左子女、右子女域

      BinTreeNode(T x=T(),BinTreeNode* l =NULL,BinTreeNode* r = NULL)

      :data(x),leftChild(l),rightChild(r){}

      //可選擇參數(shù)的默認(rèn)構(gòu)造函數(shù) };//-----------template void PreOrder_2(BinTreeNode *p)

      //非遞歸前序遍歷 { stack * > S;while(p!=NULL ||!S.empty()){

      while(p!=NULL)

      {

      cout<

      data;

      //訪問根結(jié)點

      S.push(p);

      p=p->leftChild;

      //遍歷指針進(jìn)到左子女結(jié)點

      }

      if(!S.empty())

      //棧不空時退棧

      {

      p=S.top();

      S.pop();

      p = p->rightChild;

      //遍歷指針進(jìn)到右子女結(jié)點

      } } } //--template void InOrder_2(BinTreeNode *p)

      //非遞歸中序遍歷 { stack* > S;do {

      while(p!=NULL)

      //遍歷指針未到最左下的結(jié)點,不空

      {

      S.push(p);

      p=p->leftChild;

      }

      if(!S.empty())

      //棧不空時退棧

      {

      p=S.top();

      S.pop();

      cout<

      data;

      p=p->rightChild;

      } } while(p!=NULL ||!S.empty());}

      //----template void PostOrder_2(BinTreeNode *p)//非遞歸后序遍歷 { stack * > S;stack tag;//定義一個新的棧用來保存tag域判別根結(jié)點的左右子樹是否均遍歷過

      while(p!= NULL ||!S.empty())

      //左子樹經(jīng)過結(jié)點加L進(jìn)棧

      {

      while(p!=NULL)

      {

      S.push(p);//首先將t和tag為入棧,遍歷左子樹

      tag.push(0);//遍歷左子樹前的現(xiàn)場保護(hù)

      p=p->leftChild;

      }

      while(!S.empty()&& tag.top()==1)

      {

      p=S.top();

      S.pop();

      tag.pop();

      cout<

      data;//最后訪問根結(jié)點。

      }

      if(!S.empty())

      {

      tag.pop();

      tag.push(1);//遍歷右子樹前的現(xiàn)場保護(hù),修改棧頂tag為,遍歷右子樹

      p=S.top();

      // 取棧頂保存的指針

      p=p->rightChild;

      }

      else

      break;

      } } template void InOrder_1(BinTreeNode * subTree){//遞歸函數(shù):中序次序遍歷以subTree為根的子樹。

      if(subTree!=NULL)

      //NULL是遞歸終止條件

      {

      InOrder_1(subTree->leftChild);//中序遍歷根的左子樹

      cout<data;

      //訪問根結(jié)點

      InOrder_1(subTree->rightChild);//中序遍歷根的右子樹

      } } template void PreOrder_1(BinTreeNode * subTree){//遞歸函數(shù):前序遍歷以subTree為根的二叉樹。if(subTree!=NULL)

      //遞歸結(jié)束條件

      {

      cout<data;//訪問根結(jié)點

      PreOrder_1(subTree->leftChild);

      //前序遍歷根的左子樹

      PreOrder_1(subTree->rightChild);

      //前序遍歷根的右子樹

      } } template void PostOrder_1(BinTreeNode * subTree){//遞歸函數(shù):后序次序遍歷以subTree為根的子樹。

      if(subTree!=NULL)

      //NULL是遞歸終止條件

      {

      PostOrder_1(subTree->leftChild);//后序遍歷根的左子樹

      PostOrder_1(subTree->rightChild);//后序遍歷根的右子樹

      cout<data;

      //訪問根結(jié)點

      } } //------------template void CreateBinTree(BinTreeNode * & subTree){//遞歸方式建立二叉樹

      T item;

      cin>>item;

      if(item!=-1)

      {

      subTree = new BinTreeNode();

      if(subTree == NULL)

      {

      cerr<<“存儲分配錯!”<

      exit(1);

      }

      subTree->data = item;

      CreateBinTree(subTree->leftChild);//遞歸建立左子樹

      CreateBinTree(subTree->rightChild);//遞歸建立右子樹

      }

      else subTree = NULL;

      //封閉指向空子樹的指針 } int main(){

      BinTreeNode * Tree = NULL;cout<<“請輸入每個結(jié)點,回車確認(rèn),并以-1結(jié)束:”;CreateBinTree(Tree);

      cout<<“先序遍歷二叉樹結(jié)果:”;

      PreOrder_1(Tree);

      cout<

      cout<<“后序遍歷二叉樹結(jié)果:”;

      PostOrder_1(Tree);cout<

      cout<<“非遞歸中序遍歷二叉樹結(jié)果:”;InOrder_2(Tree);cout<

      3、實驗程序運行截圖

      實驗四 散列法查找和排序

      一、目的和要求

      1.用散列法實現(xiàn)順序查找,折半查找。

      二、儀器、設(shè)備和材料

      1.適合實驗要求的計算機(jī)系統(tǒng)。2.VC++編程平臺。

      三、實驗步驟 和程序

      1、順序查找 #include #include #include #define m

      #define NULLKEY 0 typedef int KeyType;

      /* 假設(shè)關(guān)鍵字為整型 */ typedef struct { KeyType key;}RecordType;typedef RecordType HashTable[m];int hash(KeyType k)/*除留余數(shù)法構(gòu)造哈希函數(shù)*/ { int h;h = k%m;return h;} int HashSearch(HashTable ht, KeyType K)/*哈希查找*/ { int h0;int i;int hi;h0=hash(K);if(ht[h0].key==NULLKEY)

      return(-1);else

      if(ht[h0].key==K)

      return(h0);

      else

      /* 用線性探測再散列解決沖突 */

      {

      for(i=1;i<=m-1;i++)

      {

      hi=(h0+i)% m;

      if(ht[hi].key==NULLKEY)

      return(-1);

      else

      if(ht[hi].key==K)

      return(hi);

      }

      return(-1);

      }

      } void main(){ int i,j;int n;int p;int hj;int k;int result;HashTable ht;for(i=0;i

      ht[i].key = NULLKEY;printf(“請輸入哈希表的元素個數(shù):”);scanf(“%d”,&n);for(i=1;i<=n;i++){

      printf(“請輸入第%d個元素:”,i);

      fflush(stdin);

      scanf(“%d”,&p);

      j = hash(p);

      if(ht[j].key == NULLKEY)

      ht[j].key = p;

      else

      {

      for(i=1;i<=m-1;i++)

      {

      hj=(j+i)% m;

      if(ht[hj].key==NULLKEY)

      {

      ht[j].key = p;

      }

      i = m;

      }

      }

      } } printf(“請輸入要查找的元素:”);fflush(stdin);scanf(“%d”,&k);result = HashSearch(ht,k);if(result ==-1)printf(“未找到!n”);else printf(“元素位置為%dn”,result);system(“pause”);運行結(jié)果如下:

      2、折半查找

      #include #define N 21 void main(void){ int a[N];int i,n,num;int top,bottom,mid;int flag=1;int loc=-1;printf(“你想在多少個數(shù)中進(jìn)行折半查找,請輸入(1--20):”);scanf(“%d”,&n);while(n<1||n>20){

      printf(“你輸入的數(shù)不正確,請重新輸入:n”);

      printf(“你想在多少個數(shù)中進(jìn)行折半查找,請輸入(1--20):”);

      scanf(“%d”,&n);} printf(“請你輸入一個整數(shù)a[1]:”);scanf(“%d”,&a[1]);i=2;while(i<=n){

      printf(“請你輸入一個整數(shù)a[%d]:”,i);

      scanf(“%d”,&a[i]);

      i++;} printf(“n輸出表列n”);for(i=1;i<=n;i++){ printf(“%6d”,a[i]);} printf(“n”);printf(“請你輸入要查找的數(shù):”);scanf(“%d”,&num);flag=1;top=n;bottom=1;mid=(top+bottom)/2;while(flag){ printf(“top=%d,bottom=%d,mid=%d,a[i]=%dn”,top,bottom,mid,mid,a[mid]);if((num>a[top])||(num

      loc=-1;

      flag=0;} else if(a[mid]==num){

      loc=mid;

      printf(“找到數(shù)

      %6d的位置%2dn”,num,loc);

      break;} else if(a[mid]>num){

      top=mid-1;

      mid=(top+bottom)/2;} else if(a[mid]

      bottom=mid+1;

      mid=(top+bottom)/2;} } if(loc==-1){ printf(“%d這個數(shù)在表列中沒有找到。n”,num);} } 運行結(jié)果如下:

      第二篇:中南大學(xué)網(wǎng)絡(luò)安全實驗報告

      學(xué)生姓名指導(dǎo)教師學(xué) 院專業(yè)班級學(xué) 號完成時間中南大學(xué)

      網(wǎng)絡(luò)安全 實驗報告

      代巍 張士庚 信息科學(xué)與工程學(xué)院 信安1201班 0909121615 年12月15日

      2014

      目錄

      實驗一 CA證書與SSL連接 實驗二 WIFI釣魚 實驗三 SQL注入攻擊

      實驗四 配置和管理主機(jī)防火墻

      實驗一 CA證書與SSL連接

      一.實驗?zāi)康?/p>

      通過申請、安裝數(shù)字證書,掌握使用SSL建立安全通信通道的方法。掌握在Windows Server 2003 下獨立根CA 的安裝和使用。使用WEB 方式申請證書和安裝證書。建立SSL 網(wǎng)站。

      分析SSL 網(wǎng)站的數(shù)據(jù)包特點。二.實驗原理

      SSL協(xié)議的工作原理、數(shù)字證書的原理

      在訪問Web 站點時,如果沒有較強(qiáng)的安全措施,用戶訪問的數(shù)據(jù)是可以使用網(wǎng)絡(luò)工具 捕獲并分析出來的。在Web 站點的身份驗證中,有一種基本身份驗證,要求用戶訪問輸入

      用戶名和密碼時,是以明文形式發(fā)送密碼的,蓄意破壞安全性的人可以使用協(xié)議分析程序破

      譯出用戶名和密碼。那我們該如果避免呢?可利用SSL 通信協(xié)議,在Web 服務(wù)器上啟用安

      全通道以實現(xiàn)高安全性。

      SSL 協(xié)議位于TCP/IP 協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。SSL 協(xié) 議可分為兩層: SSL 記錄協(xié)議(SSL Record Protocol):它建立在可靠的傳輸協(xié)議(如TCP)

      之上,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能的支持。SSL 握手協(xié)議(SSL Handshake Protocol):它建立在SSL 記錄協(xié)議之上,用于在實際的數(shù)據(jù)傳輸開始前,通訊雙

      方進(jìn)行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰等。每一個Windows Server 2003 證書頒發(fā)

      機(jī)構(gòu)都有可供用戶和管理員使用的網(wǎng)頁。三.實驗環(huán)境

      虛擬機(jī):Windows Server 2003,Windows XP,Wireshark 抓包軟件。四.實驗過程

      任務(wù)一:windows server 2003 環(huán)境下獨立根CA 的安裝及使用

      1、windows server 2003 環(huán)境下獨立根CA 的安裝及使用,啟動Windows Server 2003 和Windows XP,配臵其IP,使其在同一局域網(wǎng)網(wǎng)段。在Windows Server 2003 中,選擇【開始】|【控制面板】|【添加和刪除程序】,在彈出窗口中選擇【添加和刪除windows 組件】,在【組件】列表框中選擇【證書服務(wù)】,再單擊【下一步】按鈕,如下圖所示。

      2、在彈出的窗口中選擇【獨立根CA】單選按鈕,單擊【下一步】按鈕,在彈出窗口中按要求依次填入CA 所要求的信息,單擊【下一步】按鈕,如下圖所示。

      3、繼續(xù)選擇【證書數(shù)據(jù)庫】、【數(shù)據(jù)庫日志】和配臵信息的安裝、存放路徑,如下圖所示,單擊【下一步】按鈕。安裝的時候,可能會彈出如下窗口,為了實驗方便,已經(jīng)把I386 文件夾復(fù)制到C:下,選擇【瀏覽】,選擇文件夾“C:I386”,點【確定】,完成安裝。

      4、選擇【開始】|【程序】|【管理工具】,可以找到【證書頒發(fā)機(jī)構(gòu)】,說明CA 的安裝已經(jīng)完成,如下圖所示。

      5、從同一局域網(wǎng)中的另外一臺XP 開啟IE 瀏覽器,輸入http://windows2003 的IP/certsrv/,選中【申請一個證書】,如下圖所示,在彈出的頁面中選擇【web 瀏覽器證書】。

      6、在彈出窗口中填寫用戶的身份信息,完成后進(jìn)行【提交】。此種情況下,IE 瀏覽器采用

      默認(rèn)的加密算法生成公鑰對,私鑰保存在本地計算機(jī)中,公鑰和用戶身份信息按照標(biāo)準(zhǔn)的格式發(fā)給CA 服務(wù)器,如圖所示,單擊【是】,進(jìn)入下一步。CA 服務(wù)器響應(yīng)后,彈出證書申請成功頁面,如下圖所示。

      7、在根CA 所在的計算機(jī)上,選擇【開始】|【程序】|【管理工具】|【證書頒發(fā)機(jī)構(gòu)】,上面申請的證書便會出現(xiàn)在窗口右邊,選擇證書單擊右鍵,選擇【所有任務(wù)】|【頒發(fā)】,進(jìn)行證書頒發(fā),如下圖所示。證書頒發(fā)后將從【掛起的申請】文件夾轉(zhuǎn)入【頒發(fā)的證書】文件夾中,表示證書頒發(fā)完成。

      8、在申請證書的計算機(jī)上打開IE,輸入http://windows2003 的IP/certsrv/,進(jìn)入證書申請頁面,選擇【查看掛起的證書申請狀態(tài)】,彈出的頁面中選擇一個已經(jīng)提交的證書申請,如下圖所示。選擇安裝此證書。

      9、現(xiàn)在驗證此CA 系統(tǒng)頒發(fā)的新證書是否可信,為此需要安裝CA 系統(tǒng)的根證書,進(jìn)入證書申請主頁面,選擇當(dāng)前的CA 證書進(jìn)行下載,并保存到合適路徑,如下圖所示。

      10、下載完畢之后,在證書的保存目錄中查看證書信息,單擊【安裝證書】按鈕,進(jìn)入證書導(dǎo)入向?qū)?,按照默認(rèn)的配臵完成證書的導(dǎo)入,導(dǎo)入成功后,單擊【確定】按鈕,之后完成。

      任務(wù)二:基于Web的SSL連接設(shè)臵

      1、在XP 中,左下角【開始】,打開【W(wǎng)ireshark】,并點擊開始抓包的按鈕。打開IE 瀏覽器,輸入網(wǎng)址http://windows2003 的IP/?id=1(比如:http://192.168.1.130/?id=1),然后保存Wireshark的抓包結(jié)果1。

      2、選擇【開始】|【程序】|【管理工具】|【IIS(Internet 信息服務(wù))管理器】,在彈出窗口右鍵單擊【默認(rèn)網(wǎng)站】,彈出的快捷菜單中選擇【屬性】選項。

      3、在彈出窗口內(nèi)選擇【目錄安全性】標(biāo)簽,單擊【安全通信】中的【服務(wù)器證書】按鈕,如下圖所示。

      4、彈出【IIS 證書向?qū)А看翱?,選中【新建證書】復(fù)選項,一直單擊【下一步】按鈕,輸入自定義的名稱,如下圖所示。填寫相應(yīng)的信息后,單擊【下一步】按鈕。

      5、彈出【請求文件摘要】窗口,確認(rèn)后單擊【下一步】按鈕,接著單擊【完成】按鈕,完成服務(wù)器端證書配臵,如下圖所示

      6、打開IE 瀏覽器(windows2003 中的),進(jìn)入證書申請主界面,如下圖所示。

      7、在出現(xiàn)的網(wǎng)頁中選擇【高級證書申請】,如圖所示,在出現(xiàn)的網(wǎng)頁中單擊第二個選項【base64編碼】。打開剛才IIS 證書向?qū)傻恼埱笪募?,(默認(rèn)路徑C:certreq.txt),復(fù)制并粘貼文件內(nèi)容到第一個文本框,如下圖所示,單擊【提交】按鈕,轉(zhuǎn)到完成提交后的頁面。

      8、回到首頁,選擇【查看掛起的證書申請狀態(tài)】,彈出的頁面中選擇一個已經(jīng)提交的證書申請,如下圖所示。選擇【Base 64 編碼】,點擊【下載證書】,【保存】certnew.cer 文件到桌面。

      9、選擇【開始】|【程序】|【管理工具】|【IIS(Internet 信息服務(wù))管理器】,在彈出窗口右鍵單擊【默認(rèn)網(wǎng)站】,彈出的快捷菜單中選擇【屬性】選項,在彈出窗口內(nèi)選擇【目錄安全性】標(biāo)簽,選擇【服務(wù)器證書】,選擇【下一步】,【處理掛起的請求并安裝證書】選擇【下一步】,【瀏覽】選擇剛才保存的certnew.cer 文件,如下圖所示?!鞠乱徊健俊鞠乱徊健俊就瓿伞俊?/p>

      10、還是在【目錄安全性】下,選擇【安全通信】下的【編輯】,在下如圖所示的彈出窗口中選中【要求安全通道(SSL)】復(fù)選項,并在【客戶端證書】欄中選中【接受客戶端證書】復(fù)選項,再單擊【確定】按鈕。返回【目錄安全性】面板,單擊【應(yīng)用】按鈕及【確定】按鈕,完成配臵。

      11、在XP 系統(tǒng)打開瀏覽器,輸入服務(wù)器IP 地址,進(jìn)入證書申請主頁面,此時會顯示錯誤信息頁面,要求采用https 的方式連接服務(wù)器,如圖所示。

      12、把http 改成https 繼續(xù)訪問,此時瀏覽器提示你要安裝證書,安裝完證書后,就可以正常使用了。、再次打開Wireshark,并點擊開始抓包的按鈕。打開IE 瀏覽器,輸入網(wǎng)址https://windows2003 的IP/?id=1(比如:https://192.168.1.130/?id=1),然后保存Wireshark 的抓包結(jié)果2。

      14、分析比較抓包結(jié)果1 和抓包結(jié)果2 中,對IP/?id=1 請求處理的差異。

      五、實驗感想

      至此,我完成了整個數(shù)字證書的安裝和使用實驗。通過本次實驗我學(xué)會了SSL協(xié)議的工作原理,同時了解到了CA證書的頒發(fā)機(jī)制。

      任何一個安全性系統(tǒng)整體性設(shè)計,都離不開數(shù)字證書的加密,可以想象加密機(jī)制對信息安全的重要性。

      需要說明的是,盡管SSL能提供實際不可破譯的加密功能,但是SSL安全機(jī)制的實現(xiàn)會大大增加系統(tǒng)的開銷,增加了服務(wù)器CPU的額外負(fù)擔(dān),使得SSL加密傳輸?shù)乃俣却蟠蟮陀诜羌用軅鬏數(shù)乃俣?。因此,為了防止整個Web網(wǎng)站的性能下降,可以考慮只把SSL安全機(jī)制用來處理高度機(jī)密的信息,例如提交包含信用卡信息的表格。

      實驗二 WIFI釣魚

      一.實驗?zāi)康?/p>

      1、通過實際測試,模擬入侵者利用wifi抓包來竊取用戶數(shù)據(jù)的過程。掌握整個過程中的原理,數(shù)據(jù)分析等。

      2、掌握抓包軟件的使用。二.實驗原理

      在一個可控的網(wǎng)絡(luò)環(huán)境里,劫持?jǐn)?shù)據(jù)有很多方法。比較有名的網(wǎng)絡(luò)層抓包工具有wireshark,tcpdump,都是很好的網(wǎng)絡(luò)協(xié)議分析工具。我們現(xiàn)在手機(jī)上的大多數(shù)APP應(yīng)用層都是使用的HTTP協(xié)議,因此我們很多的在web安全測試?yán)锩嬗玫降姆治龉ぞ呷鏵iddler,burp,httpanalyzer,Charles等也都是可以用來分析或者劫持APP的通信流。

      用戶手機(jī)里的app默認(rèn)會進(jìn)行很多敏感的請求,手機(jī)會自動去登陸和獲取最新的信號;如果手機(jī)默認(rèn)會鏈接周圍已經(jīng)被保存sid的wifi;通過內(nèi)臵最常見的sid和信息,入侵者可以使得周圍的人會自動鏈接上入侵者假設(shè)好的wifi,通過抓取相應(yīng)的數(shù)據(jù)取得里面的敏感信息,理論上是可以劫持用戶的相關(guān)密碼信息的。三.實驗環(huán)境

      帶有無線網(wǎng)卡的筆記本電腦,Wireshark 抓包軟件,智能手機(jī)。四.實驗過程 步驟一共享WIFI 工具:電腦、WIN7 系統(tǒng)、無線網(wǎng)卡 步驟

      1.開始菜單-->命令提示符(cmd)-->右鍵,以管理員身份運行

      2.運行以下命令啟用虛擬網(wǎng)卡>netsh wlan set hostednetwork mode=allow ssid=(這里寫無線網(wǎng)名字)key=(這里是密碼)

      3.網(wǎng)絡(luò)共享中心-->更改高級適配器設(shè)臵-->右鍵已連接到Internet 的網(wǎng)絡(luò)連接-->屬性-->切換

      到“共享”選項卡,選中其中的復(fù)選框,并選擇允許其共享Internet 的網(wǎng)絡(luò)連接,這里即我們的虛擬WIFI 網(wǎng)卡

      4.開啟無線網(wǎng)絡(luò),繼續(xù)在命令提示符中運行以下命令:>netsh wlan start hostednetwork即可開啟我們之前設(shè)臵好的無線網(wǎng)絡(luò)(相當(dāng)于打開路由器的無線功能)

      步驟二WIFI 釣魚工具:其他筆記本或手機(jī)、Wareshark 步驟

      1.搜索到剛剛設(shè)臵的WIFI:dave,連接上(密碼為剛剛設(shè)臵的key:12345678)2.在筆記本上打開wareshark,選擇capture-->interfaces

      3.選擇Packets 最多的項,點擊start 按鈕

      4.在手機(jī)或筆記本上打開中南大學(xué)郵箱網(wǎng)站:http://mail.csu.edu.cn/,在主機(jī)上用wareshark 捕捉http 的包(這里大家可以自由實驗,能監(jiān)控到連接到該WIFI 的機(jī)器的所有包的情況)

      5.在手機(jī)或筆記本上輸入用戶名和密碼,點擊登錄

      6.在主機(jī)上用wareshark 捕捉到剛剛post 提交的http 包,右鍵選擇Follow tcp stream

      7.可以看到剛剛提交的用戶名和密碼,且是未經(jīng)過加密的

      五、實驗感想

      通過這次實驗,我實際地模擬了一次入侵者通過假設(shè)釣魚WIFI網(wǎng)絡(luò),來竊取連接此網(wǎng)絡(luò)的用戶的密碼信息過程。整個過程中我成功地完成了對各種用戶數(shù)據(jù)抓包,并分析出用戶密碼。

      這讓我對wifi網(wǎng)絡(luò)產(chǎn)生了新的看法,我意識到了鏈接wifi網(wǎng)絡(luò)過程當(dāng)中存在很多安全隱患,如果被圖謀不軌的人利用到,一旦泄露商業(yè)機(jī)密等重要信息,勢必會產(chǎn)生重大的經(jīng)濟(jì)損失。

      隨著人們的生活越來越離不開網(wǎng)絡(luò),也越來越離不開移動手機(jī),一般的公共廠商都已經(jīng)將wifi作為基礎(chǔ)服務(wù)進(jìn)行提供,譬如在星巴克、麥當(dāng)勞等公共場所邊點杯熱飲邊“蹭網(wǎng)”,已經(jīng)是一個基本的習(xí)慣了,甚至一些大型的電信提供商已經(jīng)嘗試將wifi作為一個基礎(chǔ)的接入。如今公共的wifi很多,尤其是免費的,手機(jī)上還有幫助尋找免費wifi的各類app。很多人為了省流量,看到免費的wifi,總會去連接一下嘗試網(wǎng)上沖浪。不過,在這些免費的wifi以及大家使用wifi的習(xí)慣,加上手機(jī)及app的默認(rèn)行為,就可以導(dǎo)致一些嚴(yán)重安全問題。

      實驗三 SQL注入攻擊

      一.實驗?zāi)康?/p>

      是了解sql注入攻擊的原理,掌握網(wǎng)站的工作機(jī)制,認(rèn)識到SQL注入攻擊的防范措施,加強(qiáng)對Web攻擊的防范。

      二.實驗原理

      SQL注入攻擊指的是通過構(gòu)建特殊的輸入作為參數(shù)傳入Web應(yīng)用程序,而這些輸入大都是SQL語法里的一些組合,通過執(zhí)行SQL語句進(jìn)而執(zhí)行攻擊者所要的操作,其主要原因是程序沒有細(xì)致地過濾用戶輸入的數(shù)據(jù),致使非法數(shù)據(jù)侵入系統(tǒng)。

      根據(jù)相關(guān)技術(shù)原理,SQL注入可以分為平臺層注入和代碼層注入。前者由不安全的數(shù)據(jù)庫配臵或數(shù)據(jù)庫平臺的漏洞所致;后者主要是由于程序員對輸入未進(jìn)行細(xì)致地過濾,從而執(zhí)行了非法的數(shù)據(jù)查詢。

      三.實驗環(huán)境

      虛擬機(jī)WindowsXP系統(tǒng)、Windows2003系統(tǒng)。dvwa(Dam Vulnerable Web Application)工具,sqlmap SQL注入工具、四.實驗過程

      【實驗一:dvwa手動sql注入】

      1、連接好虛擬機(jī)拓?fù)鋱D,配臵WindowsXP Client和Windows XP Server的IP使其在同一個局域網(wǎng)網(wǎng)段。

      2、打開Server端的xampp,啟動apache和mysql。打開Client的瀏覽器,訪問Server的IP/dvwa,如“192.168.1.32/dvwa”,登陸賬戶為admin,密碼為password

      3、選擇SQLInjection,點擊右下角的ViewSource,查看PHP源代碼。

      4、正常測試,輸入“1”,得到正常結(jié)果,如下所示。

      5、當(dāng)將輸入變?yōu)椤?”時,頁面提示錯“YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'''''atline1”,結(jié)果如圖??吹竭@個結(jié)果,可以知道,這個表單存在著注入漏洞。

      6、嘗試輸入:“1’or 1=1–”注意“--”后面有空格!此時成功進(jìn)行sql注入。

      7、測試查詢信息列數(shù)。利用語句order by num。這里輸入“ 1'order by 1--” 結(jié)果頁面正常顯示,注意--后面有空格。繼續(xù)測試,“ 1'order by 2--”,“ 1'order by 3--”,當(dāng)輸入3是,頁面報錯。頁面錯誤信息如下,Unknown column '3' in 'order clause',由此查詢結(jié)果值為2列。

      8、嘗試注入“1' and 1=2 union select 1,2--”,從而得出First name處顯示結(jié)果為查詢結(jié)果第一列的值,surname處顯示結(jié)果為查詢結(jié)果第二列的值,利用內(nèi)臵函數(shù)user(),及database(),version()注入得出連接數(shù)據(jù)庫用戶以及數(shù)據(jù)庫名稱:“1' and 1=2 union select user(),database()--”。

      9、選擇DVWA Security,將安全級別分別設(shè)臵為中、高。再運行上面的實驗sql語句,結(jié)合右下角的ViewSource,分析三種等級的代碼和sql注入效果有何區(qū)別。在安全級別分別設(shè)臵為低時,結(jié)合PHP源代碼,考慮不采用“--”的情形下,完成sql注入,寫出sql注入語句。

      【實驗二:sqlmap測試dvwa】

      1、打開Server端的xampp,啟動apache和mysql。打開Client的瀏覽器,訪問Server的IP/dvwa,如“192.168.1.32/dvwa”,登陸賬戶為admin,密碼為password。選擇DVWA Security,將安全級別分別設(shè)臵為低。

      2、選擇XSS reflected,輸入“alert(document.cookie)”,獲取登陸系統(tǒng)后的cookie值,截圖保存cookie值。

      3、使用sqlmap查找注入點,打開Client端的控制臺窗口,轉(zhuǎn)到目錄“C:Python27sqlmap”,輸入以下命令,注意!“192.168.1.32”表示Server的IP,“security=low;PHPSESSID=tvitu9mog097jl4ctfsqhbs9o6”表示上一步所獲得的cookie值,請同學(xué)們按照實際環(huán)境填寫相應(yīng)的值!“sqlmap.py-u http://192.168.1.32/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit--cookie=“security=low;PHPSESSID=tvitu9mog097jl4ctfsqhbs9o6””。

      依據(jù)以下信息,得到可能的注入點是id,數(shù)據(jù)庫是mysql。

      [INFO] heuristic(basic)test shows that GET parameter 'id' might be injectable(possible DBMS: 'MySQL')

      [INFO] GET parameter 'id' is 'MySQL UNION query(NULL)-1 to 20 columns' injectable

      4、輸入“sqlmap.py-u “http://192.168.1.32/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit”--cookie=“security=low;PHPSESSID=tvitu9mog097jl4ctfsqhbs9o6”--current-db”得到當(dāng)前數(shù)據(jù)庫名。

      current database: 'dvwa'

      5、輸入“sqlmap.py-u “http://192.168.1.32/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit”--cookie=“security=low;PHPSESSID=tvitu9mog097jl4ctfsqhbs9o6”--current-db--tables-Ddvwa”得到數(shù)據(jù)庫所有表。

      6、輸入“sqlmap.py-u “http://192.168.1.32/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit”--cookie=“security=low;PHPSESSID=tvitu9mog097jl4ctfsqhbs9o6”-T users--columns”得到user表的所有列。

      7、輸入“sqlmap.py-u “http://192.168.1.32/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit”--cookie=“security=low;PHPSESSID=tvitu9mog097jl4ctfsqhbs9o6”-T users--dump”得到user表的所有列,在sqlmap詢問時候破解密碼時,選擇是,sqlmap會使用自己的字典來破解密碼,得到5個用戶的密碼。此時就完成了利用sqlmap進(jìn)行“拖庫”的基本步驟。五.實驗感想

      通過實驗,我明白了帶有參數(shù)的動態(tài)網(wǎng)頁,很多都是沒有進(jìn)行過濾的。如果能夠被SQL注入工具,就存在安全隱患,有可能就因為這個漏洞,入侵者就可以得到登錄權(quán)限并控制整個服務(wù)器。

      從實驗可以看出,只要是帶有參數(shù)的動態(tài)網(wǎng)頁,且此網(wǎng)頁訪問了數(shù)據(jù)庫,就有可能存在SQL注入攻擊,因此SQL注入攻擊潛在的發(fā)生概率相對于其他Web攻擊要高很多,危害面也更廣。其主要危害包括:獲取系統(tǒng)控制權(quán)、未經(jīng)授權(quán)狀況下操作數(shù)據(jù)庫的數(shù)據(jù)、惡意篡改網(wǎng)頁內(nèi)容、私自添加系統(tǒng)帳號或數(shù)據(jù)庫使用者帳號等。

      目前基于數(shù)據(jù)庫的網(wǎng)絡(luò)應(yīng)用越來越多。與此同時,用于搜索SQL注入點的軟件在網(wǎng)絡(luò)上隨處可見,攻擊者只需要具備少量的專業(yè)知識就可以利用這些軟件尋找目標(biāo)進(jìn)行攻擊。攻擊目標(biāo)和攻擊者的增加使得SQL注入攻擊在近幾年出現(xiàn)擴(kuò)大的趨勢

      為了防止SQL注入帶來的危害,在網(wǎng)站開發(fā)的過程中,需要對需要輸入?yún)?shù)的模塊進(jìn)行過濾,并加入相關(guān)權(quán)限認(rèn)證模塊。

      實驗四 配置和管理主機(jī)防火墻

      一.實驗?zāi)康?/p>

      1.學(xué)習(xí)配臵和管理主機(jī)防火墻,介紹如何配臵linux 防火墻。2.掌握linux 下基本的iptables 知識,學(xué)會配臵iptables

      二.實驗原理

      對于Internet 上的系統(tǒng),不管是什么情況,首先我們要明確一點:網(wǎng)絡(luò)是不安全的。因此,雖然創(chuàng)建一個防火墻并不能保證系統(tǒng)100%安全,但卻是絕對必要的。和社會上其它任何事物一樣,Internet 經(jīng)常會受到一些無聊的或者別有用心的人的干擾,防火墻的目的就是將這類人擋在你的網(wǎng)絡(luò)之外,同時使你仍然可以完成自己的工作。因為不同的應(yīng)用環(huán)境對安全的要求不一樣。用一句比較恰當(dāng)而且簡單的話來回答這個問題:用戶了解自己的Linux 系統(tǒng)和設(shè)臵,并且可以很好地保護(hù)好自己的數(shù)據(jù)和機(jī)密文件的安全,這對于該計算機(jī)用戶來說就可以稱之為他的計算機(jī)有足夠的安全性。防火墻是一個或一組系統(tǒng),它在網(wǎng)絡(luò)之間執(zhí)行訪問控制策略。實現(xiàn)防火墻的實際方式各不相同,但是在原則上,防火墻可以被認(rèn)為是這樣一對機(jī)制:一種機(jī)制是攔阻傳輸流通行,另一種機(jī)制是允許傳輸流通過。一些防火墻偏重攔阻傳輸流的通行,而另一些防火墻則偏重允許傳輸流通過。了解有關(guān)防火墻的最重要的概念可能就是它實現(xiàn)了一種訪問控制策略。

      一般來說,防火墻在配臵上是防止來自“外部”世界未經(jīng)授權(quán)的交互式登錄的。這大大有助于防止破壞者登錄到你網(wǎng)絡(luò)中的計算機(jī)上。一些設(shè)計更為精巧的防火墻可以防止來自外部的傳輸流進(jìn)入內(nèi)部,但又允許內(nèi)部的用戶可以自由地與外部通信。如果你切斷防火墻的話,它可以保護(hù)你免受網(wǎng)絡(luò)上任何類型的攻擊。防火墻的另一個非常重要的特性是可以提供一個單獨的“攔阻點”,在“攔阻點”上設(shè)臵安全和審計檢查。與計算機(jī)系統(tǒng)正受到某些人利用調(diào)制解調(diào)器撥入攻擊的情況不同,防火墻可以發(fā)揮一種有效的“電話監(jiān)聽”和跟蹤工具的作用。防火墻提供了一種重要的記錄和審計功能;它們經(jīng)??梢韵蚬芾韱T提供一些情況概要,提供有關(guān)通過防火墻的傳輸流的類型和數(shù)量,以及有多少次試圖闖入防火墻的企圖等信息。

      三.實驗環(huán)境

      虛擬機(jī):linux,windowsXP;linux 主機(jī)用戶名:root;密碼:root 四.實驗過程 1.查看規(guī)則表

      # iptables-L INPUT--line-numbers //查看filter表中INPUT鏈中的所有規(guī)則,同時顯示各條規(guī)則的順序號

      2.刪除、清空規(guī)則

      # iptables-F //不指定表名時,默認(rèn)情況filter表

      3.設(shè)臵規(guī)則鏈默認(rèn)策略

      # iptables-t filter-P FORWARD DROP //將filter表中FORWARD規(guī)則的默認(rèn)策略設(shè)為DROP # iptables-P OUTPUT ACCEPT //將filter表中OUTPUT規(guī)則的默認(rèn)策略設(shè)為ACCEPT 4.通用(general)條件匹配(直接使用,而不依賴于其他的條件匹配及其擴(kuò)展)協(xié)議匹配(允許使用的協(xié)議名包含在/etc/protocols文件中)# iptables-AINPUT-p icmp–j REJECT //拒絕進(jìn)入防火墻的所有icmp數(shù)據(jù)包

      地址匹配

      拒絕轉(zhuǎn)發(fā)來自192.168.1.11主機(jī)的數(shù)據(jù),允許轉(zhuǎn)發(fā)來自192.168.0./24網(wǎng)段的數(shù)據(jù)

      # iptables-A FORWARD-s 192.168.1.11-j REJECT

      5.隱含(implicit)條件匹配(需要指定的協(xié)議匹配為前提,其對應(yīng)的功能由iptables自動(隱含)的裝載入內(nèi)核),如果無匹配條件,默認(rèn)為REJECT。端口匹配

      僅允許系統(tǒng)管理員從202.13.0.0/16網(wǎng)段使用SSH方式遠(yuǎn)程登錄防火墻主機(jī) # iptables-A INPUT-p tcp--dport 22-s 202.13.0.0/16-j ACCEPT # iptables-A INPUT-p tcp--dport 22-j DROP

      6.禁止Windows主機(jī)ping防火墻linux主機(jī),但是允許從防火墻上ping其他主機(jī)(允許接受ICMP回應(yīng)數(shù)據(jù))配臵linux防火墻主機(jī)ip地址,如下圖所示:

      7.配臵windows 主機(jī)ip 地址,如下圖所示:

      8.配臵linux 主機(jī)防火墻規(guī)則,如下圖所示:

      9.在此在windows 主機(jī)和linux 主機(jī)上進(jìn)行相互ping 測試,測試結(jié)果如下圖所示:

      五.實驗感想

      通過本次實驗,掌握了防火墻保護(hù)PC機(jī)避免被攻擊的方法;在實驗中,要先設(shè)臵規(guī)則,這樣PC1和PC2之間就可以相互通信,方便做模擬實驗;防火墻在抗攻擊過程中起到了很好的作用,保護(hù)主機(jī)免受外來攻擊。

      鍛煉了解決問題的能力。比如兩個主機(jī)之間不能連通,問題可能有:雙絞線本身有問題導(dǎo)致不能連通,電腦網(wǎng)卡未打開導(dǎo)致不連通等等。連通與否可以通過用Ping命令檢查網(wǎng)絡(luò)連接狀況,其中在登錄和設(shè)臵防火墻的時候也遇到很多問題,但是總的來說是完成了相關(guān)的實驗,并利用基本的網(wǎng)絡(luò)知識,鍛煉了實踐動手能力。通過具體的操作,基本掌握了防火墻抗攻擊的配臵方式與方法,更加深入的了解防火墻的重要作用。

      了解了防火墻的基本操作及原理,為以后打下基礎(chǔ),雖然各個廠商,各種產(chǎn)品的具體操作不一樣,但是基本原理是相通的,通曉原理便可舉一反三。同時培養(yǎng)了冷靜分析解決問題的能力。

      第三篇:中南大學(xué) 網(wǎng)絡(luò)安全實驗報告

      CENTRAL SOUTH UNIVERSITY

      網(wǎng) 絡(luò) 安 全 實 驗 報 告

      學(xué)生姓名

      專業(yè)班級

      學(xué) 號

      學(xué) 院 信息科學(xué)與工程學(xué)院 指導(dǎo)教師 劉嬪

      實驗時間 2014年12月 實驗一 CA證書與SSL連接

      應(yīng)用場景

      在訪問Web 站點時,如果沒有較強(qiáng)的安全措施,用戶訪問的數(shù)據(jù)是可以使用網(wǎng)絡(luò)工具 捕獲并分析出來的。在Web 站點的身份驗證中,有一種基本身份驗證,要求用戶訪問輸入 用戶名和密碼時,是以明文形式發(fā)送密碼的,蓄意破壞安全性的人可以使用協(xié)議分析程序破 譯出用戶名和密碼。那我們該如果避免呢?可利用SSL 通信協(xié)議,在Web 服務(wù)器上啟用安 全通道以實現(xiàn)高安全性。

      SSL 協(xié)議位于TCP/IP 協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。SSL 協(xié) 議可分為兩層: SSL 記錄協(xié)議(SSL Record Protocol):它建立在可靠的傳輸協(xié)議(如TCP)之上,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能的支持。SSL 握手協(xié)議(SSL Handshake Protocol):它建立在SSL 記錄協(xié)議之上,用于在實際的數(shù)據(jù)傳輸開始前,通訊雙 方進(jìn)行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰等。每一個Windows Server 2003 證書頒發(fā) 機(jī)構(gòu)都有可供用戶和管理員使用的網(wǎng)頁。

      實驗?zāi)繕?biāo)

      ??掌握在Windows Server 2003 下獨立根CA 的安裝和使用。??使用WEB 方式申請證書和安裝證書。??建立SSL 網(wǎng)站。

      ??分析SSL 網(wǎng)站的數(shù)據(jù)包特點。

      實驗拓?fù)?/p>

      VM Client

      VM Server

      實驗環(huán)境

      虛擬機(jī):Windows Server 2003,Windows XP,Wireshark 抓包軟件。

      實驗過程指導(dǎo)

      任務(wù)一:windows server 2003 環(huán)境下獨立根CA 的安裝及使用

      1、啟動Windows Server 2003 和Windows XP,配置其IP,使其在同一局域網(wǎng)網(wǎng)段。

      2、在Windows Server 2003 中,選擇【開始】|【控制面板】|【添加和刪除程序】,在彈出窗

      口中選擇【添加和刪除windows 組件】,在【組件】列表框中選擇【證書服務(wù)】,再單擊【下 一步】按鈕,如下圖所示。

      3、在彈出的窗口中選擇【獨立根CA】單選按鈕,單擊【下一步】按鈕,在彈出窗口中按 要求依次填入CA 所要求的信息,單擊【下一步】按鈕,如下圖所示。

      4、繼續(xù)選擇【證書數(shù)據(jù)庫】、【數(shù)據(jù)庫日志】和配置信息的安裝、存放路徑,如下圖所示。

      單擊【下一步】按鈕。安裝的時候,可能會彈出如下窗口,為了實驗方便,已經(jīng)把I386 文 件夾復(fù)制到C:下,選擇【瀏覽】,選擇文件夾“C:I386”,點【確定】,完成安裝。

      5、選擇【開始】|【程序】|【管理工具】,可以找到【證書頒發(fā)機(jī)構(gòu)】,說明CA 的安裝已經(jīng)

      完成,如下圖所示。

      6、從同一局域網(wǎng)中的另外一臺XP 開啟IE 瀏覽器,輸入http://windows2003 的IP/certsrv/, 選中【申請一個證書】,如下圖所示,在彈出的頁面中選擇【web 瀏覽器證書】。

      7、在彈出窗口中填寫用戶的身份信息,完成后進(jìn)行【提交】。此種情況下,IE 瀏覽器采用 默認(rèn)的加密算法生成公鑰對,私鑰保存在本地計算機(jī)中,公鑰和用戶身份信息按照標(biāo)準(zhǔn)的格式發(fā)給CA 服務(wù)器,如圖所示,單擊【是】,進(jìn)入下一步。CA 服務(wù)器響應(yīng)后,彈出證書申請 成功頁面,如下圖所示。

      8、在根CA 所在的計算機(jī)上,選擇【開始】|【程序】|【管理工具】|【證書頒發(fā)機(jī)構(gòu)】,上

      面申請的證書便會出現(xiàn)在窗口右邊,選擇證書單擊右鍵,選擇【所有任務(wù)】|【頒發(fā)】,進(jìn)行 證書頒發(fā),如下圖所示。證書頒發(fā)后將從【掛起的申請】文件夾轉(zhuǎn)入【頒發(fā)的證書】文件夾 中,表示證書頒發(fā)完成。

      9、在申請證書的計算機(jī)上打開IE,輸入http://windows2003 的IP/certsrv/,進(jìn)入證書申請頁

      面,選擇【查看掛起的證書申請狀態(tài)】,彈出的頁面中選擇一個已經(jīng)提交的證書申請,如下 圖所示。選擇安裝此證書。

      10、現(xiàn)在驗證此CA 系統(tǒng)頒發(fā)的新證書是否可信,為此需要安裝CA 系統(tǒng)的根證書,進(jìn)入證書申請主頁面,選擇當(dāng)前的CA 證書進(jìn)行下載,并保存到合適路徑,如下圖所示。

      11、下載完畢之后,在證書的保存目錄中查看證書信息,單擊【安裝證書】按鈕,進(jìn)入證書 導(dǎo)入向?qū)?,按照默認(rèn)的配置完成證書的導(dǎo)入,導(dǎo)入成功后,單擊【確定】按鈕,之后完成。

      任務(wù)二:基于Web 的SSL 連接設(shè)置

      1、在XP 中,左下角【開始】,打開【W(wǎng)ireshark】,并點擊開始抓包的按鈕。打開IE 瀏覽器,輸入網(wǎng)址http://windows2003 的IP/?id=1(比如:http://192.168.1.130/?id=1),然后保存Wireshark的抓包結(jié)果1。

      2、選擇【開始】|【程序】|【管理工具】|【IIS(Internet 信息服務(wù))管理器】,在彈出窗口

      右鍵單擊【默認(rèn)網(wǎng)站】,彈出的快捷菜單中選擇【屬性】選項,如下圖所示。

      3、在彈出窗口內(nèi)選擇【目錄安全性】標(biāo)簽,單擊【安全通信】中的【服務(wù)器證書】按鈕,如下圖所示。

      4、彈出【IIS 證書向?qū)А看翱?,選中【新建證書】復(fù)選項,一直單擊【下一步】按鈕,輸入自定義的名稱,如下圖所示。填寫相應(yīng)的信息后,單擊【下一步】按鈕。

      5、彈出【請求文件摘要】窗口,確認(rèn)后單擊【下一步】按鈕,接著單擊【完成】按鈕,完 成服務(wù)器端證書配置,如下圖所示。

      6、打開IE 瀏覽器(windows2003 中的),進(jìn)入證書申請主界面,如下圖所示。

      7、在出現(xiàn)的網(wǎng)頁中選擇【高級證書申請】,如圖所示,在出現(xiàn)的網(wǎng)頁中單擊第二個選項【base64 編碼】。打開剛才IIS 證書向?qū)傻恼埱笪募J(rèn)路徑C:certreq.txt),復(fù)制并粘貼文件

      內(nèi)容到第一個文本框,如下圖所示,單擊【提交】按鈕,轉(zhuǎn)到完成提交后的頁面。

      8、回到首頁,選擇【查看掛起的證書申請狀態(tài)】,彈出的頁面中選擇一個已經(jīng)提交的證書申 請,如下圖所示。選擇【Base 64 編碼】,點擊【下載證書】,【保存】certnew.cer 文件到桌面。

      9、選擇【開始】|【程序】|【管理工具】|【IIS(Internet 信息服務(wù))管理器】,在彈出窗口

      右鍵單擊【默認(rèn)網(wǎng)站】,彈出的快捷菜單中選擇【屬性】選項,在彈出窗口內(nèi)選擇【目錄安 全性】標(biāo)簽,選擇【服務(wù)器證書】,選擇【下一步】,【處理掛起的請求并安裝證書】選擇【下 一步】,【瀏覽】選擇剛才保存的certnew.cer 文件,如下圖所示?!鞠乱徊健俊鞠乱徊健俊就瓿伞俊?/p>

      10、還是在【目錄安全性】下,選擇【安全通信】下的【編輯】,在下如圖所示的彈出窗口 中選中【要求安全通道(SSL)】復(fù)選項,并在【客戶端證書】欄中選中【接受客戶端證書】 復(fù)選項,再單擊【確定】按鈕。返回【目錄安全性】面板,單擊【應(yīng)用】按鈕及【確定】按

      鈕,完成配置。

      11、在XP 系統(tǒng)打開瀏覽器,輸入服務(wù)器IP 地址,進(jìn)入證書申請主頁面,此時會顯示錯誤 信息頁面,要求采用https 的方式連接服務(wù)器,如圖所示。

      12、把http 改成https 繼續(xù)訪問,此時瀏覽器提示你要安裝證書,安裝完證書后,就可以正 常使用了。、再次打開Wireshark,并點擊開始抓包的按鈕。打開IE 瀏覽器,輸入網(wǎng)址

      https://windows2003 的IP/?id=1(比如:https://192.168.1.130/?id=1),然后保存Wireshark 的抓

      包結(jié)果2。

      14、分析比較抓包結(jié)果1 和抓包結(jié)果2 中,對IP/?id=1 請求處理的差異。

      實驗截圖

      1、寫出windows server 2003 下獨立根CA 的配置及應(yīng)用的過程,將重要的步驟截圖并保存。如上所示,重要的步驟截圖已置于相應(yīng)步驟下。

      2、寫出windows server 2003 下基于Web的SSL連接設(shè)置的過程,將重要的步驟截圖并保存。如上所示,重要的步驟截圖已置于相應(yīng)步驟下。

      實驗心得

      通過此次實驗,我學(xué)會了Wireshark抓包的基本使用方法,學(xué)到了很多課本上沒有的新知識,并對課本上的概念有了實際的更深的認(rèn)識。通過Wireshark所抓到的未使用SSL 連接和使用SSL 連接的信息的對比,我對HTTPS有了一定的了解,對計算機(jī)網(wǎng)絡(luò)通信中的數(shù)據(jù)傳輸安全有了大概的認(rèn)識。

      HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標(biāo)的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL。它是一個URI scheme(抽象標(biāo)識符體系),句法類同http:體系。用于安全的HTTP數(shù)據(jù)傳輸。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默 14 認(rèn)端口及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統(tǒng)的最初研發(fā)由網(wǎng)景公司(Netscape)進(jìn)行,并內(nèi)置于其瀏覽器Netscape Navigator中,提供了身份驗證與加密通訊方法?,F(xiàn)在它被廣泛用于萬維網(wǎng)上安全敏感的通訊,例如交易支付方面。它的主要作用可以分為兩種:一種是建立一個信息安全通道,來保證數(shù)據(jù)傳輸?shù)陌踩?;另一種就是確認(rèn)網(wǎng)站的真實性,凡是使用了 https 的網(wǎng)站,都可以通過點擊瀏覽器地址欄的鎖頭標(biāo)志來查看網(wǎng)站認(rèn)證之后的真實信息,也可以通過 CA 機(jī)構(gòu)頒發(fā)的安全簽章來查詢。

      Wireshark所抓到的未使用SSL 連接的http 信息,信息是明文傳輸,而使用SSL連接的https 則具有安全性的ssl加密傳輸協(xié)議,更加安全。

      實驗二 配置和管理主機(jī)防火墻

      應(yīng)用場景

      對于Internet 上的系統(tǒng),不管是什么情況,首先我們要明確一點:網(wǎng)絡(luò)是不安全的。因此,雖然創(chuàng)建一個防火墻并不能保證系統(tǒng)100%安全,但卻是絕對必要的。和社會上其它任何事物一樣,Internet 經(jīng)常會受到一些無聊的或者別有用心的人的干擾,防火墻的目的就是將這類人擋在你的網(wǎng)絡(luò)之外,同時使你仍然可以完成自己的工作。

      那么構(gòu)筑怎樣的Linux 防火墻系統(tǒng)才算是足夠安全呢?這是一個很難回答的問題,因為不同的應(yīng)用環(huán)境對安全的要求不一樣。用一句比較恰當(dāng)而且簡單的話來回答這個問題:用戶了解自己的Linux 系統(tǒng)和設(shè)置,并且可以很好地保護(hù)好自己的數(shù)據(jù)和機(jī)密文件的安全,這對于該計算機(jī)用戶來說就可以稱之為他的計算機(jī)有足夠的安全性。

      那么到底什么是防火墻呢?防火墻是一個或一組系統(tǒng),它在網(wǎng)絡(luò)之間執(zhí)行訪問控制策略。實現(xiàn)防火墻的實際方式各不相同,但是在原則上,防火墻可以被認(rèn)為是這樣一對機(jī)制:一種機(jī)制是攔阻傳輸流通行,另一種機(jī)制是允許傳輸流通過。一些防火墻偏重攔阻傳輸流的通行,而另一些防火墻則偏重允許傳輸流通過。了解有關(guān)防火墻的最重要的概念可能就是它實現(xiàn)了一種訪問控制策略。

      一般來說,防火墻在配置上是防止來自“外部”世界未經(jīng)授權(quán)的交互式登錄的。這大大有助于防止破壞者登錄到你網(wǎng)絡(luò)中的計算機(jī)上。一些設(shè)計更為精巧的防火墻可以防止來自外部的傳輸流進(jìn)入內(nèi)部,但又允許內(nèi)部的用戶可以自由地與外部通信。如果你切斷防火墻的話,它可以保護(hù)你免受網(wǎng)絡(luò)上任何類型的攻擊。防火墻的另一個非常重要的特性是可以提供一個單獨的“攔阻點”,在“攔阻點”上設(shè)置安全和審計檢查。與計算機(jī)系統(tǒng)正受到某些人利用調(diào)制解調(diào)器撥入攻擊的情況不同,防火墻可以發(fā)揮一種有效的“電話監(jiān)聽”和跟蹤工具的作用。防火墻提供了一種重要的記錄和審計功能;它們經(jīng)??梢韵蚬芾韱T提供一些情況概要,提供有關(guān)通過防火墻的傳輸流的類型和數(shù)量,以及有多少次試圖闖入防火墻的企圖等信息。

      因此本實驗將介紹如何配置linux 防火墻。

      VM Client

      VM Server

      實驗?zāi)繕?biāo)

      1.掌握linux 下基本的iptables 知識 2.學(xué)會配置iptables VM Windows VM Linux

      實驗環(huán)境

      虛擬機(jī):linux,windowsXP;linux 主機(jī)用戶名:root;密碼:root 16 實驗過程指導(dǎo)

      一.Iptables 的規(guī)則表、鏈結(jié)構(gòu)

      1.規(guī)則表(iptables管理4個不同的規(guī)則表,其功能由獨立的內(nèi)核模塊實現(xiàn))filter 表:包含三個鏈INPUT OUTPUT FORWARD nat表:PREROUTING POSTROTING OUTPUT mangle 表:PREROUTING POSTROUTING INPUT OUTPUT FORWARD raw 表:OUTPUT PREROUTING 2.規(guī)則鏈

      INPUT 鏈當(dāng)收到訪問防火墻本機(jī)的數(shù)據(jù)包(入站)時,應(yīng)用此鏈中的規(guī)則 OUTPUT鏈當(dāng)防火墻本機(jī)向外發(fā)送數(shù)據(jù)包(出站)時,應(yīng)用此鏈中的規(guī)則 FORWARD鏈?zhǔn)盏叫枰ㄟ^防火墻發(fā)送給其他地址的數(shù)據(jù)包,應(yīng)用此鏈 PREROUTING鏈做路由選擇之前,應(yīng)用此鏈

      POSTROUTING鏈對數(shù)據(jù)包做路由選擇之后,應(yīng)用此鏈中的規(guī)則

      二.數(shù)據(jù)包的匹配流程

      1.規(guī)則表之間的優(yōu)先級 raw mangle nat filter 2.規(guī)則鏈之間的優(yōu)先級

      入站數(shù)據(jù)流向:來自外界的數(shù)據(jù)包到達(dá)防火墻,首先PREROUTING規(guī)則鏈處理(是否被修改地址),之后會進(jìn)行路由選擇(判斷該數(shù)據(jù)包應(yīng)該發(fā)往何處),如果數(shù)據(jù)包的目標(biāo)地址是防火墻本機(jī),那么內(nèi)核將其傳遞給INPUT 鏈進(jìn)行處理,通過以后再交給上次的應(yīng)用程序進(jìn)行響應(yīng)。

      轉(zhuǎn)發(fā)數(shù)據(jù)流向:來自外界的數(shù)據(jù)包到達(dá)防火墻后,首先被PREROUTING 規(guī)則鏈處理,之后進(jìn)行路由選擇,如果數(shù)據(jù)包的目標(biāo)地址是其他外部地址,則內(nèi)核將其傳遞給FPRWARD 鏈進(jìn)行處理,然后再交給POSTROUTIING 規(guī)則鏈(是否修改數(shù)據(jù)包的地址等)進(jìn)行處理。

      出站數(shù)據(jù)流向:防火墻本身向外部地址發(fā)送數(shù)據(jù)包,首先被OUTPUT 規(guī)則鏈處理,之后進(jìn)行路由選擇,然后交給POSTROUTING 規(guī)則鏈(是否修改數(shù)據(jù)包的地址等)進(jìn)行處理。3.規(guī)則鏈內(nèi)部各防火墻規(guī)則之間的優(yōu)先順序

      依次按第1條規(guī)則、第2條規(guī)則、第3條規(guī)則??的順序進(jìn)行處理,找到一條能夠匹配的數(shù)據(jù)包規(guī)則,則不再繼續(xù)檢查后面的規(guī)則(使用LOG記錄日志的規(guī)則例外)。如果找不到匹配規(guī)則,就按照規(guī)則鏈的默認(rèn)策略進(jìn)行處理。

      三.管理和設(shè)置iptables規(guī)則

      Iptables 的基本語法格式選項名-A-D-I-R

      功能及特點

      在指定鏈的末尾添加(--append)一條新規(guī)則

      刪除(--delete)指定鏈中的某一條規(guī)則,按規(guī)則序號或內(nèi)容確定要刪除的規(guī)則 在指定鏈中插入一條新規(guī)則,若未指定插入位置,則默認(rèn)在鏈的開頭插入 修改、替換指定鏈中的一條規(guī)則,按按 17-L-F-X-P-n-v-V-h--line-numbers-N

      1.查看規(guī)則表

      # iptables-L INPUT--line-numbers //查看filter表中INPUT鏈中的所有規(guī)則,同時顯示各條規(guī)則的順序號

      規(guī)則序號或內(nèi)容確定要替換的規(guī)則 列出指定鏈中所有的規(guī)則進(jìn)行查看,若未指定鏈名,則列出表中所有鏈的內(nèi)容 清空指定鏈中的所有規(guī)則,若未指定鏈名,則清空表中所有鏈的內(nèi)容 刪除表中用戶自定義的規(guī)則鏈 設(shè)置指定鏈的默認(rèn)策略(大p)

      使用數(shù)字形式顯示輸出結(jié)果,如顯示主機(jī)的IP地址而不是主機(jī)名

      查看規(guī)則列表時顯示詳細(xì)的信息 查看iptables命令工具的版本信息 查看命令幫助信息

      查看規(guī)則列表時,同時顯示規(guī)則在鏈中的順序號

      新建一條用戶自定義的規(guī)則鏈

      2.刪除、清空規(guī)則

      # iptables-F //不指定表名時,默認(rèn)情況filter表

      3.設(shè)置規(guī)則鏈的默認(rèn)策略

      # iptables-t filter-P FORWARD DROP //將filter表中FORWARD規(guī)則的默認(rèn)策略設(shè)為DROP # iptables-P OUTPUT ACCEPT //將filter表中OUTPUT規(guī)則的默認(rèn)策略設(shè)為ACCEPT 18

      四.條件匹配

      1.通用(general)條件匹配(直接使用,而不依賴于其他的條件匹配及其擴(kuò)展)協(xié)議匹配(允許使用的協(xié)議名包含在/etc/protocols文件中)

      # iptables-AINPUT-p icmp–j REJECT //拒絕進(jìn)入防火墻的所有icmp數(shù)據(jù)包

      地址匹配

      拒絕轉(zhuǎn)發(fā)來自192.168.1.11主機(jī)的數(shù)據(jù),允許轉(zhuǎn)發(fā)來自192.168.0./24網(wǎng)段的數(shù)據(jù) # iptables-A FORWARD-s 192.168.1.11-j REJECT

      2.隱含(implicit)條件匹配(需要指定的協(xié)議匹配為前提,其對應(yīng)的功能由iptables自動(隱含)的裝載入內(nèi)核),如果無匹配條件,默認(rèn)為REJECT。

      端口匹配

      僅允許系統(tǒng)管理員從202.13.0.0/16網(wǎng)段使用SSH方式遠(yuǎn)程登錄防火墻主機(jī) # iptables-A INPUT-p tcp--dport 22-s 202.13.0.0/16-j ACCEPT

      五.在進(jìn)行了上述規(guī)則講解與熟悉之后,接下來的步驟進(jìn)行防火墻規(guī)則配置與測試

      禁止Windows主機(jī)ping防火墻linux主機(jī),但是允許從防火墻上ping其他主機(jī)(允許接受ICMP回應(yīng)數(shù)據(jù))

      1.配置linux防火墻主機(jī)ip地址,如下圖所示:

      2.配置windows 主機(jī)ip地址,如下圖所示:

      3.配置linux 主機(jī)防火墻規(guī)則,如下圖所示:

      4.在此在windows 主機(jī)和linux 主機(jī)上進(jìn)行相互ping 測試,測試結(jié)果如下圖所示:

      windows主機(jī)無法ping通linux防火墻主機(jī),但是linux主機(jī)可以ping通windows主機(jī)。

      實驗截圖

      如上所示,重要的步驟截圖已置于相應(yīng)步驟下。

      實驗心得

      1)如何在linux 主機(jī)上配置防火墻規(guī)則以防止DDOS 高級?

      答:默認(rèn)的iptables規(guī)則是無法過濾DDOS攻擊數(shù)據(jù)的,我們需要添加過濾規(guī)則實現(xiàn)iptables擁有抗DDOS的能力:

      屏蔽 SYN_RECV 的連接

      -A FORWARD-p tcp-m tcp--tcp-flags FIN,SYN,RST,ACK SYN-m limit--limit 1/sec-j ACCEPT 限制IP碎片,每秒鐘只允許100個碎片,用來防止DoS攻擊-A FORWARD-f-m limit--limit 100/sec--limit-burst 100-j ACCEPT 限制ping包每秒一個,10個后重新開始

      -A FORWARD-p icmp-m limit--limit 1/sec--limit-burst 10-j ACCEPT 限制ICMP包回應(yīng)請求每秒一個

      -A FORWARD-p icmp-m icmp--icmp-type 8-m limit--limit 1/sec-j ACCEPT 此處自定義一個表

      -A FORWARD-j RH-Firewall-1-INPUT 完全接受 loopback interface 的封包-A RH-Firewall-1-INPUT-i lo-j ACCEPT 允許主機(jī)接受 ping-A RH-Firewall-1-INPUT-p icmp-m icmp--icmp-type any-j ACCEPT 允許連線出去后對方主機(jī)回應(yīng)進(jìn)來的封包

      22-A RH-Firewall-1-INPUT-m state--state RELATED,ESTABLISHED-j ACCEPT 允許防火墻開啟指定端口

      -A RH-Firewall-1-INPUT-p tcp-m state--state NEW-m tcp--dport port-j ACCEPT 限制SSH登陸

      只允許在***.***.***.***上使用ssh遠(yuǎn)程登錄,從其它計算機(jī)上禁止使用ssh iptables-A INPUT-s ***.***.***.***-p tcp--dport 22-j ACCEPT iptables-A INPUT-p tcp--dport 22-j DROP

      2)linux 主機(jī)防火墻處理數(shù)據(jù)包的順序是什么?

      答:(1)當(dāng)包到達(dá)端口時,對包報頭進(jìn)行語法分析。大多數(shù)包過濾設(shè)備只檢查IP、TCP、或UDP報頭中的字段。

      (2)若一條規(guī)則阻止包傳輸或接收,則此包便不被允許。

      (3)若一條規(guī)則允許包傳輸或接收,則此包便可以被繼續(xù)處理。(4)若包不滿足任何一條規(guī)則,則此包便被阻塞。

      實驗三WIFI 釣魚

      步驟一 共享WIFI 工具:電腦、WIN7 系統(tǒng)、無線網(wǎng)卡

      步驟

      1.開始菜單-->命令提示符(cmd)-->右鍵,以管理員身份運行 2.運行以下命令啟用虛擬網(wǎng)卡

      >netsh wlan set hostednetwork mode=allow ssid=(這里寫無線網(wǎng)名字)key=(這里是密碼)

      3.網(wǎng)絡(luò)共享中心-->更改高級適配器設(shè)置-->右鍵已連接到Internet 的網(wǎng)絡(luò)連接-->屬性-->切換 到“共享”選項卡,選中其中的復(fù)選框,并選擇允許其共享Internet 的網(wǎng)絡(luò)連接,這里即我 們的虛擬WIFI 網(wǎng)卡

      4.開啟無線網(wǎng)絡(luò),繼續(xù)在命令提示符中運行以下命令: >netsh wlan start hostednetwork 24 即可開啟我們之前設(shè)置好的無線網(wǎng)絡(luò)(相當(dāng)于打開路由器的無線功能)

      步驟二 WIFI 釣魚

      工具:其他筆記本或手機(jī)、Wareshark 步驟

      1.搜索到剛剛設(shè)置的WIFI,連接上(密碼為剛剛設(shè)置的key:12345679)

      2.在筆記本上打開wareshark,選擇capture-->interfaces 3.選擇Packets 最多的項,點擊start 按鈕

      4.在手機(jī)或筆記本上打開中南大學(xué)郵箱網(wǎng)站:http://mail.csu.edu.cn/,在主機(jī)上用wareshark 捕捉

      http 的包

      (這里大家可以自由實驗,能監(jiān)控到連接到該WIFI 的機(jī)器的所有包的情況)5.在手機(jī)或筆記本上輸入用戶名和密碼,點擊登錄

      6.在主機(jī)上用wareshark 捕捉到剛剛post 提交的http 包,右鍵選擇Follow tcp stream

      7.可以看到剛剛提交的用戶名和密碼,且是未經(jīng)過加密的

      實驗截圖

      如上所示,重要的步驟截圖已置于相應(yīng)步驟下。

      實驗心得

      本次實驗是在自己的筆記本上做的,實驗也比較簡單,所以做得比較快效果比較好。通過本次實驗,大致了解了WIFI釣魚的操作過程,同時,也讓自己有了警覺之心,要養(yǎng)成良好的WIFI使用習(xí)慣。手機(jī)會把使用過的WIFI熱點都記錄下來,如果WiFi開關(guān)處于打開狀態(tài),手機(jī)就會不斷向周邊進(jìn)行搜尋,一旦遇到同名的熱點就會自動進(jìn)行連接,存在被釣魚風(fēng)險。因此當(dāng)我們進(jìn)入公共區(qū)域后,盡量不要打開WIFI開關(guān),或者把WiFi調(diào)成鎖屏后不再自動連接,避免在自己不知道的情況下連接上惡意WIFI。

      實驗四 SQL注入攻擊

      【實驗?zāi)康摹?/p>

      SQL注入攻擊指的是通過構(gòu)建特殊的輸入作為參數(shù)傳入Web應(yīng)用程序,而這些輸入大都是SQL語法里的一些組合,通過執(zhí)行SQL語句進(jìn)而執(zhí)行攻擊者所要的操作,其主要原因是程序沒有細(xì)致地過濾用戶輸入的數(shù)據(jù),致使非法數(shù)據(jù)侵入系統(tǒng)。根據(jù)相關(guān)技術(shù)原理,SQL注入可以分為平臺層注入和代碼層注入。前者由不安全的數(shù)據(jù)庫配置或數(shù)據(jù)庫平臺的漏洞所致;后者主要是由于程序員對輸入未進(jìn)行細(xì)致地過濾,從而執(zhí)行了非法的數(shù)據(jù)查詢。

      本次實驗?zāi)康氖橇私鈙ql注入的常見手段,要到兩個工具:

      ①dvwa(Dam Vulnerable Web Application)是用PHP+Mysql編寫的一套用于常規(guī)WEB漏洞教學(xué)和檢測的WEB脆弱性測試程序。包含了SQL注入、XSS、盲注等常見的一些安全漏洞。

      ② sqlmap是一個自動化的SQL注入工具,其主要功能是掃描,發(fā)現(xiàn)并利用給定的URL的SQL注入漏洞。

      【實驗組網(wǎng)拓?fù)洹?/p>

      VM Client

      VM Server

      【實驗一:dvwa手動sql注入】

      1、連接好虛擬機(jī)拓?fù)鋱D,配置WindowsXP Client和Windows XP Server的IP使其在同一個局域網(wǎng)網(wǎng)段。

      2、打開Server端的xampp,啟動apache和mysql。打開Client的瀏覽器,訪問Server的IP/dvwa,如“192.168.1.32/dvwa”,登陸賬戶為admin,密碼為password。

      3、選擇SQLInjection,點擊右下角的ViewSource,查看PHP源代碼。

      4、正常測試,輸入“1”,得到正常結(jié)果,如下所示。

      5、當(dāng)將輸入變?yōu)椤?”時,頁面提示錯誤“YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'''''atline1”,結(jié)果如圖??吹竭@個結(jié)果,可以知道,這個表單存在著注入漏洞。

      6、嘗試輸入:“1’or 1=1–”注意“--”后面有空格!此時成功進(jìn)行sql注入。

      7、測試查詢信息列數(shù)。利用語句order by num。這里輸入“ 1'order by 1--” 結(jié)果頁面正常顯示,注意--后面有空格。繼續(xù)測試,“ 1'order by 2--”,“ 1'order by 3--”,當(dāng)輸入3是,頁面報錯。頁面錯誤信息如下,Unknown column '3' in 'order clause',由此查詢結(jié)果值為2列。

      8、嘗試注入“1' and 1=2 union select 1,2--”,從而得出First name處顯示結(jié)果為查詢結(jié)果第一列的值,surname處顯示結(jié)果為查詢結(jié)果第二列的值,利用內(nèi)置函數(shù)user(),及database(),version()注入得出連接數(shù)據(jù)庫用戶以及數(shù)據(jù)庫名稱:“1' and 1=2 union select user(),database()--”。

      9、選擇DVWA Security,將安全級別分別設(shè)置為中、高。再運行上面的實驗sql語句,結(jié)合右下角的ViewSource,分析三種等級的代碼和sql注入效果有何區(qū)別。在安全級別分別設(shè)置為低時,結(jié)合PHP源代碼,考慮不采用“--”的情形下,完成sql注入,寫出sql注入語句。

      【實驗二:sqlmap測試dvwa】

      1、打開Server端的xampp,啟動apache和mysql。打開Client的瀏覽器,訪問Server的IP/dvwa,如“169.254.180.158/dvwa”,登陸賬戶為admin,密碼為password。選擇DVWA Security,將安全級別分別設(shè)置為低。

      2、選擇XSS reflected,輸入“alert(document.cookie)”,獲取登陸系統(tǒng)后的cookie值,截圖保存cookie值。

      3、使用sqlmap查找注入點,打開Client端的控制臺窗口,轉(zhuǎn)到目錄“C:Python27sqlmap”,輸入以下命令,注意!“169.254.180.158”表示Server的IP,“security=low;PHPSESSID=mkoc8iuc07hfre7vvo0e5ghjv5”表示上一步所獲得的cookie值,請同學(xué)們按照實際環(huán)境 33 填寫相應(yīng)的值!“sqlmap.py-u “http://169.254.180.158/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit”--cookie=“security=low;PHPSESSID=mkoc8iuc07hfre7vvo0e5ghjv5””。

      依據(jù)以下信息,得到可能的注入點是id,數(shù)據(jù)庫是mysql。

      [INFO] heuristic(basic)test shows that GET parameter 'id' might be injectable(possible DBMS: 'MySQL')[INFO] GET parameter 'id' is 'MySQL UNION query(NULL)-1 to 20 columns' injectable

      4、輸入“sqlmap.py-u “http://169.254.180.158/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit”--cookie=“security=low;PHPSESSID=mkoc8iuc07hfre7vvo0e5ghjv5”--current-db”得到當(dāng)前數(shù)據(jù)庫名。

      current database: 'dvwa'

      5、輸入“sqlmap.py-u “http://169.254.180.158/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit”--cookie=“security=low;PHPSESSID=mkoc8iuc07hfre7vvo0e5ghjv5”--current-db--tables-Ddvwa”得到數(shù)據(jù)庫所有表。

      6、輸入“sqlmap.py-u “http://169.254.180.158/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit”--cookie=“security=low;PHPSESSID=mkoc8iuc07hfre7vvo0e5ghjv5”-T users--columns”得到user表的所有列。

      7、輸入“sqlmap.py-u “http://169.254.180.158/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit”--cookie=“security=low;PHPSESSID=mkoc8iuc07hfre7vvo0e5ghjv5”-T users--dump”得到user表的所有列,在sqlmap詢問時候破解密碼時,選擇是,sqlmap會使用自己的字典來破解密碼,得到5個用戶的密碼。此時就完成了利用sqlmap進(jìn)行“拖庫”的基本步驟。

      實驗截圖

      如上所示,重要的步驟截圖已置于相應(yīng)步驟下。

      實驗心得

      隨著B/S模式應(yīng)用開發(fā)的發(fā)展,使用這種模式編寫應(yīng)用程序的程序員也越來越多。但是由于程序員的水平及經(jīng)驗也參差不齊,相當(dāng)大一部分程序員在編寫代碼的時候,沒有對用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷,使應(yīng)用程序存在安全隱患。用戶可以提交一段數(shù)據(jù)庫查詢代碼,根據(jù)程序返回的結(jié)果,獲得某些他想得知的數(shù)據(jù),這就是所謂的SQL Injection,即SQL注入。

      此次的實驗讓我了解了SQL注入攻擊的原理和過程,讓我了解到了做這方面開發(fā)的時候需要注意的安全性問題,也意識到安全的重要性和數(shù)據(jù)庫的一些欠缺,提高了自己在這方面的安全意識。在實驗的過程中遇到了很多困難,配置上的,環(huán)境上的,還有一些需要注意的小問題。很高興順利完成了這次實驗,期待下次能使用更高級的工具進(jìn)行掃描和實施攻擊,當(dāng)然,以后的開發(fā)過程中也要特別注意這些脆弱點了。

      第四篇:數(shù)據(jù)結(jié)構(gòu)實驗報告

      注意:實驗結(jié)束后提交一份實驗報告電子文檔

      電子文檔命名為“學(xué)號+姓名”,如:E01214058宋思怡

      《數(shù)據(jù)結(jié)構(gòu)》實驗報告

      (一)學(xué)號:姓名:專業(yè)年級:

      實驗名稱:線性表

      實驗日期:2014年4月14日

      實驗?zāi)康模?/p>

      1、熟悉線性表的定義及其順序和鏈?zhǔn)酱鎯Y(jié)構(gòu);

      2、熟練掌握線性表在順序存儲結(jié)構(gòu)上實現(xiàn)基本操作的方法;

      3、熟練掌握在各種鏈表結(jié)構(gòu)中實現(xiàn)線性表基本操作的方法;

      4、掌握用 C/C++語言調(diào)試程序的基本方法。

      實驗內(nèi)容:

      一、編寫程序?qū)崿F(xiàn)順序表的各種基本運算,并在此基礎(chǔ)上設(shè)計一個主程序完成如下功能:

      (1)初始化順序表L;

      (2)依次在L尾部插入元素-1,21,13,24,8;

      (3)輸出順序表L;

      (4)輸出順序表L長度;

      (5)判斷順序表L是否為空;

      (6)輸出順序表L的第3個元素;

      (7)輸出元素24的位置;

      (8)在L的第4個元素前插入元素0;

      (9)輸出順序表L;

      (10)刪除L的第5個元素;

      (11)輸出順序表L。

      源代碼

      調(diào)試分析(給出運行結(jié)果界面)

      二、編寫程序?qū)崿F(xiàn)單鏈表的各種基本運算,并在此基礎(chǔ)上設(shè)計一個主程序完成如下功能:

      ????

      ????

      小結(jié)或討論:

      (1)實驗中遇到的問題和解決方法

      (2)實驗中沒有解決的問題

      (3)體會和提高

      第五篇:數(shù)據(jù)結(jié)構(gòu)實驗報告

      南京信息工程大學(xué)實驗(實習(xí))報告

      實驗(實習(xí))名稱數(shù)據(jù)結(jié)構(gòu)實驗(實習(xí))日期 2011-11-2得分指導(dǎo)教師周素萍

      系公共管理系專業(yè)信息管理與信息系統(tǒng)年級10級班次1姓名常玲學(xué)號2010230700

      3實驗一順序表的基本操作及C語言實現(xiàn)

      【實驗?zāi)康摹?/p>

      1、順序表的基本操作及 C 語言實現(xiàn)

      【實驗要求】

      1、用 C 語言建立自己的線性表結(jié)構(gòu)的程序庫,實現(xiàn)順序表的基本操作。

      2、對線性表表示的集合,集合數(shù)據(jù)由用戶從鍵盤輸入(數(shù)據(jù)類型為整型),建立相應(yīng)的順序表,且使得數(shù)據(jù)按從小到大的順序存放,將兩個集合的并的結(jié)果存儲在一個新的線性表集合中,并輸出。

      【實驗內(nèi)容】

      1、根據(jù)教材定義的順序表機(jī)構(gòu),用 C 語言實現(xiàn)順序表結(jié)構(gòu)的創(chuàng)建、插入、刪除、查找等操作;

      2、利用上述順序表操作實現(xiàn)如下程序:建立兩個順序表表示的集合(集合中無重

      復(fù)的元素),并求這樣的兩個集合的并。

      【實驗結(jié)果】

      [實驗數(shù)據(jù)、結(jié)果、遇到的問題及解決]

      一. Status InsertOrderList(SqList &va,ElemType x)

      {

      }

      二. Status DeleteK(SqList &a,int i,int k)

      {//在非遞減的順序表va中插入元素x并使其仍成為順序表的算法 int i;if(va.length==va.listsize)return(OVERFLOW);for(i=va.length;i>0,x

      }

      //注意i的編號從0開始 int j;if(i<0||i>a.length-1||k<0||k>a.length-i)return INFEASIBLE;for(j=0;j<=k;j++)a.elem[j+i]=a.elem[j+i+k];a.length=a.length-k;return OK;

      三.// 將合并逆置后的結(jié)果放在C表中,并刪除B表

      Status ListMergeOppose_L(LinkList &A,LinkList &B,LinkList &C)

      {

      LinkList pa,pb,qa,qb;pa=A;pb=B;qa=pa;qb=pb;// 保存pa的前驅(qū)指針 // 保存pb的前驅(qū)指針 pa=pa->next;pb=pb->next;A->next=NULL;C=A;while(pa&&pb){} while(pa){} qa=pa;pa=pa->next;qa->next=A->next;A->next=qa;if(pa->data

      data){} else{} qb=pb;pb=pb->next;qb->next=A->next;//將當(dāng)前最小結(jié)點插入A表表頭 A->next=qb;qa=pa;pa=pa->next;qa->next=A->next;//將當(dāng)前最小結(jié)點插入A表表頭 A->next=qa;

      }

      } pb=B;free(pb);return OK;qb=pb;pb=pb->next;qb->next=A->next;A->next=qb;

      順序表就是把線性表的元素存儲在數(shù)組中,元素之間的關(guān)系直接通過相鄰元素的位置來表達(dá)。

      優(yōu)點:簡單,數(shù)據(jù)元素的提取速度快;

      缺點:(1)靜態(tài)存儲,無法預(yù)知問題規(guī)模的大小,可能空間不足,或浪費存儲空間;(2)插入元素和刪除元素時間復(fù)雜度高——O(n)

      求兩個集合的并集

      該算法是求兩個集合s1和s2的并集,并將結(jié)果存入s引用參數(shù)所表示的集合中帶回。首先把s1集合復(fù)制到s中,然后把s2中的每個元素依次插入到集合s中,當(dāng)然重復(fù)的元素不應(yīng)該被插入,最后在s中就得到了s1和s2的并集,也就是在s所對應(yīng)的實際參數(shù)集合中得到并集。

      下載中南大學(xué) 數(shù)據(jù)結(jié)構(gòu)實驗報告word格式文檔
      下載中南大學(xué) 數(shù)據(jù)結(jié)構(gòu)實驗報告.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        數(shù)據(jù)結(jié)構(gòu)實驗報告

        數(shù)據(jù)結(jié)構(gòu)實驗報告 一. 題目要求 1)編程實現(xiàn)二叉排序樹,包括生成、插入,刪除; 2)對二叉排序樹進(jìn)行先根、中根、和后根非遞歸遍歷; 3)每次對樹的修改操作和遍歷操作的顯示結(jié)果都需要在......

        數(shù)據(jù)結(jié)構(gòu)實驗報告

        實驗報告4 排序 一、實驗?zāi)康?1、掌握常用的排序方法,并掌握用高級語言實現(xiàn)排序算法的方法。 2、深刻理解排序的定義和各種排序方法的特點,并能加以靈活應(yīng)用。 3、了解各種方......

        數(shù)據(jù)結(jié)構(gòu)實驗報告

        數(shù) 據(jù) 結(jié) 構(gòu) 實 驗 報 告 1.問題描述 為某個單位建立一個員工通訊錄管理系統(tǒng),可以方便地查詢每一個員工的辦公室電話號碼、手機(jī)號碼及電子郵箱。 2. 設(shè)計分析 在本設(shè)計中,整......

        數(shù)據(jù)結(jié)構(gòu)實驗報告

        數(shù)據(jù)結(jié)構(gòu)實驗報告 第一次實驗 學(xué)號:20141060106 姓名:葉佳偉 一、實驗?zāi)康?1、復(fù)習(xí)變量、數(shù)據(jù)類型、語句、函數(shù); 2、掌握函數(shù)的參數(shù)和值; 3、了解遞歸。 二、實驗內(nèi)容 1、(必做......

        數(shù)據(jù)結(jié)構(gòu)實驗報告

        天 津 科 技 大 學(xué) 14學(xué)年—15學(xué)年第 2 學(xué)期 數(shù)據(jù)結(jié)構(gòu)實驗任務(wù)書 專業(yè)名稱: 計算機(jī)科學(xué)與技術(shù) 實驗學(xué)時: 4 課程名稱:數(shù)據(jù)結(jié)構(gòu) 任課教師: 史紹強(qiáng) 實驗題目:圖的最短路徑算法的實......

        數(shù)據(jù)結(jié)構(gòu)實驗報告

        河南省高等教育自學(xué)考試 實 驗 報 告 冊 計算機(jī)及應(yīng)用專業(yè)(本科段) 《數(shù)據(jù)結(jié)構(gòu)》姓名周東偉準(zhǔn)考證號010512201008所屬地市鄭州實驗地點河南職業(yè)技術(shù)學(xué)院實驗日期2014-3-18實驗......

        數(shù)據(jù)結(jié)構(gòu)實驗報告

        數(shù)據(jù)結(jié)構(gòu)實驗報告 指導(dǎo)教師 姓 名班 級學(xué) 號實驗 室 黃梅根鐘志偉 0140703 07310325 S331-B 2008-11-29 單鏈表的插入和刪除實驗日志 指導(dǎo)教師:黃梅根實驗時間:2008年10月1......

        數(shù)據(jù)結(jié)構(gòu)實驗報告

        數(shù)據(jù)結(jié)構(gòu)實驗報告 實驗名稱數(shù)據(jù)結(jié)構(gòu)與算法專業(yè)班級 數(shù)學(xué)與應(yīng)用數(shù)學(xué)1201班 學(xué)號 1304120306 姓名謝 偉 指導(dǎo)老師陳 明......