Month: August 2019

  • จัดระเบียบ Tab บน Chrome ด้วยเทเลทับบี้ เอ้ย Toby (โทบี้) กันดีกว่า

    วันนี้จะมาแนะนำส่วนขยาย (Extensions – เครื่องมือเสริมบราวเซอร์) บน Chrome ที่มีชื่อว่า Toby ค่ะ ใช้งานฟรี กับวลีเด็ดที่เจ้า Toby นำเสนอตัวเองได้น่าสนใจมากเลยทีเดียว คือ Better than Bookmarks หลังจากที่ผู้เขียนได้ลองใช้งาน (Account แบบ Guest) ก็พบว่าการทำงานของเจ้า Toby นั้น ช่างเหมาะสมกับวลีดังกล่าวเสียจริง ๆ

    โดยเจ้า Toby จะช่วยเราจัดเก็บเว็บไซต์ที่เราใช้งานเป็นประจำทุกวัน บ่อย ๆ ซ้ำ ๆ หรือที่ถูกใจอยากจะเก็บเอาไว้ (ก็เว็บไซต์ต่าง ๆ ที่เรา Bookmark เอาไว้นั้นแหละค่ะ) แยกตามหมวดหมู่ (Collections) ที่เราได้สร้างไว้อย่างมีระเบียบ โดยหากใช้งานเจ้า Toby เมื่อเราเปิด Chrome ขึ้นมา เจ้า Toby จะเปลี่ยนหน้าเริ่มต้นของ Chrome ให้เป็นรูปแบบรายการของเว็บไซต์ต่าง ๆ ที่เราได้บันทึกจัดเก็บไว้ แน่นอน มันช่วยให้การเข้าถึงเว็บไซต์เหล่านั้นสะดวกและง่ายมากยิ่งขึ้น โดยเราไม่ต้องเสียเวลาในการหา หรือป้อนชื่อเว็บไซต์นั้น ๆ ใหม่ทุกครั้ง แต่สามารถคลิกเลือกเว็บไซต์จากรายการเพื่อไปยังเว็บไซต์นั้นได้เลยทันที

    อย่างผู้เขียนทำหน้าที่เป็น Customer Support ซึ่งต้องดูแลหลาย ๆ ระบบ (Web Application)  จากแต่ก่อน Bookmark ไว้ แต่พอมาใช้เจ้า Toby ก็สบายเลยละคะ User โทรมาสอบถามปัญหาเกี่ยวกับเว็บไซต์ที่ดูแลอยู่เมื่อไหร่ล่ะก็ พร้อมเข้าถึงเว็บไซต์เหล่านั้น (ซึ่งต้องเข้าออกทู๊กกกกกวันนนนน) เพื่อทดสอบ ตอบ แก้ไขปัญหาให้กับ User ได้อย่างทันทีเลยล่ะค่าาาา

    หรือ User ท่านไหนที่ชอบลืมชื่อเว็บไซต์ที่เราเข้าใช้งานเป็นประจำ ก็แนะนำให้ลองเอาไปใช้ดูนะคะ

    น่าสนใจมากเลยใช่มั้ยยยยล๊าาา งั้นเรามาติดตั้ง Toby ให้กับ Chrome ของเรากันดีกว่า พร้อมแล้ว ! ลุยยยกันเลยยยยค่ะ!

    ติดตั้ง Toby ให้ Chrome กันก่อน

    1.ไปที่ลิงก์ https://chrome.google.com/webstore/category/extensions ค้นหา Toby และกดปุ่ม Add to Chrome เพื่อเริ่มการติดตั้ง Toby ให้กับ Chrome ค่ะ

    2.Chrome จะแสดงกล่องยืนยันการติดตั้ง Toby กดปุ่ม Add extension เพื่อยืนยันการติดตั้ง รอจนกว่าจะสิ้นสุดการติดตั้งนะคะ

    เมื่อติดตั้งเรียบร้อยแล้ว เราก็ได้เจอกับเจ้า Toby  เสียที หน้าตาก็จะหวานแหวว สีชมพู๊วว ชมพู และจะพบปุ่ม Toby ที่มุมขวาของ Chrome โผล่ขึ้นมาด้วย

    โดยเจ้า Toby จะ guide การใช้งานให้กับเราซึ่งมี 3 ขั้นตอนที่ง่ายมาก ๆ ดังนี้ค่ะ

    Create Your First collection. > Give your collection a name. > Drag the tab to the collection.

    เริ่มใช้งาน Toby กันเลย

    Create Your First collection สร้างหมวดหมู่ (collection) ที่จะใช้บันทึกจัดเก็บเว็บไซต์ โดยคลิก ปุ่มเครื่องหมายบวก

    + Add Collection

    Give your collection a name คลิก  เลือก Edit tittle แล้วทำการแก้ไขชื่อของ Collection ตามที่ต้องการ

    Drag the tab to the collection ลาก Tab เว็บไซต์ที่เราต้องการ (รายการเว็บไซต์จะมาจากที่เราเข้าใช้งาน) มาใน collection แล้ววาง เท่านี้ก็เป็นอันเสร็จเรียบร้อบแล้ว

    หากเราต้องการสร้าง collection อื่น ๆ อีก ก็คลิกปุ่มเครื่องหมาย + สีชมพู Add collection  แล้วก็ทำตามขั้นตอนข้างต้นได้เลยค่ะ

    นอกจากนี้ เรายังสามารถแก้ไข tittle ของ Tab เว็บไซต์ที่จะให้แสดงได้อีกด้วย โดยการคลิกเครื่องหมายดินสอ (edit)  ที่ Tab นั้น ๆ แล้วทำการแก้ไขค่ะ
    ส่วนการลบ Tab ออกจาก collection ให้คลิกเครื่องหมายผิด X  นะคะ

    หากต้องการลบทั้ง collection ให้คลิก x Remove collection  ที่ collection นั้น ๆ นะคะ เท่านี้ collection ก็จะถูกลบออกไปจากหน้าจอแล้วละค่า

    เพิ่ม และเพิ่ม และเพิ่มไปเรื่อย ๆ จนพอใจ ก็จะได้หน้าตาประมาณนี้ค่า

    ส่วนใครอยากใช้ตัวเต็ม ๆ ของเจ้า Toby ซึ่งมีลูกเล่นอื่น ๆ อีก เช่น add notes เป็นต้น ก็ลงทะเบียนกับเจ้า Toby กันได้นะคะ
    ตัวอย่าง Add note แบบเกร๋ ๆ ค่ะ หลังจากที่ลงทะเบียนกับ Toby เรียบร้อยแล้ว ก็ลองใช้ซะเลยยย

    สำหรับบทความนี้ก็มีเท่านี้ค่ะ หมดเวลาสนุกแล้วซิ ! หมดเวลาสนุกแล้วซิ !

    แล้วพบกันใหม่นะคะ บ๊าย บายยย 🙂 เทเล ทั๊บบบบี้ ก็มาาาา 555+

    ขอบพระคุณ : http://www.gettoby.com/

  • Variables ใน Robot Framework

    วันนี้เรามาดูตัวแปร ใน Robot Framework กันดีกว่า ดู ๆ ไปตัวแปรมันก็แปลกดีนะ มาดูกันว่าเป็นไงบ้าง

    1. Case Insensitive –> ตัวพิมพ์เล็ก – พิมพ์ใหญ่เป็นตัวเดียวกัน
    2. Ignore space –> ไม่สนใจช่องว่าง
    3. Ignore underscore –> ไม่แคร์ Underscore 555

    มาดูประเภทของตัวแปรกัน ดังรูปจ้า

    1. ค่าคงที่
    2. List
    3. Dictionary หรือ Json

    ตามตัวอย่าง มารันดูข้อมูลกันจะเห็นได้ว่ามันจะรันตามลำดับ ที่เราแสดง Log to console

    ลองดูว่าถ้าเราจะให้แสดง List เฉพาะคำว่า Chotkaew จะทำยังไง ให้มองว่า Thichaluk เป็น index ที่ 0 และ Chotkaew เป็น index ที่ 1

    รันดูผลลัพธ์กัน

    มาลองดูของ dictionary กันบ้าง ให้แสดงค่าของ Thichaluk

    รันดูผลลัพธ์

    ทุกคนคงจะมองเห็นการเข้าถึงข้อมูลแต่ละประเภทกันแล้วใช่มั๊ยค่ะ

    ต่อไปมาลองสร้าง List กับ Dictionary อย่างง่าย ๆ กัน รูปแบบคำสั่งก็ไปหาดูได้ที่ https://robotframework.org ที่ Libraries –> Builtin ที่ Builtin คลิก View หา Create List กับ Create Dictionary

    รันดูผลลัพธ์

  • ELK #09 Anomaly Detection (Case Study)

    ระบบ PSU Email ให้บริการผู้ใช้ของมหาวิทยาลัยสงขลานครินทร์ ซึ่งมีการใช้งานจากทั่วโลก ทั้งระบบประกอบขึ้นจากคอมพิวเตอร์หลายเครื่อง การจะตรวจสอบ Log เมื่อเกิด Incident ขึ้น อาจจะต้องใช้ระยะเวลานาน และเป็นการยากพอสมควรที่จะเชื่อมโยงความสัมพันธ์ของเหตุการณ์ และสรุปออกมาเป็นรายงานได้ จึงเริ่มใช้ ELK สำหรับรวบรวม Log ของทั้งระบบไว้ที่ส่วนกลาง และพัฒนาต่อยอดเพื่อการตรวจจับความผิดปรกติต่าง ๆ ได้

    ในบทความนี้ จะนำเสนอวิธีการใช้ ELK เพื่อตรวจจับ การ Login ที่ผิดปรกติบน PSU Email โดยจะสนใจ ผู้ใช้ที่มีการ Login จากนอกประเทศเป็นหลัก

    การส่ง Log จาก Server เข้า ELK

    ที่เครื่อง Server แต่ละเครื่อง กำหนดให้ส่ง Log จาก /etc/rsyslog.d/50-default.conf เข้าไปที่ your.logstash.server:port ตามที่กำหนดไว้

    การสร้าง Logstash Filter

    ที่ Logstash Server

    • Input เพื่อรับข้อมูลจาก syslog ที่ port ที่ต้องการ เช่นในที่นี้เป็น 5516 เป็นต้น
    • Filter ใช้ Grok Plugin เพื่อจับข้อมูล จาก message แบ่งเป็นส่วน ๆ ตามลักษณะ แล้วตั้งชื่อตาม Field ตามต้องการ ในที่นี้คือ description, username, domainname, clientip, actiondate, actiontime เป็นต้น (ตัวที่สำคัญในตอนนี้คือ username และ clientip)
    • Output ตั้งว่าให้ส่งผลไปยัง Elasticsearch ที่ “your.elasticsearch.server” ที่ port 9200

    [ตรงนี้มีกระบวนการบางอย่าง ซึ่งค่อยมาลงรายละเอียด]

    เมื่อมี Log ไหลเข้าสู่ Logstash และ ถูกประมวลผลแล้ว ก็จะเข้าสู่ Elasticsearch แล้ว ก็นำไปใช้งานบน Kibana

    หลังจากนั้น สามารถ Search ข้อมูล และใส่ Fields ที่สนใจ เช่น Time, Username, geoip.country_name และ description ได้ แล้ว Save เอาไว้ใช้งานต่อ ในที่นี้ ตั้งชื่อว่า squirrelmail-geoip

    จากนั้น สามารถเอาไปสร้างเป็น Visualization แบบ Coordinate Map ได้ เช่น ดูว่า มีการ Login Success / Failed Login / Sent จากที่ไหนบ้างในโลก

    จะเห็นได้ว่า ส่วนใหญ่ ใช้งานจากในประเทศไทย (วงกลมสีแดงเข้ม ๆ) ส่วนนอกประเทศ จะเป็นวงสีเหลืองเล็ก ๆ

    การตรวจหาการใช้งานที่ผิดปรกติ

    สร้าง Search ใหม่ กรองเฉพาะ ที่มี (exist) Username และ ไม่เป็น N/A และ มี (exist) geoip.country_code และ ไม่ใช่ Thailand แล้ว Save ไว้ใช้งานต่อไป ในที่ตั้งชื่อว่า squirrelmail-geoip-outside-th

    จากนั้น เอาไปสร้าง Visualization แบบ Vertical Bar
    กำหนดให้
    Y Axis เป็นจำนวน
    X Axis เป็น Username
    โดยที่ Group by geoip.country_name และ description
    ก็จะทำให้รู้ว่า ใครบ้างที่ มีการใช้งานนอกประเทศ และ เป็นการใช้งานแบบไหน

    จะเห็นได้ว่า จะมีบางคนที่ แสดงสีแค่สีเดียว กับบางคนมีหลายสี เนื่องจาก มีหลายประเทศ และ หลายประเภทการใช้งาน เราสามารถ กรองเอาเฉพาะ ข้อมูลที่สนใจได้ โดยคลิกที่ Inspect แล้วกดเครื่องหมาย + กับข้อมูลที่ต้องการ เช่น description ที่เป็น “Failed webmail login” ก็ได้

    ก็จะกรองเฉพาะ Username ที่มีการ Login จากต่างประเทศ แต่ไม่สำเร็จ จากภาพด้านล่าง แสดงว่า 3 คนนี้ น่าจะโดนอะไรเข้าแล้ว

    หรือ ถ้าจะกรองข้อมูล เฉพาะคนที่ “Failed webmail login” และ “Message sent via webmail” ก็ได้ แต่ต้องเปลี่ยน ชนิดการ Filter เป็น “is one of”

    ผลที่ได้ดังภาพ แต่เนื่องจาก ก็ยังเป็น 3 คนนี้อยู่ จะเห็นได้ว่า คน ๆ เดียว (ซ้ายสุด) มีการ Login จากหลายประเทศ ภายใน 24 ชั่วโมง

    ต่อไป ถ้าเราสนใจเฉพาะ คนที่ “ส่งอีเมล” จากนอกประเทศ ในเวลาที่กำหนด จะได้ผลประมาณนี้

    พบว่า คนซ้ายสุด คนเดิมนั่นแหล่ะ แต่เราจะมาดูรายละเอียด ก็คลิกที่ปุ่ม Inspect แล้ว เลือก Include เฉพาะ Username นั้น

    ก็พบว่า คนนี้มีการส่ง email ออกจากประเทศ USA, Canada, Panama, Argentina, Mexico แล้วบินมา UK ภายในวันเดียว –> ทำได้ไง !!! (ดังภาพด้านล่าง)

    เมื่อลองตรวจสอบ ก็จะพบว่า Username นี้ มีพฤติกรรม ส่ง Spam จริง ๆ ก็จะจัดการ “จำกัดความเสียหาย” ต่อไป

    วิธีการที่กล่าวมาข้างต้น สามารถสร้างเป็น Process อัตโนมัติ (เว้นแต่ขั้นตอนการ จำกัดความเสียหาย จะ Automatic ก็ได้ แต่ตอนนี้ขอ Manual ก่อน) เอาไว้สำหรับ Monitoring ได้ โดยอาจจะสั่งให้ เฝ้าดู 1 ชั่วโมงล่าสุด และ Refresh ทุก 1 นาที ดังภาพ

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

    ส่วนรายละเอียด คอยติดตามตอนต่อไปครับ

  • Should Be Equal ใน Robot Framework

    วันนี้จะมาทดลองใช้ Should Be Equal (การเปรียบเทียบ) ใน Robot framework กันค่ะ ก่อนจะถึงคำสั่งเปรียบเทียบ เราก็ต้องเขียน Test Case อื่น ๆ กันก่อน งั้นวันนี้จะเขียนแบ่ง Test Case ให้อ่านง่าย ๆ กันไปเลย เพื่อเพื่อน ๆ จะได้นำไปประยุกต์ใช้งานกันได้ค่ะ

    สิ่งที่ต้องใช้ในวันนี้ คือ Notpad++ หรือ Tool อื่น ๆ ที่เพื่อน ๆ ถนัด วันนี้เราจะใช้ Visual Studio Code กันค่ะ (เพราะเหนื่อยกับการรันผ่าน command line แล้ว) มาเริ่มกันเลยดีกว่า

    จะเห็นว่า เรามีการตั้งชื่อ Test Case ให้อ่านง่าย เพื่อจะให้รู้ว่าแต่ละขั้นเราทำอะไร ตอนเป็น Report จะได้ดูง่ายเข้าไปอีก ค่อนไปดู Report ตอนท้าย

    คำสั่งนี้จะตรวจสอบว่าค่าที่ได้ตรงกันมั๊ย จะเห็นว่าเราเขียน Test Case เป็นภาษาไทยได้นะเออ จากรูปเปรียบเทียบค่าจาก xpath ที่ locator h1 ตามคำสั่ง //h1[@class=”main-header”]  เท่ากับ “ROBOT FRAME WORK/” หรือไม่

    Locator ที่กล่าวคือตำแหน่งตามรูปข้างบน คราวนี้เราลองปรับให้ ${expect} ไม่ใช่ค่าเดียวกับ locator ที่เราอ้างถึง

    จะเห็นได้ว่าที่ log console มีการแสดงผลในการเปรียบเทียบว่าไม่เท่ากัน ไปดู Report กันซะหน่อยว่าเป็นยังไง

    Report ก็ดูง่ายมากเลยเห็นมั๊ยหล่ะ ^_^

  • Windows Subsystem for Linux in Windows 10

    แนะนำวิธีติดตั้ง Windows Subsystem for Linux ใน Windows 10 รุ่น 1903 และวิธีเปิด sshd service อัตโนมัติ

    ขั้นตอน
    1.เปิด Featured Windows Subsystem for Linux ให้ไปที่ Control Panel เลือก Program เลือก Turn Windows features on or off ทำเครื่องหมายเพื่อเลือก Windows Subsystem for Linux รอสักครู่ จากนั้นจะมีคำสั่งให้ reboot เพื่อเริ่มใช้งานได้

    Open Control Panel
    Select Program
    Select Turn Windows features on or off
    Check Windows Subsystem for Linux
    Next, reboot Windows

    2.เปิด Microsoft Store App ใส่คำว่า ubuntu ในช่อง search เลือก Ubuntu 18.04 LTS App คลิก Get ถาม Sign in with Microsoft ให้ตอบ No, thanks จากนั้นรอ

    Open Microsoft Store
    Select Ubuntu 18.04 LTS App
    Get
    Answer with “No, thanks”
    On downloading

    3.เปิด Ubuntu 18.04 LTS ที่ปุ่ม Windows Start ให้คีย์คำว่า ubuntu แล้วเลือก Run ad administrator จะใช้เวลาสักครู่ แล้วจะให้เราตั้ง username และ password ที่ไม่จำเป็นต้องเหมือนกับ username ที่ sign in เข้า Windows

    Open Ubuntu with Run as administrator
    First time Installing

    4.เปิดอนุญาตให้มีการเชื่อมต่อผ่าน sshd ในครั้งแรกที่คีย์คำสั่งว่า
    sudo service ssh start

    Allow ssh in Windows Firewall

    5.ให้ถอนโปรแกรม openssh-server เพราะว่า Ubuntu ที่ได้มาไม่มี host key

    sudo apt remove openssh-server
    Remove sshd

    6.แล้วจะติดตั้งใหม่จะได้ ssh host key

    sudo apt install openssh-server
    Install sshd with new host key

    เปิด sshd service ด้วยคำสั่ง

    sudo service ssh start

    และทดสอบว่า บริการ sshd ทำงานได้แล้วด้วยคำสั่ง

    ssh john@127.0.0.1

    ให้เปลี่ยนคำว่า john เป็นชื่อ username ที่ใช้งาน
    จะพบว่าครั้งแรกนี้ จะเข้าไม่ได้ Permission denied (publickey)

    Permission denied

    7.เราจะตั้งค่าให้ใช้ password ได้ด้วยนอกจากใช้ public key

    sudo sed -i "s/^PasswordAuthentication no/PasswordAuthentication yes/" /etc/ssh/sshd_config
    Allow using password

    เปิด sshd service อีกครั้ง ด้วยคำสั่ง
    sudo service ssh restart
    และทดสอบอีกครั้งว่า บริการ sshd ทำงานได้แล้วด้วยคำสั่ง
    ssh john@127.0.0.1
    ให้เปลี่ยนคำว่า john เป็นชื่อ username ที่ใช้งาน
    ในรอบนี้ เราจะใส่ password ได้แล้ว หลังจากสำเร็จ ก็ใช้คำสั่ง exit ออกมา

    sshd is OK

    เมื่อมาถึงตรงนี้ เราได้ทำให้บริการ sshd พร้อมใช้งานใน Windows ของเราแล้ว

    ต่อไปเป็นการตั้งค่าให้บริการ sshd ทำงานทันทีที่เปิด Windows
    คีย์คำสั่งเหล่านี้

    echo "sudo /usr/sbin/service ssh start" > /mnt/c/startssh.sh

    และ

    echo "%sudo ALL = NOPASSWD: /usr/sbin/service ssh start" | sudo tee /etc/sudoers.d/custom

    (ตรงนี้อาจมีถาม password ของ username ที่กำลังใช้งานที่มีสิทธิใช้คำสั่ง sudo)
    และคำสั่งนี้

    sudo chmod 0440 /etc/sudoers.d/custom

    เสร็จแล้วคีย์คำสั่ง exit เพื่อปิดหน้าต่าง

    To prepare a task for Task Schdule

    คำเตือน: หากคีย์ข้อความในคำสั่งตกหล่น จะต้องกลับไปติดตั้ง Ubuntu ใหม่โดยการ Uninstall แล้ว Install ใหม่

    เราจะไปตั้งค่าให้ startssh.sh ทำงานด้วย Task Schedule
    เปิด Task Scheduler เลือก Run as administrator เลือก Task Scheduler Library ดูด้านขวา เลือกคำสั่ง Create Task

    Open Task Schedule
    Select Create Task

    แท็บแรกคือ General ตั้ง Name ว่า startssh เลือก Run whether user is logged on or not เลือก Run with highest privileges ที่ช่อง Configure for เลือก Windows 10

    General Tab

    แท็บสองคือ triggers เลือก New ที่ช่อง Begin the task เลือก At startup ที่ช่อง Advanced Settings ด้านล่าง เลือก Enabled

    Triggers Tab

    แท็บสามคือ Actions เลือก New ที่ช่อง Action เลือก Start a program ที่ช่อง Program/script ใส่คำว่า bash และที่ช่อง Add arguments ใส่ข้อความ /mnt/c/startssh.sh

    Action Tab

    จะมี pop up window ถาม username กับ password ที่จะรัน Task นี้ ก็ใส่ให้ถูก แล้วปิดหน้าต่าง Task Schedule

    Enter password

    เมื่อมาถึงตรงนี้ เราก็ได้ตั้งค่าให้ Start sshd เมื่อ Windows Start เสร็จแล้ว

    ทดสอบโดยการ reboot Windows เพื่อดูว่า Task Schedule ทำ task ขื่อ startssh ให้อัตโนมัติสำเร็จหรือไม่ โดยการทดสอบ ssh เข้าจาก PC อีกเครื่อง สมมติว่า เครื่อง Windows มี IP 192.168.6.221

    ssh john@192.168.6.221

    หลังจากตอบ Yes แล้วใส่ password ผ่าน ก็ให้พิมพ์คำสั่ง exit เป็นอันเสร็จสิ้นการทดสอบ
    หากได้ข้อความประมาณว่า ssh: connect to host 192.168.6.221 port 22: Resource temporarily unavailable ก็ต้องกลับไปตรวจสอบว่า ทำไมจึงเปิดบริการ sshd ไม่สำเร็จ ลองเช็ค Windows Firewall

    ต่อไปเป็นการนำ ssh key (id_rsa.pub) จากเครื่อง server ไปฝากไว้ที่ Windows Subsystem for Linux เพื่อเป็น publickey ใช้แทนการใส่ password เมื่อเราจะส่งคำสั่งเข้าไปจัดการ Windows ผ่านทาง Windows Subsystem for Linux เช่น reboot Windows เป็นต้น

    ตรวจสอบที่ server จะต้องมีไฟล์ id_rsa.pub ใน ~/.ssh/ ถ้ายังไม่ได้สร้าง key ก็ให้ใช้คำสั่งนี้

    ssh-keygen -t rsa
    directory ~/.ssh

    ส่ง ssh key ด้วยคำสั่งนี้

    ssh-copy-id -i ~/.ssh/id_rsa.pub john@192.168.6.221

    ให้แทนที่ john ด้วย username ที่ใช้ และเปลี่ยน IP เป็นที่ใช้

    Send ssh key

    ถ้าทำสำเร็จ ทดสอบด้วยคำสั่ง ssh john@192.168.6.221 จะเข้าได้โดยไม่มีถาม password
    ให้ออกจาก ssh นั้นด้วยคำสั่ง exit

    Testing

    ขั้นสุดท้ายทดสอบสั่ง reboot Windows ด้วยคำสั่ง เขียนติดกันเป็นบรรทัดเดียว

    ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no john@192.168.6.221 "/mnt/c/Windows/system32/shutdown.exe -r -f -t 0"
    Now we can manage Windows from remote

    วิธีที่ได้นำเสนอนี้ จะนำไปเป็นส่วนหนึ่งในการควบคุม Windows PC ในห้องบริการคอมพิวเตอร์ ซึ่งเราจะประยุกต์ให้เป็นการติดตั้งผ่าน shell script ไม่ต้องคีย์ทีละคำสั่ง

  • ทดสอบ API ด้วย Robot Framework (Get Request)

    ก็ยังคงเขียนเกี่ยวกับ robot framework อีกนั่นแหละ ^_^ วันนี้เลยจะมาเขียนตัวอย่างการทดสอบ api ด้วย Robot Framework (Get Request) อย่างง่ายกันค่ะ

    สิ่งที่ต้องใช้

    1. API  ที่จะใช้ในการทดสอบ อันนี้จะใช้ API ที่ http://thetestingworldapi.com ค่ะ
    2. เครื่องมือที่ใช้เขียน Notepad++  ^_^
    3. Cmd

    ขั้นแรกเราไปที่ http://thetestingworldapi.com แล้วคลิกที่ API ในที่นี้ขอเลือก API ของ StudentsDetails ดังรูปค่ะ

    จากนั้นก็เปิด Notpad++ ขึ้นมาเลยค่ะ

    ที่ Settings ต้องเรียก Library  RequestsLibrary นะ แต่ก่อนอื่นต้องไปลง Library ตัวนี้กันก่อน โดยใช้คำสั่ง

    pip install robotframework-requests

    ถ้าลงแล้วก็จะตรวจสอบได้ โดยใช้คำสั่ง pip freeze ดังรูป

    มาที่ Notepad++ กันต่อ ^_^ เขียนคำสั่ง ดังนี้เลย

    จะเห็นได้ว่าเรามีแสดง status_code ออกมาด้วย มารู้จักความหมายของ status_code แต่ละตัวกันดีกว่า

    2xx  คือ OK
    3xx คือ Redirection
    4xx คือ Resource not found
    5xx คือ Server error

    มารันผลลัพธ์กันดีกว่า

    อันนี้ไม่ขอรัน code ในส่วนของ content นะ ไปรันกันเอาเอง เพราะมันเยอะมากตาลาย capture รูปมาก็คงดูไม่รู้เรื่อง ^_^

    การทดสอบ Get Request อย่างง่าย ก็ประมาณนี้นะคะ

  • ปิดช่องโหว่เหลือค้าง

    • หลังจากไม่ได้ตรวจสอบช่องโหว่มานาน วันนี้ Nessus ทำใหม่แล้วลองสแกนซักหน่อย
    Nessus Scan Report
    • ซึ่งจะพบว่ามี Medium สองรายการ คือ Browsable Web Directory และ WordPress User Enumeration โดย
      • Browsable Web Directory คือ สามารถเข้าถึงรายการใน directory ได้ เช่น ชื่อไฟล์ มีไฟล์อะไรบ้าง ขนาดเท่าไหร่ เป็นต้น เมื่อตรวจสอบก็พบว่าเป็น directory ที่ผู้ใช้ไม่จำเป็นต้องเข้าถึง
      • WordPress User Enumeration คือ สามารถเข้าถึง username ได้ว่ามี user อะไรบ้าง

    ปิด Directory Browsing

    ทำได้ 2 วิธีคือ

    • แก้ไขแฟ้ม config ของ site ที่ต้องการปิด โดยทั่วไปแฟ้มจะอยู่ที่ /etc/apache2/site-enabled/site.conf โดย site.conf คือชื่อไฟล์ที่ต้องการ โดยเพิ่มในส่วนของ Directory ของไซต์นั้น ตัวอย่างเป็น /var/www/html/aaeee ให้ทำการแก้ไขหรือเพิ่มข้อความตามตัวอย่าง ส่วนสำคัญคือ Options ต้องไม่มีคำว่า Indexes เมื่อแก้ไขเสร็จ ให้ reload หรือ restart apache2 ด้วยคำสั่ง sudo systemctl reload apache2 หรือ sudo systemctl restart apache2
    <Directory /var/www/html/aaeee>
            Options FollowSymLinks
            AllowOverride All
    </Directory>
    • สำหรับวิธีที่สองนี้ ต้องมีการระบุ AllowOverride All ในแฟ้มของไซต์ ด้วยจึงจะใช้งานได้ (หากแก้ไขไฟล์ไซต์ของ apache2 ต้อง reload หรือ restart ด้วย) เช่น
    <Directory /var/www/html/aaeee>
            AllowOverride All
    </Directory>
    • สร้างแฟ้ม .htaccess เอาไว้ใน Directory (จากตัวอย่างนี้คือ /var/www/html/aaeee) ที่ต้องการ โดยเพิ่มข้อความข้างล่างนี้วิธีนี้ มีผลทันทีไม่ต้อง reload หรือ restart apache2
    Options -Indexes

    ปิด WordPress User Enumeration

    • ในไซต์ของ WordPress จะมีแฟ้ม .htaccess อยู่ให้เพิ่มข้อความต่อไปนี้ลงไป โดย yoursite.name คือชื่อเว็บไซต์
    #user enumeration
    RewriteCond %{QUERY_STRING} ^author=([0-9]*)
    RewriteRule .* https://yoursite.name/? [L,R=302]
    • เมื่อทำสองอย่างแล้วให้ nessus เข้าตรวจสอบอีกครั้ง
    Nessus Scan Report
    • เย่….หายไปละ
    • จบขอให้สนุก
  • อ่านข้อความจากภาพ ด้วย Tesseract-OCR

    OCR หรือ Optical Character Recognition จริง ๆ ก็มีใช้กันมานานมากแล้ว แต่การใช้งานก็จะผูกติดกับ Hardware พอสมควร แต่ในปัจจุบัน เราสามารถใช้ความรู้ด้าน Machine Learning / Deep Learning เพื่อให้คอมพิวเตอร์เข้าใจภาพได้ และสามารถนำมาประกอบกับเป็น Software สำหรับใช้งานของตนเองได้

    ในบทความนี้ ทดลองใช้ Tesseract-OCR พี่พัฒนาโดย Google อ่านภาพ เอกสารที่ Print จาก Computer เป็นกระดาษ -> มีการเซ็นต์ชื่อ -> นำกลับมา Scan อีกครั้ง

    *** มันเป็น Paperless ตรงไหน ? กฏหมาย Digital Signature ก็มีแล้วนะ ***

    เอาเป็นว่า ดูผลงาน

    ด้านซ้าย เป็นเอกสารที่ Scan จากกระดาษ ด้านขวาเป็นผลการอ่านด้วย Tesseract-OCR

    อ๊ะ บางคนบอกว่า เคยใช้แล้ว แต่ทำไมไม่ได้ผลอย่างนี้หล่ะ (โดยเฉพาะ ภาษาไทย) อิอิ มันมีรายละเอียดพอสมควร ไว้มีเวลาจะมาเล่าให้ฟัง

    แต่แบบนี้ ต้องทำอะไรเพิ่มก่อน จึงจะอ่านได้

    ต้นฉบับ มีตราประทับงี้ ตัวอักษรเล็ก เลขไทย ปน เลขอังกฤษ ปน ภาษาอังกฤษ อันนี้ ยากหน่อย

    ผลก็พอจะอ่านได้ แต่ต้องทำอะไรเพิ่มก่อนจะให้ OCR อ่าน –> อันนี้คือยังไม่ทำอะไรเพิ่ม

    ผล แบบยังไม่ได้ Preprocessing ใด ๆ สังเกตว่า ตัว ตราประทับ ทำให้เกิดปัญหา และ ตัวอักษรที่เล็กมาก ๆ ทำให้ OCR อ่านผิดได้ แต่มีทางแก้ไข

    มันไม่มีคำว่า “ก็ง่าย ๆ” หรอก หึ หึ หึ