2022年12月18日 星期日

利用GIMP在6x4照片上布置2吋大頭照

想要沖洗便宜的大頭照嗎? 可考慮在6x4照片上放置8張2吋大頭照,然後在超商把照片列印出來。現在全家列印一張是6元,換言之每張大頭照的列印成本是0.75元。不過,有些證件照,如護照等有特殊的尺寸要求,因此在將大頭照放在6x4照片上前,需先進行處理。以下是利用GIMP來在6x4照片上放置大頭照的步驟說明:

步驟一:

先拍照。照片可自己用相機或手機拍。最好在素面牆前拍。

步驟二:

由於沖洗照片的解析度為300pixels/in,若照出的照片解析度不是300pixels/in,可利用Image/Scale Image來先調整解析度。

S1-scale-image


步驟三:

調整規定尺寸。護照照片規定:「人像自頭頂至下顎之長度介於3.2至3.6公分(亦即臉部佔據整張相片面積的70~80%)」,因此先要調整頭頂至下顎之長度,使其符合規定。

首先,選擇Tools/Measure或Toolbox內的量規圖案。
然後在左下角單位處,選擇適合的單位,如mm。
接著量測照片上頭頂至下顎之長度。在下例中量測出的值為12.4 mm,小於3.2至3.6公分,所以需要調整。


S2-adjust-size

然後,用計算機計算出調整比例。在本例中,調整比例為:34/12.4=2.7419


S3-calculate-rate

接著,再做一次Scale Image。先將單位改變成%,然後直接將計算數值輸入Width和Height欄中。確認resolution(解析度)未改變後,按下Scale,即完成尺寸調整。

S4-rescale-image

步驟四:

接下去製作2吋大頭照。首先按下Toolbox內的方形選擇工具(Rectangle Select Tool)。然後,根據兩側尺標,選擇寬3.5公分、高4.5公分的範圍。將游標放置在框線上,可調整框線位置,直到選擇出滿意的2吋大頭照。

S5-select-2inch-image

步驟五:

大頭照部分選出後。接著,選擇Select/Invert。之後,按下del鍵將選擇以外的部分刪除。

S7-6x4-image

步驟六:

此時照片仍是原大小,故要把它縮小成2吋照。
用方形選擇工具(Rectangle Select Tool)再選擇2吋照,接著選擇Image/Crop to Selection,將原照片縮減成2吋照

S7-0-crop-image

步驟七:

接下去是在2吋照片上形成白色邊。首先,選擇Select/Border,把Border Selection視窗叫出。然後,利用Border Selection視窗選擇白邊的寬度,於此例中為0.5 mm。

S11-1-boder

S11-2-boder

白框範圍界定後,接著選擇Toolbox中前景顏色(選擇黑白兩相疊方塊中之黑色方塊)。然後,利用跳出的Change Foreground Color視窗,將前景顏色改變成白色。一種改變方式是將255輸入RGB欄內。

S11-3-boder

然後選擇Bucket Fill Tool,在定義框內塗上白色。若無法完全變白,可用其他如paintbrush tool塗白。

S11-4-boder


步驟八:

然後,開啟新檔,並將影像大小設定為寬6吋、高4吋,並在Advanced Options下,將解析度調整為300 pixels/in。此步驟是建立6x4照片。

S7-6x4-image

步驟九:

之後,再選擇View/Show Grid與View/Snap to Grid,以顯示Grid,以及利用Grid輔助照片的排列。
S7-1-show-grid

S7-2-snap-grid

步驟十:

選擇Image/Configure Grid,叫出Configure Grid的視窗。在Spacing下Width及Height欄(mm單位旁)內分別輸入35與45,即2吋照片的寬與高。然後在Offset處調整Grid的位置,讓8個方格儘量在中央位置。

S8-configure-grid
S9-form-grid

步驟十一:

回到2吋照片的視窗,用Select/All選擇2吋照片。

S11-select-all


