Category: Windows (OS, power shell, etc)

  • เช็คฟอนต์สวย ด้วย WhatFont ~ Extension

    อะ แฮ่ม และแล้วก็เดินมาถึง Blog สุดท้ายในรอบ TOR ของปีนี้จนได้ แต่กว่าจะได้ฤกษ์เขียนได้ก็ปาเข้าไปกลางปีกันเลยทีเดียว (55+)

    มาๆๆ เรามาเข้าเรื่องกันเลยดีกว่า ต้องบอกว่าหลายครั้งที่เราได้เข้าเว็บไซต์นู้นนั่นนี่ แล้วเห็น font สวยๆ แต่ไม่รู้ว่านั่นน่ะมันคือ font อะไร ชนิดไหน … วันนี้ทางผู้เขียนขอนำเสนอ Chrome Extension (อีกแล้วเหรอ !) ที่เรียบง่ายแต่ใช้งานได้จริง นั่นคือ * WhatFont *

    WhatFont คืออะไร ???

    WhatFont เป็นหนึ่งในส่วนขยายของ Google Chrome ซึ่งเป็นเครื่องมือที่ใช้ในการดูได้ว่า Font ที่ใช้หรือแสดงอยู่ในหน้าเว็บไซต์ต่างๆ นั้น คือ Font ชนิดอะไร ขนาดเท่าไหร่ และมีค่าสี เป็นอะไร อ๊ะๆ ยังไม่หมดนะ มันสามารถระบุได้แม้กระทั่งความหนา ความบาง ของ Font นั้นๆ กันเลยทีเดียว เพียงแค่เรานำเมาส์ไปวางบนตัวอักษรที่เราต้องการจะดูรายละเอียดเท่านั้นเอง

    วิธีการติดตั้ง

    • ดาวน์โหลดได้จาก Chrome เว็บสโตร์ คลิก จากนั้นให้คลิกปุ่ม “เพิ่มใน CHROME” หรือ Add to Chrome
    • ระบบจะแสดง pop up ขึ้นมาให้คลิกเลือก “เพิ่มส่วนขยาย”
    • เมื่อเราติดตั้งเรียบร้อยแล้ว หน้าจอก็จะแสดง pop up ขึ้นมาแจ้งให้เราทราบว่าได้ติดตั้งเสร็จเรียบร้อยแล้ว
    • สำหรับวิธีการใช้งาน ให้เข้าเว็บที่เราต้องการ จากนั้นให้คลิกที่ Icon ที่มุมบนด้านขวาของ Browser
    • ให้นำเมาส์ไปวางไว้บนข้อความ / ตัวอักษร ที่เราต้องการจะรู้ว่าเป็น font อะไร
    • และหากต้องการจะดูรายละเอียดเพิ่มเติม เช่น ขนาด สี ความหนา ความบาง ก็ให้คลิกเลือกบนข้อความดังกล่าว จากนั้นจะมีส่วนแสดงข้อมูลเพิ่มเติมขึ้นมาให้เราได้ดูกัน

    เป็นยังไงกันบ้างเอ่ย ข้อมูลอันนี้นี่พอจะช่วยผู้อ่านได้บ้างมั้ย ??

    ยังไงก็แล้วแต่ทางผู้เขียนอยากแนะนำให้ทุกคนไปลองใช้กันดูนะ ง่ายดี ฟรีด้วย แทนที่เรา จะมานั่งคาดเดา หรือมโน กันเองว่า เอ๊ ! ตัวนี้นี่มันเป็น font อะไรแล้วน๊าา แบบนั้นมันล้าสมัยไปแล้ว เสียเวลาเปล่าๆ ติดตั้งตัวนี้กันเลย ง่าย ครบ จบในตัวเดียว 55+

    อย่าลืมลองเล่นกันดูนะ ไว้ปีหน้าฟ้าใหม่ เราจะมาเจอกันอีกใน Blog ถัดๆ ไปเน้ออออ

    ขอบคุณแหล่งอ้างอิง http://photoloose.com/what-font-chrome-extension/

  • ติดตั้ง Let’s Encrypt Certificate สำหรับ SSL Sites บน IIS

    หลังจากที่พี่หนุ่ม คณกรณ์ หอศิริธรรม  ได้เขียนเรื่อง วิธีติดตั้ง HTTPS ด้วย Certificate ของ Let’s Encrypt ไปแล้วนั้น ก็จะมาถึงทางฝั่ง Windows กันบ้าง ซึ่งจะติดตั้งผ่านเครื่องมือ บน Command Line ครับ

    ตัวอย่างนี้จะเป็นวิธีการติดตั้งโดยใช้เครื่องมือที่ชื่อว่า WinACME ซึ่ง ดาวน์โหลดได้ที่นี่ (จริงๆ มีหลายตัวให้เลือกใช้ครับ ซึ่งส่วนใหญ่จะเป็นการพัฒนาผ่าน ACME API มีทั้งแบบเป็น Command Line, Power shell และเป็น GUI ครับ)

    หลังจากดาวน์โหลดไฟล์มาแล้ว ผม Extract ไปไว้ที่ C:\LetsEncryptSSL

    จากนั้นก็เปิด Command Prompt ด้วยสิทธิ Administrator
    (เปิดด้วยสิทธิ Administrator เพื่อให้มีการสร้าง Schedule Task ในการ Renew Cert. โดยอัตโนมัติครับ)

    จากนั้นทำการเรียกด้วยคำสั่ง letsencrypt จะพบกับเมนูดังภาพนี้ครับ

    ผมเลือกตอบตัว “n” จะพบกับเมนูให้เลือกด้านล่างนี้ (สำหรับผู้ที่มีความชำนาญ สามารถเลือก M เพื่อเปิด advanced option ได้ครับ)

    และเนื่องจากเครื่องที่แสดงอยู่นี้ เป็น multiple site และผมจะทำการติดตั้งลงไปเพียง 1 site ตามนี้ครับ

    เลือก site จากนั้นกด Enter จะพบว่าโปรแกรมเริ่มทำการ Generate SSL Cert. และ Assign ไปยัง Site ของเรา พร้อมทั้งกำหนด Schedule Task เรียบร้อยแล้ว

    ลองดูผลลัพธ์ใน II

    ลองเปิดเว็บดู ผ่าน Google Chrome ปรากฎว่ามีรูปกุญแจขึ้นแล้วและเป็น Cert. ของ Let’s Encrypt ตามที่ต้องการ

    กลับไปตรวจสอบ Schedule Task พบว่ามีการสร้าง Task เพื่อ Renew Cert. เอาไว้แล้ว

    จบปิ๊ง…

  • How to install Office Professional Plus 2019 in PSU

    • สามารถ download ได้จาก https://licensing.psu.ac.th
    Office Professional Plus 2019
    • ล็อคอินเข้าระบบให้เรียบร้อย
    • เมื่อเปิดหน้าของ Office Professional Plus 2019 เลื่อนลงมาล่างสุดจะมีให้ Download อยู่ 2 ส่วน
    Download
    • โดย Office pro plus 2019 setup คือส่วนที่จำเป็นต้องโหลด และสามารถเลือกโหลด Configuration Setup ได้ตามภาษาและสถาปัตยกรรมที่ต้องการ
    • เมื่อโหลดเสร็จแล้ว ติดตั้งโดยการเปิด cmd เรียกใช้ cmd ด้วยการกด windows+R
    • การติดตั้ง Office Professional Plus 2019 จะเป็นการติดตั้งผ่านอินเตอร์เน็ตเท่านั้น
    Run cmd
    cmd
    • พิมพ์ cd ไปยังโฟลเดอร์ที่ดาวน์โหลดทั้งสองไฟล์ไว้ (ในตัวอย่างโหลดไฟล์ไว้ที่ Desktop)
    Download location
    • พิมพ์คำสั่งดังต่อไปนี้ โดยเลือกตามรุ่นและสถาปัตยกรรมที่เลือก
    1. o2019proplussetup.exe /configure o2019proplus32en.xml
    2. o2019proplussetup.exe /configure o2019proplus32th.xml
    3. o2019proplussetup.exe /configure o2019proplus64en.xml
    4. o2019proplussetup.exe /configure o2019proplus64th.xml
    Setup command
    • จะมีหน้า User control ให้ตอบ Yes แล้วจะได้หน้าต่างติดตั้งขึ้นมา
    Installing
    • รอจนเสร็จ
    installation is finished!
    Finish
    • เปิด Microsoft word สร้างเอกสารใหม่
    Blank document
    • คลิกเมนู File แล้วเลือก account
    Account
    • มองไปด้านขวาในส่วนของ Product Information หากยังไม่มีข้อความว่า Product Activated ให้คลิก Change Product key
    Product Information
    • ให้นำคีย์จากเว็บ https://licensing.psu.ac.th มาใส่แล้วกด Activate Office
    • ต้องเชื่อมต่ออินเตอร์เน็ตให้เรียบร้อยก่อนทำขั้นตอนนี้
    Activate Office
    • สำหรับผู้ใช้ทั่วไปจบเพียงเท่านี้ ขอให้สนุก
    • สำหรับ Power Users และคนที่ต้องการใช้ Office ภาษาอื่นๆ มากกว่าภาษาไทย และ ภาษาอังกฤษ
    • หากเปิดดูในแฟ้ม o2019proplus64en.xml จะมีส่วนที่แก้ไขได้
    <Configuration>
      <Add SourcePath="https://bahamut.psu.ac.th/office2019-64" OfficeClientEdition="64"
     Channel="PerpetualVL2019">
          <Product ID="ProPlus2019Volume" PIDKEY="NMMKJ-6RK4F-KMJVX-8D9MJ-6MWKP">
             <Language ID="en-us" />
          </Product>
          <Product ID="ProofingTools">
            <Language ID="th-th" />
          </Product>
      </Add>
      <Property Name="AUTOACTIVATE" Value="1" />
      <Display Level="Full" AcceptEULA="TRUE" />  
      <Logging Level="Standard" Path="%temp%" /> 
    </Configuration>
    </code>
    • ได้แก่ SourcePath และ Language ID
    • โดยค่าที่เป็นไปได้ของ SourcePath คือ โฟลเดอร์ปลายทางที่จะได้เป็นที่เก็บตัวติดตั้ง Office Professional Plus 2019 เช่น d:\download ซึ่งแปลว่าโหลดตัวติดตั้งมาเก็บไว้ที่ d:\download
    • และค่าที่เป็นไปได้ของ Language ID ได้แก่ รหัสภาษาที่ไมโครซอฟท์กำหนดโดยสามารถดูได้ที่ https://docs.microsoft.com/en-us/DeployOffice/office2016/language-identifiers-and-optionstate-id-values-in-office-2016
    • ตัวอย่างไฟล์ที่แก้เสร็จแล้ว
    <Configuration>
      <Add SourcePath="d:\download" OfficeClientEdition="64" 
    Channel="PerpetualVL2019">
          <Product ID="ProPlus2019Volume" PIDKEY="NMMKJ-6RK4F-KMJVX-8D9MJ-6MWKP">
             <Language ID="ja-jp" />
          </Product>
          <Product ID="ProofingTools">
            <Language ID="ja-jp" />
          </Product>
      </Add>
      <Property Name="AUTOACTIVATE" Value="1" />
      <Display Level="Full" AcceptEULA="TRUE" />  
      <Logging Level="Standard" Path="%temp%" /> 
    </Configuration>
    </code>
    • วิธีใช้งานให้พิมพ์คำสั่งต่อไปนี้ใน cmd
    o2019proplussetup.exe /download o2019proplus64en.xml
    download
    • จะค้างอยู่จนกว่าจะ download เสร็จ
    downloading
    • เมื่อ download เสร็จแล้วสามารถพิมพ์คำสั่งต่อไปนี้ใน cmd เช่นเดิม เพื่อเริ่มกระบวนการติดตั้ง แบบที่กล่าวมาแล้ว
    o2019proplussetup.exe /configure o2019proplus64en.xml
    • จบขอให้สนุกครับ
  • รวมร่าง Windows กับ Linux ใช้งานในเครื่องเดียวกันแบบเนียนๆ

    จุดประสงค์

    สามารถใช้งาน Windows กับ Linux ได้ในเครื่องเดียวกันและในเวลาเดียวกันเหมือนเป็นทองแผ่นเดียวกัน แก้ปํญหา Dev / SysAdmin ส่วนใหญ่ที่ต้องใช้ Linux เป็นหลักในการทำงานแต่ต้องเผื่อใจต้องทำงานบน Windows ด้วยในบางเวลา เช่น ทำเอกสาร MS Word ไม่ให้เพี้ยน หรือ Adobe PhotoShop หรือโปรแกรมที่ไม่สามารถทำการติดตั้งลงใน Linux ได้ และที่สำคัญคือการทำงานระหว่างสองระบบต้องไหลลื่นและรวดเร็ว ประหยัด กินทรัพยากรน้อย

    หากยังนึกภาพไม่ออก สามารถดูวิดีโอนี้ครับ  Windows 10 + Linux Lite (Seamless) 

    สเปกเครื่อง

    สามารถใช้บน windows 7, 8, 10 แต่ขอให้มี RAM อย่างน้อย 4 GB จะดีมากถ้า RAM 8 GB แต่ในที่นี้จะเป็นการติดตั้งและใช้งาน Linux บน Windows 10 64 bit  

    (more…)
  • pGina fork 3.9.9.12 configuration

    pGina 3.9.9.12 ส่ง RADIUS accounting ได้ และทำ option Remove account and profile after logout ได้ และ ปุ่ม Shutdown ก็ log off user ให้ด้วย (โดยตั้งค่าที่ Local Machine Plugin จะมีให้ ติ๊ก เลือก Notification เพิ่มมาอีกอัน) นอกจากนี้ก็มีเพิ่ม plugins อีกหลายตัว พร้อมแก้บั๊ก ที่น่าสนใจคือ scripting plugin ทำให้ customize ได้มากขี้น แต่ผู้เขียนบทความนี้ยังไม่ได้ลอง

    เวอร์ชั่น 3.9.9.12 ดาวน์โหลดได้จาก http://mutonufoai.github.io/pgina/index.html

    การตั้งค่าสำหรับทำเป็น Windows Authentication ในเครื่องคอมที่เป็น Windows 10 ผมได้ทำ screen capture มาเฉพาะที่ผมได้ใช้งาน ซึ่งก็คือ Local Machine, RADIUS plugin ดังนี้

    หน้าแรกคือแท็บ General จะแสดงให้เห็นว่าโปรแกรมพร้อมทำงาน ให้ดูที่ข้อความที่แสดงเป็นสีเขียวใต้ข้อความ pGina Service status

    pGina แท็บ General

    และตัวเลือกที่ผมเลือกใช้คือ Use original username to unlock computer คือหากหลุดไปที่หน้า screen saver ก็ปลดได้ด้วย username ที่ login นั้น

    แท็บถัดไปคือ แท็บ Plugin Selection อันแรกที่จะใช้คือ Local Machine คือ user ที่สร้างขึ้นภายใน Windows นั่นเอง สังเกตจะมีตัวเลือกที่ Authentication, Gateway และ Notification (เพิ่มมาใหม่) และที่ใช้อีกอันคือ RADIUS Plugin

    pGina แท็บ Plugin

    จากนั้นให้เลือก Local Machine แล้วให้คลิกปุ่ม Configure จะได้ค่าดีฟอลต์ ดังรูปข้างล่างนี้

    Configure Local Machine

    ผมจะใช้ค่าตัวเลือก Remove account and profile after logout เพื่อที่ไม่ต้องเก็บ user profile ที่เป็น user จาก user database ภายนอก เช่น จาก RADIUS server เป็นต้น และ หากต้องการให้ user นั้นมีสิทธิมากกว่า User ทั่วไป ก็ตั้ง Mandatory Group เช่น ตั้งเป็น Administrators หรือ ใส่ชื่อกลุ่ม Guests ไว้ เมื่อเวลาผู้ใช้ login ก็จะมีสิทธิแค่ Guest ติดตั้งโปรแกรมเพิ่มไม่ได้ เป็นต้น

    เราจะไม่ใช้ option Remove account and profile after logout ก็ได้โดยให้เก็บ user account ไว้ ก็จะทำให้การเข้าใช้งาน login ในครั้งต่อไปเร็วขึ้น เพราะไม่ต้องเสียเวลาสร้าง user profile ใหม่ แต่ก็ต้องเตรียม disk ไว้ให้ใหญ่เพียงพอ หรือ ทำรอบ cloning ใหม่ให้เร็วขึ้น

    ต่อไปก็มาถึงตั้งค่า RADIUS plugin หลังจากเลือก Authentication และ Notification แล้วจากนั้นคลิกปุ่ม Configure จะได้ค่าดีฟอลต์รวมกับที่แก้ไขแล้ว ดังรูป

    ผมจะเลือกใช้และใส่ค่าต่าง ๆ เหล่านี้ครับ

    เลือก Enable Authentication เพื่อสอบถาม username/password

    เลือก Enable Accounting เพื่อส่งข้อมูลบันทึกค่า Acct-Status-Type ไปยัง RADIUS Server

    แล้วระบุ Server IP และ Shared Secret ที่จะต้องตรงกันกับที่ระบุอยู่ใน config ที่ RADIUS server เช่น FreeRADIUS จะอยู่ในไฟล์ clients.conf เป็นต้น

    เลือก Called-Station-ID ด้วย หากต้องการเลข MAC Address เก็บด้วยนอกจากเก็บ IP

    พบว่าจำเป็นต้องเลือก Accounting Options หัวข้อ Send Interim Updates เพื่อให้มีการส่งค่า accounting ได้ (โดยใช้ค่า Send update every 900 seconds ตามที่เป็นค่าดีฟอลต์)

    แล้วระบุ IP Address Suggestion เช่น 192.168.1. หมายถึงระบุว่าจะใช้ข้อมูลของ network นี้ เพราะว่าในเครื่องอาจมีการติดตั้งซอฟต์แวร์ที่จำลอง network interface เพิ่มขึ้นมาอีกอัน เป็นต้น

    ส่วนค่าอื่น ๆ ปล่อยไว้ตามเดิม

    ตรวจดูแท็บ Order มีค่าดีฟอลต์ดังรูป

    ผลลัพธ์ของ radius accounting log ที่ไว้ตรวจสอบ ดังรูป

    เพิ่มเติมเนื้อหา

    คัดลอกเนื้อหามาจากเพจเดิม เรื่อง การตั้งค่า pGina และ FreeRADIUS เพื่อส่งค่า RADIUS Accounting ไปยัง Firewall ของมหาวิทยาลัย

    FreeRADIUS Version 2.2.8 แก้ไขไฟล์ /etc/freeradius/proxy.conf
    FreeRADIUS Version 3.0.16 แก้ไขไฟล์ /etc/freeradius/3.0/proxy.conf
    อาจด้วยคำสั่ง vi หรือ nano ตามชอบ

    เพื่อให้มีค่า realm NULL (ประมาณบรรทัดที่ 672) ที่กำหนดค่า Accounting Port เพียงอย่างเดียวส่งไปยังเครื่อง Firewall

    pgina06
    รูปก่อนแก้ไข

    pgina07
    รูปหลังแก้ไข

    ในรูปตัวอย่างเครื่อง Firewall คือ radius.hatyai.psu.ac.th และต้องรู้ค่า secret ที่ตั้งเพื่อใช้สำหรับเครื่อง FreeRADIUS และ Firewall ในที่นี้คือ yoursecret (อันนี้ต้องมีการติดต่อกับ network administrator ของมหาวิทยาลัยเพื่อร่วมกันตั้งค่านี้)

    และแก้ไขอีกแฟ้มคือ

    FreeRADIUS Version 2.2.8 แก้ไขที่แฟ้ม /etc/freeradius/sites-available/default
    FreeRADIUS Version 3.0.16 แก้ไขที่แฟ้ม /etc/freeradius/3.0/sites-available/default

    ประมาณบรรทัดที่ 325 Pre-accounting ใน module ชื่อ preacct

    preacct {
                   preprocess
                   เพิ่ม
    }

    หากยังไม่มีบรรทัดเหล่านี้ ให้เพิ่มด้วยต่อท้ายบรรทัด preprocess

    # append update for pGina no attribute Framed-IP-Address
    if (NAS-IP-Address != 127.0.0.1) {
           update request {
                 Framed-IP-Address = "%{NAS-IP-Address}"
           }
    }

    แล้ว restart FreeRADIUS ใหม่

    pgina08
    รูปแสดงคำสั่งในการ restart

    sudo service freeradius stop
    sudo service freeradius start

    จากนั้นรอให้ทางฝั่งผู้ดูแล Firewall ตั้งค่าโปรแกรมที่ดึงข้อมูลที่ FreeRADIUS ของเราส่งไปนำไปใส่ใน Firewall Rule อนุญาตเครื่องไคลเอ็นต์ไม่ต้อง login ซ้ำ

    ขั้นตอนข้างล่างนี้ ใช้ในขณะทดสอบ option เรื่อง Remove account and profile after logout

    การลบ Windows user account และ profile ที่สร้างโดย pGina

    1.เปิด Computer Management เพื่อเข้าไปลบ user account (ต้อง log off แล้วเท่านั้นจึงลบได้) คลิกขวาปุ่ม Start เลือก Computer Management

    จะได้หน้าต่าง 

    รายการที่มีคำว่า pGina created ค้างอยู่ ผลมาจากการไม่ได้เลือก option Remove  account and profile after logout

    2.เปิด System and Security เพื่อเข้าไปลบ user profile ชื่อ Account unknown

    โดยคลิกปุ่ม Start พิมพ์คำว่า advanc แล้วเลือก View advanced system settings

    คลิกเลือก Advanced system settings ได้หน้าต่างมีหลายส่วน ให้คลิก Setting ในส่วน User Profiles

    คลิกที่ Account unknown แล้วคลิก Delete

  • Fully Shut Down Windows 10

    ทดสอบ Windows 10 รุ่น 1803 พบว่า หากเราจะให้เป็นการ shutdown ที่สมบูรณ์ ไม่ใช่การ shutdown แบบ hibernate แล้วละก็เราจะต้องเปิด command line แบบ Run as Administrator แล้วทำ 2 คำสั่งนี้

    powercfg.exe   /hibernate off
    shutdown  /s  /t  0

    การทำ shutdown ที่สมบูรณ์ เมื่อเราต้องการจะบูตด้วยแผ่นCD SystemRescueCd (หรือ USB boot เป็น Linux) แล้วต้องการจะใช้คำสั่ง ntfs-3g เพื่อ mount แบบ Read Write ได้สำเร็จ เช่น ntfs-3g  /dev/sda1  /mnt/custom เป็นต้น

    การทำ shutdown ที่ไม่สมบูรณ์ เมื่อใช้คำสั่ง ntfs-3g เพื่อ mount แบบ Read Write จะได้ข้อความแจ้งเตือนว่า ทำไม่ได้ และถูกบังคับให้เป็นการ mount แบบ Read-Only แทน
    Windows is hibernated. 

    References:
    How to disable and re-enable hibernation on a computer that is running Windows
    https://support.microsoft.com/en-us/help/920730/how-to-disable-and-re-enable-hibernation-on-a-computer-that-is-running

  • Configuration of TCP/IP with SSL and TLS for Database Connections

    สิ่งที่ต้องเตรียม

    1. Oracle Database Server ในตัวอย่างนี้ใช้ Oracle database บน Oracle Enterprise Linux 7
    2. Oracle Database Client  ในตัวอย่างใช้ Windows Server 2008 R2

    เริ่ม

    • ฝั่ง Server
    • เข้าระบบด้วยบัญชีผู้ใช้ oracle หรือบัญชีที่เป็นเจ้าของ Oracle Database
    • เปิด terminal สร้าง Oracle Wallet ด้วยคำสั่ง
      • mkdir -p /u01/app/oracle/wallet

    • ต่อด้วย
      • orapki wallet create -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 -auto_login_local

      • โดย -pwd WalletPasswd123 ตัว WalletPasswd123 คือรหัสผ่านที่ใช้ป้องกันการเข้าถึงข้อมูลต่างๆ ใน wallet กฎการตั้งมีอยู่คือ ยาวอย่างน้อย 8 ตัวอักษร ไม่จำกัดความยาว จำเป็นต้องตั้งให้ตัวเลขผสมตัวอักษร
    • สร้าง Certificate และใส่เข้าไปใน wallet ด้วยคำสั่ง
      • orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 \
        -dn "CN=`hostname`" -keysize 1024 -self_signed -validity 3650

    • ตรวจสอบด้วยคำสั่ง
      • orapki wallet display -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123

    • ได้ผลลัพธ์ประมาณ
      • Oracle PKI Tool : Version 12.1.0.2
        Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.

        Requested Certificates:
        User Certificates:
        Subject: CN=reis.psu.ac.th
        Trusted Certificates:
        Subject: CN=reis.psu.ac.th

    • Export Certificate เพื่อนำไปใช้กับเครื่อง Oracle Client ด้วยคำสั่ง
      • orapki wallet export -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 \
        -dn "CN=`hostname`" -cert /tmp/server-certificate.crt

    • ตรวจสอบแฟ้มที่ export ไปด้วยคำสั่ง
      • cat /tmp/server-certificate.crt

    • ได้ผลลัพธ์ประมาณว่า
      • -----BEGIN CERTIFICATE-----
        MIIBoTCCAQoCAQAwDQYJKoZIhvcNAQEEBQAwGTEXMBUGA1UEAxMOcmVpcy5wc3UuYWMudGgwHhcN
        MTgwMTA5MDcyNTA2WhcNMjgwMTA3MDcyNTA2WjAZMRcwFQYDVQQDEw5yZWlzLnBzdS5hYy50aDCB
        nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAj4x2/NviDaTlXuEJt0kZARY5fHiT2SiVX+a18hai
        I0stoUhKKefjOCgB85iuqjIk0rvcGXI0KXkbenTy2t40A+qGxB04mBhCLKaKeIe67BZKR6Zyw1dd
        oaesoaWChC01b+IW1X5WWtC53UxpIZQ4Zktj41sLGUnarIr9+9HFwncCAwEAATANBgkqhkiG9w0B
        AQQFAAOBgQAqSCF2Y8uyM4rSQHUC8MKEl3Ia3NJKnigMOUzDc2fP7grSaoeuQ4NvIntTD+s+IT5Y
        EpLVND4kSHFTwGRq0Py/ig8ybXZCXfHtvNZh7ZGziL/sYt5/8xYi/tOBKwVanBTUaseKIMovtmd7
        UyoOKrX8YBoFsB3UPRLudmFsksXRXw==
        -----END CERTIFICATE-----

    • ฝั่ง Client
    • เข้าระบบด้วยบัญชีผู้ใช้ administrator
    • เปิด cmd แล้วสร้าง wallet ด้วยคำสั่ง
      • mkdir c:\app\oracle\wallet

    สร้าง Certificate ด้วยคำสั่ง

      • orapki wallet add -wallet "c:\app\oracle\wallet" -pwd WalletPasswd123 -dn "CN=%computername%" -keysize 1024 -self_signed -validity 3650

      • โดย WalletPasswd123 คือพาสเวิร์ดที่ใช้ล็อค wallet ไม่จำเป็นต้องเหมือนกับของ Server
    • ตรวจสอบด้วยคำสั่ง
      • orapki wallet display -wallet "c:\app\oracle\wallet" -pwd WalletPasswd123

    • ได้ผลลัพธ์ประมาณว่า
      • Oracle PKI Tool : Version 12.2.0.1.0
        Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.

        Requested Certificates:
        User Certificates:
        Subject: CN=ENERAZAN
        Trusted Certificates:
        Subject: CN=ENERAZAN

    • Export Certificate เพื่อนำไปใช้กับเครื่อง Oracle Database Server ด้วยคำสั่ง
      • orapki wallet export -wallet "c:\app\oracle\wallet" -pwd WalletPasswd123 -dn "CN=%computername%" -cert c:\client-certificate.crt

    • ตรวจสอบแฟ้มที่ export ไปด้วยคำสั่ง
      • more c:\client-certificate.crt
    • ได้ผลลัพธ์ประมาณว่า
      • -----BEGIN CERTIFICATE-----MIIBmTCCAQICAQAwDQYJKoZIhvcNAQEEBQAwEzERMA8GA1UEAxMIRU5FUkFaQU4wIhgPMDE1NTAxMDkwNzMzNDlaGA8wMTQ1MDEwNzA3MzM0OVowEzERMA8GA1UEAxMIRU5FUkFaQU4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJHEEnB4kiI82QVyt0/GlrILF9dwd/jVRlgCQkLmLrpF6RKrIUntzvygyVhtTybeaShH751gYvtl1NFxDUWkBnfS5u2DN6ATP2WpNQgGM/skPWZOxoewy6OeeFsDPNUJTsI8+F5DIwtNhZcdQtBexZ/D3ALkSboR87t2Vy8OJpD7AgMBAAEwDQYJKoZIhvcNAQEEBQADgYEAV7xLLslRn2srS4A4Ks1KiuUWI/ackyNK7UiWgWD/by5Vx4Zw+0x3hdLzQllDR2O5Nef9it5WyYWrDQ47RadqMEVVfTGuAqQn47n/t+v24ljwm2yZ36Tj2lDVaFbE/ZtRyzPKgIwUy6RIt9XVX39vXFJVaENCHzZ0R3hs2bx1K3o=-----END CERTIFICATE-----

    • ทำการส่งไฟล์ certificate แลกกันระหว่าง Server กับ Client โดยใช้วิธีการที่ชื่นชอบของแต่คน เมื่อแลกไฟล์กันเสร็จแล้ว
    • ฝั่ง Server import certificate ด้วยคำสั่ง
      • orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 \ -trusted_cert -cert /tmp/client-certificate.crt

    • สามารถตรวจสอบด้วยคำสั่ง
      • orapki wallet display -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123

    • ได้ผลลัพธ์ประมาณ
      • Oracle PKI Tool : Version 12.1.0.2
        Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.

        Requested Certificates:
        User Certificates:
        Subject: CN=reis.psu.ac.th
        Trusted Certificates:
        Subject: CN=ENERAZAN
        Subject: CN=reis.psu.ac.th

    • ฝั่ง Client import certificatae ด้วยคำสั่ง
      • orapki wallet add -wallet "c:\app\oracle\wallet" -pwd WalletPasswd123 -trusted_cert -cert c:\server-certificate.crt

    • สามารถตรวจสอบด้วยคำสั่ง
      • orapki wallet display -wallet “c:\app\oracle\wallet” -pwd WalletPasswd123
    • ได้ผลลัพธ์ประมาณว่า
      • Oracle PKI Tool : Version 12.2.0.1.0
        Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.

        Requested Certificates:
        User Certificates:
        Subject: CN=ENERAZAN
        Trusted Certificates:
        Subject: CN=reis.psu.ac.th
        Subject: CN=ENERAZAN

    • ฝั่ง Server แก้ไขแฟ้ม $ORACLE_HOME/network/admin/sqlnet.ora ด้วย editor ที่ชื่นชอบ
      • เพิ่มคำสั่งต่อไปนี้
      • WALLET_LOCATION =
        (SOURCE =
        (METHOD = FILE)
        (METHOD_DATA =
        (DIRECTORY = /u01/app/oracle/wallet)
        )
        )

        SQLNET.AUTHENTICATION_SERVICES = (TCPS,NTS,BEQ)
        SSL_CLIENT_AUTHENTICATION = FALSE
        SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA)

    แก้ไขแฟ้ม $ORACLE_HOME/network/admin/listener.ora

      • เพิ่มข้อความส่วนที่เป็นตัวหนาตามตำแหน่งต่อไปนี้
      • LISTENER =
        (DESCRIPTION_LIST =
        (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = reis.psu.ac.th)(PORT = 1521))
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        (ADDRESS = (PROTOCOL = TCPS)(HOST = reis.psu.ac.th)(PORT = 2484))
        )
        )

        SSL_CLIENT_AUTHENTICATION = FALSE

        WALLET_LOCATION =
        (SOURCE =
        (METHOD = FILE)
        (METHOD_DATA =
        (DIRECTORY = /u01/app/oracle/wallet)
        )
        )

    • restart listener ด้วยคำสั่ง
      • lsnrctl stop
      • lsnrctl start
    • ฝั่ง Client แก้ไขแฟ้ม C:\app\client\Administrator\product\12.2.0\client_1\network\admin\sqlnet.ora โดยเพิ่มข้อความต่อไปนี้
      • WALLET_LOCATION =
        (SOURCE =
        (METHOD = FILE)
        (METHOD_DATA =
        (DIRECTORY = c:\app\oracle\wallet)
        )
        )

        SQLNET.AUTHENTICATION_SERVICES = (TCPS,NTS)
        SSL_CLIENT_AUTHENTICATION = FALSE
        SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA)

    • แก้ไขแฟ้ม C:\app\client\Administrator\product\12.2.0\client_1\network\admin\tnsnames.ora เพิ่มข้อความต่อไปนี้
      • REIS_SSL =
        (DESCRIPTION =
        (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCPS)(HOST = reis.psu.ac.th)(PORT = 2484))
        )
        (CONNECT_DATA =
        (SERVICE_NAME = reis.psu.ac.th)
        )
        )

    • ทดสอบใช้งาน
    • ที่ Client พิมพ์คำสั่ง
      • sqlplus scott/tiger@reis_ssl
    • ได้ผลลัพธ์ประมาณว่า
      • SQL*Plus: Release 12.2.0.1.0 Production on Wed Feb 7 16:54:05 2018
        Copyright (c) 1982, 2016, Oracle. All rights reserved.

        Last Successful login time: Wed Feb 07 2018 16:52:50 +07:00

        Connected to:
        Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 – 64bit Production
        With the Partitioning, OLAP, Advanced Analytics and Real Application Testing opt
        ions

        SQL>

    • หรือต่อด้วย SQL Developer ต้องตั้งค่าการเชื่อมต่อเป็นดังภาพ
    • จากภาพเลือก Connection Type เป็น Advanced และใช้ช่อง Custom JDBC URL ใส่เป็น jdbc:oracle:oci:/@reis_ssl
    • เนื่องจากไม่สามารถเชื่อมต่อผ่าน tns ได้ ดังภาพ
    • วิธีเซ็ตค่าแบบนี้ใช้ได้กับ Oracle Database 10G R2 เป็นต้นมา
    • จบขอให้สนุก

    ที่มา:
    https://oracle-base.com/articles/misc/configure-tcpip-with-ssl-and-tls-for-database-connections

  • วิธีการ Upload ไฟล์ไปบน Google Drive File Stream ด้วย Google Client Library for Python

    Google Drive File Stream จริงๆแล้วก็คือการเปิดให้ PC ทั้ง Windows และ Mac สามารถ Map Drive จาก Google Drive มาเป็น G:\ หรืออะไรทำนองนั้น แต่ปัจจุบัน (September 2017) บน Windows Server ซึ่งใช้ Secure Boot จะไม่สามารถติดตั้ง Client ได้ และ Ubuntu Server ก็ยังไม่มีตัวติดตั้ง ดังนั้น ในภาพของผู้ดูแลระบบ ไม่สามารถใช้ความสามารถนี้ได้ … โดยตรง

    ส่วนใน Windows Desktop ทั่วไปก็จะติดตั้งได้ แม้ว่า จากคำโฆษณา จะบอกว่าผู้ใช้สามารถใช้งานได้ แม้พื้นที่บน Local Drive ไม่เยอะ แต่เอาเข้าจริง ด้วยความสามารถที่จะใช้งาน Offline ได้บ้าง ทำให้ Client ต้อง Cache ไฟล์ที่ใช้งานด้วยเช่นกัน และหาก upload ไฟล์ขนาดใหญ่ จาก Local Drive ไปเก็บใน G:\ ข้างต้น ก็จะทำให้ต้องเสียพื้นที่ในขนาดเท่าๆกันไปด้วย เช่น ใน Local Drive มีไฟล์ที่จะ Backup ขึ้นไป ขนาด 1 GB บน C:\ เมื่อทำการ Copy ไปยัง G:\ ก็จะเสียพื้นที่อีก 1 GB ด้วยเช่นกัน

    ทางออกก็คือ ใช้ความสามารถของ Google Client Library ทำการ Upload ไฟล์ขึ้นไปโดยตรง เท่าที่ทดลองมา จะไม่ได้ Cache บน Local Drive ทำให้สามารถ Upload ไฟล์ขนาดใหญ่ได้ โดยไม่เสียพื้นที่เพิ่มแบบ Client ข้างต้น

    วิธีการใช้งาน Python เพื่อ Upload File ขึ้น Google Drive File Stream

    1. ผมเขียน Code เอาไว้ ชื่อ upload2gdrive.py ไว้บน GitHub (https://github.com/nagarindkx/google) สามารถดึงมาใช้งานได้โดยใช้คำสั่ง
      clone https://github.com/nagarindkx/google.git
      cd google
    2. สร้าง Project, Credential ตาม “ขั้นที่ 1” ในบทความ การใช้งาน Google Drive API ด้วย Google Client Library for Python ซึ่งจะได้ไฟล์ Client Secret File มา ให้แก้ไขชื่อเป็น “client_secret.json” แล้ว นำไปไว้ใน directory “google” ตามข้อ 1
    3. วิธีใช้คำสั่ง
      ดูวิธีใช้

      python upload2gdrive.py --help

      Upload ไฟล์ จาก /backup/bigfile.tar,gz

      python upload2gdrive.py --file /backup/bigfile.tar.gz

      บน Windows ก็สามารถใช้งานได้ ด้วยคำสั่ง

      python upload2gdrive.py --file D:\backup\bigfile.tar.gz

      หากต้องการระบุตำแหน่ง Folder บน Google Drive ที่ต้องการเอาไฟล์ไปไว้ ให้ระบุ Folder ID

      python upload2gdrive.py --file /backup/bigfile.tar.gz ----gdrive-id xxxxxxxbdXVu7icyyyyyy

      หากต้องการระบุ Chunk Size (ปริมาณข้อมูลที่จะแบ่ง Upload เช่น ไฟล์ 1 GB หากกำหนด Chunk Size เป็น 100MB โปรแกรมจะแบ่งข้อมูลเป็น 10 ส่วน — ขนาดที่เล็กที่สุดคือ 1 MB และค่า Default คือ 100 MB)

      python upload2gdrive.py --file /backup/bigfile.tar.gz ----gdrive-id xxxxxxxbdXVu7icyyyyyy --chunk-size 100
    4. ผลการทำงานจะประมาณนี้

      ใน Google Drive ที่กำหนด ก็จะมีไฟล์ปรากฏอยู่

    หวังว่าจะเป็นประโยชน์ครับ

    PS: ในบทความต่อไป จะมาอธิบายว่า เขียนขึ้นมาได้อย่างไร โปรดติดตามชม

  • ไวรัส shortcut

    เหตุที่ตั้งชื่อบทความว่า ไวรัส shortcut ไม่ได้หมายความว่าไวรัสประเภทนี้ชื่อ shortcut แต่เป็นอาการทีเกิดขึ้นเมื่อไวรัสตัวนี้ทำงาน โดยสาเหตุและลักษณะอาการที่พบคือ เมื่อเรานำ flash drive หรืออุปกรณ์จำพวก removable drive (เช่น external hardisk) ไปใช้งานกับเครื่องคอมพิวเตอร์เครื่องใดเครื่องหนึ่ง ไฟล์ที่อยู่ใน flash drive หรือ removable drive จะหายไป และจะมีไฟล์ shortcut เกิดขึ้นแทนที่ โดย shortcut มักจะถูกตั้งชื่อเหมือนกับไฟล์ข้อมูลเดิมที่มีอยู่ ซึ่งหากเราเผลอเปิดไฟล์ shortcut ดังกล่าว ก็จะเป็นการไปเรียกไฟล์ไวรัสให้ทำงานนั่นเอง ส่วนไฟล์ข้อมูลเดิมนั้นไม่ได้หายไปไหน เพียงแต่เมื่อแรกเริ่มที่ติดไวรัสมานั้น ไฟล์เหล่านี้จะถูกซ่อนไว้ไม่ให้เห็นนั่นเอง

     

    ตัวอย่างไฟล์ shortcut ที่ไวรัสสร้างขึ้น ข้อสังเกตุคือจะมีไอคอนเป็นแบบ shortcut (ไอคอนรูปลูกศร)

     

    แนวทางการแก้ไข (ในบทความนี้จะยกตัวอย่างบน Windows 8.1)

    • อันดับแรกสิ่งที่ต้องเตรียมคือ เครื่องคอมพิวเตอร์ที่ไม่ติดไวรัส เพื่อใช้สำหรับกำจัดไวรัสและกู้ข้อมูลที่อยู่ใน flash drive หรือ removable drive โดยคอมพิวเตอร์ควรมีความพร้อมดังต่อไปนี้
      – ติดตั้งโปรแกรม antivirus ที่อัพเดตฐานข้อมูลไวรัสล่าสุด กรณี Windows 8.1 จะมี antivirus มาพร้อมอยู่แล้วคือ Windows Defender ซึ่งควรอัพเดตฐานข้อมูลไวรัสให้ล่าสุดก่อน
      – ปิด Autorun หรือ AutoPlay เพื่อป้องกันไม่ให้ไฟล์ใน  flash drive หรือ  removable drive ที่ติดไวรัส ถูกเปิดอ่านเมื่อมีการเชื่อมต่อกับเครื่องคอมพิวเตอร์ ซึ่งอาจจะเป็นสาเหตุให้ไวรัสแพร่กระจายต่อไปได้
    • เชื่อมต่อ flash drive หรือ removable drive ที่ติดไวรัสเข้ากับเครื่องคอมพิวเตอร์ จากนั้นทำการแสกนไวรัสด้วยโปแกรม antivirus ที่เตรียมไว้  และทำตามคำแนะนำของโปรแกรม antivirus  เพื่อกำจัดไฟล์ไวรัสและไฟล์ shortcut ที่ถูกไวรัสสร้างขึ้นมา   ซึ่งเมื่อเสร็จสิ้นขั้นตอนนี้แล้ว อาจจะพบว่า drive จะกลายเป็นพื้นที่ว่าง ๆ แต่หากดู properties ของ drive แล้วจะพบว่ามีเนื้อที่ส่วนหนึ่งถูกใช้ในการเก็บข้อมูล ซึ่งที่จริงแล้วก็คือไฟล์ข้อมูลที่ถูกไวรัสซ่อนไปนั่นเอง

    ตัวอย่าง falsh drive ที่ติดไวรัส หลังจากกำจัดไวรัสออกไปแล้ว จะเห็นเป็น drive ว่าง ๆ แต่เมื่อดู properties จะเห็นว่ามีเนื้อที่ส่วนหนึ่งที่มีการใช้เก็บข้อมูลอยู่

     

    • ส่วนของขั้นตอนการกู้ไฟล์ที่หายไปนั้น ก็คือการทำให้คอมพิวเตอร์ของเราเห็นไฟล์ที่ซ่อนไว้นั่นเอง
    • ซึ่งโดยปกตินั้น เราสามารถตั้งค่าการแสดงไฟล์ได้ในหน้าต่าง File Explorer โดยก่อนเข้าไปตั้งค่านี้ ให้เราเข้าไปที่ drive ที่ต้องการกู้ข้อมูลก่อน เพื่อจะได้เห็นผลจากการตั้งค่าได้เลย  จากนั้นเลือกเมนู View ที่อยู่ด้านบน แล้วเลือกเลือกเมนู Options แล้วเลือกคำสั่ง Change folder and search options เสร็จแล้วจะปรากฏหน้าต่างสำหรับตั้งค่า ต่อมาคือให้ไปที่แท็บ View จากนั้นให้ลองเลือกตัวเลือก ดังนี้
      • เลือก Show hidden files, folders, and drives จากนั้นกดปุ่ม Apply
      • หากไฟล์ที่ถูกซ่อนยังไม่ปรากฏ ให้เลือกตัวเลือก Hide protected operating system files (Recommended) แล้วกดปุ่ม Apply ซึ่งเมื่อถึงขั้นตอนนี้แล้ว ไฟล์ที่ถูกซ่อนไว้ก็น่าจะปรากฏขึ้นมาแล้ว
    • จะสังเกตเห็นว่าไฟล์ข้อมูลที่หายไปจะปรากฏขึ้นมา แต่ไอคอนจะเป็นสีจาง ๆ เนื่องจากถูกตั้งค่าให้เป็น Hidden โดยไวรัส และเมื่อดู properties ของไฟล์ จะพบว่าไม่สามารถเปลี่ยนค่าจาก Hidden เป็นปกติได้ เนื่องจากตัวเลือก Hidden ถูก disable อยู่
    • วิธีการแก้ไขเพื่อเอาค่า Hidden ออกทำได้ดังนี้คือ
      • อันดับแรก ให้กลับไปตัั้งค่าการแสดงผลไฟล์และโฟลเดอร์ให้เป็นเหมือนเดิมก่อน (ติ๊กเครื่องหมายถูกตัวเลือก Hide protected operating system files (Recommended) แล้วกดปุ่ม Apply) ไฟล์ก็จะถูกซ่อนไม่ให้เห็นเช่นเดิม  เพื่อจะได้ดูผลลัพธ์หลังจากแก้ปัญหาตามขั้นตอนแล้ว ว่าไฟล์ที่ซ่อนจะกลับมาแสดงให้เห็นเหมือนเดิมหรือไม่
      • เปิดหน้าต่าง command prompt แล้วพิมพ์ชื่อของ drive ที่ต้องการยกเลิกการซ่อนไฟล์
      • จากนั้นพิมพ์คำสั่ง attrib -s -h -r /S /D กดปุ่ม Enter
      • กลับไปตรวจสอบที่ drive ที่ต้องการกู้ข้อมูล ก็จะพบว่าไฟล์ที่ถูกซ่อนไว้กลับมาแสดงเช่นเดิม
      • อ้างอิงวิธีการจาก http://computertipeasy.blogspot.com/2014/03/hidden-file-and-folder-unlock-hidden.html

     

    สรุป

    แม้ไวรัสตัวนี้จะไม่ก่อความเสียหายมาก แต่ก็สร้างความรำคาญและทำให้เสียเวลาต้องมาแก้ไข ดังนั้น ข้อควรระวังก็คือ ไม่นำอุปกรณ์ประเภท removable drive ไปใช้งานกับคอมพิวเตอร์ที่มีความเสี่ยงที่จะเป็นแหล่งแพร่กระจายของไวรัส และข้อพึงระวังอีกอย่างคือ การสำรองข้อมูลที่อยู่ใน removable drive ควรมีเก็บสำรองไว้ที่อื่นด้วย เพราะถ้าโชคไม่ดี อาจจะเจอกับไวรัสที่มีผลทำลายรุนแรงถึงขั้นไม่สามารถกู้ข้อมูลกลับมาได้อีก