เช็คการเปิดใช้งาน Promotion code ของ App เราอย่างไรให้เร็วและมีประสิทธิภาพ ด้วย Burp suite

คำนำ — บทความนี้เป็นบทความที่ค่อนข้างจะเฉพาะทางในทางด้าน Android ผสม กับ Marketing ผสม Hacking ที่อาจจะมีประโยชน์ต่อคนในจำนวนน้อย คนทั่วไปอาจจะอ่านไม่เข้าใจไปเลย ถ้าอ่านไม่เข้าใจก็ยังถือว่าคุณเป็นคนปกติอยู่

Ammarptn
Ammarptn
Published in
6 min readMar 1, 2017

--

Promotion code คืออะไร ?

แอพโทรศัพท์มือถือที่ทำขายทั่วๆไปบน Google play เนี่ย Dev นั้นจะได้สิทธิในการสร้าง Promotion code เอาไปแจกฟรี เพื่อให้คนที่ได้ไปสามารถเอา Promotion code ไปแลกฟรีโดยไม่ต้องเสียตังซื้อ ถือเป็นโปรโมตแอพแบบนึง โดยไม่ต้องเสียตังลงโฆษณา คนได้ไปก็ไม่ต้องเสียตังซื้อแอพ ถือว่า win-win กันไป โดย Dev เนี่ยสามารถสร้าง Promotion code แจกแอพฟรี 500 โค้ด ต่อสามเดือน(1 ไตรมาตร) และเป้าหมายสำคัญของการแจก คือ การเพิ่มยอดดาว์นโหลดให้แอพ หรือเอาไปทำการตลาดแล้วแต่จะสะดวก

แต่ว่าการที่มันจำกัดที่ 3 เดือนต่อ 500 โค้ด ทำให้มันค่อนข้างมีคุณค่ามาก เมื่อได้รับแจกแล้วก็ควรเอาไปแลก

Promotion code กับปัญหาการดองของคน…

แต่ว่า ในโลกแห่งความเป็นจริง เมื่อ Dev ยอมหว่านแห แจก โค้ดไปแล้ว ยังมีพวกที่ยังรับโค้ดไป แต่ไม่เอาไปแลก ดองไว้นั้นแหละ ซึ่งมันก็จะเป็นปัญหา เพราะว่าโค้ดที่แจกไปมันมีจำกัด แจกไปหมดแล้ว แต่ถูกเปิดใช้งานไม่หมด ยอดดาว์นโหลดก็ไม่ขึ้น ปล่อยไว้นานๆโค้ดก็จะหมดอายุ เหมือนเอาโค้ดไปทิ้งเปล่าๆ แถม Dev ก็จะสร้าง Promotion code ขึ้นเพิ่มไม่ได้อีกถ้ายังไม่ครบ 3 เดือน

การเช็คว่า Promotion code ถูกเปิดใช้งานหรือยังทำไง?

การเช็คโค้ดว่าอันไหนยังไม่ถูกเปิดใช้งานแล้วนำมาแจกใหม่ให้คนอื่นๆอีกรอบ จึงเป็นทางออก แต่ทว่าใน Google play ยังไม่มีเมนูใดๆช่วยเช็คให้ว่าโค้ดไหนมีคนแลกไปแล้ว คนไหนยังไม่แลก มีแต่แสดงว่า โค้ดชุดนั้นคนแลกไปแล้วกี่คน ซึ่งเราไม่ต้องการตรงนั้น

โปรโมชั่นรอบนี้ นั้นแจกโค้ดไปหมดแล้ว แต่ว่าคนเปิดใช้งานยังไม่เต็ม แสดงว่า มีคนที่เอาไปดองไว้ ถ้าไม่ทำอะไรเลยก็จะได้ยอดดาว์นโหลดแค่ 434 คนเอง ในขณะที่ แจกออกไปตั้ง 1000 ชุด เฉลี่ยแล้วไม่ถึง 50 % ด้วยซ้ำ

