เกี่ยวกับการถอดเลขฐานงับ จากแพคเกจที่มาจากการรับส่งโปรแกรม หนึ่ง

เริ่มโดย Amnaj, 12 พฤศจิกายน 2008, 09:22:56

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

Amnaj

เกี่ยวกับการถอดเลขฐานงับ จากแพคเกจที่ได้มา แต่ ไม่ทราบว่านักเขียนโปรแกรมส่วนใหญ่
เขาใช้หลักการ หรือ วิธีการอย่างไร ในการถอดรหัสงับ (เรื่องเกี่ยวกับ Winsock ..)
จะให้ช่วยดูข้างล่างน่ะ มาจากการรับส่งโปรแกรม หนึ่ง
จากเหตุการณ์เดี่ยวกัน ทดสอบ 3 ครั้ง พบค่า 2คู่แรก กับ 2คู่กลาง จะมีผลกลับข้อมูลส่ง


AE 05 00 00 15 49 00 00  <-- จากการรับข้อมูลครั้งที่ 1
3B 5E 00 00 29 7D 00 00  <-- จากการรับข้อมูลครั้งที่ 2
1C 2F 00 00 09 3A 00 00  <-- จากการรับข้อมูลครั้งที่ 3

90 92 CE AA  <-- จากการส่งข้อมูลครั้งที่ 1
FC 3D 2D 05  <-- จากการส่งข้อมูลครั้งที่ 2
B8 82 28 56   <-- จากการส่งข้อมูลครั้งที่ 3

ซึ่งผมพยายามถอดรหัส แล้ว แต่ไม่พบค่ากลางที่ใช้แปลสักที

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

เขียนโปรแกรมมานาน แต่ไม่เคยสนเรื่องนี้ ใครพอมีความรู้
พอจะอธิบาย คร่าวได้ไหมงับ

EThaiZone

พูดถึงการเข้าถอดรหัสที่ใช้กันในโปรโตคอลต่างๆ ที่มีการส่งข้อมูล

เท่าที่ผมเคยดูนะ ส่วนมากจะใช้การแลกเปลี่ยนคีย์กันในการสื่อสารครั้งแรกสุด

เครื่องแม่สร้าง Private Key กับ Public Key จาก Session แรกสุดที่มีการติดต่อกับเครื่องลูก
แล้วส่ง Public Key ไปให้เครื่องลูก

แ้ล้วเครื่องลูกก็เข้ารหัสข้อมูลด้วย Public Key  แล้วส่งกลับไป เครื่องแม่จะถอดรหัสด้วย Private Key
พอเครื่องแม่จะ respond กลับมา ก็เข้ารหัสข้อมูลด้วย Private Key เข้าส่งมาเครื่องลูก
เครื่องลูกก็จะถอดรหัสด้วย Public Key ได้

ระบบนี้เรียกว่าระบบกุญแจคู่ ซึ่งมีอัลกอรึทึ่มหลายตัวรองแบบระบบนี้

ที่ผมอยากจะบอกคือ ไม่แน่การเข้ารหัสที่คุณอยากจะถอด
อาจให้ระบบกุญแจคู่ ซึ่งก็คือจะมีการแลกเปลี่ยน Key กันในการติดต่อครั้งแรก

นั้นหมายความว่า คุณไม่มีทางถอดข้อมูลกลางคันได้เลย
และสำคัญกว่านั้นคือ เท่าที่ผมดูแล้วส่วนมากโปรโตคอลพื้นฐาน
จะไม่ส่งข้อมูลมาเป็นกระจุกทีเดียวเยอะ แต่จะมีการทะยอยส่ง และเครื่องรับจะ ping ตอบสนองเป็นระยะๆ
เพื่อบอกว่า "เราได้รับแล้ว" ดังนั้นเป็นไปได้ไหมว่า ที่คุณอยากถอดที่ว่าเป็นหลายๆ ชุด
มันคือข้อมูลชุดเดียวกันที่ถูกแบ่งส่วน


แต่แน่ๆ ที่อยากพูดอีกอย่าง ส่วนมากวิธีการถอดรหัส
จะใช้สิ่งที่เรียกว่าความคิดแบบสามัญด้วย
เช่นถ้าเรารู้ว่าข้อมูลต้นน่าจะเป็นอะไร เราก็สามารถ scope แนวคิดได้มากกว่านี้
เช่นถ้าข้อมูลต้นอาจเป็นข้อความสื่อสาร เราก็สามารถตัดการถอดรหัสให้เหลือการคืนค่าแค่อักษรและช่องว่าง

