2018年4月24日 星期二

資訊安全產業相關證照


以上內容僅供參考


上課筆記    2018/04/25

網路安全--上課筆記

做網路安全相關工作的人,需要了解每層的架構,因為每層的攻擊方法也不同。
protocal stack

IP分兩種
虛擬(Private, Virtual)IP -> 子網路遮罩的長度有關
192.168.X.X                           16bits
172.16.X.X ~ 172.31.X.X      12bits
10.0.X.X ~ 10.X.X.X              08bits
實體(Public)IP -> 168.192.X.X

合法的子網路遮罩(2^8個=256)
255.255.255.0
11111111.11111111.11111111.00000000
255.255.255.128
11111111.11111111.11111111.10000000
255.255.255.192
11111111.11111111.11111111.11000000
255.255.255.224
11111111.11111111.11111111.11100000
255.255.255.240
11111111.11111111.11111111.11110000
255.255.255.248
11111111.11111111.11111111.11111000
255.255.255.252
11111111.11111111.11111111.11111100

其中有三個不能用
192.168.1.0(代表此段網路subnet)/24(代表前子網路遮罩的bits(24個1))
192.168.1.255(broadcast)
192.168.1.254(閘道gateway)當router找不出適合的路時使用(Default Gateway)。

------------------------------------------------------------
Header Payload (出現在L2~L5層中)
1. L5到L2的過程叫封裝(Encapsulation)
2. L2到L5的過程叫解封裝(Decapsulation)
------------------------------------------------------
L5                                        |Header|Payload|
                                             |   UA   |   Data  |
------------------------------------------------------
L4                            |Header|       Payload     |
                                 |  Seg   |       Payload     |
------------------------------------------------------     
L3               |Header|             Payload            | 
                   |    IP     |             Payload            |
------------------------------------------------------
L2  |Header|                     Payload                 |
------------------------------------------------------

操作WireShark
WireShark-> 乙太網路


2018/03/21  上課筆記






2018年4月1日 星期日

[C_RU14-易] 好高的水晶塔(C++)

[C_RU14-易] 好高的水晶塔



一定很多人在婚宴的典禮上看過用水晶杯所疊成的金字塔 。 今天小明的姐姐要準備婚禮了,她也希望可以在婚宴上有一座用水晶杯疊成的金字塔,可是她不知道到底需要準備多少杯子才能剛好疊成她想要的層數 。 小明的姊姊想要的的金字塔是以每一層都是正方形所疊出來的塔 , 聰明的你可以幫小明的姊姊計算一下她想要疊的層數到底需要多少杯子才夠嗎 ? 當輸入為 -1 時結束程式 。
輸入格式 :
水晶杯塔的層數 N ( 1 £ N £ 1000)
輸出格式 :
需要最少的杯子數量
Sample input :
2
3
6
-1

Sample output
5
14
91


  1. #include <iostream>  
  2. #include<iomanip>  
  3. using namespace std;  
  4.    
  5. int factorial(int n)  
  6. {  
  7.     if(n==1)  
  8.     {  
  9.         return(1);  
  10.     }  
  11.     else  
  12.     {  
  13.         return factorial(n-1) + n*n;  
  14.     }  
  15. }  
  16.    
  17. int main() {  
  18.     // [C_RU14-易] 好高的水晶塔  
  19.     double N;  
  20.     while(cin >> N)  
  21.     {  
  22.         if(N == -1)  
  23.         {  
  24.             break;  
  25.         }  
  26.         else  
  27.         {  
  28.              for (double i=1; i<= N; i++)  
  29.              {  
  30.                 if(i == N)  
  31.                 {  
  32.                     cout << factorial(i) << endl;  
  33.                 }  
  34.              }  
  35.         }  
  36.     }  
  37.     return 0;  
  38. }  

[C_RU25-易] 遞迴練習f(n)=3f(n-1)+g(n-1)﹐g(n)=-f(n-1)+g(n-1)(C++)

[C_RU25-易] 遞迴練習f(n)=3f(n-1)+g(n-1)﹐g(n)=-f(n-1)+g(n-1)


Time Limit: 1 seconds
問題描述 :
由式子 f(n)=3f(n-1)+g(n-1),g(n)=-f(n-1)+g(n-1) 且 f(1)=2 , g(1)=-6 ,輸入 值,求 f(n) 及 g(n)
輸入說明 :
輸入正整數 。其中 2 ≤ n ≤ 23.
輸出說明 :
依序輸出 f(n)、g(n) 的值,數值之間,隔一個空白。
範例 :

輸入範例輸出範例
20 -8
3-8 -8

