20145211《信息安全系統設計基礎》期中總結

20145221 《信息安全系統設計基礎》期中總結

知識點梳理

第0周博客連接及主要內容

  • 20145211黃志遠《信息安全系統設計基礎》第0周學習總結
  • 第0周最主要的任務是裝好ubuntu,最大的收穫也是裝了ubuntu。html

    第一週博客連接及主要內容

  • 20145211《信息安全系統設計基礎》第1周學習總結————春宵苦短日高起
  • Linux中命令格式爲:command [options] [arguments] []表示是可選的,組成結構爲:命令 [選項] [參數]linux

    man命令

  • man密令是Linux下的幫助指令,經過man指令能夠查看Linux中的指令幫助、配置文件幫助和編程幫助等信息。
  • 經常使用選項:
    -a:在全部的man幫助手冊中搜索
    -k:根據關鍵字搜索聯機幫助,是一種模糊搜索
    -f:關鍵字精確搜索,等價於whatis指令,顯示給定關鍵字的簡短描述信息
    -P:指定內容時使用分頁程序
    -M:指定man手冊搜索的路徑
  • 參數:
    數字:指定從哪本man手冊中搜索幫助
    關鍵字:指定要搜索幫助的關鍵字正則表達式

    cheat命令

  • 在linux上,man命令幾乎是萬能的,但它卻不是最高效的。因爲它給出的幫助信息很長,在短期內很差理解,因此在這種狀況下,用cheat命令更方便,cheat命令簡單來講,就是告訴你一個命令如何使用。它沒有提供其餘額外多餘的信息,只經過使用實例告訴你一個命令如何使用。
  • Ubuntu上沒有自帶cheat命令,你們能夠參照婁老師提供的文章進行安裝配置。數據庫

    find命令

  • find 實際搜尋硬盤查詢文件名稱
    一般狀況下find命令並非很經常使用,你們都優先使用whereis和locate命令來查找,由於whereis和locate命令都是利用數據庫來查找文件所在,並無實際查詢硬盤,因此速度很快,節省時間。可是咱們的find命令依然很強大,它的查找條件至關多,對於用其餘命令查找不到的文件,就能夠考慮使用find命令在硬盤上遍歷查找,雖然速度慢效率低。編程

  • find(用於在文件樹中查找文件,並進行相應操做)
  • 格式:
  1. find [PATH] [option] [action]
    [PATH] : 所要搜索遍歷的目錄,默認爲當前目錄
  2. [option] : 所要搜索文件的條件特徵
  3. [action] : 對搜索結果進行特殊處理
  • 與時間有關的參數
    -amin n :查找n分鐘內被訪問過的文件
    -cmin n : 查找n分鐘內被修改過文件狀態的全部文件
    -mmin n : 查找n分鐘內被修改過文件內容的全部文件
    -atime n : 將n天內存取過的的文件列出來
    -ctime n : 將n天內改變、新增的文件或者目錄列出來
    -mtime n : 將n天內修改過的文件或者目錄列出來
    -newer file :把比file還要新的文件列出來 (可用來分辨兩個文件之間的新舊關係)

