try2hack realistic 6

Well, I got my try2hack account back so I done this and posting the method I used.

First, this mission got an encryptor and message. I think the encryptor is worth looking so I put some silly word in and it output me some set of data. Worthless. So, I think I known that this mission is based by ASCII in a forum post(now lost) so I put a in and a with password. ord(a) = 97. This give me .078.100.016 so it’s 3 set of data. I trying add it up, it got 194. Now the password is 97, 194-97 = 97 OMG!

Wow, that’s was pretty easy. Now try with longer message with some looong password.

Well, I got my try2hack account back so I done this and posting the method I used.

First, this mission got an encryptor and message. I think the encryptor is worth looking so I put some silly word in and it output me some set of data. Worthless. So, I think I known that this mission is based by ASCII in a forum post(now lost) so I put a in and a with password. ord(a) = 97. This give me .078.100.016 so it’s 3 set of data. I trying add it up, it got 194. Now the password is 97, 194-97 = 97 OMG!

Wow, that’s was pretty easy. Now try with longer message with some looong password. I tried aa and password of aa it’s .107.104.080.043.112.136, I separated that to 2 set of data, adding them up and subtracted 97 off, now it get me 194?!? That number was familiar. Yeah, For each password character, subtract that down so I subtracted 97 again and get a. Cool.

Now let’s begin with the message. I tried brute forcing up to 6 character but with no result (or my algorithm was wrong) so I have to think again by statistic. First I though the message is in Thai so I added Thai support for my decoder. (The encoder runs on tis-620, not utf-8 so it’s hard to juggling encoding in Python) I think that the mission description said that it’s “letter” so it must begins with สวัสดี if it’s formal message (try2hack never use formal message, but it’s worth trying) I try to add 114+114+288 then subtracted 161(ก in tis-620) to get the key, this however cause the decoder to fail to converting encodings. So, I try to look at the message, found that it have lot of same character appearing near each other. Maybe it’s newline (20). Why don’t I think this in the first place?

No, it’s not. So I modified my decoder to get the lowest number, because it’s probably newline(20) or space(32). It showing me [CENSORED] is it. I tried subtracting 20 out, resulting in [CENSORED]-10. Yeah, that’s the password. The letter is in English 🙁 Well, the letter was begins with Dear, not สวัสดี and the author’s address was ridiculous!

เหตุผลที่ใช้ Python

คิดเล่นๆ เมื่อมาเทียบกะ PHP

