資安工具入門
目的最近開始接觸資安議題,希望產出的線上服務能有資安保護,經過一段時間研究後,深覺資安這話題很廣泛也很深,很難一夕之間到位,因此需要分階段導入,在初期階段可以導入開源工具進行自動化檢測並產生報告,透過這些報告在進行人工修正。
資安類型一. 弱點掃描透過自動化掃描軟體工具偵測作業系統與軟體系統的弱點,可利用工具在較短的時間內檢查出漏洞,其內容包含WASP TOP 10等常見弱點檢測。
OWASP0(Open Web Application Security Project,開放網路軟體安全計畫)是一個開放社群、非營利性組織,全球目前有82個分會,主要目標是研議協助解決網路軟體安全之標準、工具與技術文件,長期致力於協助政府或企業瞭解並改善應用程式的安全性。美國聯邦貿易委員會(FTC)更強烈建議所有企業務必遵循OWASP所發佈的十大網路弱點防護守則,美國國防部亦將此守則列為最佳實務,就連國際信用卡資料安全技術PCI標準更將其列為必要元件。
OWASP Top10 開放網路軟體安全計畫十大弱點:
A01 權限控制失效
A02 加密機制失效
A03 注入式攻擊
A04 不安全設計
A05 安 ...
K-means clustering 演算法研究
研究目的因公司需要對一些內部資料進行分析,想透過KMC演算法來找出一群資料裡面的主分類。借重scikit-learn套件提供各種機器學習的工具(包含KMC演算法),進行實作。
12# 安裝scikit-learn套件pip install -U scikit-learn
建立18組測試集合(3組調變參數:樣本數量、特徵數量、分群數量)進行測試。
1234567891011121314151617181920212223242526test_case_configs = ( {'sample_size': 100, 'sample_features': 2, 'cluster_num': 6}, {'sample_size': 100, 'sample_features': 10, 'cluster_num': 6}, {'sample_size': 100, 'samp ...
透過MQTT監測Docker即時日誌訊息
研究目的當程式委外開發,程式碼部署是由公司內部進行,這時候外包公司如果想要相關日誌時,通常都會由公司內部進行日誌匯出後,再交給外包商。這樣的流程缺點是日誌不即時與需要每次耗費人力進行匯出,但如果有一個工具,可以讓外包商在不登入公司主機狀況下,可即時觀看到日誌,將會加快外包商快速除錯與節省公司內部匯出處理成本。
實作方法
透過Rabbimq架設MQTT Broker。
透過Bash script監測伺服器裡的Docker容器即時日誌。
透過Golang實作一個client端的應用程式。Golang因為可以編譯各種平台執行檔。
服務器監測腳本
首先先安裝mosquitto client工具,透過工具可直接發送訊息到MQTT Broker。
1apt install mosquitto-clients
建立一個腳本為monitor_docker_log.sh
1234567891011121314151617181920#!/bin/bashCONTAINER_NAME="監測的容器名稱"MQTT_BROKER="你的mqtt broker網址或IP&quo ...
Mac終端機透過OpenAI進行翻譯小工具
目的可以用在終端機使用簡短指令直接翻譯剪貼簿內容,同時可自行判斷是翻譯成英文或中文。
實作
透過shell_gpt開源專案,可以讓終端機透過指令呼叫openAI。必需在OpenAI申請一把金鑰。
一次翻譯成本約台幣0.01元,算是滿便宜的,但實際上還是會根據實際情況翻譯內容長度而定。
原始碼12345678910111213141516171819202122232425262728293031323334353637383940414243444546t() { # Translate to english or chinese value=$1 if [ -z "$value" ]; then value=$(pbpaste) fi if [ -z "$value" ]; then echo "請輸入要翻譯的內容" return fi echo "$value" if [[ $value =~ [\p{Han}] ]]; t ...
Mac終端機自建單字庫練習
目的想透過終端機學習英文,可以讓終端機從自己詞庫隨機列出相關英文詞庫資訊,並且可以重覆發音。在零碎時間中隨時練習英文。
實作這次實作使用的技術如下:
say指令: Mac內建指令say可進行英文發音,缺點是聲音太機器聲~~
ChatGPT: 透過ChatGPT生成相關領域英文與翻譯,如下: 請列出100個機器學習相關技術名詞或片語,並以cvs list格式顯示,例如 machine learning, 機器學習, 簡短功能描述
Youtube: 終端機產生https://youtube.com/results?search_query=Epoch教學一個連結,可以直接透過YT搜尋相關教學內容。
Python: 透過python解析CSV文檔進行循環資訊列印與呼叫英文發音。
Bash: 透過Bash縮短成容易記憶與簡短指令。另如輸入le__machine_learning或l1時,就會資料在終端機顯次六個隨機英文練習。
原始碼
learn_english.py: 主程式1234567891011121314151617181920212223242526272829 ...
Docker備忘錄
Python3.6.8使用各種系統編譯的映像檔比較
系統
Ubuntu 22.04 (build python source code)
Stretch
Slim Stretch
Alpine 3.10
Alpine 3.10 with Multi-Stage Build
映像大小
996M
1006MB
380MB
336MB
222MB
Ubuntu 22.04 LTS(Jammy Jellyfish)基于Debian 12(bookworm)。
Ubuntu 21.04(Hirsute Hippo)基于Debian 11(bullseye)。
Ubuntu 20.04 LTS(Focal Fossa)基于Debian 10(Buster)。
Ubuntu 18.04 LTS(Bionic Beaver)基于Debian 9(Stretch)。
Ubuntu 16.04 LTS(Xenial Xerus)基于Debian 8(Jessie)。
slim: Slim鏡像是基於官方鏡像(如Debian或Alpine)構建的鏡像,但已經去除了大多數不必要的組件和 ...
Obsidian備忘錄
自動產生每週報表腳本1234567891011121314151617181920212223242526272829//dataviewjs/**情境:在Diary資料夾新增每日誌,日誌以2023-03-0.md為檔案命名,日誌內容以Header作為個專案代號,希望能透過腳本指定日期與專案代號進行一週報表輸出。**/var date = new Date("2023/3/1");//從3/1號為開始天數var range = 7//預計輸出七天工作日誌var proCode = "LOV3" //專案代號var fileItems = [] //日誌檔名var count = 0while (count<7){ count++ date.setDate(date.getDate() + 1) fileItems.push(date.toISOString().split('T')[0])}fileItems.forEach((date)=>{ let ...
GitLab備忘錄
小常識
GitLab Admin預設登入帳號admin@example.com,密碼則需要進入Console進行修改。
使用Ruby on Rails語言框架。
InstallUse Docker(推薦!)建議安裝商業授權版本gitlab/gitlab-ee:latest,以便未來購買商業授權即可使用進階功能。(未購買授權,可使用功能與社群版本一樣)
1234567891011sudo docker run --detach \ --hostname {your ip} \ --publish 8143:8143 --publish 8180:8180 --publish 8122:22 \ --name gitlab \ --restart always \ --env GITLAB_OMNIBUS_CONFIG="external_url 'http://{your ip}:8180';" \ --volume /data/gitlab/config:/etc/gitlab:Z \ -- ...
git commit template plugin for IDEA IDE
Commit Message 規範組成12345678910111213141516171819202122232425262728# 組成Header: <type>(<scope>): <subject> - type(必填): 代表commit的類別:feat, fix, docs, style, refactor, test, chore。 - scope(非必填): 代表commit影響的範圍,例如資料庫、控制層、模板層等等,可視專案需要調整。 - subject(必填): 代表此commit的簡短描述,不要超過 50 個字元,**結尾不要加句號**。Body:(非必填) * 交付詳細描述,可以分成多行,每一行不要超過72個字元。 * 說明程式碼變動的項目與原因,還有與先前行為的對比以及參考連結。Footer: - Closed issues(非必填): 填寫任務編號。 - Breaking changes(非必填): 記錄不兼容的變動,以『BREAKING CHANGE:』開頭,後面是對變動的描述、以及變動原因和遷移方法。# type ...
後端事務常用指令
搜尋關鍵字123456# -i, --ignore-case ignore case distinctions,忽略大小寫# -n, --line-number print line number with output lines,顯示行號# -r, --recursive recursive,遞迴# SSLMMS/**/migrations/*.py" 搜尋SSLMMS底下任何目錄裡的migrations目錄含有所有.py檔$ grep -inr 'streelamp' /tmp/service_django/SSLMMS/**/migrations/*.py
替換搜尋關鍵字123456789# grep:# -l, 只顯示檔名路徑# xargs: 管線傳遞參數,將上一個指令輸出解析成參數傳遞給下一個指令,此範例是將grep找到的檔案路徑傳給sed# sed:# -i, 直接修改讀取的檔案內容,而不是由螢幕輸出。(可先預覽過替代結果再把這參數加入)# "s/old/new/g", s:替換, g:全域替換,將old替換成n ...