除此以外,以-mtime爲例:(類比使用其餘與時間有關的參數)
-mtime n :列出n天前的那一天被更改過的文件
-mtime +n :列出n天以前(不包含n天自己)被更改過的文件
-mtime -n :列出n天以內(包含n天自己)被更改過的文件
-mtime 0 : 0表明當前時間,即列出從如今開始到24小時ubuntu

  • 與用戶或用戶組名有關的參數
    -uid [n] :尋找擁有者ID爲n的文件
    -gid [n] :尋找用戶組ID爲n的文件
    -group [name] :尋找羣組名爲"name"的文件
    -user [name] : 尋找用戶名爲"name"的文件
    -nouser : 尋找文件全部者不存在 /etc/passwd 的人(能夠查找不太正常的文件)
    若是你的某個帳戶刪除了,該帳戶曾經創建的文件就成了無主的非正常文件這時候能夠利用 -nouser 來找出該類型的文件
  • 與文件權限及名稱有關的參數
    (1)-name [filename] :查找文件名filename的文件
    從以上的例子中咱們能夠看出,find命令須要一個路徑名做爲查找範圍,find會深刻到這個路徑的每個子目錄中去尋找,打印文件的絕對路徑。
    若是指定路徑爲「/」,就查找整個文件系統。-name選項指定了文件名,-printf表示將結果輸出到屏幕上,-type選項用來定位特殊文件類型。
    (2)-size [+ -]SIZE : 查找比"SIZE"還要大(+)或小(-)的文件
    (SIZE的規格有:① c :表明byte ②k :表明1024 bytes) ;
    要找比50k還要大的文件時就用" -size +50k"
    (3)-type [TYPE] :查找文件類型爲TYPE的文件vim

    locate命令

  • locate命令實際上是find -name的另外一種寫法,可是要比後者快得多,緣由在於它不搜索具體目錄,而是搜索一個數據庫(/var/lib/locatedb),這個數據庫中含有本地全部文件信息。Linux系統自動建立這個數據庫,而且天天自動更新一次,因此使用locate命令查不到最新變更過的文件。爲了不這種狀況,能夠在使用locate以前,先使用updatedb命令,手動更新數據庫。
  • 命令格式:locate [選擇參數] [樣式]
  • 命令參數:
  1. -e:將排除在尋找的範圍以外
  2. -1:若是是1則啓動安全模式,在安全模式下,使用者不會看到權限沒法看到的檔案。這會使速度減慢,由於 locate必須至實際的檔案系統中取得檔案的權限資料
  3. -f:將特定的檔案系統排除在外,例如咱們沒有到必要把proc檔案系統中的檔案放在資料庫中
  4. -q:安靜模式,不會顯示任何錯誤訊息
  5. -n:至多顯示 n個輸出
  6. -r:使用正規運算式 作尋找的條件
  7. -o:指定資料庫存的名稱
  8. -d:指定資料庫的路徑
  9. -h:顯示輔助訊息
  10. -V:顯示程式的版本訊息數組

    grep命令

  • grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用權限是全部用戶。
  • 命令格式:grep [options]
    [options]主要參數:
  1. -c:只輸出匹配行的計數
  2. -I:不區分大小寫(只適用於單字符)
  3. -h:查詢多文件時不顯示文件名
  4. -l:查詢多文件時只輸出包含匹配字符的文件名
  5. -n:顯示匹配行及行號
  6. -s:不顯示不存在或無匹配文本的錯誤信息
  7. -v:顯示不包含匹配文本的全部行
    正則表達式主要參數:
  8. :忽略正則表達式中特殊字符的原有含義
  9. ^:匹配正則表達式的開始行
  10. $:匹配正則表達式的結束行
  11. <:從匹配正則表達式的行開始
  12. >:到匹配正則表達式的行結束
  13. [ ]:單個字符,如[A]即A符合要求
  14. [ - ]:範圍,如[A-Z],即A、B、C一直到Z都符合要求
  15. 。:全部的單個字符
  16. *:有字符,長度能夠爲0安全

    whereis命令

  • whereis命令是定位可執行文件、源代碼文件、幫助文件在文件系統中的位置。這些文件的屬性應屬於原始代碼,二進制文件,或是幫助文件。whereis程序還具備搜索源代碼、指定備用搜索路徑和搜索不尋常項的能力。whereis命令只能用於程序名的搜索,並且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。若是省略參數,則返回全部信息。
  • 命令格式:whereis [-bmsu] [BMS 目錄名 -f ] 文件名
  • 主要參數:
  1. -b:定位可執行文件
  2. -m:定位幫助文件
  3. -s:定位源代碼文件
  4. -u:搜索默認路徑下除可執行文件、源代碼文件、幫助文件之外的其它文件
  5. -B:指定搜索可執行文件的路徑
  6. -M:指定搜索幫助文件的路徑
  7. -S:指定搜索源代碼文件的路徑網絡

    which命令

  • which指令會在PATH變量指定的路徑中,搜索某個系統命令的位置,而且返回第一個搜索結果。which是根據使用者所配置的PATH變量內的目錄去搜尋可運行檔的,因此,不一樣的PATH配置內容所找到的命令是不同的。
  • 命令格式:which 可執行文件名稱
  • 命令參數:
  1. -n:指定文件名長度,指定的長度必須大於或等於全部文件中最長的文件名
  2. -p:與-n參數相同,但此處的包括了文件的路徑
  3. -w:指定輸出時欄位的寬度
  4. -V:顯示版本信息

    文件操做

  • 文件打包/解壓:zip/unzip
  • df:查看磁盤的容量
  • du:查看目錄的容量
  • touch:建立空白文件
  • mkdir:建立一個空目錄
  • cp:複製一個文件或目錄到指定目錄
  • em:刪除一個文件或目錄
  • mv:
  • 移動文件(剪切):mv 源目錄文件 目的目錄
  • 文件重命名:mv 舊的文件名 新的文件名

    第二週博客連接及主要內容

  • 20145211《信息安全系統設計基礎》第2周學習總結————愬秋風以開襟

    Vim經常使用命令總結

  • 插入:
    i:在當前光標處進行編輯
    a:在光標後插入編輯
  • 退出:
    q!:強制退出,不保存
    :q:退出
    :wq!:強制保存並退出
    :wq:保存並退出
    :w <文件路徑> :另存爲
  • 刪除:
    x:刪除遊標所在的字符
    dd:刪除整行
  • 行間跳轉:
    nG(n Shift+g):光標移動到第n行
  • 複製與粘貼:
    nyy:複製光標所在及其後的整行共n行
    p:表明粘貼至光標後
  • 功能設定:
    :set autoindent(ai):設置自動縮進
    :set cindent(cin):設置C語言風格縮進
    :set nu:以顯示行號
  • GCC編譯過程
    預處理:gcc –E hello.c –o hello.i ;gcc –E調用cpp 產生預處理過的C原始程序
    編譯:gcc –S hello.i –o hello.s ;gcc –S調用ccl 產生彙編語言原始程序
    彙編:gcc –c hello.s –o hello.o ;gcc -c 調用as 產生目標文件
    鏈 接:gcc hello.o –o hello ;gcc -o 調用ld 產生可執行文件
    運行: ./hello
  • makefile
    功能:識別文件代碼是否更新,減小編譯工做量
    格式爲:
    目標體:依賴文件
    [tab鍵]各目標體運行命令
    目標體:由make建立,一般是目標文件或可執行文件
    依賴文件:建立目標體所依賴的文件
    運行命令:建立每一個目標體時須要的運行命令,必須以tab鍵開頭。
    使用make的格式:make 目標體

    第三週博客連接及主要內容

  • 20145211《信息安全系統設計基礎》第3周學習總結——楓染龍田川

    信息的表示

  1. 無符號數:基於傳統的二進制表示法,表示大於或等於零的數字(個人理解是,無符號嘛,就是已經超越生死,不管正負,因此我比較喜歡無符號數,密碼學編代碼用的爽)
  2. 補碼:表示有符號數,可爲正可爲負的數字
  3. 浮點數:表示實數的科學計數法的以二爲基數的版本

    信息存儲

  • 字:
    每一個計算機都有一個字長,指明整數和指針數據的標稱大小。由於虛擬地址是以這樣的一個字來編碼的,因此字長最重要的系統參數就是虛擬地址空間的最大大小。
    對於一個字長爲w位的機器而言,虛擬地址的範圍爲0~2^w-1,程序最多訪問2^w字節。
    使用C99特性:當沒有-m32或-m64參數時,通常狀況下會生成跟操做系統位數一致的代碼;gcc -m32能夠在64位機上(好比實驗樓的環境)生成32位的代碼
  • 字節順序:字節順序是網絡編程的基礎,是指佔內存多於一個字節類型的數據在內存中的存放順序,一般有小端、大端兩種字節順序。
  • 小端法:低字節數據存放在內存低地址處,高字節數據存放在內存高地址處。
  • 大端法:高字節數據存放在低地址處,低字節數據存放在高地址處。

