2021年1月31日 星期日

wireshark捕獲/過濾封包

一、捕獲過濾:先在capture option中設定,僅捕獲符合條件的封包,可避免記憶體佔用。

Protocol(協議):
可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
如果沒有特別指明是什麼協議,則預設使用所有支援的協議。

Direction(方向):
可能的值: src, dst, src and dst, src or dst
如果沒有特別指明來源或目的地,則預設使用 “src or dst” 作為關鍵字。
例如,”host 10.2.2.2″與”src or dst host 10.2.2.2″是一樣的。

Host(s):
可能的值: net, port, host, portrange.
如果沒有指定此值,則預設使用”host”關鍵字。
例如,”src 10.1.1.1″與”src host 10.1.1.1″相同。

Logical Operations(邏輯運算):
可能的值:not, and, or.
否(“not”)具有最高的優先順序。或(“or”)和與(“and”)具有相同的優先順序,運算時從左至右進行。
例如,
“not tcp port 3128 and tcp port 23″與”(not tcp port 3128) and tcp port 23″相同。
“not tcp port 3128 and tcp port 23″與”not (tcp port 3128 and tcp port 23)”不同。

  • host 192.168.1.1      //抓取192.168.1.1 收到和發出的封包
  • src host 192.168.1.1    //抓取來源地址192.168.1.1發出的封包
  • dst host 192.168.1.1    //揝取目標地址192.168.1.1收到的封包
  • src host hostname    //根據主機名過濾
  • ether host 80:05:09:03:E4:35    //根據MAC地址過濾
  • net 192.168.1    //過濾網段
  • src net 192.168 //過濾來源網段
  • dst net 192 //過濾目標網段
  • 抓取所有目的地址是192.168.1.2 或192.168.1.3 埠是80 的TCP 資料
    (tcp port 80) and ((dst host 192.168.1.2) or (dst host 192.168.1.3)) 
  • 抓取所有目標MAC 地址是80:05:09:03:E4:35 的ICMP 資料
    (icmp) and ((ether dst host 80:05:09:03:E4:35))
  • 抓取所有目的網路是192.168,但目的主機不是192.168.1.2 的TCP 資料
    (tcp) and ((dst net 192.168) and (not dst host 192.168.1.2))
  • 捕獲主機192.168.1.1 和主機192.168.1.2 或192.168.1.3的通訊
    host 192.168.1.1 and  (192.168.1.2 or 192.168.1.3 )
  • 獲取主機192.168.1.1除了和主機192.168.1.2之外所有主機通訊的封包
    host 192.168.1.1 and ! 192.168.1.2
  • 獲取主機192.168.1.1接收或發出的telnet包,telnet使用tcp 23埠
    tcp port 23 and host 192.168.1.1