การเช็คว่า Promotion code ถูกเปิดใช้งานหรือยังแบบดิบเถื่อน…

วิธีแบบง่ายๆเลยก็คือ เปิด Google play store ไปที่เมนูแลก แล้วใส่โค้ดลงไป

ถ้าโค้ดถูกใช้แล้วก็จะขึ้นว่า โค้ดถูกใช้แล้ว ถ้ายังไม่ถูกใช้ก็จะขึ้นให้เรากดแลกไปได้

ขึ้นแบบซ้ายหมายถึงว่าโค้ดนั้นมีคนแลกไปแล้ว แต่ถ้าขึ้นแบบขวา แสดงว่าโค้ดยังเอาไปใช้ได้

ปัญหาต่อไปคือ ….โค้ดนั้นมีไม่ใช่น้อยๆ ถ้าแลกจนหมดโค้วต้า ก็แปลว่าเรามี 500 โค้ด เราต้องทำแบบนี้ไป 500 ครั้ง เพื่อเช็คทุกโค้ดว่า อันไหนใช้ไปแล้วบ้าง

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

ผมเคยลองเช็คโค้ด แบบฮาร์ดคอร์แบบนี้ กับโค้ดจำนวน 1000 โค้ด พบว่ามันโคตรจะกินเวลาและเปลืองพลังชีวิตมาก ที่จะต้องมานั้งก๊อปโค้ด วางในช่องแลกโค้ดแล้วกดเช็ค แล้วก็บันทึกว่าอันไหนใช้แล้วอันไหนยังไม่ได้เปิดใช้ ตอนนั้นถ้าจำไม่ผิดก็นั่งทำไปเกือบๆ 6 ชั่วโมง

ก่อนหน้านั้นพยายามหา API หรือ ช่องทางที่ช่วยในการเช็คที่มันสะดวก แม้กระทั่งลองดักรีเควสตามประสา Dev อ่อนหัด ดักเอา header กับ parameter ไปแก้ๆแล้วลองส่งซ้ำด้วย เครื่องมือที่ไว้ส่ง GET/POST request ซึ่งก็ไม่ได้ผล เลยต้องยอมนั่งทำแบบฮาร์ดคอ ทั้งหมด 1000 โค้ดไปจนหมด

งานนี้มันน่าเบื่อมากจนเป็นงานที่ไม่อยากคิดจะทำอีกเลย แต่ถ้าต้องทำ คงจะไม่ทำแบบเดิมแน่นอน มันเสียเวลา

ตัวช่วยที่ใช้ในการเช็ค Promotion code ให้ชีวิตง่ายขึ้น

สิ่งที่ช่วยมาแก้ปัญหา ของปัญหานี้ก็คือโปรแกรมชื่อ Burp suite ที่จะช่วยทำหน้าที่เช็คแทนให้เราแบบอัตโนมัติ โปรแกรมนี้จัดอยู่ในพวก Hacking tool สามารถใช้งานได้ฟรี ส่วนใหญ่คนจะเอาไปใช้งานในสายงาน ทดสอบความปลอดภัยของระบบ แต่ว่าเราจะเอาไปใช้อีกแบบ

รายการโปรแกรมที่ต้องใช้ก็มี

  • FireFox
  • Burp suite (เวอร์ชั่นฟรี ก็ใช้ได้)

สองอย่างนี้ก็น่าจะพอ

เริ่มต้นปฏิบัติการได้….

โดยขั้นแรกเราต้องโหลด Promotion code ของแอพเราลงมาก่อน สามารถเข้าไปโหลดจาก Google play store ในตอนที่เรากดสร้าง Code มา ซึ่งเราจะได้มาเป็นไฟล์ .csv สามารถเปิดดูกับ MS excel ได้

กดที่ Download เราก็จะได้โค้ดทั้งหมดมาแล้ว

ต่อมาทำการเซ็ตโปรแกรม เริ่มต้นที่ Firefox ก่อน

