1. 程式人生 > 其它 >Python3指令碼-9鍵26鍵鍵盤密碼加解密python實現

Python3指令碼-9鍵26鍵鍵盤密碼加解密python實現

Linux簡介

Linux是一種免費使用和自由傳播的類UNIX作業系統,其核心是由芬蘭人林納斯·託瓦茲(Linus Torvalds)在1991年10月5日首次釋出。它主要受到Minux和Unix思想的啟發,是一個基於POSIX的多使用者,多工,支援多執行緒和多CPU的擦做系統。

Linux發行版

Linux 的發行版說簡單點就是將 Linux 核心與應用軟體做一個打包。常見的有Debian、Slackware、RedHat三個分支

RedHat:

  RHEL(Red Hat Enterprise Linux,收費版本):是Redhat自己的發行的企業版,是Redhat的一個重要節點。

  CentOS(RHEL 的社群克隆版本,免費版本):是一個基於Redhat linux 提供的可自由使用原始碼的企業級linux發行版本。目前Centos已被收購,成為redhat旗下的一個組織。Centos相容RHEL的格式

  Fedora Core(由 Red Hat 桌面版發展而來,免費版本):Fedore是一款基於linux的作業系統,也是一組維持計算機正常執行的軟體集合。由紅帽公司贊助。可視為Redhat的技術測試版,被認為可用的技術最終會加入到Red Hat Enterprise Linux中

Slackware:

  SUSE Linux Enterprise Server (SLES)

  OpenSuse桌面

Debian:三大發行版中唯一以社群形式運作,不以商業公司形式運作。是一個致力於建立自由作業系統的合作組織。而且debian開發者所建立的作業系統中絕大部分基礎工具來自於GNU工程。

  Ubuntu:是一個以桌面應用為主的linux作業系統。

  minit:Linux Mint 是一款基於Ubuntu與Debian開發的 Linux 作業系統發行版,被很多愛好者譽為“最好的桌面應用系統”,就像是 Linux 世界中的macOS,非常適合個人日常辦公或開發電腦使用。

Linux不同發行版的聯絡和區別

聯絡:

  1)使用linux核心

  2)遵循GNU的GPL協定

  3)約定版本號:主版本號.次版本號.發行號或修正號

區別:

  1)不同發行版集成了不同的核心,程式和庫

  2)包管理方式的不同

    RedHat:包管理器rpm,前端包管理器yum和最新的dnf

    Debian:包管理器dpkg(deb格式),apt-get

    SUSE:包管理器rpm,zypper

Linux安裝

此處以虛擬機器安裝CentOS7.9最小化為例,設定時區亞洲/上海,建立指定使用者和root使用者密碼,設定主機名centos7.example.com,IP地址設定自動獲取(也可單獨設定),安裝完成後測設登入

安裝步驟

  1)啟動虛擬機器,開始安裝引導

  

  2)選擇系統語言為English點選Continue

  

  3)選擇最小化安裝Minimal Install,點選Done

  

  4)設定時區,檢查時間是否準確,完成後點選Done

  

  5)對磁碟進行分割槽

  a.此處選擇標準分割槽,共建立/root,/data,swap,/四個分割槽,點選“+”可新增分割槽,新增完成後點選Done

  

  b.分割槽檢查,確認無誤後點擊Accept

  

  6)設定主機名和IP,這裡點選Configure可自定Ip地址

  

  7)設定完成後點選Begin

  

  8)此處設定root密碼和建立普通使用者,完成後點選Finish

  

  9)等待安裝完成,點選Reboot

  

  10)重啟後測試登入

  a.登入root使用者

  

  b.登入普通使用者

  

設定history輸出格式

此處以修改全域性配置檔案和建立開機指令碼的方式對history輸出格式做修改

1)修改全域性配置檔案

  a.修改/etc/profile,/etc/bashrc,文末新增:HISTTIMEFORMAT="%F %T "

  vim /etc/profile

  

  檢視輸出:  

  

2)在/etc/profile.d/下建立.sh開機指令碼

  vim set_history.sh

  寫入:HISTTIMEFORMAT="%F %T "

  執行:./etc/profile.d/set_history.sh

  檢視history輸出

  