二、顯示過濾:完整的復現網路環境再加以過濾,較佔用記憶體

  • 表達式
    • 數據鏈路層:
      • 篩選mac地址為04:f9:38:ad:13:26的數據包:eth.addr == 04:f9:38:ad :13:26
      • 篩選源mac地址為04:f9:38:ad:13:26的數據包:eth.src == 04:f9:38:ad:13:26
      • 抓取所有目標MAC 地址是80:05:09:03:E4:35 的ICMP 資料
      • icmp && eth.dst==80:05:09:03:E4:35
    • 網絡層:
      • 篩選ip地址為192.168.1.1的數據包:ip.addr == 192.168.1.1
      • 篩選192.168.1.0網段的數據:ip contains "192.168.1"
      • 篩選192.168.1.1和192.168.1.2之間的數據包:ip.addr == 192.168.1.1 && ip.addr == 192.168.1.2
      • 篩選從192.168.1.1到192.168.1.2的數據包:ip.src == 192.168.1.1 && ip.dst = = 192.168.1.2
      • ip.addr ==192.168.1.1 //顯示所有與192.168.1.1相關的封包
      • ip.dst==192.168.1.1 //顯示目標是192.168.1.1的封包
      • ip.src ==192.168.1.1 //顯示來源是192.168.1.1的封包
      • ip.src==192.168.0.0/16   //網路過濾,過濾一個網段
    • 傳輸層:
      • 篩選tcp協議的數據包:tcp
      • 篩選除tcp協議以外的數據包:!tcp
      • 篩選端口為80的數據包:tcp.port == 80
      • 篩選12345端口和80端口之間的數據包:tcp.port == 12345 && tcp.port == 80
      • 篩選從12345端口到80端口的數據包:tcp.srcport == 12345 && tcp. dstport == 80
      • 抓取所有目的地址是192.168.1.2 或192.168.1.3 埠是80 的TCP 資料
        tcp.port==80 && (ip.dst==192.168.1.2 || ip.dst==192.168.1.3)
    • 應用層:
      • http中http.request表示請求頭中的第一行(如GET index.jsp HTTP/1.1)
      • http.response表示響應頭中的第一行(如HTTP/1.1 200 OK),其他頭部都用http.header_name形式。
      • 篩選url中包含.php的http數據包:http.request.uri contains ".php"
      • 篩選內容包含username的http數據包:http contains "username"
      • http.request.method == POST
      • http.request.method == GET
      • http.response.code == 200
  • 抓取所有目的網路是192.168,但目的主機不是192.168.1.2 的TCP 資料
    tcp&&ip.dst==192.168.0.0/16&&!(ip.dst==192.168.1.2)
  • 捕獲主機192.168.1.1 和主機192.168.1.2 或192.168.1.3的通訊
    ip.addr==192.168.1.1&&(ip.addr==192.168.1.2||ip.addr==192.168.1.3)
  • 獲取主機192.168.1.1除了和主機192.168.1.2之外所有主機通訊的封包
    ip.addr==192.168.1.1&&!ip.addr==192.168.1.2
  • 獲取主機192.168.1.1接收或發出的telnet包,telnet使用tcp 23埠
    tcp.port==23&&ip.addr==192.168.1.1
  • 過濾特定Protocol,可直接輸入協定名稱,例如http、https、ssl及ssh等。
    • http.request //顯示GET(單純請求下載) or POST上傳資料
    • http and not http.request //顯示網頁資料內容
  • packet lost的查看
    • tcp.analysis.flags tcp.flags.syn == 1
    • tcp包的syn字段為1
    • tco.flags.reset == 1
本文參考自 ITREAD01,語法可參見程式前沿

2021年1月19日 星期二

hping網路測試工具

如果防火牆或運營商屏蔽ICMP的話,hping可以對指定目標端口發起TCP探測,常用的參數:
  • -p 端口號
  • -S 發送TCP的SYN封包
  • -A 發送TCP的ACK封包
  • -a 偽造源IP
  • --flood盡可能快的發送,慎用
  • -c 100000 發送的數據包的數量。
  • -d 120 發送到目標機器的每個數據包的大小。
  • -w 64 TCP窗口大小。
  • --rand-source 使用隨機性的源頭IP地址。還可以使用-a或–spoof來隱藏主機名。

輸入示例:
hping 192.168.3.13 -p 80 -S
hping 192.168.3.13 -p 80 -A
hping 192.168.3.13 -p 80 -S -a 192.168.3.13
hping -c 100000 -d 120 -S -w 64 -p 80 --flood --rand-source 192.168.3.13

2020年12月31日 星期四

