星期三, 12月 11, 2024

Virtual memory related


 Linux内存管理之vmap与vmalloc 圖文並茂 , 針對vmap_area

mmap system call 後, 進kernel 的流程 gitmind 自畫

https://elixir.free-electrons.com/linux/v5.10.230/source/mm/util.c 方便追code, 含各版本

AArch64 Linux memory layout



星期一, 12月 09, 2024

用 LD_PRELOAD 替換動態連結的函式庫

用 LD_PRELOAD 替換動態連結的函式庫

https://jasonblog.github.io/note/fcamel/04.html

星期一, 11月 25, 2024

TFAT


Power Fail Safe FAT File System
https://elinux.org/images/5/54/Elc2011_munegowda.pdf 


TI-LFAT and TI-LExFAT :
https://www.researchgate.net/publication/271722839_Design_and_Implementation_of_Log_Structured_FAT_and_ExFAT_File_Systems


KFAT:
https://www.researchgate.net/publication/344581895_KFAT_LOG-BASED_TRANSACTIONAL_FAT_FILESYSTEM_FOR_EMBEDDED_MOBILE_SYSTEMS

TFS4:
  1. https://elinux.org/images/5/54/Elc2011_munegowda.pdf
  2. https://bitsavers.computerhistory.org/components/samsung/flash/TFS4_v1.5.0_Porting_Guide_20060502.pdf




ExFAT

  1. https://events.static.linuxfound.org/images/stories/pdf/lceu11_munegowda_s.pdf





Renesas:. (not Transaction)
TFAT V.4.02 (FatFs R0.13c) for RX family allows to the format feature for SD memory card and USB memory in addition to eMMC and Serial Flash memory.
  1.  https://www.renesas.com/en/document/apn/rx-family-open-source-fat-file-system-m3s-tfat-tiny-module-using-firmware-integration-technology?language=en&srsltid=AfmBOootRvzRHDCmHPSjqznUcYY8yXmaEfAfhSOP7xiem1jOCZ-Jukhm
  2. https://www.renesas.com/en/software-tool/fat-file-system-m3s-tfat-tiny-rx-family#overview

星期二, 10月 08, 2024

github Permission denied (publickey)的简单解决方法

 https://blog.csdn.net/m0_65465945/article/details/134202945


1.执行 ssh-keygen -t rsa -C "你的git注册邮箱",在 .ssh 目录下会生成以下3个文件:

                (1)id_rsa,    (2)id_rsa.pub,    (3)known_hosts

2.在浏览器登录github,在Settings界面点击左边的 SSH and GPG keys,然后复制  id_rsa.pub 文件的内容到SSH keys,点击Add SSH key即可。


3. 执行 ssh -T git@github.com,就能看到成功了。


星期三, 9月 25, 2024

[English Skills] 進階英文 - 天啊!符號們怎麼唸啊?(下)

https://chipersonalbranding.blogspot.com/2017/09/english-skills.html 

https://chipersonalbranding.blogspot.com/2018/04/english-skills.html

pthread, sem_wait, mutex, atmoic, concurrent-programs, sysprog21

 https://www.cnblogs.com/WindSun/p/11441234.html

https://hackmd.io/@sysprog/concurrency-atomics#wait-free-amp-lock-free

星期五, 9月 06, 2024