*******我沒用遞迴********
  1. #include <iostream>  
  2. #include <iomanip>  
  3. #include <vector>  
  4. using namespace std;  
  5.   
  6. int main() {  
  7.     // [C_RU25-易] 遞迴練習  
  8.     // f(n)=3f(n-1)+g(n-1)  
  9.     // g(n)=-f(n-1)+g(n-1)  
  10.     double N;  
  11.     cin >> N;  
  12.     vector<int> f;  
  13.      vector<int> g;  
  14.      for (double i=0; i< N; i++)  
  15.      {  
  16.         if(i == 0)  
  17.         {  
  18.             f.push_back(2);  
  19.             g.push_back(-6);  
  20.         }  
  21.         else  
  22.         {  
  23.             f.push_back(3*f[i-1] + g[i-1]);  
  24.             g.push_back(-1*f[i-1] + g[i-1]);  
  25.         }  
  26.      }  
  27.      cout << f[N-1] << " " << g[N-1] << endl;  
  28.     return 0;  
  29. }  

[C_RU24-易] 遞迴練習f(n)=2f(n-1)/(1+2f(n-1))(C++)

[C_RU24-易] 遞迴練習f(n)=2f(n-1)/(1+2f(n-1))

Time Limit: 1 seconds
問題描述 :
7輸入說明 :
輸入正整數 。其中 2 ≤ n ≤ 18.
輸出說明 :
輸出 ) 的值,四捨五入至小數點後第五位。
範例 :

輸入範例輸出範例
30.61538

  1. #include <iostream>  
  2. #include<iomanip>  
  3. using namespace std;  
  4.   
  5. double factorial(int n)  
  6. {  
  7.     if(n==1)  
  8.     {  
  9.         return(2);  
  10.     }  
  11.     else  
  12.     {  
  13.         return (factorial(n-1)*2)/(factorial(n-1)*2+1);  
  14.     }  
  15. }  
  16.   
  17. int main() {  
  18.     // [C_RU24-易] 遞迴練習f(n)=2f(n-1)/(1+2f(n-1))  
  19.     double N;  
  20.     cin >> N;  
  21.      for (double i=1; i<= N; i++)  
  22.      {  
  23.         if(i == N)  
  24.         {  
  25.             cout << fixed << setprecision(5) << (double)factorial(i) << endl;  
  26.         }  
  27.      }  
  28.     return 0;  
  29. }  

[C_RU23-易] 遞迴練習2f(n)=f(n-1)+2(C++)

[C_RU23-易] 遞迴練習2f(n)=f(n-1)+2

Time Limit: 1 seconds
問題描述 :
由式子 2f(n)=f(n-1)+2 ,且 f(1)=1 ,輸入 值,求 f).
輸入說明 :
輸入正整數 。其中 2 ≤ n ≤ 18.
輸出說明 :
輸出 f) 的值,四捨五入至小數點後第五位。
範例 :

輸入範例輸出範例
31.75000

  1. #include <iostream>  
  2. #include<iomanip>  
  3. using namespace std;  
  4.   
  5. double factorial(int n)  
  6. {  
  7.     if(n==1)  
  8.     {  
  9.         return(1);  
  10.     }  
  11.     else  
  12.     {  
  13.         return (double)(((double)factorial(n-1))+(double)2)/2;  
  14.     }  
  15. }  
  16.   
  17. int main() {  
  18.     // [C_RU23-易] 遞迴練習2f(n)=f(n-1)+2  
  19.     double N;  
  20.     cin >> N;  
  21.      for (double i=1; i<= N; i++)  
  22.      {  
  23.         if(i == N)  
  24.         {  
  25.             cout << fixed << setprecision(5) << (double)factorial(i) << endl;  
  26.         }  
  27.      }  
  28.     return 0;  
  29. }  


[C_RU10-中] 爬樓梯(C++)

[C_RU10-中] 爬樓梯

1. 問題描述: 
一至二樓有 8 級樓梯,某人上樓,每次可跨 1 級或 2 級,不同上樓的方法有幾種?
CRU10.JPG
輸入說明:
輸入樓梯之級數 n(3 ≦ n ≦ 20) 。
輸出說明:
輸出不同上樓的方法總數。
範例 :
Sample InputSample Output
33
13377


  1. #include <iostream>  
  2. #include<iomanip>  
  3. using namespace std;  
  4.    
  5. int fib(int n)  
  6. {  
  7.     if(n==1 || n == 2)  
  8.     {  
  9.         return(n);  
  10.     }  
  11.     else  
  12.     {  
  13.         return fib(n-1) + fib(n-2);  
  14.     }  
  15. }  
  16.    
  17. int main() {  
  18.     // [C_RU10-中] 爬樓梯  
  19.     // 費式數列  
  20.     double N;  
  21.     cin >> N;  
  22.      for (double i=1; i<= N; i++)  
  23.      {  
  24.         if(i == N)  
  25.         {  
  26.             cout << fib(i) << endl;  
  27.         }  
  28.      }  
  29.     return 0;  
  30. }