之後,選擇Edit/Copy,將照片複製到剪貼簿上。


S12-copy-image

步驟十二:

將剪貼簿內的照片貼在6x4照片上。

S13-paste-image

接著,使用Move Tool將2吋照片移到一方格內。重複貼和移動的步驟,直到 8個方格都放置2吋照片。之後,將6x4照片存成jpeg檔。最後,把jpeg檔存在USB。最後,將USB插入便利商店的機器上,選擇檔案、列印數量、拿單據付錢、再回到機器旁等照片洗出來,即完成照片沖洗。

S14-move-image

S13-move-image

S14-save-image 

資料來源: https://takeson.blogspot.com/2014/07/gimp6x42.html

2022年12月12日 星期一

拒絕受駭!美國推行「軟體物料清單」公開軟體組成,採購更安心

 

拒絕受駭!美國推行「軟體物料清單」公開軟體組成,採購更安心

開源社群早在做的事,政府終於跟上!資安重災區美國推動將「BOM 物料清單」管理概念延伸至軟體採購,公開標明軟體內程式碼組成與來源,以利抓出潛在資安風險。

作者:林冠廷 | 編輯:OCF Lab|


最近一年來,全球許多政府機關、大型企業所用的軟體都遭受嚴重的駭客攻擊。
2020 年底駭客入侵 SolarWinds 公司 Orion Platform 的產品,美國商務部、財政部、太空總署等數千個政府機關和五百大企業都難逃一劫。今年又發生 Microsoft Exchange 電子郵件伺服器漏洞遭攻擊、美國最大燃油廠商 Colonial Pipeline 被勒索軟體攻擊等事件,讓各國公私部門的資安人員人心惶惶。面對這麼多起重大的資安事件,該如何加強防護措施,把關軟體安全?資安專家和美國白宮皆指向一個解方:把軟體的組成透明化

建立軟體版的食品標示,用透明性對抗資安風險

今年五月,因應層出不窮的資安危機,美國白宮發出行政命令,要求所有向聯邦政府出售的軟體都必須提供「軟體物料清單」(Software Bill of Materials,簡稱 SBOM)。就像是食品標籤上的成分標示,載明軟體的組成、內部模組和完整的供應鏈;更具體來說,根據美國商務部和國家電信暨資訊管理局(NTIA)的公告,合格的 SBOM 在資料欄位上,至少必須涵蓋軟體內所有成分的供應商、名稱、辨識碼、版本、彼此間依賴關係、作者等內容。

SBOM 雖然無法立刻消除資安風險,但透過提高軟體的透明度,至少能讓買家在採購時做出安全性更高的選擇。舉例來說,若軟體中的某些模組是已知有資安風險的老舊版本,專家可以透過 SBOM 及早發現此潛在風險,要求軟體商改善或另覓它選。此外,有了格式經統整的 SBOM,也能讓開發者不須費力分辨軟體組成內容,對開發各式工具也許會更有助益。

為使這套標籤系統發揮最大效益,美國政府也要求各軟體廠商的 SBOM 使用標準化、機器可讀的資料格式,並支援跨軟體的自動化比對。如此一來,便能避免各家軟體廠商各自使用自己的 SBOM 格式,但卻無法交互檢驗彼此成分。除此之外,美國政府也設下即時更新、對於未知的部分誠實以告、易於取得資料等規範。一切都是為了讓軟體變得更透明。

深耕多年,開源社群已準備貢獻一臂之力

儘管 SBOM 並不針對開放原始碼的軟體,但是一般軟體內部組成之所以複雜極高,很大程度上也是因為開源軟體開放使用的特性,使得開發者可以自由組合來源不同的程式碼。故早在美國白宮發布行政命令多年以前,開源社群就已經積極制定 SBOM 資料格式的和開發相關工具。如同 Linux 基金會 Open Source Supply Chain Security 計畫執行長 David Wheeler 所說:「一直以來,我們的社群都致力創造相關的標準和工具,有助於各個組織因應最新的行政命令要求」。

