ตรวจสอบแอพ "หมอชนะ" เบื้องต้น

เมื่อวันที่ 10 เมษายน 2563 ได้มีการเปิดตัวแอพ หมอชนะ เพื่อเก็บประวัติการเดินทางของประชาชน และประเมินว่าบริเวณนั้นมีผู้ป่วย COVID-19 หรือไม่ ผมจึงทำการตรวจสอบว่ามีการส่งข้อมูลอะไรบ้างไปยัง Server

รูปจาก https://www.prachachat.net/ict/news-447255


วิธีการตรวจสอบเบื้องต้นคือการทำ Man In The Middle (MITM)

โดยมีการเรียก API ต่างๆดังนี้

1. /registerDevice

โดยมีการส่งข้อมูลเป็น JSON ดังนี้

Request:

{"deviceId":"XXXXXXXXXX"}

โดยค่าใน deviceId น่าจะเป็นค่า hash จากอะไรบางอย่าง

Response:

{"userId":"XXXXXXXXXX","anonymousId":"XXXXXXXXXX"}

2. /userdata

มีการเรียกใช้เมื่อทำแบบทดสอบ

Request:

{"data":{"questionaire":{"one_uri_symp":["none"],"travel_risk_country":false,"covid19_contact":["none"],"int_contact":false}}}

3. /qr

เรียกเพื่อโหลด QRCode ของเรา โดยมีการส่ง anonymousId แนบไปกับ header ด้วย


4. /location

อันนี้จะส่งข้อมูลพิกัดที่เราอยู่ไปยัง Server

Request:

{"locations":[{"is_moving":false,"uuid":"XXXX","timestamp":"2020-04-11T10:50:50.482Z","odometer":0,"coords":{"latitude":13,"longitude":100,"accuracy":25.9,"speed":-1,"heading":-1,"altitude":-23.5},"activity":{"type":"still","confidence":100},"battery":{"is_charging":true,"level":0.38},"extras":{"triggerType":"appState"}}]}


5. /scan

หากพบ device อื่นๆผ่าน Bluetooth  หรือการ scan QRCode ก็จะส่ง API อันนี้

{"meetId":"XXXX","timestamp":"2020-04-11T11:06:53.777Z","meetWithIds":["XXXX"],"location":{"latitude":13,"longitude":100,"accuracy":24.2},"type":"bluetooth"}

6. https://raw.githubusercontent.com/codeforpublic/morchana-core/master/available

เป็น API Kill-Switch เอาไว้เมื่อเลิกเก็บข้อมูลผู้ใช้แล้ว ก็จะใช้งานแอพไมไ่ด้ ชอบตรงที่เก็บไว้บน Github



สรุป
- ไม่พบว่ามีการส่งรูปที่เราถ่ายขึ้นไปยังบน Server
- ไม่พบว่ามีการส่งข้อมูลอื่นๆนอกเหนือจากที่ประกาศไว้
- งั้นเรามาใช้แอพ หมอชนะ กันเถอะ
Appstore: https://apps.apple.com/th/app/allthaialert/id1505185420
Play Store: https://play.google.com/store/apps/details?id=com.thaialert.app



เปลี่ยนมือถือ Android ให้เป็น Webcam

เราสามารถเปลี่ยนมือถือ Android ของเราให้เป็น Webcam ง่ายๆได้ด้วยโปรแกรมที่ชื่อว่า DroidCam โดยในตัวอย่างการติดตั้งผมจะทำบนเครื่อง PC ที่ติดตั้งระบบปฏิบัติการ Ubuntu 18.04 สำหรับบน Windows ก็น่าจะติดตั้งคล้ายๆกัน

สิ่งที่ต้องการ
- โทรศัพท์มือ Android
- เครื่องคอมพิวเตอร์
- ระบบ Network


1. ติดตั้ง App บนมือถือ 

สามารถ Download ผ่าน Playstore ได้ที่

https://play.google.com/store/apps/details?id=com.dev47apps.droidcam&hl=th


2. ติดตั้งโปรแกรมที่เครื่องคอม

สามารถ Download โปรแกรมได้ที่

https://www.dev47apps.com/

มีทั้ง Windows และ Linux

เปิด terminal รันคำสั่งดังนี้

sudo apt install linux-headers-`uname -r`
cd tmp
wget https://www.dev47apps.com/files/linux/droidcam_latest.zip
unzip droidcam_latest.zip -d droidcam && cd droidcam
sudo ./install

ดูว่าติดตั้งสำเร็จไหมด้วยคำสั่ง
lsmod | grep v4l2loopback_dc

3. เชื่อมต่อ Droidcam PC กับ มือถือ

PC กับ มือถือ ต้องอยู่ใน Wifi network เดียวกัน

เปิดโปรแกรมบน terminal ด้วยคำสั่ง

droidcam


- เปิดโปรแกรม Droidcam บน Android เพื่อดู IP Address



- นำ Wifi IP: มาใส่ในโปรแกรม Droidcam บนเครื่องคอม แล้วกด Connect



เสร็จสิ้นเรียบร้อย

ทดสอบ Code Highlight

ทดสอบ

import time
for i in range(10):
    print('Hello World')
    time.sleep(1)

Ubuntu 16.04 Mate Desktop Disable F12 drop-down terminal

Ubuntu 16.04 Mate Desktop Disable F12 drop-down terminal

killall tilda
- Remove tilda via apt

sudo apt-get remove tilda

F12 drop-downterminal