Linux哲學思想

1.一切皆檔案(包括硬體)

  一切皆檔案:是 Unix/Linux 的基本哲學之一。不僅普通的檔案,目錄、字元裝置、塊裝置、 套接字等在 Unix/Linux 中都是以檔案被對待
2.小型,單一用途的程式

  小型,單一用途的程式:程式和可執行檔案不要太複雜,這樣才能保證了linux核心的高效執行
3.連結程式。共同完成複雜的任務

  連線程式,共同完成複雜功能:複雜的任務可以通過連線多個簡單的程式實現複雜的功能。對於複雜的功能linux通過許多簡單程式的組合等方式實現,在保證簡單功能的高效性的同時,複雜的程式也必然是高效性的
4.避免令人困惑的使用者介面

  linux是開源的,無論什麼問題都可以通過簡潔的命令列實現 排錯,修改系統的配置,一切都是簡潔明瞭為基礎。
5.配置資料儲存在文字中

  linux所有的配置檔案都存放在文字配置檔案當中,無論什麼配置修改都只需修改其配置檔案即可

Linux常用命令

在此總結一些常見的命令

1)ls

  ls命令用於顯示指定工作目錄下之內容(列出目前工作目錄所含之檔案及子目錄)。

  語法:  

    ls [-alrtAFR] [name] ...

  引數:

    -a 顯示所有檔案及目錄 (.開頭的隱藏檔案也會列出)

    -l 除檔名稱外,亦將檔案型態、許可權、擁有者、檔案大小等資訊詳細列出

    -r 將檔案以相反次序顯示(原定依英文字母次序)

    -t 將檔案依建立時間之先後次序列出

    -A 同 -a ,但不列出 "." (目前目錄) 及 ".." (父目錄)

    -F 在列出的檔名稱後加一符號;例如可執行檔則加 "*", 目錄則加 "/"

    -R 若目錄下有檔案,則以下之檔案亦皆依序列出

  範例:  

    列出/目錄下檔案(不包括 .filename檔案) 

    

    列出/目錄下所有檔案

    

    列出/目錄下檔案詳細資訊

    

2)who

  who命令用於顯示系統中有哪些使用者正在上面,顯示的資料包含了使用者 ID、使用的終端機、從哪邊連上來的、上線時間、呆滯時間、CPU 使用量、動作等等。

  語法:

    who [OPTION]... [ FILE | ARG1 ARG2 ]

  引數:

    -H 或 --heading:顯示各欄位的標題資訊列;
    -i 或 -u 或 --idle:顯示閒置時間,若該使用者在前一分鐘之內有進行任何動作,將標示成"."號,如果該使用者已超過24小時沒有任何動作,則標示出"old"字串;
    -m:此引數的效果和指定"am i"字串相同;
    -q 或--count:只顯示登入系統的帳號名稱和總人數;
    -s:此引數將忽略不予處理,僅負責解決who指令其他版本的相容性問題;
    -w 或-T或--mesg或--message或--writable:顯示使用者的資訊狀態列;
    --help:線上幫助;
    --version:顯示版本資訊

  範例:

  顯示當前登入使用者

  

  顯示登入系統登入程序 PID 時間等資訊

  

3)cat

  cat命令用於連線檔案並列印到標準輸出裝置上。

  語法:

    cat [OPTION]... [FILE]...

  引數:

    -n 或 --number:由 1 開始對所有輸出的行數編號。
    -b 或 --number-nonblank:和 -n 相似,只不過對於空白行不編號。
    -s 或 --squeeze-blank:當遇到有連續兩行以上的空白行,就代換為一行的空白行。
    -v 或 --show-nonprinting:使用 ^ 和 M- 符號,除了 LFD 和 TAB 之外。
    -E 或 --show-ends : 在每行結束處顯示 $。
    -T 或 --show-tabs: 將 TAB 字元顯示為 ^I。
    -A, --show-all:等價於 -vET。
    -e:等價於"-vE"選項;
    -t:等價於"-vT"選項;

  範例:

  1)檢視檔案內容

  

  2)對檢視內容進行編號

  

  

