Showing posts with label Mail. Show all posts
Showing posts with label Mail. Show all posts

Wednesday, December 5, 2007

SMTP LOGIN command

ที่เคย note เอาไว้นานแล้ว เรื่อง SMTP command หาดูได้ Labal เดียวกัน

ครั้งที่แล้วเขียนวิธี authen ไว้แค่แบบเดียวคือ แบบ PLAIN ซึ่งตอนที่เขียนโปรแกรม Bruter ก็พบว่า ถ้าเป็น SMTP server ของ Microsoft นั้นจะไม่มีแบบ PLAIN จะมีเฉพาะ LOGIN method

ก็มา note เพิ่มละกัน เกี่ยวกับ LOGIN method

ก่อนอื่นเราต้องทำ base64 encoding เหมือนกัน แต่คราวนี้ทำแยก username กับ password
ทำ username
base64.encodestring('user@domain.ext') เป็น dXNlckBkb21haW4uZXh0
base64.encodestring('password') เป็น cGFzc3dvcmQ=

เริ่ม authen
AUTH LOGIN
334 VXNlcm5hbWU6
dXNlckBkb21haW4uZXh0
334 UGFzc3dvcmQ6
cGFzc3dvcmQ=
235 2.0.0 OK Authenticated

ถ้าเอาที่อ่านไม่ออกทั้งหมดมาทำ decoding ด้วย base64 ก็จะเป็น
AUTH LOGIN
334 Username:
user@domain.ext
334 Password:
password
235 2.0.0 OK Authenticated

และก็จริงๆ แล้วสามารถส่ง username ได้ตั้งแต่บรรทัดแรกก็จะเป็นแบบนี้
AUTH LOGIN dXNlckBkb21haW4uZXh0
334 UGFzc3dvcmQ6
cGFzc3dvcmQ=
235 2.0.0 OK Authenticated

แต่ยังไงก็ต้องอย่าลืมดู response ถ้ามัน response กลับมาให้ใส่ username ก็ต้องส่ง username

Sunday, August 19, 2007

SMTP command

note ไว้หน่อยกันลืม

220 mail.domain.ext ESMTP Sendmail ?version-number?; ?date+time+gmtoffset?
HELO local.domain.name
250 mail.domain.ext Hello local.domain.name [loc.al.i.p], pleased to meet you
MAIL FROM: mail@domain.ext
250 2.1.0 mail@domain.ext... Sender ok
RCPT TO: mail@otherdomain.ext
250 2.1.0 mail@otherdomain.ext... Recipient ok
DATA
354 go ahead
From: John <@domain.ext>
To: Nobody
Subject:-type subject here-

hello message here
.
250 2.0.0 ???????? Message accepted for delivery
QUIT
221 2.0.0 mail.domain.ext closing connection

ถ้าต้อง AUTH ก็จะนำ username กับ password มา encode ด้วย base64 ก่อนคือ
base64.encodestring('\000user@domain.ext\000password')
ได้เป็น 'AHVzZXJAZG9tYWluLmV4dABwYXNzd29yZA=='

แล้วทำ AUTH หลัง HELO หรือ EHLO
AUTH PLAIN
AHVzZXJAZG9tYWluLmV4dABwYXNzd29yZA==
235 ok, go ahead

reponse จาก server สำคัญที่ตัวเลข code อันแรก 200 กว่าคือพวก OK