รีวิว KingSpec SSD 256GB mSATA Half size 256GB

ห่างหายจากการเขียน Blog ไปนาน วันนี้ผมจะมารีวิว SSD ยี่ห้อ KingSpec ขนาด 256GB แบบ Half size mSATA

เนื่องจาก Harddisk SSD (24GB) ใน Notebook  ที่ผมใช้งานมันกำลังจะเต็มจึงอยากจะเปลี่ยนให้มีขนาดที่ใหญ่ขึ้น ตอนแรกคิดว่า Notebook ใช้แบบ M2 แต่เพื่อความชัวจึงได้แกะเครื่อง (แกะยากมากต้องเอาการ์ดคอยกรีดคอยแงะ) ออกมาเผื่อดูว่าเป็นแบบไหน สรุปแล้วคือใช้แบบ mSATA Half size



ซึ่งพอไปหาดูราคา SSD ชนิดนี้ก็ค่อนข้างสูง จึงได้ลองไปค้นใน Aliexpress แล้วก็เจอยี่ห้อ KingSpec ซึ่งราคานั้นถูกมากเมื่อเทียบกับยี่ห้ออื่นจึงได้ลองจัดซื้อมาลองดู สำหรับเจ้าตัว 256GB แบบ mSATA Half size นั้นผมได้มาในราคา 50 USD หรือประมาณ 1,650 บาทเท่านั้น


ทำการเปลี่ยนจากของเดิม 24GB เป็น 256GB




ความเร็วในการเขียนข้อมูล

โดยผมลองสั่งให้เขียนไฟล์ขนาดประมาณ 10GB  ความเร็วในการเขียนไฟล์จะอยู่ที่ 560 MB/s



ความเร็วในการอ่านข้อมูล

หลังจากได้ทดสอบความเร็วในการเขียนข้อมูลไปแล้วก็มาถึงตาของการอ่านไฟล์ข้อมูลบ้าง ซึ่งผลทดสอบความเร็วในการอ่านก็จะอยู่ที่ 614 MB/s



ทดสอบด้วย hdparm



สรุป

โดยรวมความเร็วในการอ่าน-เขียนไฟล์ถือว่าเร็วมาก ประกอบกับราคาที่ถูกกว่าชาวบ้านแบบครึ่งต่อครึ่งก็ถือว่าคุ้มค่ามาก ส่วนระยะเวลาการใช้งานก็ต้องรอดูกันยาวๆว่าจะทนขนาดไหนตามสเปคในเวปของ Kingspec บอกว่าความอึดในการเขียนนั้นอยู่ที่ 8 ปี หากเขียนไฟล์ 100GB ต่อวัน

Ref:
https://www.aliexpress.com/item/KingSpec-SSD-256GB-Msata-Half-size-256GB-mSATA-Mini-SATAIII-SSD-Hard-Drive-for-ASUS-DELL/32827636951.html

http://www.kingspec.com/products_detail/productId=86.html


Python matplotlib Invalid DISPLAY variable

Fixed by

matplotlib.pyplot as plt
plt.switch_backend('agg') 
Ref:
https://github.com/matplotlib/matplotlib/issues/3466/#issuecomment-195899517

[Google Colab] ติดตั้ง Python Package เพิ่มแบบแฮกหน่อยๆ

หลังจากที่ได้ทดลองใช้งาน Google Colab (Jupyter Notebook ฟรีจาก Google) ตั้งแต่วันที่ 27 ตุลาคม เป็นต้นมา ก็ได้พบวิธีที่จะติดตั้ง Python Package เพิ่มแบบแฮกหน่อยๆ

หลักการ
1. Reverse Shell
2. pip install PACKAGE

สิ่งที่ต้องการ
1. Public Server ของเราเองเอาไว้ reverse shell

วิธีการ
1. Remote ไปยัง Public Server ของเรา
2. รันคำสั่ง netcat

nc -lv 13337
3. สร้าง Google Colab ใหม่มา 1 อัน นำคำสั่ง reverse shell ไปรัน (อย่าลืมแก้ IP Address กับ Port ให้ตรงกับ Server เรา และที่ netcat กำลัง listen อยู่)


4. เมื่อได้ Shell ก็สั่งติดตั้ง Package ที่ต้องการ

pip install PACKAGE

Proof of concept

1. ทดลอง import keras แต่ว่าไม่พบ module


2. เมื่อรันคำสั่ง Reverse Shell เพื่อที่ให้ Google Colab connect กลับมายัง Server ของเราที่ตั้ง netcat รอไว้ก็จะได้ Shell



3. สั่งติดตั้ง package keras ผ่าน pip เมื่อลองรันคำสั่ง import keras ใน  Colab อีกครั้งก็จะสามารถ import ได้


4. ทดลองใช้งาน keras package โดยการ Train MNIST CNN


Video



ตัว Google Colab นั้นจะสร้าง Docker container ขึ้นมาเพื่อให้แต่ละคนใช้งานโดยจะได้สเปคคือ RAM 12 GB และ CPU Xeon 2.2 GHz 2 core เมื่อเราไม่ได้ใช้งานตัว Container ก็จะถูกทำลายทิ้ง พอเรากลับมาใช้งานใหม่อีกครั้งก็จะสร้าง Container ใหม่ขึ้นมา

ปล. เราสามารถติดตั้งโปรแกรมอื่นๆใน Container ได้ด้วยนะ อิอิ
ปล2. ไม่ใช่ Google Security Bug

Follow me on Github: https://github.com/kittinan