布爾代數

  • 邏輯運算:
    全部邏輯運算均可以用與、或、非表達(最大式、最小式)而與或非能夠用「與非」或「或非」表達,因此,只要一個與非門,就能夠完成全部的邏輯運算
  • 邏輯運算符:邏輯與(&&);邏輯或(||);邏輯非(!)
  • 位運算:結果是位向量;按位與(&) 二進制每一位遇0爲0;按位或(|) 二進制每一位遇1爲1;按位異或(^) 0^0=0,0^1=1,1^0=1,1^1=0;按位取反(~) 二進制每一位取反
  • 掩碼運算:掩碼是位運算的重要應用,這裏掩碼是一個特定位模式,表示從一個字中選擇一個位的集合。對特定位能夠置一,能夠清零。
  • 整數表示
    無符號數編碼位向量二進制表示與之對應。
    補碼編碼

第四周博客連接及主要內容

數據格式

  • 因爲是從16位體系結構擴展成32位,intel用術語字(word)表示16位數據類型,所以32位爲雙字(double words),64位數爲4字(quad words)。
    如下是比較容易模糊的數據類型大小:
    32位機上:float 4 long int 4 double 8 longlong 8 char* 4 unsigned long 4
    64位機上:float 4 long int 8 double 8 longlong 8 char* 8 unsigned long 8
    另外,GCC 用long double表示擴展精度(10字節),出於存儲器性能考慮,會被存儲爲12字節

