يه نکته راجع به اين درس

دلم مي‌خواست که براي اين درس فقط چند تا لينک معرفي کنم که خودتون بريد و درس ftp رو از همون‌ لينک‌ها ياد بگيرين. دليلش هم کاملا واضحه! علتش اينه که در مورد اين درس خاص اين‌قدر مقاله کامل تو اينترنت هست که اگه يه سال هم بشينين هر روز بخونيدشون، تموم نميشه. ولي به هر حال به خاطر اينکه قرار شده تمام مطالب مرتبط با هک رو گام به گام همين‌جا براتون توضيح بدم، اين درس تابلو! رو هم مي‌گم. ولي ازتون مي‌خوام که حتما يک search بکنين و مقاله‌هاي مختلف راجع به اين درس رو خودتون هم مطالعه کنيد. ياد گرفتن ftp از نون شب هم واجب‌تره :)


- پورت ۲۱ چيست؟

پورت ۲۱ رو پورت ftp مي‌گن. ftp مخفف عبارت file transfer protocol است يعني پروتکل انتقال فايل. کاربرد اين پروتکل و اين پورت از زماني وجود داره که حتي وب (پورت ۸۰ ) هم چندان عمومي نشده بود. پس مي‌تونم بگم که يه پروتکل باستاني هستش. وقتي مي‌خواهيد با يک سرور از طريق اين پروتکل صحبت کنيد، بايد مطمئن بشين که سرويس مربوط به ftp روي اون کامپيوتر فعال باشه. به عبارت ديگه بايد يک ftp server روي اون کامپيوتر در حال اجرا باشه. حالا شما با اون کامپيوتر مي‌خواين ارتباط برقرار کنين، پس شما بايد از يک ftp client استفاده کنيد. پس شما کلاينت هستيد و دستگاه مقابل سرور!
حالا شايد بپرسين که کار ftp چيست؟
ftp براي انتقال فايل به کار ميره و اين انتقال فايل در دو جهت ممکنه که upload و download گفته ميشه. براي اينکه اين‌ها رو قاطي نکنيد با هم فرض کنيد که کامپيوتر سرور بالای سر شما قرار گرفته، پس وقتي فايل رو از اون مي‌گيريد، فايل به سمت پايين مي‌آد (download) و وقتي فايل رو براي سرور مي‌فرستيد، حالت برعکس مي‌باشد و بهش مي‌گيم، upload کردن. و هر دو عبارت نوعي انتقال فايل محسوب ميشه. دقت کنيد که انتقال فايل از طريق پروتکل‌هاي ديگه‌اي هم امکان‌پذيره مثل web و ... ولي ما بحث‌مون همين پروتکل ftp است.
عبارت ديگه‌اي که راجع به اين پورت بايد ياد بگيريد، عبارت anonymous است. براي توضيح اين عبارت اول بايد بگم که وقتي شما مي‌خواهيد با سرور ارتباط برقرار کنيد، همين‌طوري کشکي که نيس! براي ارتباط با سرور از شما username و password پرسيده مي‌شه و اگه درست باشه مي‌تونين فايل‌ها رو upload و download کنيد و تغيير بديد ( پس مي‌بينيد که اين پروتکل پروتکل حساسي است و اگه هک بشه خيلي کارها ميشه باهاش کرد). اين حالت که گفتم در حالتي ممکنه که شما username و password داشته باشيد. اما گاهي پيش مي‌آد که username و password نداريم و مي‌خوايم با پورت ftp يک سرور يا سايت ارتباط برقرار کنيم. در اين حالت معمولا فقط اجازه download به ما داده ميشه و اجازه upload و يا اعمال تغييرات در فايل‌ها رو نداريم و اونو حالت anonymous يا ناشناس مي‌گن. در اين حالت وقتي از ما username خواسته ميشه، عبارت anonymous را تايپ مي‌کنيم و بعد که پسورد پرسيده ميشه، شما بايد E-mail تون رو وارد کنيد، ولي من مي‌گم که به جاي E-mail واقعي تون يه E-mail الکي بنويسين مثلا [تنها کاربرانی که ثبت نام و Login کرده باشند می توانند این قسمت را ببینند. براي ثبت نام كليك كنيد] !!
آدرسي که براي ftp با يه سرور استفاده مي‌کنيم به چه شکلي است؟
آدرسي که استفاده مي‌کنيم بستگي به سرور داره ولي معمولا ساختار ثابتي داره. ( اگه يادتون باشه واسه web مثلا مي‌نوشتيم، [تنها کاربرانی که ثبت نام و Login کرده باشند می توانند این قسمت را ببینند. براي ثبت نام كليك كنيد] ) حالا براي ftp مي‌نويسيم، ftp.far30.com پس مثلا براي سايت sazin.com مي‌نويسيم، ftp.sazin.com که آدرس ftp سايت ميشه.