– สมัย PHP ไม่กล้าเปิดโค๊ด มีความหลังสมัยเพิ่งเริ่ม เปิด phpnuke แล้วรีบปิดไม่ทัน ตอนที่ใช้ ipb ก็เห็นโค๊ดแล้วตาลาย ไฟล์บ้าอะไรพันกว่าบรรทัด แต่มา Python เปิดดู library ต่างๆ เป็นว่าเล่น เพราะ doc ที่มี มันไม่ได้ doc ไว้หมดเหมือนตัวภาษา ก็ต้องเปิด แต่เปิดแล้วไม่งง ค่อยๆ อ่านได้ หรือเพราะ Python เป็น OOP ดีกว่า? (จริงๆ ไม่ชอบ OOP บางส่วน และเกลียด OOP ที่ไม่ใช้จุดคั่น เช่น PHP)
– ใช้ Python มา URL งามขึ้น เพราะมันมีระบบ mapping แต่ php ไม่ค่อยมีคนทำ ทำยาก (python นี่เหมือนบังคับแล้ว)
– ของเล่นเยอะ เช่น ใน PHP จะใช้ json ก็ต้องใช้ตัวของ pecl ซึ่งเคยใช้แล้วไม่ work แต่เคยเห็น function ของ [theDtTvB](http://dt.in.th) อันนี้ค่อนข้างดี แต่ใน python มี json หลายค่ายมากมาย ดีบ้างไม่ดีบ้าง แต่ตอนที่จะใช้ประมวลผลนั้น สุดท้ายแล้วใช้ eval ซึ่งมันก็ evil นั่นแหละครับ แต่มันไม่ work จะทำยังไงได้
– regex ใช้ง่ายมาก ตอนใช้ PHP นี่ไม่ใช้เลย จะใช้ strstr ตลอด ยกเว้นจำเป็นจริงๆ คือใน tree ของ willwillBot (พูดแล้วก็ช้ำใจ โค๊ดหาย) ตอนนั้นจำได้ว่าเขียนไว้ให้มัน concat ข้อความ ENDOFSTRINGISHERE ประมาณนี้ ต่อท้าย แล้วใช้ regex ~blah blah (.*?) ENDOFSTRINGISHERE~ เพราะไม่เคยใช้ และเกลียดการใช้ด้วย แต่พอมา python ทัศนคติก็เปลี่ยน เพราะมันใช้ง่ายจริงๆ จนจำวิธีใช้ได้
– จุดเป็นอำนาจทรงพลังที่สุด กล่าวคือผมจะทำอะไรกับข้อความ ก็ “mystring”.replace(“my”, “your”) ซึ่งผมจะจุดไปกี่ชั้นก็ได้ แล้วถ้ายาวๆ จะขึ้นใหม่ก็ได้ เอาจุดไว้หน้าบรรทัด กด tab หนึ่งที โค๊ดดูสวย แต่ใช้ php ใช้ str_replace มากๆ เนี่ยครับ มันก็ต้องกด tab ซ้อนเข้าไปเรื่อยๆ ถึงจะดูถูกหลัก indent (หลักของผมละกัน :P) ซึ่งออกมาน่าเกลียด
– Python กันผมทำโค๊ดบ้าๆ ได้ดี เพราะผมชอบเขียนแบบรวบ คือ if(true){do1;do2;do3;}else{do4;do5;} ในบรรทัดเดียว ถ้าคำสั่งไม่ยาวมาก แต่ใน python ตอนนั้นผมทำแล้วมันพัง ไม่รู้ว่าเขียนผิดรึเปล่า เลยไม่กล้าทำอีก และก็ Python บังคับการ Indent

ปล. ไว้ว่างๆ น่าจะเขียน [Style Guide for WHS’s Python codes](http://www.python.org/dev/peps/pep-0008/) บ้าง

คิดเล่นๆ เมื่อมาเทียบกะ PHP

– สมัย PHP ไม่กล้าเปิดโค๊ด มีความหลังสมัยเพิ่งเริ่ม เปิด phpnuke แล้วรีบปิดไม่ทัน ตอนที่ใช้ ipb ก็เห็นโค๊ดแล้วตาลาย ไฟล์บ้าอะไรพันกว่าบรรทัด แต่มา Python เปิดดู library ต่างๆ เป็นว่าเล่น เพราะ doc ที่มี มันไม่ได้ doc ไว้หมดเหมือนตัวภาษา ก็ต้องเปิด แต่เปิดแล้วไม่งง ค่อยๆ อ่านได้ หรือเพราะ Python เป็น OOP ดีกว่า? (จริงๆ ไม่ชอบ OOP บางส่วน และเกลียด OOP ที่ไม่ใช้จุดคั่น เช่น PHP)
– ใช้ Python มา URL งามขึ้น เพราะมันมีระบบ mapping แต่ php ไม่ค่อยมีคนทำ ทำยาก (python นี่เหมือนบังคับแล้ว)
– ของเล่นเยอะ เช่น ใน PHP จะใช้ json ก็ต้องใช้ตัวของ pecl ซึ่งเคยใช้แล้วไม่ work แต่เคยเห็น function ของ [theDtTvB](http://dt.in.th) อันนี้ค่อนข้างดี แต่ใน python มี json หลายค่ายมากมาย ดีบ้างไม่ดีบ้าง แต่ตอนที่จะใช้ประมวลผลนั้น สุดท้ายแล้วใช้ eval ซึ่งมันก็ evil นั่นแหละครับ แต่มันไม่ work จะทำยังไงได้
– regex ใช้ง่ายมาก ตอนใช้ PHP นี่ไม่ใช้เลย จะใช้ strstr ตลอด ยกเว้นจำเป็นจริงๆ คือใน tree ของ willwillBot (พูดแล้วก็ช้ำใจ โค๊ดหาย) ตอนนั้นจำได้ว่าเขียนไว้ให้มัน concat ข้อความ ENDOFSTRINGISHERE ประมาณนี้ ต่อท้าย แล้วใช้ regex ~blah blah (.*?) ENDOFSTRINGISHERE~ เพราะไม่เคยใช้ และเกลียดการใช้ด้วย แต่พอมา python ทัศนคติก็เปลี่ยน เพราะมันใช้ง่ายจริงๆ จนจำวิธีใช้ได้
– จุดเป็นอำนาจทรงพลังที่สุด กล่าวคือผมจะทำอะไรกับข้อความ ก็ “mystring”.replace(“my”, “your”) ซึ่งผมจะจุดไปกี่ชั้นก็ได้ แล้วถ้ายาวๆ จะขึ้นใหม่ก็ได้ เอาจุดไว้หน้าบรรทัด กด tab หนึ่งที โค๊ดดูสวย แต่ใช้ php ใช้ str_replace มากๆ เนี่ยครับ มันก็ต้องกด tab ซ้อนเข้าไปเรื่อยๆ ถึงจะดูถูกหลัก indent (หลักของผมละกัน :P) ซึ่งออกมาน่าเกลียด
– Python กันผมทำโค๊ดบ้าๆ ได้ดี เพราะผมชอบเขียนแบบรวบ คือ if(true){do1;do2;do3;}else{do4;do5;} ในบรรทัดเดียว ถ้าคำสั่งไม่ยาวมาก แต่ใน python ตอนนั้นผมทำแล้วมันพัง ไม่รู้ว่าเขียนผิดรึเปล่า เลยไม่กล้าทำอีก และก็ Python บังคับการ Indent

ปล. ไว้ว่างๆ น่าจะเขียน [Style Guide for WHS’s Python codes](http://www.python.org/dev/peps/pep-0008/) บ้าง