訪問信息

  • 一個IA32 CPU包含一組8個存儲32位值的寄存器,用以存整數數據和指針:eax,ecx,edx,ebx,esi,edi esp,ebp。大多數狀況下前六個都用做通用寄存器,eax,ecx,edx的存儲和恢復慣例不一樣於ebx,edi,esi(前三者爲被調用者保存,後三者爲調用者保存,詳見3.7.3);最後兩個用於存儲指針,因爲在過處理中很是重要,分別指向棧幀的頂部和底部,必須保持。

    操做數指示符

  • 大多數指令有一到多個操做數,操做數有三種:
    當即數:即常數值
    寄存器:表示某個寄存器內容
    存儲器引用:根據計算出來的地址(一般稱有效地址)訪問某個存儲器位置
    所以尋址方式也有多種,如:當即數尋址、寄存器尋址、絕對尋址、間接尋址、變址尋址、伸縮化 的變址尋址……

數據傳送指令

  • 幾個重要數據傳送指令:mov族(之因此稱這爲族是由於mov指令還有不少兄弟指令如movb、movw、movsb、movzb,這是我我的對它們的稱呼,便於記憶mov其餘幾個比較低調的兄弟)、pop、push。同時,對於mov族,movb、movw自沒必要作過多解釋,movsb、movzb分別爲符號擴展、零擴展,它們只拷貝一個字節,源操做數均爲單字節,並設置目的操做數中其他的位,效果以下:
    初始假設:%dh=8D %eax=98765432
    1 movb %dh,%al ;%eax=9876548D
    2 movsbl %dh,%eax ;%eax=FFFFFF8D(目的操做數高24位設爲源字節最高位,在這裏爲很顯然爲1,因此前24位爲全F)
    3 movzbl %dh,%eax ;%eax=0000008D(目的操做數高24位被設爲0)

  • 對於pushl指令等價於:
    subl $4,%esp
    movl %ebp,(%esp) //注意這裏的括號引發的差異

    popl指令等價於:
    movl (%esp),%eax
    addl $4,%esp

    第六週博客連接及主要內容

  • 20145211《信息安全系統設計基礎》第六週學習總結——賞心樂事

    看的見的手

  • 計算機是一個神祕的傢伙,它的不少祕密咱們都看不到,不過有了ISA的幫忙,咱們就能夠了解到不少計算機的祕密。好比hzy如今寫博文的時候,CPU到底在幹什麼呢?
  • 理論上來說,咱們在編寫一個程序的時候,咱們是能夠知道CPU的狀態的。由於在你觀察程序的彙編指令時,你能夠知道當程序執行到某個地方,寄存器、存儲器以及條件碼寄存器等等的狀態是如何的。說到底,不管是寄存器,存儲器仍是條件碼寄存器等等,都是彙編指令能夠訪問的處理器狀態。在設計和實現一個處理器的時候,只要咱們能保證機器級程序(好比彙編程序)能夠正常的訪問程序猿可見狀態(好比寄存器、存儲器),那麼就不太須要非得按照ISA真正的方式來表示咱們的處理器狀態。
  • 對於Y86來講,它的程序猿可見狀態就是這幾種:寄存器、存儲器、條件碼、PC、程序狀態。
  • 在Y86當中,寄存器依舊是8個,每個寄存器能夠存儲一個字,也就是一個32位二進制。條件碼是一個一位二進制的寄存器,保存着最近的算術或邏輯運算所形成的影響的信息。PC則是程序計數器,記錄當前正在執行的指令的地址。
  • 存儲器則是一個很大的字節數組,Y86的程序可使用虛擬地址(相似於數組的下標)來訪問存儲器,硬件和操做系統會將虛擬地址翻譯爲實際的地址。最後一個程序狀態(stat),它則表明着程序的運行狀況。
  • 這些都是可見的狀態,或者說機器級程序可訪問的CPU狀態,咱們在設計和實現一個處理器的時候,就是設計一系列指令去操做這些狀態。