過去十年,Linux 基金會投入制訂 SPDX(Software Package Data Exchange)標準,這個標準直接符合了白宮對於 SBOM 的格式要求,目前正在等待國際標準化組織(ISO)審核通過以成為國際標準。除此之外,Linux 還發起產業界應用 SPDX 狀況的調查、提供教育訓練,和開發 SPDX SBOM generator​​YoctoZephyr 等工具幫助組織自動產出 SBOM。此外,Linux 的 OpenChain 開源合規計畫中,除了協助企業在開源軟體應用上符合規範,也要求需有 SBOM 的管理流程。
由此來看,美國政府要求 SBOM 的作法,可說是回應了開源社群長期的努力;SBOM 破除軟體黑箱、把成分公諸於世的概念,也與開放原始碼的精神不謀而合。在台灣,雖然 OpenChain 台灣社群已開始關注 SBOM 議題,政府尚未有明確的立場或政策方針,僅食藥署針對醫療器材有相關的告示。在近年中國駭客日益嚴重的威脅下,台灣政府或許該更積極回應國際趨勢與開源社群的訴求,提升公部門軟體的透明性,以杜絕成為資安「受駭者」損及全民權益。


本文章授權條款採 創用 CC BY (姓名標示) 4.0


參考資料:
NTIA Releases Minimum Elements for a Software Bill of MaterialsWhat is an SBOM?
Linux Foundation Announces Software Bill of Materials (SBOM) Industry Standard, Research, Training, and Tools to Improve Cybersecurity Practices
What’s an ‘SBOM’ and what does it have to do with federal cybersecurity?
To prevent cyberattacks, the government should limit the scope of a software bill of materials
Interview with Masato Endo, OpenChain Project Japan
智慧醫材專案辦公室成立 如何助醫材打入國際?

資料來源: https://lab.ocf.tw/2021/09/02/sbom/

軟體供應鏈攻擊興起 建立SBOM刻不容緩

 

軟體供應鏈攻擊興起 建立SBOM刻不容緩 – CIO Taiwan

鑑於接連不斷爆發的軟體供應鏈攻擊事件,泰半都是源自於開源軟體的漏洞未修補所致,美國政府已要求合作業者必須提供 SBOM。面對此國際趨勢,台灣企業亦應該加速建置 SBOM,才能保護公司與產品的安全。

採訪/施鑫澤‧文/林裕洋


幾年供應鏈攻擊成為全球最常見資安威脅模式,其中軟體供應鏈攻擊更是近年來的主流,如 2020 年底 SolarWinds 遭駭客入侵,受害企業包含美國財政部、商務部等政府與民間企業,受害廠商超過 18,000 家以上。

除前述知名廠商成為軟體供應鏈攻擊的跳板之外,更多資安威脅則隱藏於開源軟體之中。如有名的 Log4j 開放原始碼漏洞,只能依賴開源社群釋出修補程式,若企業沒有主動下載修補套件,此威脅恐怕將延燒數年之久。

[ 參與 CIO Taiwan 年度盛事 2023 CIO 大調查,就從填寫問卷開始!(survey.cio.com.tw) ]

面對變化多端、無孔不入的攻擊手法,2021 年 5 月美國政府發出關於改善資安的行政命令,其中一部分即是要求與聯邦政府合作的業者,必須提供軟體物料清單(Software Bill of Materials,簡稱 SBOM)。這項行政明令要求供應商必須提供軟、硬體使用的詳細元件,以及版本之間的更動狀況,藉此減少軟體供應鏈事件發生。換句話說,業者若要符合這項行政命令要求,勢必得從開發階段就開始,就注重軟體版本的管理工作,且必須隨時做好安裝修補程式的工作。