สำหรับการใช้งานครั้งแรกให้ทำการ add Burp’s CA certificate ให้กับ Firefox ก่อน ดูวิธีทำได้ที่

https://support.portswigger.net/customer/portal/articles/1783087-installing-burp-s-ca-certificate-in-firefox

หลังจากทำตามลิ้งเสร็จแล้ว ก็ไปตั้งค่าให้มันวิ่งผ่าน proxy โดยไปที่ Option > advanced > network >settings

แล้วก็ตั้งค่าให้มันวิ่งผ่านตาม Proxy ตามรูป

หลังจากนั้นก็เข้าหน้าเว็ป Google play แล้วก็เปิดหน้าต่างสำหรับ Redeem code โดยยังไม่ต้องทำอะไรทั้งสิ้น

ต่อมาเปิด Burp suite แล้วก็ไปที่ Tap proxy เพื่อเริ่มต้นการดัก

ขั้นตอนต่อไปก็คือเปิด intercept is on ตั้งไว้

หลังจากนั้น กลับไปที่firefox แล้วก็ใส่โค้ดลงไปเช็ค

ใส่โค้ดเสร็จแล้วก็กด Redeem แล้วเราจะพบว่าหน้า Redeem มันยังไม่ไปไหน เพราะว่า Request นี้โดน Burp suite ดักไว้แล้ว

Burp suite ก็จะทำการดัก Request ไว้ โดยให้ดู Request ที่มันประกอบด้วย Promotion code ที่เราใส่ไปในหน้าเว็ป และ อีเมล์เรา แต่ถ้ามันเป็นแบบอื่นก็ให้กด Forward ไปเรื่อยๆก่อนจนกว่าจะเจอ

แบบนี้ยังไม่ใช่ กด Forward ปล่อยไปก่อน

เมื่อเจอแล้วว่า Request ที่ดักได้มาคือ Request ที่ Firefox ส่งโค้ดไปเช็ค แบบในภาพ คือมี parameter ชื่อ code กับ email แสดงว่าอันนี้แหละใช่แล้ว

เจอแบบนี้ ถือว่าใช่เลย อันนี้แหละ

ให้ทำการคลิกขวาแล้วส่งไปให้ intruder

เมือ่กดแล้ว Tab intruder ก็จะขึ้นเป็นสีส้ม

ใน Tab intruder เราจะเห็น Tab ย่อยทั้งหมด 4 อัน ซึ่งเราต้องเข้าไปจัดการเกือบทุก Tab แน่นอน แต่เริ่มจัดการทีละ Tab

อันดับแรก เลือก Tab Position ก่อน เมื่อกดเข้าไปก็จะเห็น Response ของหน้าที่เราดักมาในตอนแรก พร้อมกับไฮไลท์สีส้มเกือบเต็มหน้า จุดที่มันไฮไลท์ก็คือ ค่าของ Parameter ที่สามารถทำการเปลี่ยนแปลงได้เวลาเราทำการยิง Request สำหรับเช็ค

แต่ว่าเราจะไม่เปลี่ยนทั้งหมด โดยเป้าหมายของเราก็คือเปลี่ยน Promotion code เท่านั้น วิธีก็คือ กด clear ด้านซ้ายก่อน

แล้วไฮไลท์สีส้มก็จะหายไป หลังจากนั้นก็ไปไฮไลท์ที่โค้ดที่เราจะเปลี่ยนให้เป็นสีส้ม

แล้วก็กด add ที่ด้านซ้ายมือ แล้วโปรแกรมก็จะทำการ เพิ่ม § เข้าไปด้านหน้าและหลังโค้ด เพื่อเป็นการกำหนดจุดที่จะทำการเปลี่ยนค่า

ถือว่าเสร็จสิ้นในTab นี้แล้ว

ต่อไปก็คือ Tab Payload โดยเลือก payload type เป็นแบบ Simple list