4)echo

  echo用於字串的輸出

  語法:

    echo [-neE] [arg ...]

  引數

    -E (預設)不支援 \ 解釋功能
    -n 不自動換行
    -e 啟用 \ 字元的解釋功能

  範例:

    1)輸出連續字串

  

    2)輸出不連續字串

  

    3)輸出特殊符號

  

    4)換行

  

    5)輸出變數

  

    6)輸出命令結果,這裡用的是 " ` “<英文的tab鍵>

  

5)screen

screen命令用於多重視窗管理程式。

語法:

  screen [-opts] [cmd [args]]

引數:

  -A  將所有的視窗都調整為目前終端機的大小。
  -d<作業名稱>  將指定的screen作業離線。
  -h<行數>  指定視窗的緩衝區行數。
  -m  即使目前已在作業中的screen作業,仍強制建立新的screen作業。
  -r<作業名稱>  恢復離線的screen作業。
  -R  先試圖恢復離線的作業。若找不到離線的作業,即建立新的screen作業。
  -s<shell>  指定建立新視窗時,所要執行的shell。
  -S<作業名稱>  指定screen作業的名稱。
  -v  顯示版本資訊。
  -x  恢復之前離線的screen作業。
  -ls或--list  顯示目前所有的screen作業。
  -wipe  檢查目前所有的screen作業,並刪除已經無法使用的screen作業。

範例:

  1)screen 建立終端

  

  

  2)檢視終端

  

  3)離開終端Ctrl+a d

  

  

  :終端並未結束

  4)重新連線終端

  

6)date

  date命令可以用來顯示或設定系統的日期與時間,可使用”+“跟上標記顯示指定格式的時間

  標記格式:

    % : 印出 %
    %n : 下一行
    %t : 跳格
    %H : 小時(00..23)
    %I : 小時(01..12)
    %k : 小時(0..23)
    %l : 小時(1..12)
    %M : 分鐘(00..59)
    %p : 顯示本地 AM 或 PM
    %r : 直接顯示時間 (12 小時制,格式為 hh:mm:ss [AP]M)
    %s : 從 1970 年 1 月 1 日 00:00:00 UTC 到目前為止的秒數
    %S : 秒(00..61)
    %T : 直接顯示時間 (24 小時制)
    %X : 相當於 %H:%M:%S
    %Z : 顯示時區
  日期方面:

    %a : 星期幾 (Sun..Sat)
    %A : 星期幾 (Sunday..Saturday)
    %b : 月份 (Jan..Dec)
    %B : 月份 (January..December)
    %c : 直接顯示日期與時間
    %d : 日 (01..31)
    %D : 直接顯示日期 (mm/dd/yy)
    %h : 同 %b
    %j : 一年中的第幾天 (001..366)
    %m : 月份 (01..12)
    %U : 一年中的第幾周 (00..53) (以 Sunday 為一週的第一天的情形)
    %w : 一週中的第幾天 (0..6)
    %W : 一年中的第幾周 (00..53) (以 Monday 為一週的第一天的情形)
    %x : 直接顯示日期 (mm/dd/yy)
    %y : 年份的最後兩位數字 (00.99)
    %Y : 完整年份 (0000..9999)
    若是不以加號作為開頭,則表示要設定時間,而時間格式為 MMDDhhmm[[CC]YY][.ss],其中 MM 為月份,DD 為日,hh 為小時,mm 為分鐘,CC 為年份前兩位數字,YY 為年份後兩位數字,ss 為秒數。

  範例:

    1)格式輸出年月日

    

    2)按自定格式輸出

    

    3)設定時間

    

7)ifconfig

ifconfig命令用於顯示或設定網路裝置。

ifconfig可設定網路裝置的狀態,或是顯示目前的設定。