趨勢科技核心技術部資深協理暨 VicOne 威脅研究副總裁張裕敏便表示,近期我們的研究團隊發現,不論在 IT、OT 或 CT 場域中,駭客早已組成龐大的網路犯罪產業鏈,佈局一連串相連的攻擊循環模式。以造成全球企業嚴重損失的勒索攻擊為例,從企業在發現遭到勒索攻擊的當下,其所損失不再只是支付贖金,更可能衍生機敏資料遭外洩的風險。特別是若企業欠缺偵測系統弱點及即時修復漏洞的能力,恐怕陷入資安防禦機制被駭客摸,陷入不斷遭到 APT 攻擊的威脅,所以建立 SBOM 絕對是必要的工作。

儘速建立SBOM 掌握開源軟體使用狀況

在商業軟體蓬勃發展的當下,開源軟體依然備受眾多企業採用的原因不少,如自由再散布(Free Distribution)即允許獲得原始碼的人,可自由再將此原始碼散佈。所以多數物聯網業者便使用各種版本的 Linux 作業系統,除能免去昂貴的軟體授權費用支出外,也能依照產品特性自行修改原始碼,藉此提升應用服務的速度。

而多年前鎖定物聯網設備攻擊的 Mirai 惡意軟體,即是利用 Linux 的漏洞入侵,可將物聯網裝置變成被遠端操控的殭屍裝置。此惡意軟體入侵全球數十萬臺網路攝影機,並藉此作為發動 DDoS 攻擊之用,堪稱是現今軟體供應鏈攻擊的始祖。

[ 加入 CIO Taiwan 官方 LINE 與 Facebook ,與全球CIO同步獲取精華見解 ]

近來軟體供應鏈攻擊事件頻傳,除前述 SolarWinds、Kaseya、log4j 等知名案之外,駭客組織也看準企業積極打造雲原生的趨勢,在各種開源軟體套件之中植入惡意程式。當開發人員欠缺足夠警覺心,自行在網路下載來路不明的套件後,自然會引爆更複雜的雲原生資安議題。

「開源軟體為企業應用發展帶來靈活與擴充性的優勢,只是開發者對開源軟體函數庫的引用與依賴,亦使其成為駭客絕佳的攻擊溫床。如 2021 年底爆發 Log4j 重大安全漏洞問題,再度引起企業對開放原始碼安全性的重視。」張裕敏解釋:「呼籲企業應定期檢視在內部使用了多少開源軟體、是否能有效掌控與稽核開源軟體的弱點,及是否有建置軟體物料清單以縮短修補應變時間。」

降低開源軟體漏洞 可減少軟體供應鏈攻擊

鑑於開源軟體漏洞事件頻傳,成為駭客發動軟體供應鏈攻擊的核心,2022 年 2 月開源軟體安全基金會(Open Software Security Foundation,OpenSSF)宣布啟動 Alpha-Omega 的計畫,將透過開源軟體專案維護單位,找出 1 萬項開源軟體的漏洞,並且釋出相關修補程式,為降低軟體供應鏈攻擊盡一份心力。此外,該組織也計畫推出行動安全測試工具,提升開源軟體供應鏈的安全性,而身為該基金會會員的微軟和 Google,預計將提供數百萬美元贊助此計畫。

在 OpenSSF 規劃中,Omega 專案會組成安全工程師團隊,運用自動化工具針對常用的 1 萬個開源碼專案,找出可能的重大安全漏洞。在確認開源專案與漏洞後,由 Alpha 團隊負責檢視及修補等工作,如建立威脅模型、針對原始碼進行稽核、自動化安全測試等,並會公布相關安全及修補措施。

張裕敏指出,雖然使用開源軟體的好處不少,也是不可逆的國際趨勢,但最大風險在爆發軟體漏洞時,只能選擇等待開源社群釋出解決方案,因為多數企業幾乎沒有自行修補能力。面對日益嚴峻的開源軟體安全議題,企業應該要透過軟體資產盤點掌握公司使用多少開源軟體,透過弱點管理與稽核的工具,了解公司內部開源軟體有多少弱點,以及後續修補方式。