第七週博客連接及主要內容

收穫

  • 最大的收穫莫過於,你永遠須要一個plan B,強如AlphaGo這樣的非人類都有失算的時候,況且咱們這些計算當量只有幾bit的尋常人。狡兔尚有三窟,咱們多準備一個PLAN B永遠不吃虧。
  • 在學習Linux的時候,由於某些偶然緣由和必然因素,我學習了裝雙系統,想來也是爲計算機應用水平測試打下了必定的基礎。
  • 同時,加深了對c,彙編,硬件的認識。雖然尚未造成體系,可是這不妨礙我爲之後編寫更加高效的代碼帶下夯實的基礎。
  • 從更高處望去,必然是不同的景色。這,是我如今最深的領悟。

不足

  • 說來講去,永遠是那永恆不變的話題————學習不夠深刻,知識點掌握的不夠透徹。
  • 形成以上結果的緣由是多方面的。第一個緣由,學習的不少內容沒有複習,只是學一遍,印象並不深入,可能放下書以後就忘了所學的內容,沒有作到反覆閱讀教材。第二個緣由是心不夠靜,太急於求成,想一口吃成胖子,惋惜個人消化能力不夠。第三個緣由爲是天賦所限,真的是能力不濟,縱絞盡腦汁,也沒法得其真諦。愛因斯坦說,「天才就是1%的靈感加上99%的汗水;關鍵是那1%的靈感。」我彷彿聽見了愛因斯坦的笑聲。
  • 不說了,滿滿的都是不足。

    課程建議和意見

  • 還記得那是一個陽光明媚的下午,全部同窗的感覺都是同樣的,那就是————婁老師,有你在,天都好了。那周適逢國慶,婁老師緊跟時代潮流,開創了信息安全系統假期無做業的先例,不禁得想起歸有光所寫的,「今已亭亭如蓋矣。」師恩浩蕩,如今想起,仍喜矣,泣矣。不奢求全部的法定節假日,但求一個元旦,不過貌似元旦課程就結束了。。

    學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 120/200 1/2 16/16 學習Linux核心命令
第二週 100/200 1/3 30/46 學習vim,gcc以及gdb的基本操做
第三週 30/230 1/4 15/61 對信息的表示和處理有更深刻的理解
第四周 30/260 1/5 22/83 雙系統的探索
第五週 130/390 1/6 25/108 彙編的深刻學習
第六週 60/450 1/7 25/133 熟悉了Y86模擬器
第七週 60/510 2/9 20/153 掌握局部性原理
第八週 0/510 2/11 16/169 期中總結

參考資料

相關文章
相關標籤/搜索