指定時間的類型

 clock_getres 的第一個參數是指定時間的類型,常見的類型有:

    https://blog.gtwang.org/programming/measure-the-execution-time-in-c-language/2/#google_vignette

    • CLOCK_REALTIME:系統的實際時間(wall-clock time)。
    • CLOCK_REALTIME_COARSE:系統的實際時間(wall-clock time),取得速度快,但精確度校低。
    • CLOCK_MONOTONIC:單調遞增時間(monotonic time),這個時間會非常穩定的持續遞增,不會因為系統時間改變而有變動,適合用於測量程式執行效能。
    • CLOCK_MONOTONIC_COARSE:與 CLOCK_MONOTONIC 類似,取得速度快,但精確度校低。
    • CLOCK_MONOTONIC_RAW:與 CLOCK_MONOTONIC 類似,但是它是從硬體時鐘所讀取出來的值。
    • CLOCK_PROCESS_CPUTIME_ID:程式行程的 CPU time,這個時間包含所有的執行序所花費的時間。
    • CLOCK_THREAD_CPUTIME_ID:程式單一執行序所耗費的時間。

    https://www.cnblogs.com/memo-store/p/5658277.html

     CLOCK_REALTIME,可以理解为wall time,即是实际的时间。用户可以使用命令(date)或是系统调用去修改。如果使用了NTP, 也会被NTP修改。当系统休眠(suspend)时,仍然会运行的(系统恢复时,kernel去作补偿)。

    CLOCK_MONTONIC,是单调时间,即从某个时间点开始到现在过去的时间。用户不能修改这个时间,但是当系统进入休眠(suspend)时,CLOCK_MONOTONIC是不会增加的。

    CLOCK_MONOTONIC_RAW,和CLOCK_MONOTONIC类似,但不同之处是MONOTONIC_RAW不会受到NTP的影响。CLOCK_MONOTONIC会受到NTP的影响并不是说NTP会去修改CLOCK_MONOTONIC,使其不连续,而是说当NTP server 和本地的时钟硬件之间有问题,NTP会影响到CLOCK_MONOTONIC的频率,但是MONOTONIC_RAW则不会受其影响。 其区别可以参考 Difference between MONOTONIC and MONOTONIC_RAW

    CLOCK_BOOTTIME,与CLOCK_MONOTONIC类似,但是当suspend时,会依然增加。可以参考LWN的这篇文章 introduce CLOCK_BOOTTIME

    Lens Calculator and Resolution Simulator

     

    Lens Calculator and Resolution Simulator

    Resolution...


    星期五, 8月 09, 2024

    Secure Boot





    Term:

    1. ARM TrustZone: 一種實現 TEE 的硬件技術。
    2. OP-TEE (Optimized Trusted Execution Environment) : 一種基於 ARM TrustZone 的 TEE 開源實現。
    3. REE (Rich Execution Environment) 是我們日常使用的系統環境,負責運行一般的應用程序。
    4. TEE (Trusted Execution Environment) 是一個安全隔離的環境,用於保護敏感數據和關鍵應用。
    5. CA (Client Application)是運行在 REE 中的應用程序,需要調用 TEE 中的 TA 的服務。
    6. TA (Trusted Application) 是運行在 TEE 中的應用程序,提供具體的安全功能。
    7. privilege mode:
      1. SVC(Supervisor Call): 当用户空间通过系统调用陷入到内核空间的时候,则最终会通过SVC指令进入到内核空间
      2. HVC(Hypervisor Call): 当在ARMv8-A架构下,normal world, EL1尝试去访问 EL2的时候,则会陷入到虚拟化层的,其中是通过HVC指令
      3. SMC(Secure Moniter Call): 用于切换noramal world 和 secure world使用。
    8. ARMv8-A_Architecture_Reference_Manual P.1408
      1. ARMv8-A架構定義了四個例外層級,分別為EL0到EL3,其中數字越大代表特權(privilege)越大。 (Exception Level)
        1. EL0: 無特權模式(unprivileged)
        2. EL1: 作業系統核心模式(OS kernel mode)
        3. EL2: 虛擬機器監視器模式(Hypervisor mode)
        4. EL3: TrustZone® monitor mode
      2. 要提升到較高層級需要透過exceptions(如: 中斷、page faults等)。
        1. EL0 => EL1: SVC (system call)
        2. EL1 => EL2: HVC (hypervisor call)
        3. EL2 => EL3: SMC (secure monitor call)

    ----------------------------------------

    Boot Flow
    bl1: MASKROM 
    bl2: Loader
    bl31: ARM TRUST Firmware 
    bl32: OP-TEE OS
    bl33: U-boot




    Reference:

    1. TrustZone-OPTEE 编译调试笔记
    2. 什麼是OPTEE-OS
    3. TrustZone-OPTEE 编译调试笔记
      1. 代码导读1: REE->TEE 调用, RA->TA 调用
    4. ARM Trusted Firmware分析——启动、PSCI、OP-TEE接口
    5. ARMv8架構介紹




    星期二, 8月 06, 2024

    星期五, 8月 02, 2024

    Cipher & OWASP與UL TAICS

    Reference:

    1.  【臺灣資安大會直擊】網路攝影機資安認驗證的安全要求大公開,高標準助臺產品強化資安功能
    2. PPT 影像監控系統資安認驗證與輔導成果
    3. PKI基礎技術與應用
    4. Linux Kernel 密碼學演算法實作流程
      1. 加解密使用 一對 public/ private 金鑰. 通常使用 public 金鑰加密, private 金鑰解密. 也可以使用 private 金鑰進行信任簽章. public 金鑰進行簽章確認.
    5.  DEKRA (安華) 2024/09/04
      1. 竹科、林口、新店安華資安
      2. SecSBOM, SecSAM, SecDDoS, SecDevice 
      3. RED-DA: (歐盟RED-DA強制性資安法規 2025/08上路)
        1. https://eur-lex.europa.eu/eli/reg_del/2022/30/oj
        2. 3.1, 3.2, Especially 3.3 = RED-DA
          1. EN18031-1, 3.3d 提升網路韌性: 只要無線連網internet, 有線不用, 
          2. EN18031-2, 3.3e 提高個人隱私保護: 收集個資, 地理位置, 交通資料, 個人資料...etc.
          3. EN18031-3, 3.3f 降低金融詐騙風險
        3. 豁免e/f : 道路交通產品...etc.
        4. 顧問服務: 3.3d(40萬). d+e+f(80萬)
        5. 諮詢服務: 14萬
    6. 相關規範:
      1. UL CAP(UL 2900-1)
      2. UL 62368-1 3rd
      3. OWASP V4 Level3
      4. FIPS 140-2/3  
      5. IEC-62443, 4-1  4-2 歐盟 CRA
      6. CC, (Common Criteria)  (CC, ISO/IEC 15408) 
        1. 使用7個評估安全等級(Evaluation Assurance Level, EAL)
      7. 歐盟RED-DA強制性資安法規 2025/08上路

    星期二, 7月 02, 2024

    傅立葉轉換(Fourier Transform,FT)簡介 Python

     https://medium.com/%E9%9B%BB%E8%85%A6%E8%A6%96%E8%A6%BA/%E5%82%85%E5%88%A9%E8%91%89%E8%BD%89%E6%8F%9B-fourier-transform-ft-%E7%B0%A1%E4%BB%8B-7f5458851992

    星期五, 5月 03, 2024

    SDG

     

     Program Dependence Graph

     Control Flow Graphs



    https://github.com/mermaidjs/mermaidjs.github.io/blob/master/stateDiagram.md



    星期二, 2月 20, 2024

    取出so 內function name

      nm -D libmy.so | sed -n 's/^[0-9a-f]* [Tt] \(.*\)/\1/p'


    1. parsing name
      1.  nm -D ./libmy.so | sed -n -e 's/^\([0-9a-f]*\) [Tt] \(.*\)/\2 \U\2/p' | sed -e 's/\([^ ]*\) *\([^_]*\)_.*/,\1, \2, 0},/'| nl|sed -e 's/^/{/'
      2. //{num, name, define, bused}
        1. { 27,   mutual_exclusion_read_unlock, MUTUAL_EXCLUSION_READ, 0},
    2. class out
      1.  nm -D ./libmy.so | sed -n -e 's/^\([0-9a-f]*\) [Tt] \(.*\)/\2 \U\2/p' | sed -e 's/\([^ ]*\) *\([^_]*\)_.*/,\1, \2, 0},/'| nl|sed -e 's/^/{/' |awk -F ", " '{print $2}' | awk '!seen[$0]++'
      2. VPI
    3. enum out
      1. nm -D ./libmy.so | sed -n -e 's/^\([0-9a-f]*\) [Tt] \(.*\)/\2 \U\2/p' | sed -e 's/\([^ ]*\) *\([^_]*\)_.*/,\1, \2, 0},/'| nl|sed -e 's/^/{/' |awk -F ", " '{print $2}' | awk '!seen[$0]++'| awk '{print $0 "=" NR-1 ","}'

      1. CGI=0,
      2. EEPROM=1,
      3. GET=2,
      4. IPC=3,
      5. MQ=4,
      6. MUTUAL=5,
      7. PRINTLOG=6,
      8. PUT=7,