儘速修補軟體漏洞 提升整體防護力

面對日益嚴峻的軟體供應鏈攻擊,美國政府已嚴格要求合作夥伴必須建立軟體物料清單,可預期未來會有更多國家跟進。因此,台灣企業應該針對此議題儘早因應,藉由建立軟體物料清單方式,有效且系統化的管理軟體套件與控管易受攻擊的套件,並透過套件修補的相依性,產出標準的軟體物料清單報表,如 SPDX、 CycloneDX、SWID 等。

張裕敏表示,GitHub 上面有許多免費的開源軟體盤點工具,且會協助企業自動產出符合 SPDX 規範的 SBOM,搭配 CVE、國家漏洞資料庫(NVD),可有效追蹤漏洞的狀況,然後續修補工作才是最困難之處。建議中大型企業在預算、人力允許的狀況下,應該成立專屬團隊負責相關工作,最好能運用自動化工具修補漏洞。對於降低公司或產品的開源軟體漏洞,絕對會有很大的幫助。

若公司不慎使用到沒有社群維護的開源專案,除可尋找相似的開源軟體替代之外,亦可評估由企業內部程式設計師自行修補,達到杜絕軟體供應鏈攻擊的目的。


(本文授權非營利轉載,請註明出處:CIO Taiwan)


資料來源: https://www.cio.com.tw/software-supply-chain-offenses-rise-creation-of-a-sbom/

2022年12月1日 星期四

How to embed bootstrap in the SPIFFS disk of ESP8266

ESP8266 - How to embed bootstrap in the SPIFFS disk of ESP8266

This is a quick write up of me following the instruction at the link below to try out embedding bootstrap in the SPIFFS disk of ESP8266.

Embed bootstrap into an ESP8266 Web server with SPIFFS
https://www.techtinker.co.za/2018/08/28/fully-embed-bootstrap-into-an-esp8266-web-server/

Note that my Arduino IDE already has "ESP8266 Sketch Data Upload" installed from other projects, if you don't have it installed in your Arduino IDE, follow the instruction in the link below to install it.

https://www.instructables.com/id/Using-ESP8266-SPIFFS/

Uploading bootstrap to SPIFFS for off-line use

1. Create a "data" directory in the directory where the Arduino sketch is kept.

2. Download the bootstrap framework from this link https://getbootstrap.com/.

In the css and the js folder, find the highlighted files as shown below and create a compressed version of them using program such as 7zip and save them in the .gz format.

In the css folder

In the js folder

3. Copy the 4 .gz files to the "data" folder created in step 1 above.

Note, alternatively, you could just download the project which contains the main Arduino sketch and the 5 files shown below from the link below.

https://drive.google.com/drive/folders/1pxuUSQCHoMsyVPuX8-EfgiWuip-1YvfE.

- bootstrap.css.map.gz
- bootstrap.min.css.gz
- bootstrap.min.js.gz
- bootstrap.min.js.map.gz
- index.html.gz

The index.html.gz contains the web page that will be served by the webserver running on ESP8266. The content of this file is shown below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="/favicon.ico">

    <title>Fixed top navbar example for Bootstrap</title>

    <!-- Bootstrap core CSS -->
    <link href="/bootstrap.min.css" rel="stylesheet">

    <!-- Custom styles for this template -->
    <link href="navbar-top-fixed.css" rel="stylesheet">
  </head>

  <body>

    <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
      <a class="navbar-brand" href="#">Fixed navbar</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarCollapse">
        <ul class="navbar-nav mr-auto">
          <li class="nav-item active">
            <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Link</a>
          </li>
          <li class="nav-item">
            <a class="nav-link disabled" href="#">Disabled</a>
          </li>
        </ul>
        <form class="form-inline mt-2 mt-md-0">
          <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
          <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
        </form>
      </div>
    </nav>
 <br><br><br>
    <main role="main" class="container">
      <div class="jumbotron">
        <h1>Navbar example</h1>
        <p class="lead">This example is a quick exercise to illustrate how fixed to top navbar works. As you scroll, it will remain fixed to the top of your browser's viewport.</p>
        <a class="btn btn-lg btn-primary" href="../../components/navbar/" role="button">View navbar docs &raquo;</a>
      </div>
    </main>

    <!-- Bootstrap core JavaScript
    ================================================== -->

    <script src="/bootstrap.min.js"></script>
  </body>