- چطوري يه سرور پيدا کنم که سرويس ftp روي اون فعال باشه؟

اين سوال دو حالت داره:
۱- مي‌خواهيد به صورت anonymous وارد بشين يعني username و password ندارين. براي اين حالت مي‌تونين از خيلي از سايت‌ها استفاده کنيد. مثلا مي‌تونين از ftp.microsoft.com استفاده کنيد يا سايت‌هاي ديگه.
۲- اگه مي‌خوايد به صورت غير anonymous کار کنيد، حيطه عمل‌تون محدود به سايت‌هايي ميشه که username و password واسه اون دارين. مثلا اگه شما سايتي روي اينترنت داشته باشيد ( چه سايت پولي و چه سايت مجاني مثلا در netfirms و geocities و ... ) به شما يک آدرس ftp و يک username و password تعلق مي‌گيره که از طريق اون کار مي‌کنيد. اگه سايت نداريد، مي‌تونيد يک سايت مجاني درست کنيد. مثلا مي‌تونيد از سايت geocities.com که متعلق به ياهو است استفاده کنيد. يا از سايت‌های netfirms.com يا freeservers.com و... ولي به‌هر حال در يکي از اين‌ها ثبت‌نام کنيد و username و password بگيريد. آدرس‌هاي ftp آنها هم که به‌صورت ftp.geocities.com يا ftp.netfirms.com و... خواهد بود. (از من نخواين که طريقه ثبت‌نام در اين سايت‌ها رو هم به شما ياد بدم! کار خيلي راحتيه. :D


- با پورت ۲۱ صحبت کنيم

فرض کنيد من از يک سايت فرضي استفاده مي‌کنم که آدرس ftp اون باشه: ftp.somesite.com و username من باشه ali1000 و پسوردم هم يه چيزه ديگه باشه. حالا مي‌خوام از طريق پورت ۲۱ با اين سايت ارتباط برقرار کنم. در مورد اين پورت ديگه از nc و telnet استفاده نمي‌کنم، بلکه از برنامه‌اي که در تمام ويندوز‌ها هست، به اسم ftp کمک مي‌گيرم. در command prompt مي‌نويسم:

ftp ftp.somesite.com

و جواب مي‌شنوم:

Connected to somesite.com.
220 somesite Microsoft FTP Service (Version 5.0).
User (somesite.com:(none)):

دقت کنيد که اين سايت ftp server اش از نوع Microsoft است، پس اين سرور از سيستم‌عامل ويندوز استفاده مي‌کنه ( دونستن اين نکات لازم نيست، ولي من توصيه مي‌کنم که هميشه به جزئيات توجه کنيد) دقت کنيد که از من username رو مي‌خواد، پس مي‌نويسم: ali1000 و Enter رو فشار مي‌دم. جواب مي‌آد:
331 Password required for ali1000.
Password:
حالا ازم پسورد مي‌خواد و پسورد رو تايپ مي‌کنم. جواب مي‌شنوم:
230 User ali1000 logged in.
ftp>
اين نشون ميده که تونستم با پورت ۲۱ کامپيوتر مقابل ارتباط برقرار کرده و اصطلاحا يک session يا نشست! باهاش داشته باشم. اگه username يا password اشتباه بود، اون موقع مي‌گفت:
530 User ali1000 cannot log in.
Login failed.
ftp>
من فرض مي‌کنم که session با موفقيت برقرار شده، حالا تايپ مي‌کنم:
ftp> help
و جواب مي‌شنوم:


کد:
Commands may be abbreviated. Commands are:

! delete literal prompt send
? debug ls put status
append dir mdelete pwd trace
ascii disconnect mdir quit type
bell get mget quote user
binary glob mkdir recv verbose
bye hash mls remotehelp
cd help mput rename
close lcd open rmdir

اين‌ها ليست دستوراتي است که مي‌تونيد استفاده کنيد. من فقط اون‌هايي که به صورت bold مشخص کردم رو توضيح خواهم داد. بقيه دستورات کمتر به کار مي‌رن.


- دستورات پايه براي اين پورت کدامند؟

+ دستور help و ?
دستور help رو همين الان استفاده کرديم. دستور ? هم معادل اونه.

+ دستور dir و ls
اين دو دستور نشون مي‌دن که در محل فعلي در سرور چه فايل‌ها و فولدر (دايرکتوری) هايي وجود دارد. فرق‌شون اينه که وقتي از dir استفاده مي‌کنيد، اطلاعات بيشتري علاوه بر نام فايل‌ها و فولدر‌ها به ما ميده. من نوشتم dir و جواب شنيدم:


کد:
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
12-28-02 02:18AM < DIR> db
12-28-02 02:19AM < DIR> Special
03-08-03 03:18AM < DIR> www
226 Transfer complete.
ftp: 135 bytes received in 0.02Seconds 6.75Kbytes/sec.

ملاحظه مي‌فرماييد که سه تا فولدر (دايرکتوري) اينجا هست. (اگه با دستور dir آشنا نيستيد، يک کتاب داس بخونيد). اين‌ها فولدر هستند چون عبارت < DIR> جلوي اون‌ها نوشته شده است. نام اين فولدرها عبارتند از db و special و www

+ دستورات مرتبط با کار روي فولدرهايي که روي سرور (نه روي کامپيوتر خودمون) هستند، عبارنتد از:
cd يا chdir ==> اين دستور براي وارد شدن داخل يک فولدر به کار مي‌ره.
mkdir ==> اين دستور براي ساختن يک فولدر جديد به کار ميره.
rmdir ==> اين دستور براي پاک کردن يک فولدر موجود به کار ميره (به شرطي که آن فولدر خالي باشد)
براي کار با هر کدوم از اين دستورات کافي است، دستور مورد نظر را نوشته و بعد از يک کاراکتر فاصله، نام فولدر را بنويسيد، مثلا اگه بخوام وارد فولدر www بشم، مي‌نويسم:
cd www
و جواب مي‌شنوم:
250 CWD command successful.
ftp>
اين جواب به آن معني است که وارد فولدر (دايرکتوري) www شده‌ام. حالا دوباره دستور dir را استفاده مي‌کنم و جواب مي‌گيرم:


کد:
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
12-28-02 02:18AM < DIR> _private
02-17-03 04:15PM 61982 1.jpg
12-28-02 02:19AM < DIR> aspnet_client
12-28-02 02:19AM < DIR> cgi-bin
12-29-02 06:27PM 11285 default.asp
12-28-02 02:19AM < DIR> images
12-28-02 02:18AM 2494 postinfo.html
226 Transfer complete.
ftp: 1438 bytes received in 0.28Seconds 5.12Kbytes/sec.
ftp>

ملاحظه مي‌کنيد که سه‌ تا فايل و سه تا دايرکتوري داريم. اون‌هايي که جلوشون نوشته < DIR> دايرکتوري هستند و اونايي که اين عبارت رو ندارند و جلوشون يه عدد نوشته شده ( که بيانگر حجم هر کدومشون هست ) فايل مي‌باشند.
در مورد دستور cd اگه بنويسم .. cd به فولدر قبلي بر مي‌گرديم، مثلا الان که تو فولدر www هستيم اگه .. cd رو بنويسم، يک فولدر به عقب برمي‌گردم ( به حالت قبل از ورود به www )
يه دستور ديگه هم راجع به فولدرها هست و اونم دستور pwd است. اين دستور نشون ميده که ما الان تو کدوم فولدر از فولدرهاي سرور هستيم.

+ دستورات مرتبط با فايل‌ها عبارنتد از:
delete يا dele ==> اين دستور براي پاک کردن يک فايل به کار مي‌ره.
rename ==> اين دستور براي عوض کردن نام يک فايل به کار مي‌ره.
مثلا اگه بخوام فايل default.asp رو پاک کنم، مي‌نويسم delete default.asp
اگه بخوام فايل default.asp رو به index.htm تغيير نام بدم، مي‌نويسم rename default.asp index.htm

+ دستورات مرتبط با فولدرهاي کامپيوتر خودمان:
اول دقت کنيد که در مورد پورت ۲۱ وقتي مي‌گوييم در کدام فولدر قرار داريم، اين مسئله دو معني داره. حالت اول محل فعلي ما روی سرور است. يعني کجاي سرور هستيم. تمام دستوراتي که راجع به فولدرها گفتم براي کار روي فولدرهاي سرور است. حالت دوم محل فعلي ما در کامپيوتر خودمون است. فرض کنيد که وارد فولدري در کامپيوتر سرور شده‌ايم والان مي‌خوايم فايل را داون‌لود کنيم به کامپيوتر خودمون. براي اينکه فايل به فولدر درستي در کامپيوتر خودمون منتقل بشه، بايد وارد يک فولدر خاص در کامپيوترمان بشيم. دستور مرتبط با اون دستور lcdاست. مثلا اگه بخوام وارد فولدر araz از درايو :C بشم، مي‌نويسم:
lcd c:/araz


( ادامه در قسمت دوم [IMG]file:///D:/Program/hack/Html/Port%2021%20(%20قسمت%20اول%20)_files/wink.gif[/IMG] )