แต่ถ้าเป็นไฟล์ชนิดอื่นๆ แล้วเราสามารถบีบแนวคิดได้อีก เราก็อาจถอดได้ง่ายขึ้น
เพราะไฟล์แต่ชะชนิด จะมีค่า Header ตายตัวในส่วนหนึ่ง
พวกนี้สังเกตได้โดนลองเปิดหลายๆ ไฟล์ที่มีชนิดเดียวกับด้วยโปรแกรมพวก winhex
ส่วนมากจะอยู่ lenght แรกสุด มีระยะประมาณ 2 - 5 อักษร

สุดท้าย ข้อมูลที่ทำการส่งกัน ยังไงมันก็คือเลขฐาน 16 (ทั้งเข้ารหัสและไม่เข้ารหัส)
ดังนั้นอย่าลืมเทียบข้อมูลกับตาราง ascii ด้วย จะได้รู้ว่ามันน่าจะอ่านว่าอะไร


ถ้าที่ผมพูดไปถือเป็นสอนจระเข้ว่ายน้ำ ก็อย่าคิดมากนะครับ  :P

ball6847

ลูกไอ้เข้จะจมน้ำตาย

อ่านยังงัยก็เหมือนจะเข้าใจ แต่จิงๆไม่เลย  :-X
We use Ubuntu.

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

Amnaj

มาตาย ตอน  Private Key กับ Public Key ถอดยากมาก
ต้องหาอัลกอรึทึ่ม ที่ใช้ให้ได้ก่อน ว่ามันใช้ อัลกอรึทึ่ม ใดในการเข้ารหัสก่อนส่ง

ต้องศึกษา เขียนโปรแกรมเป็นอย่างเดี่ยวไม่พอ ถ้า network ไม่แน่ แหะ

EThaiZone

ขอพูดเสริมหน่อย เรื่องการเขียนโปรแกรม กับ เรื่องอัลกอริทึ่ม
ในเรื่องการเข้าถอดรหัส มันแทบหาจุดเกี่ยวยากครับ

ุถามว่าทำไม เพราะอัลกอริทึ่มจริงๆ มันก็คือ "แนวคิด"
ไอ้่คำว่าแนวคิดไม่ได้อิงภาษาโปรแกรม

ปัญหาหลักเลยเป็นการตีแนวคิดของอัลกอริทึ่มให้ออก
แล้วถึงสามารถเรียบเรียงเป็นภาษาโปรแกรมได้ในภายหลัง

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

พวกนี้จะใช้ scope ความน่าจะเป็นให้แคบลงได้ครับ
ขืนมั่วแต่มาไล่เทียบทุกตัว งานนี้มีตายกันไปข้างครับ
(เราไม่ตาย แต่คอมเราจะตาย ถ้าเราเขียนโค้ดมาสั่งตรวจเองอะน่ะ)

พวกนี้คงต้องไปตามข้อมูลในบอร์ดที่คุยเรื่อง Security ดูครับ ผมเองก็ห่างๆ นานแล้ว
แต่ส่วนมากก็ไม่ค่อยมีนัก จะมีก็พวกเว็บข่าวเช่นเว็บที่คุยเรื่อง exploit ที่เกิดใหม่ๆ
(ผมเขียนแต่ php แทบไม่ได้ใช้ทำไร เว้นแต่โปรเจ็คหญ่ายย  :-X)

พูดซะยาว งงไหม :P :P เอาเป็นว่าหาหนังสือที่ Se-ed ดูครับ
มีเล่มดำๆ น้ำตาลๆ (จำชื่อไม่ได้ ไม่อยู่กับตัว) เกี่ยวกับเรื่อง Security อ่านแล้วเข้าใจง่ายครับ

Amnaj

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

ขอบคุณสำหรับทุกคำแนะนำครับ

icez

อ้างถึงจาก: Amnaj ใน 12 พฤศจิกายน 2008, 09:22:56
AE 05 00 00 15 49 00 00  <-- จากการรับข้อมูลครั้งที่ 1
3B 5E 00 00 29 7D 00 00  <-- จากการรับข้อมูลครั้งที่ 2
1C 2F 00 00 09 3A 00 00  <-- จากการรับข้อมูลครั้งที่ 3
ชุดแรก 1,454 กับ 18,709
ชุดที่สอง 24,123 กับ 32,041
ชุดที่สาม 12,060 กับ 14,857