หลังจากนั้น เปิดไฟล์ .CSV ที่เก็บโค้ด Promotion ขึ้นมา แล้วก็ลากครอบแถวของโค้ดทั้งหมดทุกอัน แล้วก็ Crtl+C ก๊อปปี้เก็บไว้

ก๊อปปี้Promotion code ทั้งหมด

กลับมาที่ Burp suite หน้าเดิม ในหัวข้อ payload options ให้กดปุ่ม Paste เพื่อวางโค้ดที่เราก้อปปี้มา

หลังจากกด Paste แล้ว ในช่องข้างๆก็จะขึ้นโค้ดทั้งหมดที่เราก้อปมา

ถือว่าเสร็จการตั้งค่าหน้านี้ ซึ่งเราสามารถกดสั่งให้ Burp suite ทำการ attack เพื่อเช็ค Promo code ได้เลย แต่ว่า เพื่อความสะดวกในการแยกว่าโค้ดอันไหนถูกใช้ไปแล้ว อันไหนยังใช้ได้ เราจึงควรทำการสั่งให้ Burp suite นั้นทำการแยก Respond ที่ได้มา แล้วนำไปแสดงในตาราง โดยการไปที่ Tap option

เลื่อนลงมาที่หัวข้อ Grep — Extract แล้วก็กด Add

โปรแกรมก็จะเปิดหน้าต่างอีกอันขึ้นมา ให้เรากดปุ่ม Fetch response เพื่อดึงตัวอย่าง response ขึ้นมา

เมื่อตัวอย่าง response ขึ้นมาแล้ว เราก็ไฮไลท์ในส่วนผลลัพท์ที่ต้องการแยก

ซึ่งในในการส่ง Promo code ไปเช็ค เราจะได้คำอธิบายว่าโค้ดถูกใช้ไปหรือยัง ซึ่งในรูปมันจะแสดงประโยคว่า “The item you are ….. already in your library” แปลว่า โค้ดยังไม่ถูกใช้ เพราะว่าอีเมล์ที่ผมเอามาเช็คซื้อแอพนี้ไปแล้ว มันเลยขึ้นแบบนี้ ถ้ายังไม่ซื้อมันก็จะขึ้นอีกอย่าง (ซึ่งจะเห็นเป็น response ขนาดเกือบๆ 10,000 แสดงออกมาตอนทำงาน)

แต่ถ้าแอพถูกใช้ไปแล้ว มันจะขึ้นว่า “ The code you entered has already been redeemed by someone else. …….”

เอาเป็นว่าเราจะทำการไฮไลท์ในจุดนี้ เพื่อไว้แยก Response

เมื่อไฮไลท์แล้วก็กดปุ่ม OK ได้

อันที่จริง ขั้นตอนใน Tab options นี้ไม่ได้จำเป็น เราสามารถกดสั่งให้มันทำงานได้ตั้งแต่เราตั้งค่า Tab payloads แล้ว

ถ้าใครจะไม่ทำส่วนนี้เราก็ยังสามารถแยกผลลัพท์จาก respone ได้อยู่เหมือนกัน

เอาหละ ตอนนี้ ทุกอย่างพร้อมแล้ว เราสามารถกด Start Attack ได้เลย

เมื่อกดไปแล้ว ถ้าใครใช้ของฟรีก็จะมี Pop up ขึ้นมาเตือนนิดหน่อยกดข้ามไปได้เลย ไม่มีอะไรต้องกังวล

แล้วBurp suiteก็จะเริ่มทำการส่ง request พร้อม Promo code ของเราไปเช็ค

สำหรับใครที่ไปตั้งค่าแยก Response ไว้ใน Tab Options เราก็จะเห็นผลลัพท์จาก Response แยกไปตามโค้ดเลยว่าอันไหนยังไม่ได้ใช้ อันไหนใช้แล้ว

แต่สำหรับคนที่ไม่ได้ตั้งค่าใน tab options ก็ให้ดูผลจาก length ของ response ที่ตอบกลับมา ถ้าจะเช็คว่า responseที่มี length ขนาดนั้นตอบกลับมาเป็นอะไรก็ให้เปิดไปดูที่ tab response

