2019年10月11日 星期五

勒索病毒贖金,支付比特幣分享

隔了好久終於又要開始來寫部落格!
年紀有了,進入大叔之齡,實在不能加班。
但運氣真好的,跟好友小聚後洗完澡才剛躺上床,就被通知工作的地點中了勒索病毒,半夜耶~
(9/3 12:50 更新)衛福部單位疑似遭勒索病毒攻擊,要求支付比特幣
我沒有那個實力跟大家說明如何解開「Globeimposter 3.0」的勒索病毒,我只是說明我們是如何"支付比特幣"並取得解密工具的(笑)!

# 為什麼我要選擇MAX交易所?
1. 先 google 到這篇 【2019.9.26更新】台灣知名加密貨幣交易所懶人包,看到有MAX交易所跟凱基銀行有「信託保管」。嗯,覺得安心不少!我可不想拿公司交給我的贖金去買比特幣但一點保障都沒有,而且它有 APP操作上也便利不少。


# 註冊流程
2. 我參考這篇 【工具教學】台灣最知名交易所MAX-台幣出入金好夥伴 。

# 支付比特幣
3. 開啓 MAX APP
4. 點錢包,選 TWD
5. 看到那個"入金"就給它按下去。

6. 依畫面上的資料透過 ATM 或網路銀行轉帳,若金額過大建議用網路銀行,不然 ATM 每天只能轉3萬而已。

7. 比特幣的波動頗大,看到喜歡的價格就下手吧!

8. 當然,喬了好幾天對方一定會告訴您 "This is wallet : blablabla....",按下"提領",輸入提領地址及數量,記得提領數量要加上手續費,不然對方收到的比特幣會不足額!

9. 過一段時間(個人經驗約2~3小時)後確認交易成功。


# 解密程序
10. 回個信讓對方確認一下,不久對方就會要求你寄 ID (勒索畫面上那個 YOUR PERSONAL ID 之後的那一大串) 及 Appolon file (被加密過的樣本檔案) 給他。
11. 收到雲端硬碟的網址後下載解密工具,最後在命令提示字元下執行解密工具,接著就等它慢慢解密完成!!


2015年4月16日 星期四

[MobileWeb]網路掛號Prototype-3(jsonp、HTML5 localStorage)

我們把localStorage當成profile的暫存區,可以有效減少網路的傳輸次數,以下只是簡單的範例~
1.模擬遠端資料(jsonp)
JavaScript
function simRemoteData()
{
  var remoteData = [
    {"醫師": "柯X哲", "科別": "外科", "時段": "上午(08:30~11:30)"},
    {"醫師": "邱X逹", "科別": "外科", "時段": "下午(13:30~17:00)"},
    {"醫師": "沈X雄", "科別": "內科", "時段": "上午(08:30~11:30)"},
    {"醫師": "賴X德", "科別": "內科", "時段": "上午(08:30~11:30)"},
    {"醫師": "柯X銘", "科別": "牙科", "時段": "上午(08:30~11:30)"},
    {"醫師": "涂X哲", "科別": "內科", "時段": "夜診(08:30~11:30)"}
  ];
  var remoteJsonpData = { jsonData: JSON.stringify(remoteData), delay: 3 };
  return remoteJsonpData;
}

2.接收遠端資料(jsonp)並存入本地端 Local Storage(HTML5)
JavaScript
function getRemoteData()
{
  $.ajax({
    type: "GET",
    url: "//jsfiddle.net/echo/jsonp/",
    dataType: "jsonp",
    data: simRemoteData(),
    cache: false,
    error: function (jqXHR, textStatus, errorThrown) {
      console.log(textStatus + " - " + errorThrown);
    },
    success: function (data, textStatus, jqXHR) {
      console.log(textStatus + " - " + data);
          
      var jsonData = JSON.parse(data.jsonData);
      if (jsonData) {
        localStorage.查詣資料 = JSON.stringify(jsonData);

        var _targetList = $("#查詢時間List");
        var _jsonData = getLocalData();
        display查詣資料Data(_targetList, _jsonData);
      }
    }
  });
}

3.取得本地端 Local Storage(HTML5)資料
JavaScript
function getLocalData()
{
  var jsonData = localStorage.查詣資料;
  if (!jsonData){
    jsonData = {};
    localStorage.查詣資料 = JSON.stringify(jsonData);
  } else {
    jsonData = JSON.parse(jsonData);
  }
  return jsonData;
}