</html>

4. Connect ESP8266 to the computer, launch Arduino IDE. In Arduino IDE, click on "Tools", then click on "ESP8266 Sketch Data Upload" to upload the files in the "data" directory to the SPIFFS disk of ESP8266.

The upload progress will be displayed through the message window of the Arduino IDE.

5. Compile and upload the sketch below to ESP8266. Be sure to put the credential of your wifi network in the "ssid" and "password" fields.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// Source: https://www.techtinker.co.za/2018/08/28/fully-embed-bootstrap-into-an-esp8266-web-server/

#include <FS.h> 
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
 
const char* ssid = "Your_Existing_AP";
const char* password = "password_of your_existing_wifi_network";

ESP8266WebServer server(80);

void setup() {
  
   Serial.begin(115200);
   
   WiFi.mode(WIFI_STA);
   WiFi.begin(ssid,password); 
   
   // Wait for connection
   while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
   }
   
   Serial.println(WiFi.localIP());
 
   server.begin(); 
   server.on("/", fileindex);
   server.on("/index.html", fileindex);
   server.on("/bootstrap.min.css", bootstrap);
   server.on("bootstrap.min.css", bootstrap);
   server.on("/popper.min.js", popper);
   server.on("/bootstrap.min.js", bootstrapmin);
   server.on("bootstrap.min.js", bootstrapmin);

   //NEW
   SPIFFS.begin(); 
}
 
void loop() {
   server.handleClient();
}
 
void fileindex(){
   File file = SPIFFS.open("/index.html.gz", "r"); 
   size_t sent = server.streamFile(file, "text/html");
}

void bootstrap(){
   File file = SPIFFS.open("/bootstrap.min.css.gz", "r"); 
   size_t sent = server.streamFile(file, "text/css");
}

void popper(){
   File file = SPIFFS.open("/popper.min.js.gz", "r"); 
   size_t sent = server.streamFile(file, "application/javascript");
}

void bootstrapmin(){
   File file = SPIFFS.open("/bootstrap.min.js.gz", "r"); 
   size_t sent = server.streamFile(file, "application/javascript");
}

6. Launch the Serial Monitor of the Arduino IDE to find the IP assigned to the ESP8266. Here, the IP assigned is 192.168.31.9.

7. Launch a web browser then enter the IP address obtained from above in the URL field to connect to the ESP8266.

A neat thing about using bootstrap is that it's responsive..

Reference - UI Design:

Bootstrap: create a beautiful Web Interface for your projects ESP8266
https://diyprojects.io/bootstrap-create-beautiful-web-interface-projects-esp8266/

Using ESP8266 SPIFFS
https://www.instructables.com/id/Using-ESP8266-SPIFFS/

Embed bootstrap into ESP8266
https://mybroadband.co.za/forum/threads/embed-bootstrap-into-esp8266.972617/

Bootstrap Tutorial for Beginners
https://www.youtube.com/watch?v=FMFm9GxB_Eo

Bootstrap Glyphicon Components
https://www.w3schools.com/bootstrap/bootstrap_ref_comp_glyphs.asp

======================================================================

Icons and symbols that could be used for artworks

GLYPHICONS®
https://www.glyphicons.com/

A library of precisely prepared monochromatic icons and symbols, created with an emphasis to simplicity and easy orientation. 

資料來源:http://wei48221.blogspot.com/2020/03/esp8266-how-to-embed-bootstrap-in.html