ubuntu server備忘

  1. cat /etc/lsb-release 查詢ubuntu版本;uname -r查詢內核版本
  2. timedatectl set-timezone Asia/Taipei 更改時區
  3. 更改主機名稱
    1. sudo hostnamectl set-hostname newNameHere
    2. sudo vim /etc/hosts
    3. sudo reboot
  4. apt-get install net-tools
  5. Debian/Ubuntu 新增開機自動執行程式
    1. runlevel 定義:
      • 0:關機 (Halt)
      • 1:單一使用者模式 (single user mode)
      • 2-5: 多使用者模式 (multi user mode)
      • 6: 系統重啟 (reboot)
    2. service --status-all 開機時預設啟動哪些service (+啟用 -未啟用)
      • systemctl enable service 開機時預設啟動該服務
      • systemctl disable service 開機時預設關閉該服務
      • systemctl start service 開啟服務
      • systemctl stop service 關閉服務
      • systemctl restart service 重新開啟服務
      • systemctl status service 服務狀況
  6. lsof 可以列出系統上每一個行程所開啟的檔案列表
    • -a 列出打開文件存在的行程
    • -c<command> 列出指定command所打開的文件
      • lsof -c vim
    • -g 列出GID行程詳情
    • -d<文件號> 列出占用該文件號的行程
    • +d<目錄> 列出目錄下被打開的文件
    • +D<目錄> 遞歸列出目錄下被打開的文件
    • -n<目錄> 列出使用NFS的文件
    • -i<條件> 列出符合條件的行程。(4、6、協議、:port、 @ip )
      • lsof -i :53
      • lsof -i tcp
      • lsof -i :1-1024
    • -p<行程號> 列出指定行程號所打開的文件
    • -u 列出uid帳號行程詳情
      • lsof -u bj,test,cat 列出多人之行程
  7. apt-get install traceroute
  8. ubuntu20.04的DNS由systemd-resolved管理,伺服器啟動即開啟53port,可更方式
    • vim /etc/systemd/resolved.conf
      將DNSStubListener=yes改為no(#拿掉)
    • mv /etc/resolv.conf /etc/resolv.conf.bak(將舊resolv.con備份)
    • ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
  9. 透過 netplan 設定網路卡 IP
    • /etc/network/interfaces裡面的設定(空的)已轉至/etc/netplan/00-installer-config.yaml
      # This is the network config written by 'subiquity'
      network:
        ethernets:
          enp0s3:
            addresses:
            - 192.168.1.5/24
            gateway4: 192.168.1.1
            nameservers:
              addresses:
              - 8.8.8.8
              search:
              - wles.chc.edu.tw
        version: 2
    • 改完設定後執行:netplan try測試,無誤後執行:netplan apply
  10. ip link show 顯示目前網路執行狀況
    • ip link set 網卡 up / down 啟用網卡或停用網卡
  11. samba成為PDC(參閱samba使用文件)(samba調校)
    1. smbstatus 指令查詢資源連線狀況
    2. 掛載網路硬碟
      smbclient -L ip //IP -U username 列出分享資料夾
      smbmount //IP/資料夾 /掛載點 -o username=帳號 掛載網路硬碟
    3. vim /etc/samba/smb.conf
      [global]
      security = USER
      domain master = Yes
      preferred master = Yes
      os level = 65
      wins support = Yes (搭配DHCP派送wins server為此伺服器)
      server min protocol = NT1
      client min protocol = NT1
      #map to guest = bad user (mark掉,強迫帳號密碼驗證)
      #usershare allow guests = yes (mark掉或no,分享檔案guest不可使用)
      - - 以下可啟用samba符號連結(捷徑)功能 --
      follow symlinks = yes
      unix extensions = no
      wide links = yes
      [homes]
      comment = Home Directories
      read only = No
      create mask = 0664
      directory mask = 0755
      valid users = %S
      browseable = No
  12. chmod g+s 資料夾(參閱
  13. vim /etc/default/useradd
    將SHELL=/bin/sh 改為 /usr/sbin/nologin
  14. 掛載usb硬碟
    • fdisk -l
    • cd /mnt
    • mkdir usb
    • mount -v -t auto -o iocharset=utf8 /dev/sdb1 /mnt/usb
        • -v 顯示資訊
          • -t (auto讓系統自動分辯檔案系統,ext4,vfat,msdos)
            • -o(iocharset=    設定字元編碼,如 big5,utf8)
        • useradd指令只增加帳號不會自動新增home目錄(建議使用useradd -m 帳號)
        • 批次新增使用者(無密碼,csv檔第3欄為帳號、第4欄為密碼,| sh執行)
          awk -F, '{print "useradd -m " $3}' users.csv | sh
        • systemctl status cloud-init-local.service 偵測開機後cloud-init執行情形為active (exited),systemctl用法參見
          • systemctl stop cloud-init-local.service可停止服務,開機後還後再執行
          • touch /etc/cloud/cloud-init.disabled(在/etc/cloud/下增加cloud-init.disabled指令開機不再執行)

        samba4在全局部分的 smb.conf 中添加了以下內容:

        # Socket buffers should be huge:
          socket options = IPTOS_LOWDELAY TCP_NODELAY SO_RCVBUF=65536 SO_SNDBUF=65536
        # Use sendfile for reading files efficiently:
          use sendfile = yes
        # Cache data before flushing to disk:
          write cache size = 2097152
          min receivefile size = 16384
          getwd cache = true

        2020年10月27日 星期二

        1091028資訊研習

        1.  彰化Gsuite的應用
          1. 登入
          2. 進入線上教室(驗證您的身份-確定
          3. 選擇「萬來教師同樂會」線上教室(如果沒有看到此教室可自行加入教室代號 22iq322
            • 檢视成員
            • 嘗試出作業
            • 評分完後發還給同學(同學才看得到成績)
            • 作業全部發還後匯出總成績
          4. 進入線上教室後再點擊Meet連結(在課程設定中開啟讓學生看見
            • 按「立即加入」
            • 請事前準備麥克風(必備)、網路攝影機(選配)
            • 開啟電子書(如果學生在家上課,教師利用電子書教學)
            • 在Meet右下角,點擊「立即分享螢幕畫面」(可選擇單視窗--電子書)
            • 學生有問題,可點選Meet上方「即時通訊」圖示,將問題,打字出來。
            • 點擊下方話筒圖示,即可停止通話。
          5. 萬來教師彰化Gsuite帳號一覽表(請先登入彰化Gsuite)
            • 開啟試算表(例如填寫第二次月考成績優良學生名單)
            • 開啟「共用」,設定可編輯的使用者(例如1~6年級導師)
        2. 智慧教室問卷填報(三1、四~六年級導師)
        3. 上傳一件教案至「教育大市集」平台,以各校既有教案為藍本,修改為教學過程中能運用智慧教室設備即可

        2020年10月21日 星期三

        偵測cpu的方式

         linux系統

        1. 實體cpu個數
          • grep 'physical id' /proc/cpuinfo | sort -u|wc -l
        2. 核心數量
          • grep 'core id' /proc/cpuinfo | sort -u | wc -l
        3. 執行緒數
          • grep 'processor' /proc/cpuinfo | sort -u | wc -l
        註:sort -u 排序只顯示單一紀錄, wc -l 計算文件行數

        windows系統
        可在 工作管理員 / 效能 / 虛擬處理器數量(執行緒數)

        2020年8月4日 星期二

        wget使用方法

        啟動:
          -V,  --version           顯示 Wget 版本並離開
          -h,  --help              印出這段說明文字
          -b,  --background        啟動後進入背景作業
          -e,  --execute=指令      執行 ‘.wgetrc’ 形式的指令

        紀錄訊息及輸入檔案:
          -o,  --output-file=檔案    將紀錄訊息寫入<檔案>中
          -a,  --append-output=檔案  將紀錄訊息加入<檔案>末端
          -d,  --debug               印出偵錯訊息
          -q,  --quiet               安靜模式 (不輸出訊息)
          -v,  --verbose             詳細輸出模式 (預設使用這個模式)
          -nv, --non-verbose         關閉詳細輸出模式,但不啟用安靜模式
          -i,  --input-file=FILE     download URLs found in local or external FILE.
          -F,  --force-html          以 HTML 方式處理輸入檔
          -B,  --base=URL            resolves HTML input-file links (-i -F)
                                     relative to URL.

        下載:
          -t,  --tries=次數              設定重試次數 (0 表示無限)
               --retry-connrefused       即使連線被拒仍然會不斷嘗試
          -O   --output-document=檔案    將資料寫入指定檔案中
          -nc, --no-clobber              不覆寫已經存在的檔案
          -c,  --continue                繼續下載已下載了一部份的檔案
               --progress=方式           選擇下載進度的表示方式
          -N,  --timestamping           除非遠端檔案比較新,否則不下載遠端檔案
          -S,  --server-response         顯示伺服器回應訊息
               --spider                  不下載任何資料
          -T,  --timeout=秒數            指定所有時限為同一數值
               --dns-timeout=秒數        指定 DNS 查找主機的時限
               --connect-timeout=秒數    指定連線時限
               --read-timeout=秒數       指定讀取資料的時限
          -w,  --wait=秒數               每次下載檔案之前等待指定秒數
               --waitretry=秒數          每次重覆嘗試前稍等一段時間 (由 1 秒至指
                                         定秒數不等)
               --random-wait             每次下載之前隨機地指定等待的時間
               --no-proxy                禁止使用代理伺服器
          -Q,  --quota=大小              設定下載資料的限額大小
               --bind-address=位址       使用本機的指定位址 (主機名稱或 IP) 進行連線
               --limit-rate=速率         限制下載速率
               --no-dns-cache            不記憶 DNS 查找主機的資料
               --restrict-file-names=OS  只使用作業系統能夠接受的字元作為檔案字元
               --ignore-case             ignore case when matching files/directories.
          -4,  --inet4-only              只會連接 IPv4 地址
          -6,  --inet6-only              只會連接 IPv6 地址
               --prefer-family=FAMILY    優先採用指定的位址格式,可以是 IPv6、IPv4
                                         或者 none
               --user=用戶               指定 ftp 和 http 用戶名稱
               --password=PASS           指定 ftp 和 http 密碼
               --ask-password            prompt for passwords.
               --no-iri                  turn off IRI support.
               --local-encoding=ENC      use ENC as the local encoding for IRIs.
               --remote-encoding=ENC     use ENC as the default remote encoding.
        目錄:
          -nd  --no-directories           不建立目錄
          -x,  --force-directories        強制建立目錄
          -nH, --no-host-directories      不建立含有遠端主機名稱的目錄
               --protocol-directories     在目錄中加上通訊協定名稱
          -P,  --directory-prefix=名稱    儲存檔案前先建立指定名稱的目錄
               --cut-dirs=數目            忽略遠端目錄中指定<數目>的目錄層
        HTTP 選項:
               --http-user=用戶        指定 HTTP 用戶名稱
               --http-passwd=密碼      指定 HTTP 密碼
               --no-cache              不使用伺服器中的快取記憶資料
               --default-page=NAME     Change the default page name (normally
                                       this is `index.html'.).
          -E,  --adjust-extension      save HTML/CSS documents with proper extensions.
               --ignore-length         忽略 ‘Content-Length’ 標頭欄位
               --header=字串           在連線資料標頭中加入指定字串
               --max-redirect          maximum redirections allowed per page.
               --proxy-user=用戶       設定代理伺服器用戶名稱
               --proxy-password=密碼   設定代理伺服器密碼
               --referer=URL           在 HTTP 請求中包括 ‘Referer: URL’ 標頭
               --save-headers          將 HTTP 連線資料標頭存檔
          -U,  --user-agent=AGENT      宣稱為 AGENT 而不是 Wget/VERSION
               --no-http-keep-alive    不使用 HTTP keep-alive (持久性連線)
               --no-cookies            不使用 cookie
               --load-cookies=檔案     程式啟動時由指定檔案載入 cookie
               --save-cookies=檔案     程式結束後將 cookie 儲存至指定檔案
               --keep-session-cookies  會載入和儲存暫時性的 cookie
               --post-data=字串        使用 POST 方式送出字串
               --post-file=檔案        使用 POST 方式送出檔案內容
               --content-disposition   honor the Content-Disposition header when
                                       choosing local file names (EXPERIMENTAL).
               --auth-no-challenge     send Basic HTTP authentication information
                                       without first waiting for the server's
                                       challenge.

        HTTPS (SSL/TLS) 選項:
               --secure-protocol=PR     選擇安全通訊協定,可以使用 auto, SSLv2,
                                        SSLv3 或 TLSv1
               --no-check-certificate   不檢驗伺服器的憑證
               --certificate=檔案       指定用戶端的憑證檔案名稱
               --certificate-type=類型  用戶端憑證的類型,可以是 PEM 或 DER
               --private-key=檔案       指定私鑰檔案
               --private-key-type=類型  私鑰的類型,可以是 PEM 或 DER
               --ca-certificate=檔案    載有憑證管理中心 (CA) 簽章的檔案
               --ca-directory=目錄      載有憑證管理中心 (CA) 簽章的目錄
               --random-file=檔案       作為 SSL 隨機數產生程序 (PRNG) 的來源數據檔案
               --egd-file=檔案          產生隨機數據的 EGD socket 檔案名稱

        FTP 選項:
               --ftp-user=用戶         指定 FTP 用戶名稱
               --ftp-password=密碼     設定 FTP 密碼
               --no-remove-listing     不刪除 ‘.listing’ 檔案
               --no-glob               不展開有萬用字元的 FTP 檔名
               --no-passive-ftp        不使用「被動」傳輸模式
               --retr-symlinks         在遞迴模式中,下載鏈結指示的目標檔案
                                       (不包括目錄)

        遞迴下載:
          -r,  --recursive          遞迴下載
          -l,  --level=數字         最大搜尋深度 (inf 或 0 表示無限)
               --delete-after       刪除下載後的檔案
          -k,  --convert-links      make links in downloaded HTML or CSS point to
                                    local files.
          -K,  --backup-converted   將檔案 X 轉換前先備份為 X.orig
          -m,  --mirror             相等於 -N -r -l inf --no-remove-listing 選項
          -p,  --page-requisites    下載所有顯示網頁所需的檔案,例如圖片等
               --strict-comments    用嚴格方式 (SGML) 處理 HTML 注釋。

        遞迴下載時有關接受/拒絕的選項:
          -A,  --accept=清單               接受的檔案樣式,以逗號分隔
          -R,  --reject=清單               排除的檔案樣式,以逗號分隔
          -D,  --domains=清單              接受的網域,以逗號分隔
               --exclude-domains=清單      排除的網域,以逗號分隔
               --follow-ftp                跟隨 HTML 文件中的 FTP 鏈結
               --follow-tags=清單          會跟隨的 HTML 標籤,以逗號分隔
          -G,  --ignore-tags=清單          會忽略的 HTML 標籤,以逗號分隔
          -H,  --span-hosts                遞迴模式中可進入其它主機
          -L,  --relative                  只跟隨相對鏈結
          -I,  --include-directories=清單  準備下載的目錄
          -X,  --exclude-directories=清單  準備排除的目錄
          -np, --no-parent                 不進入上層的目錄

        2020年3月23日 星期一

        libreoffice資料處理

        一、重覆資料單一化(只能呈現單一欄位)
        1. 使用base資料庫來處理,例如:
          1. select DISTINCT 欄位 from 資料表
          2. select 欄位 from 資料表 group by 欄位(資料單一化的欄位)
        2. 只有使用cale試算表,土法煉鋼:以家長名單為例
          1. 監護人欄位排序
          2. 監護人欄位儲存格與上一筆儲存格做比較,例如:IF(D2=D1,0,1),相同者為0;不同者為1
          3. 將比較結果複製、選擇性貼上為數值(值)
          4. 將比較結果排序,將0的資料列刪除
          5. 班級座號排序
         二、base資料庫(參見教學資料)
        1. 差集運算
          SELECT * FROM 母群體資料表(單一) WHERE 關鍵欄位 NOT IN ( SELECT 關鍵欄位 FROM 子群體資料表 )
        2. 聯集運算
          SELECT 欄位1,欄位2 FROM 資料表1 UNION SELECT 欄位1,欄位2 FROM 資料表2
        3. 交集運算
          SELECT 欄位1,欄位2 FROM 資料表1 INTERSECT SELECT 欄位1,欄位2 FROM 資料表2
        4. 左外部關聯
          SELECT table_column1, table_column2...
          FROM table_name1
          LEFT JOIN table_name2
          ON table_name1.column_name=table_name2.column_name;