0%

簡介

南京沁恒 (WCH) 製造的 USB 轉 RS-232,Uert 晶片,在國際上不好買 有很多廠商選用 中文文件(比英文完整) 英文文件

型號選擇

使用 CH341 的驅動 CH341SER CH341 支援轉換 i2c,spi

rclone Rclone 是一个用于管理云存储上的文件的命令行程序 Windows 上設定檔在 C:\Users\eric2_chen\AppData\Roaming\rclone\rclone.conf --interactive 在執行操作前先詢問,通常在錯誤復原中使用

config

1
rclone config

命令行互動式設定遠端

ls

1
2
rclone ls note:
rclone ls --max-depth 1 note: 

列出遠端資源,遠端一定要加冒號 note:,會遞迴的列出檔案樹上的全部資源 --max-depth 1 用以限制只列一級資料夾

簡介

檔案同步 目前有三種方法

  1. 客戶端將文件的內容傳送到伺服器。
  2. 伺服器執行三向合併以提取使用者的變更並將其與其他使用者的變更合併。
  3. 伺服器將文件的新副本傳送給客戶端

半雙工系統,Subversion 使用此方法

目標

取得一份 markdown 的 ast,在遍歷樹結構時同時修改節點值,不會增刪節點,最後在轉換回 markdown 具體專案需求請見 rfmswg 最基本要支援 common markdown,註腳可選

結論

只有 mistune 可以做到

執行期尋找 shared library 的流程

  1. 若 shared library 名稱內有 “/”,表示它是路徑,直接用這個路徑找
  2. 若 executable 內有定義 DT_RPATH 沒定義 DT_RUNPATH,從 DT_RPATH 列的目錄裡找
  3. 從 LD_LIBRARY_PATH 列的目錄裡找
  4. 從 DT_RUNPATH 列的目錄裡找
  5. 從 ldconfig 產生的 cache 內找 (/etc/ld.so.cache)
  6. 從 OS 的預設位置找: 先找 /lib 再找 /usr/lib

Tool

1
nm -Du /bin/ls  

列出未定義需要外部提供的 symbol

VariadicFunction

1
2
3
4
5
6
7
8
#include <stdarg.h>  
void error(const char *fmt, ...)  
{  
va_list argp;  
va_start(argp, fmt);  
vfprintf(stderr, fmt, argp);  
va_end(argp);  
}  

...表達接受可變數量的參數,va_list argp 是一個指向第一個可變參數的指針,無法知道長度及型態, 沒有可移植 ) 的方法把可變數量的參數傳給下一個可變數量的參數的函式,有一些相依CPU的 方法 ,有部分可變數量參數的函式也提供接收 va_list 的版本如 vprintf, vfprintf, vsprintf

簡介

一個由 8 支指令組成的圖靈完備程式語言

  • &gt; Increment the pointer.
  • &lt; Decrement the pointer.
  • + Increment the byte at the pointer.
  • - Decrement the byte at the pointer.
  • . Output the byte at the pointer.
  • , Input a byte and store it in the byte at the pointer.
  • [ Jump forward past the matching ] if the byte at the pointer is zero.
  • ] Jump backward to the matching [ unless the byte at the pointer is zero. 有一個有限長度的連續記憶體,及一個指針來表明當前指令要操作的區塊

BrainFuck Programming Tutorial by: Katie

簡介

紀錄知道的漏洞

Linux

CVE-2024-1086

Linux netfilter nf_tables元件中存在釋放後使用漏洞,可被利用來實現本機權限提升。nf_hook_slow() 被二次釋放

Serial Device

RS-485

接口洞很多,但只需要兩條線,原則上地線不用接,半雙工

指令

原則上 Serial Device 會出現在 /dev/ttyS[數字] 路徑上

1
setserial -g /dev/ttyS[0123]

列出串口晶片名及中斷

1
dmesg | grep tty
1
stty -F /dev/ttyS0 -a

顯示該 Serial Device 的連線設定資料,其他應用程式連接時也可能會更改

簡介

用於 IOT 裝置的消息傳送協議,可在不穩定的網路下運作

Publish Subscribe

Publisher 向一個 topic 發布消息, Subscriber 從訂閱的 topic 中接收消息,在同一個 topic 中 Publisher 和 Subscriber 都可以有多個客戶端同時使用

Topic

  • UTF-8 string
  • Germany/Bavaria/car/2382340923453/latitude/ 表示層級
  • 訂閱時可以使用通配符,+ 選取同一層級,# 選取同一層級及往下所有層級,如# 表示機器上所有的 topic, Topic 區分大小寫
  • 客戶端在發布或訂閱主題之前不需要建立所需的主題。代理接受每個有效主題,無需任何事先初始化。
  • 前綴 $SYS/ 表示 broker 內部狀態,不會被 # 選取
  • 雖然可以,但不建議斜線開頭

QOS

  • 0 只傳送一次,射後不理
  • 1 自少傳送一次,訊息可能會重複
  • 2 一定只傳送一次 QOS 會引響 broker 與客戶端的封包發送量 QOS,封包數 0,1 1,2 2,4 Publisher 和 Subscriber 可以使用不同的 QOS

持久化

  • broker 會記住 Subscriber 的訂閱,當同一個 ClientId 重新連線時
  • 當 QOS 為 1 和 2 時維持尚未確認消息
  • ClientId 應特定於每個客戶和經紀商。如果代理不需要維護任何狀態,則 MQTT 3.1.1 允許使用空 ClientId。但是,此連線必須將 clean_session 標誌設為 true,否則代理將拒絕該連線。
  • clean_session 為 True 時表示不需要持久化

Retain

原則上,broker 不會保留 Publish 的訊息,訊息要不被傳送給 Subscriber 要不被拋棄,Publish 的 Retain 選項會讓 broker 保留最後一則訊息

cherrypy cookie

概述

他是用python的simple cookie,所以Morsel屬性該有的多有(屬性要小寫),但她不能刪除只能設程過期

1
2
cherrypy.response.cookie[key] = value #設質  
cherrypy.response.cookie[key]["max-age"] = 60*60*8 #有效期8小時
1
2
cie = cherrypy.request.cookie.keys() #取得所有cookie  
uid = cherrypy.request.cookie["uid"].value

設定跟讀取在不同物件上
在cherrypy 18.5 上測試

交換openssh登入金鑰

  • 必須先做一把RSA出來(我只用puttygen讀出來的格式試過)
  • 公鑰放到遠端主機要登入使用者的家目錄 ~/.ssh/authorized_keys
  • ~/.ssh/authorized_keys 必須是 600
  • ~/.ssh 必須是 700
  • 使用者級組別必須與登入名稱一致

以上在cent os7 及 6上試過