ซึ่งจากรูปจะเห็นได้ว่า length ขนาด 2292 นั้นตอบกลับมาเป็น “The code you entered has already been redeemed by someone else” แปลว่า โค้ด โดนใช้ไปแล้ว

ซึ่งก็หมายความว่า length ที่ขนาด 2292 ทั้งหมดนั้นเป็นคือโค้ดที่ถูกใช้ไปแล้ว ส่วน length อีกขนาดก็หมายความว่าเป็น response ของโค้ดที่ยังไม่ถูกเปิดใช้

แต่ว่าไม่ได้หมายความว่าระหว่างการ Attack รอบนั้นเราจะเจอ length ของ response แค่ 2 ขนาด บางทีขนาดก็อาจจะเปลี่ยนไป ทำให้เกิด length จำนวน 4 ชุด หรือมากกว่านั้นซึ่งก็ต้องมาดูอีกทีว่า length นั้น เป็น response ของอะไร

การตั้งค่าใน Tab options จึงจะช่วยให้เราไม่ต้องมาคำนึงถึงจุดๆนี้ ดูที่ท้ายแถวของ โค้ด ได้เลยว่าอันไหนยังใช้ได้ อันไหนถูกใช้ไปแล้ว

ระหว่างมันทำงาน เราก็แค่รอ ซึ่งเราเอาเวลาไปทำอย่างอื่นแทนก็ได้ เมื่อเทียบกับต้องมานั่งกดก้อปปี้ไปมาเช็คเองที่จะเสียเวลาไปเป็นชั่วโมงๆ ไปไหนไม่ได้ เมื่อยด้วย

และเมื่อมันทำงานไปได้ซักพักแล้ว มันจะเริ่มส่ง request ได้ช้าลง ซึ่งถือว่าปกติ รอไปยาวๆ น่าจะเป็นเพราะใช้เวอร์ชั่นฟรี

เมื่อมันทำงานเสร็จแล้ว เราก็แค่ ก้อปปี้ผล Request จากในตารางไปแปะไว้ใน excel ก็ได้

โดยมันเหมือนจะมีข้อจำกัดอยู่หน่อยนึงตรงที่ ตารางที่เราก๊อปปี้จะเอาไปแปะลงใน ไฟล์ .xlsx ตรงๆไม่ได้ ต้องไปวางในไฟล์ .csv ซึ่งเราก็แค่เอาไปแปะคือในไฟล์ .csv ที่เราเอาโค้ดมา ก็เท่านั้น (ไฟล์ที่ได้จากตอนโหลด Promotion code จาก play store)

คำแนะนำพิเศษ

หลังจากเราวางผลลัพท์จากตารางลงใน excel แล้ว เราก็ทำการ ตั้ง filter ด้วยฟังก์ชั่นของ excel โดยแยกตาม length ก็ได้ ดูว่า ขนาด length อันไหนคือ ขนาดของ response ของโค้ดที่ยังไม่ได้ใช้

จากตัวอย่างในรูป โค้ดที่ยังไม่ถูกใช้ มีขนาด 2179 ผมก็แค่ สั่งให้กรองข้อมูลให้แสดงเฉพาะ 2179 แล้วเราก็จะได้ โค้ดทั้งหมดที่ยังไม่ถูกใช้งาน แล้วเราก็ทำการเซฟไฟล์

โค้ดที่ได้ก็เอาไปแจกต่อได้ โดยไม่ต้องกลัวว่า โค้ดนั้นจะถูกใช้ไปแล้ว แจกไปแล้ว ถ้าเราจะมาเช็คอีกที ก็แค่ทำตามขั้นตอนข้างบนอีกรอบ

จนเมื่อโค้ดถูกใช้หมด ก็น่าจะถือว่าบรรลุผลเหนืออื่นใดแล้ว

ขอให้สนุกกับการสร้างแอพครับ

--

--