4.顯示"查詣資料"頁面資料
JavaScript
function display查詣資料Data(_targetList, _jsonData)
{
  if (_jsonData) {
    var markup = "";
    var dataLength = _jsonData.length;
    for (var i = 0; i < dataLength; i++) {
      markup += "
  • " + _jsonData[i].醫師 + "

    " + _jsonData[i].科別 + "
  • "; } _targetList.html(markup).listview({ autodividers: true, autodividersSelector: function ( li ) { return li.data("時段"); } }).listview("refresh"); } }

    ※ 原始碼及執行預覽(jsFiddle): http://jsfiddle.net/L8su2/810/
    參考資料
    [1] Create a CRUD web app using JQuery Mobile and LocalStorage

    2015年3月18日 星期三

    [PaaS]試用 OpenShift 平台-4(嘗試建立可以運作 Mono 的 nginx 平台~結果失敗!)

    、嘗試建立可以運作 Mononginx 平台~結果失敗!
    4.1. 建立 DIY/Custom 的虛擬主機
    rhc create-app myapp2 diy-0.1

    4.2. 切換至 ssh 模式
    cd myapp2
    rhc ssh

    4.3. 切換目錄至 $OPENSHIFT_DATA_DIR
    cd  $OPENSHIFT_DATA_DIR

    4.4. 下載 Nginx 及 PCRE library 的壓縮檔
    (Perl Compatible Regular Expressions)
    wget http://nginx.org/download/nginx-1.6.2.tar.gz
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz

    4.5. 解壓縮
    tar zxvf nginx-1.6.2.tar.gz
    tar zxvf pcre-8.36.tar.gz

    4.6. 切換目錄至 nginx
    cd nginx-1.6.2

    4.7. 安裝及編譯 nginx
    ./configure --with-pcre=$OPENSHIFT_DATA_DIR/pcre-8.36 --prefix=$OPENSHIFT_DATA_DIR/nginx --with-http_realip_module

    make
    make install

    4.8. 設定 nginx
    vi $OPENSHIFT_DATA_DIR/nginx/conf/nginx.conf
    修改 listen 為 $OPENSHIFT_IP:$OPENSHIFT_PORT

    複製 template
    mv nginx.conf nginx.conf.template

    4.9. 最後的調整(自動的重啓程式)
    離開 ssh session
    修改 .openshift/action_hooks/start

    註解原有的設定
    # nohup $OPENSHIFT_REPO_DIR/diy/testrubyserver.rb $OPENSHIFT_DIY_IP $OPENSHIFT_REPO_DIR/diy |& /usr/bin/logshifter -tag diy &

    增加以下的設定
    sed -e "s/`echo '$OPENSHIFT_IP:$OPENSHIFT_PORT'`/`echo $OPENSHIFT_DIY_IP:$OPENSHIFT_DIY_PORT`/" $OPENSHIFT_DATA_DIR/nginx/conf/nginx.conf.template > $OPENSHIFT_DATA_DIR/nginx/conf/nginx.conf
     

    nohup $OPENSHIFT_DATA_DIR/nginx/sbin/nginx > $OPENSHIFT_DIY_LOG_DIR/server.log 2>&1 &

    更新設定
    git commit -a -m "start nginx when starting up the app"
    git push

    4.10. 測試
    http://myapp2-bobohan.rhcloud.com

    可利用 "rhc tail -a myapp2" 來除錯

    4.11. 下載 Mono 的壓縮檔
    wget http://download.mono-project.com/sources/mono/mono-3.12.1.tar.bz2

    4.12. 解壓縮
    tar jxvf mono-3.12.1.tar.bz2

    4.13. 切換目錄至 mono
    cd mono-3.12.1

    4.14. 安裝及編譯 Mono
    ./configure --prefix=$OPENSHIFT_DATA_DIR/mono

    make 跟 make install 的過程中皆有錯誤訊息

    4.15. 替代方案
    由於 OpenShift 平台因為權限的限制,無法用 RPM 的方式來安裝軟體,所以都要用以下的方式來安裝:
    wget + extract + configure + make + make install

    但是 nginx 成功但 Mono 就失敗!若你只是單純想要建立一個可以運作 Mono 的虛擬主機,可以使用網路上神人所分享的 cartridge,可以使用以下指令建立:
    rhc create-app myapp3 https://raw.github.com/wshearn/openshift-community-cartridge-mono/3.2.1-aspx/metadata/manifest.yml

    參考資料
    [1] Installing the OpenShift Client Tools
    [2] Getting Started with MongoDB on Node.js on OpenShift
    [3] Running Nginx on OpenShift
    [4] 《OPENSHIFT》可綁網址、無限流免費雲端主機
    [5] 在 OpenShift 上部署 MongoDB 和 Node.js 应用
    [6] OpenShift安裝Nginx+MYSQL+PHP5.4
    [7] Nginx | Mono
    [8] Compiling Mono on Linux
    [9] Getting Started with OpenShift and Mono

    2014年12月31日 星期三

    [PaaS]試用 OpenShift 平台-3(安裝 MongoDB 及其前端網頁管理工具 RockMongo)

    、安裝 MongoDB 及其前端網頁管理工具 RockMongo
    3.1. 安裝 MongoDB
    cd myapp1
    rhc cartridge add mongodb-2.4

    3.2. 安裝 MongoDB 的前端網頁管理工具 RockMongo
    rhc cartridge add rockmongo-1.1

    若不想背太多指令,可以透過Web介面來做設定

    3.3. 測試一下
    3.3.1. rhc ssh

    3.3.2. mongo
    3.3.3. use myapp1(切換資料庫)

    3.3.4. var icd10cm = {"action":"I", "code":"A", "pre":"", "content":"感染和寄生蟲疾病 Certain infectious and parasitic diseases", "quest":"Q:哪種類型?"};
    3.3.5. db.icd10cm.insert(icd10cm );
    3.3.6. db.icd10cm.find();

    3.3.7. 安裝 mongojs
    npm install mongojs

     3.3.8. 修改 server.js,增加"路由"程式碼
    在 self.createRoutes 的 function 中增加以下的程式碼
    self.routes['/db'] = function(req, res) {
        var mongojs = require('mongojs');
        var mydb = "myapp1";
        var mycollection = "icd10cm";
        var connectionString = process.env.OPENSHIFT_MONGODB_DB_USERNAME  
          ":"  
          process.env.OPENSHIFT_MONGODB_DB_PASSWORD  
          "@"  
          process.env.OPENSHIFT_MONGODB_DB_HOST  
          "/"  
          mydb;
        var db = mongojs(connectionString, ['icd10cm']);
        var mycollection = db.collection('icd10cm');
    
        db.icd10cm.find(function(err, docs) {
            res.send(docs);
        });
    };
    

    3.3.9. 提交程式碼
    git add .
    git status
    git commit -a -m "Add mongojs to node.js"
    git push

    3.3.10. 輸入網址測試資料回傳
    http://myapp1-bobohan.rhcloud.com/db

    參考資料
    [1] Installing the OpenShift Client Tools
    [2] Getting Started with MongoDB on Node.js on OpenShift
    [3] Running Nginx on OpenShift
    [4] 《OPENSHIFT》可綁網址、無限流免費雲端主機
    [5] 在 OpenShift 上部署 MongoDB 和 Node.js 应用
    [6] OpenShift安裝Nginx+MYSQL+PHP5.4

    2014年12月21日 星期日

    健保e化抽審-4(PDF加入浮水印)

    怕有日後資料外流不易追查,進而引發不必要的資安議題(申請單都消化不完了,還要搞這個),所以還是小心點好,在PDF檔裡加入浮水印好了,避免有心人傳來傳去。 必要時還可以加入當初使用者是誰,方便源頭的追蹤管理。
    private void button19_Click(object sender, EventArgs e)
    {
      string fontPath = Environment.GetFolderPath(Environment.SpecialFolder.System)   @"\..\Fonts\kaiu.ttf";
      BaseFont bfChinese = BaseFont.CreateFont(fontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
        
      string fileBefore = @"C:\temp\fileBefore.pdf";
      string fileAfter = @"C:\temp\fileAfter.pdf";
    
      // Creating iTextSharp.text.pdf.PdfReader object to read the Existing PDF Document
      using (PdfReader reader = new PdfReader(fileBefore))
      // Creating iTextSharp.text.pdf.PdfStamper object to write Data from iTextSharp.text.pdf.PdfReader object to FileStream object
      using (FileStream fs = new FileStream(fileAfter, FileMode.Create, FileAccess.Write, FileShare.None))
      using (PdfStamper stamper = new PdfStamper(reader, fs))
      {
        // Getting total number of pages of the Existing Document
        int pageCount = reader.NumberOfPages;
    
        // Create New Layer for Watermark
        PdfLayer layer = new PdfLayer("WatermarkLayer", stamper.Writer);
    
        // Loop through each Page
        for (int pageNum = 1; pageNum <= pageCount; pageNum  )
        {
          // Getting the Page Size
          iTextSharp.text.Rectangle rect = reader.GetPageSize(pageNum);
    
          // Get the ContentByte object
          PdfContentByte cb = stamper.GetUnderContent(pageNum);
       
          // Tell the cb that the next commands should be "bound" to this new layer
          cb.BeginLayer(layer);
          cb.SetFontAndSize(bfChinese, 50);
          cb.SetColorFill(BaseColor.BLACK);
    
          PdfGState gState = new PdfGState();
          gState.FillOpacity = 0.25f;
          cb.SetGState(gState);
    
          cb.BeginText();
          cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, "僅供健保e化抽審使用", rect.Width / 2, rect.Height / 2, 45f);
          cb.EndText();
    
          // Close the layer
          cb.EndLayer();
        }
      }
    }
    
    參考資料
    [1] Adding Watermark to PDF Document using Layer
    [2] Nested using statements in C#

    2014年12月11日 星期四

    [PaaS]試用 OpenShift 平台-2(建立可以運作 Node.js 的平台及設定 FTP)

    二、建立可以運作 Node.js 的平台(PaaS)及設定 FTP
    2.1. 建立可以運作 Node.js 的平台(PaaS)
    2.1.1. rhc create-app myapp1 nodejs-0.10

    2.1.2. 輸入"rhc ssh"連線到遠端,並測試一下「hello, world」

    2.2. 測試Git
    2.2.1. 建立測試檔案
    echo console.log('hello, world'); > helloworld.js

    2.2.2. 檢查目前 Repository 狀態
    git status

    2.2.3. 將測試檔案加入 Repository
    git add helloworld.js

    2.2.4. 提交檔案
    git commit -m "Add helloworld.js to test git and node.js"
    or
    git commit -a -m "Add helloworld.js to test git and node.js"

    2.2.5. 上傳檔案
    git push
    PS: 若遇到 "git push error failed to push some refs to" 的問題
    請先輸入 "git pull --rebase"

    2.3. 設定FTP
    2.3.1. 使用 Putty Key Generator 產生公鑰及私鑰

    2.3.2. 於 OpenShift 設定 Public Keys 及 Remote Access


    2.3.3. 於 FileZilla 加入 SFTP 私鑰檔案設定

    2.3.4. 於 FileZilla 加入主機設定(Host、Logon Type、User)

    2.3.5. 連線測試一下,OK

    參考資料
    [1] Installing the OpenShift Client Tools
    [2] Getting Started with MongoDB on Node.js on OpenShift
    [3] Running Nginx on OpenShift
    [4] 《OPENSHIFT》可綁網址、無限流免費雲端主機
    [5] 在 OpenShift 上部署 MongoDB 和 Node.js 应用
    [6] OpenShift安裝Nginx+MYSQL+PHP5.4

    [PaaS]試用 OpenShift 平台-1(安裝 OpenShift Client 端工具)

    一、安裝 OpenShift Client 端工具
    1.1. 設定 OpenShift 的 Windows 環境
    1.1.1. 安裝 rubyinstaller-1.9.3-p551.exe,記得要將設定Path勾選進來

    1.1.2. 測試一下,輸入ruby -v

    1.1.3. 安裝 Git,順便驗證版本

    1.1.4. 安裝及設定 OpenShift gem
    gem install rhc

    rhc setup,並輸入帳號/密碼



    參考資料
    [1] Installing the OpenShift Client Tools
    [2] Getting Started with MongoDB on Node.js on OpenShift
    [3] Running Nginx on OpenShift
    [4] 《OPENSHIFT》可綁網址、無限流免費雲端主機
    [5] 在 OpenShift 上部署 MongoDB 和 Node.js 应用
    [6] OpenShift安裝Nginx+MYSQL+PHP5.4