語法:

  ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]
  [add <address>[/<prefixlen>]]
  [del <address>[/<prefixlen>]]
  [[-]broadcast [<address>]] [[-]pointopoint [<address>]]
  [netmask <address>] [dstaddr <address>] [tunnel <address>]
  [outfill <NN>] [keepalive <NN>]
  [hw <HW> <address>] [mtu <NN>]
  [[-]trailers] [[-]arp] [[-]allmulti]
  [multicast] [[-]promisc]
  [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]
  [txqueuelen <NN>]
  [[-]dynamic]
  [up|down] ...

引數:

  add<地址> 設定網路裝置IPv6的IP地址。
  del<地址> 刪除網路裝置IPv6的IP地址。
  down 關閉指定的網路裝置。
  netmask<子網掩碼> 設定網路裝置的子網掩碼。
  up 啟動指定的網路裝置。

範例:

  1)檢視網路

  

  2)啟用禁用網絡卡

  

  

  3)新增刪除ip

  

  

8)export

export 命令用於設定或顯示環境變數。

export 可新增,修改或刪除環境變數,export 設定變數僅限於當前登陸操作。

語法:

  export [-fn] [name[=value] ...] or export -p

引數:

  -f  代表[變數名稱]中為函式名稱。
  -n  刪除指定的變數。變數實際上並未刪除,只是不會輸出到後續指令的執行環境中。
  -p  列出所有的shell賦予程式的環境變數。

範例:

  1)列出環境變數

  

  2)定義環境變數

  

  注意:以上方式僅在當前可用,若要永久生效可將定義變數命令寫入/etc/profile

Linux系統目錄

Linux目錄命名規則 

  Linux 系統中,檔案和目錄的命名規則如下:
  a.除了字元“/”之外,所有的字元都可以使用,但是應避免使用特殊符號和非列印字元等,避免後續使用產生的不變。在特殊需要情況下訪問或者引用帶用特殊符號的檔案時可將特殊符號用""j將檔名括起來
  b.目錄名或檔名的長度不能超過 255 個字元。
  c.目錄名或檔名是區分大小寫的
  d.檔案的副檔名對 Linux 作業系統沒有特殊的含義

Linux系統目錄及其用途

  1)系統目錄

  

  2)用途描述

    boot:引導檔案存放目錄,核心檔案(vmlinuz)、引導載入器(bootloader, grub)都存放於此目錄
    /bin:所有使用者使用的基本命令;不能關聯至獨立分割槽,OS啟動即會用到的程式
    /sbin:管理類的基本命令;不能關聯至獨立分割槽,OS啟動即會用到的程式
    /lib:啟動時程式依賴的基本共享庫檔案以及核心模組檔案(/lib/modules)
    /lib64:專用於x86_64系統上的輔助共享庫檔案存放位置
    /etc:配置檔案目錄
    /home/USERNAME:普通使用者家目錄
    /root:管理員的家目錄
    /media:行動式移動裝置掛載點
    /mnt:臨時檔案系統掛載點
    /dev:裝置檔案及特殊檔案儲存位置
      b: block device,隨機訪問
      c: character device,線性訪問
    /opt:第三方應用程式的安裝位置
    /srv:系統上執行的服務用到的資料
    /tmp:臨時檔案儲存位置
    /usr: universal shared, read-only data
      bin: 保證系統擁有完整功能而提供的應用程式
      sbin:
      lib:32位使用
      lib64:只存在64位系統
      include: C程式的標頭檔案(header files)
      share:結構化獨立的資料,例如doc, man等
      local:第三方應用程式的安裝位置
      bin, sbin, lib, lib64, etc, share
    /var: variable data files
      cache: 應用程式快取資料目錄
      lib: 應用程式狀態資訊資料
      local:專用於為/usr/local下的應用程式儲存可變資料
      lock: 鎖檔案
      log: 日誌目錄及檔案
      opt: 專用於為/opt下的應用程式儲存可變資料
      run: 執行中的程序相關資料,通常用於儲存程序pid檔案
      spool: 應用程式資料池
      tmp: 儲存系統兩次重啟之間產生的臨時資料
    /proc: 用於輸出核心與程序資訊相關的虛擬檔案系統
    /sys:用於輸出當前系統上硬體裝置相關資訊虛擬檔案系統
    /selinux: security enhanced Linux,selinux相關的安全策略等資訊的儲存位置