อ้างถึงจาก: Amnaj ใน 12 พฤศจิกายน 2008, 09:22:56
90 92 CE AA  <-- จากการส่งข้อมูลครั้งที่ 1
FC 3D 2D 05  <-- จากการส่งข้อมูลครั้งที่ 2
B8 82 28 56   <-- จากการส่งข้อมูลครั้งที่ 3

การเข้ารหัส hash 32 bit มีใช้กันไม่เยอะครับ หลักๆ ก็ crc32 อะ
แต่ไม่รู้ว่าเอาอะไรมาใช้มั่ง ให้ดีต้องขอข้อมูลเต็มๆ ครับ ว่ามันคือโปรแกรมอะไร
และกำลังทำอะไร
มีความเกี่ยวข้องอะไรกะตัวเลขเมื่อกี้มั่งมั้ย
[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ

EThaiZone

^
^
พวก Hash มันเป็นการเข้ารหัสทางเดียวนิครับ
หรือยังไงอะครับ  ??? (งอ งู สองตัว)

jatuphum

ไม่ทราบว่าใช้โปรแกรมอะไรจับ packet ครับ ปกติถ้าเป็น Wireshark (เดิมชื่อ Ethereal) จับมันจะแปลผลข้อมูลให้อ่านออกในกรณีที่เป็น paintext ส่วนในกรณีที่ข้อมูลวิ่งบน SSL ตัว Wrieshark ก็จะหลอกCertificateให้ ข้อมูลก็จะถอดรหัสให้อ่านออก อีกตัวที่ใช้ง่ายก็ Cain & Able ใช้งานง่ายกว่าและสะดวกกว่ามี function decrypt ให้เลือกเยอะครับ   :P

icez

อ้างถึงจาก: EThaiZone ใน 13 พฤศจิกายน 2008, 00:01:29
^
^
พวก Hash มันเป็นการเข้ารหัสทางเดียวนิครับ
หรือยังไงอะครับ  ??? (งอ งู สองตัว)
คือเข้าใจ(เอาเอง)ว่า ดักข้อมูลจากเกมออนไลน์น่ะครับ
แล้วปกติพวกนี้มีแค่สองอย่าง
1. encrypt (ทำให้เกิดข้อมูลที่ความยาวไม่คงที่)
2. ส่งไปคู่กับ hash (ป้องกันการแก้ไข)

แต่โดยลักษณะของ encrypt ทั่วไปจะไม่ค่อยมีความยาวคงที่เท่าไหร่
ถึงได้ถามกลับไปว่า ดักจากโปรแกรมอะไร และกำลังทำอะไรอยู่
[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ

MrWebmonster

อ้างถึงจาก: icez ใน 13 พฤศจิกายน 2008, 19:57:47
อ้างถึงจาก: EThaiZone ใน 13 พฤศจิกายน 2008, 00:01:29
^
^
พวก Hash มันเป็นการเข้ารหัสทางเดียวนิครับ
หรือยังไงอะครับ  ??? (งอ งู สองตัว)
คือเข้าใจ(เอาเอง)ว่า ดักข้อมูลจากเกมออนไลน์น่ะครับ
แล้วปกติพวกนี้มีแค่สองอย่าง
1. encrypt (ทำให้เกิดข้อมูลที่ความยาวไม่คงที่)
2. ส่งไปคู่กับ hash (ป้องกันการแก้ไข)

แต่โดยลักษณะของ encrypt ทั่วไปจะไม่ค่อยมีความยาวคงที่เท่าไหร่
ถึงได้ถามกลับไปว่า ดักจากโปรแกรมอะไร และกำลังทำอะไรอยู่

อย่างเขียนพวก GeNeSiz ของตัวเข้าเล่น DotA ใน Thaicybergames ป่ะครับ
รวมเรื่อง สัพเพเหระ ไอที [direct=https://webmonsterth.blogspot.com/]แก้ปัญหาไวรัส[/direct] คอมพิวเตอร์ทิป อินเตอร์เน็ตทิป โค้ด รหัส Ascii [direct=http://www.ezsymbols.com/]สัญลักษณ์facebook[/direct] Messenger LINE Gplus Instagram [direct=http://www.ilovebrowser.com/]แก้ปัญหาเว็บเบราเซอร์[/direct] สู้ๆ น้าาาาา ~

Amnaj

อ้างถึงจาก: icez ใน 13 พฤศจิกายน 2008, 19:57:47
อ้างถึงจาก: EThaiZone ใน 13 พฤศจิกายน 2008, 00:01:29
^
^
พวก Hash มันเป็นการเข้ารหัสทางเดียวนิครับ
หรือยังไงอะครับ  ??? (งอ งู สองตัว)
คือเข้าใจ(เอาเอง)ว่า ดักข้อมูลจากเกมออนไลน์น่ะครับ
แล้วปกติพวกนี้มีแค่สองอย่าง
1. encrypt (ทำให้เกิดข้อมูลที่ความยาวไม่คงที่)
2. ส่งไปคู่กับ hash (ป้องกันการแก้ไข)

แต่โดยลักษณะของ encrypt ทั่วไปจะไม่ค่อยมีความยาวคงที่เท่าไหร่
ถึงได้ถามกลับไปว่า ดักจากโปรแกรมอะไร และกำลังทำอะไรอยู่


จากเกมส์ออนไลน์ครับ จากที่พยายาม ดิโค๊ต จนปวดสมองก็เข้าใจ

ว่าเมื่อเราทำการติดกับ SV SV จะทำการส่งค่ากลับมาให้ คือ
AE 05 00 00 15 49 00 00  <-- จากการลองติดต่อกับ SV ครั้งที่ 1
3B 5E 00 00 29 7D 00 00  <-- จากการลองติดต่อกับ SV ครั้งที่ 2
1C 2F 00 00 09 3A 00 00  <-- จากการลองติดต่อกับ SV ครั้งที่ 3
ซึ่งไม่เหมือนกันเลย แม้แต่ครั้งเดี่ยว ซึ่งค่านี้ ตัวเกมส์จะนำมาคำนวณ hash ของตัวเกมส์ว่ามีการถูกแก้ไขหรือไม่ แล้วส่งค่ากลับไปให้ SV ตรวจสอบ
90 92 00 00 00 CE AA  <-- จากการลองติดต่อกับ SV ครั้งที่ 1
FC 3D 00 00 00 2D 05  <-- จากการลองติดต่อกับ SV ครั้งที่ 2
B8 82 00 00 00 28 56   <-- จากการลองติดต่อกับ SV ครั้งที่ 3

ซึ่งที่ทราบหรือคิดว่ายังงั้น เพราะ ลองแก้ไขให้เกมส์เปิด 2 จอ โดยวิธีการไม่ให้มันตรวจสอบว่ามีตัวเกมส์รันอยู่ แต่กลับเป็นว่าในการส่งค่ากลับไปให้ SV มันไม่ตอบสนองใด เพราะจากค่าที่ได้รับมา นั้นมาเช็คตัวรันเกมส์นี่เอง ตายสนิท  ;D
ลองดิโค๊ดดู 555 ภาษาที่ได้ พระเจ้า ฉานไม่แข็งแรง...เลยกำลังศึกษาเรื่อยๆ

มือใหม่ด้านนี้ครับ แค่อยากลองสักครั้งที่จะเขียนบอทเกมส์ ที่จิงตั้งใจว่าจะเขียนให้ได้แค่ติดต่อกับ SV เลือกตัวละคร ให้มันเข้าไปในระบบได้ก็พอ
เพราะที่เหลือมันก็ ง่ายแล้ว + อยากลองทำแค่นั้น

ต่อเลยมีข้อสงสัยครับ ว่าเราจะใช้วิธีการใด
ให้สามารถส่งค่าไป SV ได้ แม้ตัวเกมส์ทำงานอยู่ ประมาณ สั่ง เดิน สั่ง ฮิว เบื่อ auto mouse

ที่พูด มานี่ มันเป็นเกมส์ที่ไม่ค่อยมีคนเล่นแล้ว ค่าตัวแปรวิ่งเข้าออกน้อย ง่ายต่อการศึกษา อิอิ

*

EThaiZone

อ่า ตอนแรกผมเข้าใจแบบคุณ jatuphum

ถ้าเป็นเรื่องบอทเกมส์ ถามคุณicez ถูกคนแล้ว  :P
เพราะท่านเขียนบอทเกมส์แร็ค  :P


รอดูเทพคุยกัน  :D

icez

สั่ง heal ได้นี่มีหลายเกมเลยแฮะ
เกมที่ไม่มีคนเล่นมีอะไรบ้างหว่า นึกไม่ออก


แต่หลักการ decode packet ต้องลำดับดีๆ ครับ
เอา packet มาเรียงตั้งแต่เปิดเกมยันปิดเกมเลย
โดยปกติโครงสร้างไม่ต่างกันเท่าไหร่ครับ

C: connect +/ auth request
S: reply session key
C: validate client version
S: answer
C: authenticate user
S: answer

S: list available character
C: send select char
S: answer

S: send many many information
[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ


Amnaj

เหอะๆ บอก ชื่อเกมส์ไปแล้ว กัน งับ คือ WMO ฮ่าๆๆ เกมส์นี่คนน้อยมาก ออนกันไม่เกิน 200 คน
เป็นเกมส์คนละแนวกับ แร็ค เพราะ ลักษณะเกมส์ มันเป็นสังคมแชทมากกว่า เพราะเวลไว
แต่เกมส์นี่กับมีเควสเยอะมาก แบบที่ว่าเล่น 2 ปี ไปก็ไม่หมด

แต่คนสร้างเกมส์ ออกแบบ ความสัมพันธ์ของตัวละครอาชีพต่างๆ ไม่ดีเท่าไร ประมาณว่าพอเวลสูง PVP ที เดี่ยวดับ

ส่วนที่จะลองทำบอทเกมส์ เพราะช่วงนี้เล่น อยู่ 2 เกมส์ คือ DotA (งานหลัก)กับ wmo เล่นมากเดี่ยวไม่มีเวลาทำอย่างอื่น

อยากถามว่า ในการส่งค่า แทรกเข้าไปในตัวเกมส์ เหมือนสั่งฮิวในแร็คครับ
เข้าทำกันอย่างไง เพราะถ้า connect  ไป Sv มันก็เท่ากับคนละ session  กันนิครับ

icez

ใช้ inject tcp connection เอาครับ
hook library คู่กับ inject.dll

รายละเอียดการทำผมก็ไม่รู้เหมอืนกัน พอดีก๊อปเค้ามาอีกที >,,<
[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ

UnzO

คุณ iCeZ เค้าถนัดอยู่แล้วครับเรื่องแนวๆ นี้ หุหุๆ

เคยลองๆ เขียน bot ของ โยกัง เหมือนกันนะตอนแรกๆ แต่ก็ตายสนิทเหมือนกัน แค่ความรู้งูๆ ปลาๆ จะไปไหนรอด  :-X :P

icez

เอางี้ คำแนะนำที่ให้ได้คือ

เปิดโปรแกรมดัก packet ใส่ filter ดัก packet ของเกมนั้น
แล้วเข้าเกม เข้าได้แล้วออกเลย
ทำซ้ำซักสามสี่รอบ
แล้วก็เอาที่ดักได้มาแปะให้ดู จะลองเดาให้ครับ
[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ

kanokk

อ้างถึงจาก: EThaiZone ใน 16 พฤศจิกายน 2008, 01:03:30
อ่า ตอนแรกผมเข้าใจแบบคุณ jatuphum

ถ้าเป็นเรื่องบอทเกมส์ ถามคุณicez ถูกคนแล้ว  :P
เพราะท่านเขียนบอทเกมส์แร็ค  :P


รอดูเทพคุยกัน  :D


ว่าแล้ว ว่าชื่อคุ้นๆ
เคยเป็นสาวกบอทแรคอยู่พักนึงเหมือนกัน
:P
[direct=http://www.photonvps.com/billing/aff.php?aff=540]PhotonVPS.com : VPS แรงๆ SSD Cluod ราคา $5.95[/direct]
[direct=http://myvirpus.com/aff.php?aff=243]Virpus.com VPS ดีๆ ราคาถูก XEN VPS ลด 10% โค้ด 20OFF012014 และ SSD Cloud VPS [/direct]
[direct=http://secure.hostgator.com/~affiliat/cgi-bin/affiliates/clickthru.cgi?id=kanokk5]HostGator ใช้คูปอง bigsavergator เหลือ 0.01$[/direct]