บันทึกทุกขั้นตอนตั้งแต่สร้างโปรแกรมไต่เว็บ ดาวน์โหลดไฟล์ทั้งหมด วิเคราะห์คู่มือ สรุประบบ ไปจนถึงประเมินข้อด้อย — สรุปรวมการทำงานทั้งหมดของโครงการไว้ในหน้าเดียว
โจทย์เริ่มต้นคือเขียนโปรแกรม JavaScript ไต่หน้า Apache/IIS directory listing ที่ https://www.bookmarkpro2.online/weschooldownload/ ไล่ทุกโฟลเดอร์ ดาวน์โหลดไฟล์ที่ไม่ซ้ำกัน และสร้างผังต้นไม้ (tree) ของทุกอย่างให้สวยงามด้วยดีไซน์ Material 3 Expressive + Google Sans
ระหว่างทางขอบเขตขยายขึ้นเรื่อย ๆ ตามที่คุยกัน: จากโหลดเฉพาะ PDF → รวมไฟล์ทั้งหมดไว้โฟลเดอร์เดียว → โหลดไฟล์ทุกประเภท → วิเคราะห์เนื้อหาคู่มือเพื่อสรุปว่ามีกี่ระบบและทำอะไรได้ → ประเมินข้อด้อยของระบบ และรายงานฉบับนี้
เขียน crawler.js ไต่ทุกโฟลเดอร์ โหลด PDF ที่ไม่ซ้ำ (เช็คด้วย SHA-256) และ build-html.js สร้างผังต้นไม้ Material 3 — รอบแรกเจอบั๊ก HTML entity (&) ทำให้ 9 ไฟล์ 404 แก้แล้วโหลด PDF ครบ 69 ไฟล์
สร้าง all-pdfs/ เอา PDF ทั้ง 69 ไฟล์มาไว้ระดับเดียวกัน จัดการชื่อชนกัน 5 ไฟล์ด้วยการต่อท้ายชื่อโฟลเดอร์ต้นทาง
ปรับ crawler ให้โหลดทุกไฟล์ (exe, zip, rar, รูป, txt…) ไฟล์ PDF เดิมอ่านจากดิสก์ไม่โหลดซ้ำ — ได้ไฟล์ไม่ซ้ำ 183 ไฟล์ รวม 6.55 GB
สกัดข้อความจาก PDF ทั้ง 69 เล่ม + ไฟล์ readme พบว่าเป็นชุดซอฟต์แวร์ทะเบียน–วัดผลโรงเรียนของ WeSchool Team มี 6 ระบบหลัก + 2 รุ่นเก่า เขียนเป็น Markdown และหน้าเว็บ
ประเมินจุดอ่อนเชิงสถาปัตยกรรม ความปลอดภัย และการบำรุงรักษา พร้อมจัดอันดับความรุนแรง
รวบทุกอย่างเป็นรายงานหน้าเดียว
เขียนด้วย Node.js ล้วน ไม่ต้องลง dependency ภายนอก (ใช้ fetch, crypto, fs ในตัว)
visited& ที่ Apache ใส่มาในลิงก์tree.html แบบ interactive: พับ/กางโฟลเดอร์ ค้นหา ขยาย/ย่อทั้งหมด| รายการ | รอบ PDF อย่างเดียว | รอบไฟล์ทุกประเภท |
|---|---|---|
| โฟลเดอร์ที่สำรวจ | 69 | 69 |
| ไฟล์ที่พบทั้งหมด | 73 (PDF) | 223 (PDF 73) |
| ได้มาไม่ซ้ำกัน | 69 ไฟล์ · 301.8 MB | 183 ไฟล์ · 6.55 GB |
| ไฟล์เนื้อหาซ้ำ (ข้าม) | 4 | 34 |
| โหลดไม่ได้ | 0 (หลังแก้บั๊ก) | 6 (ปัญหาฝั่งเซิร์ฟเวอร์) |
| เวลาที่ใช้ | ~112 วินาที | ~872 วินาที |
พบไฟล์เนื้อหาซ้ำ 34 ไฟล์ เช่น AccessRuntime_2013_x86_en-us.exe (236 MB) ซ้ำถึง 8 ที่ — การเช็ค SHA-256 ช่วยประหยัดพื้นที่ไปเกือบ 2 GB
ตรวจสอบยืนยันแล้วว่าไม่ใช่บั๊กของเรา: ไฟล์ rarreg.key / winrar.lng (4 ไฟล์) เซิร์ฟเวอร์ตอบ 404 ทั้งที่มีชื่อใน listing — และไฟล์ shortcut .url 2 ไฟล์ที่ชื่อบนเซิร์ฟเวอร์เป็น encoding เพี้ยน (mojibake) ตอบ HTTP 400
ทั้งหมดเป็นชุดซอฟต์แวร์งานทะเบียน–วัดผลโรงเรียนของ WeSchool Team เป็นโปรแกรม Windows ฐานข้อมูล Microsoft Access (ต้องใช้ Access Runtime) บางส่วนเป็นเว็บ (IIS/ASP.NET) ทุกอย่างหมุนรอบระบบหลักคือ Secondary'56
| # | ระบบ | หน้าที่หลัก |
|---|---|---|
| 1 | Secondary'56 Plus | ตัวหลัก — ทะเบียน–วัดผลมัธยม ม.1–ม.6: ระเบียนนักเรียน/ครู, วัดผลรวม, จบ+โอน O-NET, ส่ง GPAX (TCAS), ปพ.3 ออนไลน์, พิมพ์ ปพ.1/2/3 + โมดูล BookMark, PIS_Checkin, Mackerel, Web Module |
| 2 | FreshyPro + Freshy Web | รับสมัครนักเรียนใหม่ ม.1/ม.4 ครบวงจร: สมัครออนไลน์ → คัดเลือก → ลงเลขประจำตัว → โอนเข้า Secondary'56 |
| 3 | Student2551Junior | เวอร์ชันประถม ครบวงจรในตัวเอง (วัดผลรายปี, จบ ป.6, ปพ.3 ระดับประถม) |
| 4 | Secondary'56 Pro (PKK) | Secondary'56 สายแยกตระกูล Pro ฟังก์ชันเดียวกัน แยกชุดติดตั้ง/อัปเดต |
| 5 | Student2551DG + Online | สะพานเชื่อมคลาวด์ — ส่งข้อมูลขึ้น bookmarkpro.online/dograde.online ให้ครูกรอกคะแนนผ่านเว็บ แล้ว Export กลับ (อัปเดตล่าสุดสุด 09/06/2569) |
| 6 | Student2544 / Student2551V2 | รุ่นเก่า (legacy) ยุคหลักสูตร 2544 และ V2 — มีแต่ตัวติดตั้ง เก็บไว้ย้อนดูข้อมูล |
เป็นฐานข้อมูลแบบไฟล์เดียว ไม่ใช่ client–server การเขียนไม่ atomic จริง ถ้าถูกขัดจังหวะ (ไฟดับ/เน็ตกระตุก) ไฟล์ corrupt ทั้งก้อน มีเพดาน 2 GB และรองรับผู้ใช้พร้อมกันจำกัด — หลักฐานคือทุกระบบมีคู่มือ "Repair Database" เป็นกิจวัตร
วางไฟล์บนเครื่องหนึ่งแล้วแชร์ให้เครื่องอื่นเปิดผ่าน SMB การล็อกพึ่ง file locking ของ Windows — แพ็กเก็ตหายจังหวะ commit = corrupt ทันที ยิ่งคนใช้มากยิ่งช้าทวีคูณ (ไม่มี server-side query)
SchoolLicense.txt, FreshyCode.txt, รหัสผ่านงานย่อย.txt/adminF.aspx, /adminteacher.aspxhttp://122.154.174.36/) ไม่มี HTTPS, directory listing เปิดโล่งเก็บข้อมูลส่วนบุคคลของเด็ก (PDPA) แต่ไม่มีมาตรการคุ้มครองที่เหมาะสม
เมื่อผู้ใช้ Registrar หมดอายุ คู่มือบอกให้ ปรับนาฬิกา Windows ย้อนหลัง — ทำให้วันที่ในข้อมูล (เวลาเรียน/วันออกเอกสาร) เพี้ยน และสะท้อนว่ากลไก license ออกแบบผิดหลัก (อิงเวลา client ล้วน)
6 ระบบทับซ้อนกัน แยกชุดติดตั้ง/โฟลเดอร์ ข้อมูลต้องโอนข้ามระบบด้วยมือตลอด (Import/Export) → เกิดข้อมูลไม่ตรงกัน ไม่มี single source of truth
อัปเดต = ก๊อปไฟล์ทับเอง ไม่มี rollback · path ฮาร์ดโค้ด C:\Student2551_V3 · สำรองพึ่งคนจำ · ผูกกับ Access Runtime, Windows Server 2012 (หมดซัพพอร์ตแล้ว), Windows-only · แถม WinRAR พร้อม license key (เสี่ยงลิขสิทธิ์)
| # | ข้อด้อย | ความรุนแรง | ประเภท |
|---|---|---|---|
| ① | ฐาน Access เปราะ/corrupt ง่าย | 🔴 สูงสุด | สถาปัตยกรรม |
| ② | แชร์ไฟล์ Access ผ่าน LAN | 🔴 สูง | สถาปัตยกรรม |
| ③ | ความปลอดภัย PII | 🔴 สูง | ความปลอดภัย+กฎหมาย |
| ④ | License หมุนเวลาเครื่อง | 🟠 กลาง-สูง | ออกแบบผิดหลัก |
| ⑤ | ระบบแตกกระจาย | 🟠 กลาง | บำรุงรักษา |
| ⑥ | อัปเดต/สำรองพึ่งคน | 🟠 กลาง | บำรุงรักษา |
| ⑦ | เทคโนโลยีหมดอายุ + ลิขสิทธิ์ | 🟡 กลาง-ต่ำ | ความยั่งยืน |