yamacasis
عضو جدید
- دستورات کار با فايلها و فولدرها
اين دستورات همونهايي هستند که در سيستمعامل باستاني!! مايکروسافت يعني MS DOS استفاده ميشدند. کاربران ويندوز معمولا نيازي به يادگيري اونا احساس نميکنند چون همه کارها رو در محيط گرافيکي و معمولا از طريق ماوس انجام ميدهند. ولي چون shell حالت متني دارد، شما بايد با اين دستورات آشنا بشويد. shell رو باز کنيد. متن زير ظاهر ميشه:
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-1999 Microsoft Corp.
I:\>
دقت کنيد که سيستمعاملي که من shell رو در اون آوردم، ويندوز ۲۰۰۰ است و درايو پيشفرض من که معمولا همان درايوي است که ويندوز در اون نصب شده، درايو I است. شما مسلما چيز متفاوتي خواهيد ديد. مينويسم:
I:\> C:
تا به درايو C وارد بشم. حالا prompt تغيير ميکنه و نشون ميده که الان در درايو C هستم:
C:\>
مينويسم:
C:\> dir
و ليست زير ظاهر ميشه:
Volume in drive C is FREE-START
Volume Serial Number is 3623-07E6
Directory of C:\
09/06/2003 06:29a <DIR> GAMES
08/15/2003 06:20p 1,806,727 phpMyAdmin-2.5.3-rc1-php.zip
06/17/2002 07:06p <DIR> upload
06/19/2002 07:02p <DIR> mailserver
09/13/2002 03:59a 8,053 port-tcp-c.c
02/27/2003 10:28p <DIR> mp3
04/18/2003 07:38a 1,152 araz.pl
3 File(s) 1,815,932 bytes
4 Dir(s) 95,502,336 bytes free
اينها در واقع ليست فايلها و دايرکتوريهاي موجود در درايو C کامپيوتر من است. مثلا اينجا GAMES يک فولدر ( دايرکتوري) است چون در در اون سطر کلمه <DIR> اومده که معني دايرکتوري ميده. ولي araz.pl که آخرين سطر از ليسته، فايله. حالا مينويسم:
C:\> cd games
و جواب ميشنوم:
C:\GAMES>
يعني وارد فولدري بع اسم games شدهام. بازم دستور dir رو مينويسم که ببينم در اين فولدر چه فايل يا فولدرهايي هست و جواب ميشنوم:
Volume in drive C is FREE-START
Volume Serial Number is 3623-07E6
Directory of C:\GAMES
09/06/2003 06:29a <DIR> .
09/06/2003 06:29a <DIR> ..
09/06/2003 06:29a <DIR> FORMULA1
09/06/2003 06:35a <DIR> SP
09/06/2003 06:36a <DIR> SUPER
09/06/2003 06:39a <DIR> UF
0 File(s) 0 bytes
6 Dir(s) 95,502,336 bytes free
که ميگه ۶ دايرکتوري وجود داره. دوتاي اولي دايرکتوريهاي واقعي نيستند، چون اگه بنويسم:
C:\GAMES> cd .
جواب ميگيرم:
C:\GAMES>
يعني هيچ اتفاقي نيفتاد. و اگه بنويسم:
C:\GAMES> cd ..
جواب ميشنوم:
C:\>
يعني يه فولدر به عقب برگشتم و اومدم به همون ريشه درايو C که قبلا بودم. پس الان در درايو C هستم و چون قبلا ديدهام که فايلي به اسم araz.pl در اون هست ميخوام محتويات اين فايل متني رو ببينم. مينويسم:
C:\> type araz.pl
و جواب ميشنوم:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
use Socket;
my ($remote, $port, @thataddr, $that, $them, $proto, $getpage );
$remote = shift || 'www.securitytracker.com';
$port = 80;
@thataddr=gethostbyname($remote) or die "Not Connected";
$that=pack('Sna4x8',AF_INET, $port, $thataddr[4]);
$proto=getprotobyname('tcp');
socket(SOCK, PF_INET, SOCK_STREAM, $proto) or die $!;
connect(SOCK, $that) or die $!;
........
اين محتويات فايل araz.pl است. ميخوام يک متني فايل جديد بسازم، که محتوياتش فقط يک سطر باشه مثلا salam bar to و نامش هم باشه ali1000.txt براي اينکار چند راه وجود داره که دو تاشو ميگم:
۱- ميتونيد بنويسيد:
C:\> echo salam bar to > ali1000.txt
۲- و ميتونيد بنويسيد:
C:\> copy con ali1000.txt
و enter زده و جمله!! salam bar to را اونجا تايپ کنيد و وقتي تمام شد، ترکيب: CTRL + Z رو فشار بديد که فايل تموم بشه.
در هر دو حالت چون ما در درايو C و در ريشه ( يعني نه در يک فولدر خاص ) بوديم، فايل همينجا درست ميشه و اگه دستور dir رو اجرا کنيد،ميبينيد که يک فايل جديد به ليست اضافه شده. حالا ميتونيد با دستور:
C:\> type ali1000.txt
محتويات فايل رو ببينيد، اگرچه الانشهم ميدونيد چي هست! ميخواهيم يک فولدر جديد به اسم tur2 بسازيم. مينويسيم:
C:\> md tur2
حالا اگر dir رو بنويسم، ميبينم که فولدر جديد ايجاد شده. حالا ميخوام برم تو فولدري که ساختم. مينويسم:
C:\> cd tur2
و بعد dir ميگيرم. ميبينم فعلا فقط همان دو فولدر . و .. در اينجا وجود داره که قبلا گفتم چي هستند. اگه بخوام يه فولدر جديد در داخل اين فولدر tur2 به اسم far30 بسازم، مينويسم:
C:\tur2> md far30
و اگر dir بگيرم، ميبينم اينها وجود دارند:
Volume in drive C is FREE-START
Volume Serial Number is 3623-07E6
Directory of C:\tur2
10/04/2003 07:17p <DIR> .
10/04/2003 07:17p <DIR> ..
10/04/2003 07:18p <DIR> far30
0 File(s) 0 bytes
3 Dir(s) 95,477,760 bytes free
يعني فولدر far30 هم اضافه شده. ميخوام فايل ali1000.txt رو از ريشه به فولدر far30 که خودش در فولدر tur2 است، کپي کنم. مينويسم:
C:\tur2> copy c:\ali1000.txt c:\tur2\far30
ساختارش خيلي ساده است، حتما فهميدين که اول دستور copy رو مينويسم. بعد با يک فاصله، مسير و نام فايلي که ميخوام کپي کنم رو مينويسم و در آخر با يک فاصله، مسيري که ميخوام فايل کپي بشه رو مينويسم. دقت کنيد که فايل اصلي دست نخورده باقي ميمونه و يک کپي جديد در مسير جديد ايجاد ميشه. ميتونستم همين فايل رو به درايو D کپي کنيم که در اين حالت بايد بنويسم:
C:\tur2> copy c:\ali1000.txt d:
که فايل به درايو D کپي بشه. حالا يه دستور جديد، ميخوام فايل ali1000.txt رو از درايو C پاک کنم، مينويسم:
C:\tur2> del c:\ali1000.txt
دقت کنيد که چون من الان در فولدر tur2 هستم ولي فايلي که قراره پاک کنم در ريشه است، مسير رو بايد بنويسم، ولي اگر فايل همونجايي که من الان هستم بود، مينوشتم:
C:\> del ali1000.txt
نکته مهم اينه که وقتي روي کامپيوتر خودم shell رو باز کردم، ميتونم ببينم که کجا قرار دارم ( با نگاه به پرامت که مثلا اينجا <c:\tur2 بود) ولي در shell ي که موقع هک کردن به اون ميرسيم، معمولا اين پرامت ظاهر نميشه. اونجا چطوري ميشه فهميد کجا هستم؟ خيلي سادهاست با دستور زير:
cd
که جواب ميده:
c:\tur2
چون قبلا فايل ali1000.txt رو به فولدر far30 موجود در فولدر tur2 موجود در درايو C کپي کردم، ميرم همونجا مينويسم:
C:\> cd c:\tur2\far30
اگه dir بگيرم، اينو ميبينم:
Volume in drive C is FREE-START
Volume Serial Number is 3623-07E6
Directory of C:\tur2\far30
10/04/2003 07:18p <DIR> .
10/04/2003 07:18p <DIR> ..
10/04/2003 07:08p 15 ali1000.txt
1 File(s) 15 bytes
2 Dir(s) 95,477,760 bytes free
اگه بخوام اين فايل رو منتقل کنم به فولدر tur2 از درايو C (يعني به يه فولدر پايين تر) از دستور زير استفاده ميکنم:
C:\tur2\far30> move ali1000.txt c:\tur2
فرق دستور move با copy اينه که فايل اصلي منتقل ميشه نه کپي! يعني از محل قبلي پاک ميشه و به محل جديد مياد!! حالا که فولدر far30 حالي شده (يعني هيچ فايل يا فولدري در اون نيست) ميتونم پاکش کنم. اول ميام يه فولدر پايينتر، با دستور:
C:\tur2\far30> cd ..
و با دستور جديد زير که مخصوص پاک کردن فولدر ( نه فايل ) است، فولدر far30 رو پاک ميکنم:
C:\tur2> rd far30
و فولدر پاک ميشه. حالا ميخوام اسم فايل ali1000.txt رو به araz.inc تغيير بدم، مينويسم:
C:\tur2> ren ali1000.txt araz.inc
يه dir بيريد که مطمئن بشين!! حالا ميخوام يه کپي از اين فايل که اسمش هست araz.inc بگيرم ولي با اسم ali1000.inc و در همين فولدر. پس مينويسم:
C:\tur2> copy araz.inc ali1000.inc
حالا اگه dir بگيريد، ۲ تا فايل ميبينيد. حالا ميخوام هر دو تا فايل رو منتقل کنم به درايو C ولي به ريشه، ميبينم که هر دو فايل حرف اولشون a است و پسوندشون inc ميتونم به دو شکل بنويسم:
C:\tur2> move a*.inc c:\
ولي چون فقط همين دوتا فايل در اين فولدر بود، ميتونستم بنويسم:
C:\tur2> move *.* c:\
گرفتين چي شد؟ حالا يه جديد ميخوام برم به فولدر و درايوي که فولدر ويندوز باشه. ميتونم يکي يکي درايو ها رو برم و از همه dir بگيرم تا برسم به اوني که درايو winnt داره، ولي چون اين کامپيوتر خودمه و ميدونم که فولدر ويندوز من کجاست!! مينويسم:
C:\tur2> I:
و بعد
I:\> cd winnt
و يک dir ميگيرم. ميبينم که لسيتي از فايلها و فولدرهاي زيادي از جلو چشم رد ميشه ولي نميتونم همه رو ببينم. اگه بخوام صفحه به صفحه ببينم، مينويسم:
I:\winnt> dir /p
که اين سويچ p مخفف page است. اگه بخواين ليست همه سويچها رو ببينيد، ميتونيد بنويسيد:
I:\winnt> dir /?
حالا يه چيز جالب! با دستورات زير اول برگرديم به ريشه درايو I و بعد برگرديم درايو C :
I:\winnt> cd ..
I:\> C:
حالا ميخوام مستقيما از درايو C محتويات فولدر winnt از درايو I رو اونهم به صورت صفحه به صفحه بخونم:
C:\> dir i:\winnt /p
حالا يه چيز بسيار مهم، ميخوام بدون دادن مسير! ليست فايلها رو در فولدر مربوط به ويندوز ببينم:
C:\> dir %SystemRoot%
اينه... !!! پس در Shell کلمه %SystemRoot% يعني فولدر ويندوز. يه سويچ جديد براي دستور dir رو ميخوام بگم. فرض کنيد که من يادم رفته فايل اجرايي cmd.exe در کدام فولدر از درايو I ( که در کامپيوتر من فولدر مربوط به ويندوز هست ) قرار داره. چون نميتونم برم تک تک فولدرها رو ببينم، بايد از سويچي استفاده کنم که وقتي يه مسير بهش ميدم، بره و تمام سوراخ سنبههاي اون فولدر ( يعني همام فولدرهاي داخليتر ) رو هم ببينيه. از سويچ s استفاده ميکنم و مينويسم:
C:\> dir i:\cmd.exe /s
و جواب ميشنوم:
Volume in drive I has no label.
Volume Serial Number is DC24-A09D
Directory of i:\WINNT\system32
12/07/1999 04:00a 236,304 cmd.exe
1 File(s) 236,304 bytes
Directory of i:\WINNT\system32\dllcache
12/07/1999 04:00a 236,304 cmd.exe
1 File(s) 236,304 bytes
Total Files Listed:
2 File(s) 472,608 bytes
0 Dir(s) 1,255,153,664 bytes free
پس اين دستور توانست فايل مربوطه رو در دو تا فولدر پيدا کنه، يعني اينا:
i:\WINNT\system32
i:\WINNT\system32\dllcache
اين cmd.exe همونه که ما در run نوشتيم که shell ويندوز اومد. حالا برميگردم به درايو C ( دستورش که يادتون هست! ) و dir ميگيرم و ميبينم که فايل ali1000.inc هنوز هم اونجا هست. ميخوام يه دستور جديد رو بگم. ببينيد گاهي پيش مياد که ما فايلي رو به يک سرور ميفرستيم ولي ميخوايم به صورت مخفي يا hidden باشه. دستوري که فايل ali1000.inc رو مخفي ميکنه، اينه:
C:\> attrib +h ali1000.inc
حالا اگه dir بگيرم، ديگه فايل ali1000.inc رو نميبينم. البته هنوز هم هست!! اگه بخوام به کمک دستور dir فايلهاي مخفي رو ( از جمله ali1000.inc ) ببينم، از سويچ a استفاده ميکنيم:
C:\> dir ali1000.inc /a
حالا ميخوام فايل رو از حالت مخفي در بيارم، مينويسم:
C:\> attrib -h ali1000.inc
به همين راحتي!
اينا دستورات معمولي dos بود که براتون نوشتم. اين دستورات خيلي زياد هستند و من فقط تعداد کميشو براتون گفتم. اگه کتاب داس تو انباري خونتون پيدا کردين، ميتونين دستورات بيشتري ياد بگيريد!!!
- پسوند فايلها و مفاهيم آنها در ويندوز
در سيستمعامل ويندوز پسوندها مفاهيم خاصي دارند.
۱- فايلهاي اجرايي پسوند exe يا com يا bat دارند. ( فايلهاي با پسوند bat رو batch file ميگن که مجموعهاي از دستورات داس رو ميتونني توش بنويسين که به ترتيب اجرا بشوند پس ميتونين به کمک دستور type محتوياتشو ببينيد). ولي فايلهاي exe و com فايلهاي اجرايي هستند که محتوياتش براتون قابل خوندن نيست ولي قابل اجراست. حالا ميخوام يه فايل اجرايي رو براتون بيارم که ببينيد که در shell چطوري ميتونيد فايل اجرايي رو اجرا کنيد! ميخوام فايل tftp.exe رو اجرا کنم. اول يه dir ميگيرم از فولدر %SyestemRoot% و ميبينم که اين فايل در فولدر i:\winnt\system32 قرار داره. حالا ميخوام اجراش کنم. به دو طريق ميتونم اين کارو انجام بدم، اولي اينکه برم تو فولدر winnt\system32 و بعد بنويسم:
I:\WINNT\system32> tftp.exe
يا اينکه مستقيما از هرجايي که باشم، بنويسم:
C:\> i:\winnt\system32\tftp.exe
و جواب بشنوم:
Transfers files to and from a remote computer running the TFTP service.
TFTP [-i] host [GET | PUT] source [destination]
-i Specifies binary image transfer mode (also called
octet). In binary image mode the file is moved
literally, byte by byte. Use this mode when
transferring binary files.
host Specifies the local or remote host.
GET Transfers the file destination on the remote host to
the file source on the local host.
PUT Transfers the file source on the local host to
the file destination on the remote host.
source Specifies the file to transfer.
destination Specifies where to transfer the file.
پس چون پسوند فايل من exe بود فهميدم که با نوشتن اسم اون ميتونم اجراش کنم. اگه يادتون باشه واسه ابزارهاي خطفرماني مثل nc هم، همين کارو ميکرديم.
۲- فايلهاي استاندارد:
فايلهاي اجرايي در ويندوز با ساير سيستمعاملها از نظر پسوند فرق ميکنه. مثلا در سيستمهاي مبتني بر يونيکس ممکنه اصلا فايل اجرايي پسوندي نداشته باشه! ولي يه سري فايلها هستند که يهجورايي استاندارد شدهاند. مثلا فايلهاي تصويري ( که پسوندهاي gif، jpg و... دارند)، فايلهاي html ( که پسوندهاي html يا htm دارند )، فايلهاي asp ، php، و ... پس آشنايي با اين فايلها و فرمت اونا ميتونه خيلي کمک کنه. فرض کنيد که شما يه سايت وب رو هک کرديد ولي نميتونيد يه فايل html طراحي کنيد که بجاي صفحه اول سايت قرار بديد، نتيجه اين ميشه که نميتونيد پز بديد!!!
۳- فايلهاي نرمافزارهاي کاربردي:
نرمافزارهاي کاربردي هرکدوم خروجيهاشونو با يه پسوند خاص ارائه ميکنند. مثلا فايلهاي فتوشاپ پسوند psd دارند. فايلهاي MS Word پسوند doc دارند و...
- انواع سيستمهاي فايل در ويندوز
منظور من از سيستمهاي فايل در واقع روش پارتيشنبندي و فرمتکردن درايوهايي است که در ويندوزها استفاده ميشه. مايکروسافت از زماني که داس رو ارائه داد تا حالا از روشهاي مختلف براي سيستمهاي فايل استفاده کرده است.
۱- FAT16 : در سيستمعامل داس استفاده ميشد.
۲- FAT32 : از ويندوز ۹۵ تا me استفاده ميشد.
۳- NTFS 4.0 : در سيستمهاي nt 4.0 استفاده ميشد.
۴- NTFS هاي جديد : از ويندوز ۲۰۰۰ به بعد استفاده ميشود. هرجا گفتم NTFS منظور اين NTFS هاست. مثلا NTFS ويندوز ۲۰۰۰ ورژن 5.0 هستش.
نکته تابلو: سيستمعاملهاي جديدتر ميتونن از روشهاي پارتيشنبندي مربوط به سيستمعاملهاي قديميتر سر دربياورند ولي براي اجراي بهتر نياز به پارتيشنبندي مخصوص خود دارند. مثلا براي اينکه ويندوز ۲۰۰۰ سرور بتونه از امکاناتي که داره ( که بعدا ميگم چيها داره! ) استفاده کنه خداقل يک درايو بايد به روش NTFS فرمت بشه
اين دستورات همونهايي هستند که در سيستمعامل باستاني!! مايکروسافت يعني MS DOS استفاده ميشدند. کاربران ويندوز معمولا نيازي به يادگيري اونا احساس نميکنند چون همه کارها رو در محيط گرافيکي و معمولا از طريق ماوس انجام ميدهند. ولي چون shell حالت متني دارد، شما بايد با اين دستورات آشنا بشويد. shell رو باز کنيد. متن زير ظاهر ميشه:
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-1999 Microsoft Corp.
I:\>
دقت کنيد که سيستمعاملي که من shell رو در اون آوردم، ويندوز ۲۰۰۰ است و درايو پيشفرض من که معمولا همان درايوي است که ويندوز در اون نصب شده، درايو I است. شما مسلما چيز متفاوتي خواهيد ديد. مينويسم:
I:\> C:
تا به درايو C وارد بشم. حالا prompt تغيير ميکنه و نشون ميده که الان در درايو C هستم:
C:\>
مينويسم:
C:\> dir
و ليست زير ظاهر ميشه:
Volume in drive C is FREE-START
Volume Serial Number is 3623-07E6
Directory of C:\
09/06/2003 06:29a <DIR> GAMES
08/15/2003 06:20p 1,806,727 phpMyAdmin-2.5.3-rc1-php.zip
06/17/2002 07:06p <DIR> upload
06/19/2002 07:02p <DIR> mailserver
09/13/2002 03:59a 8,053 port-tcp-c.c
02/27/2003 10:28p <DIR> mp3
04/18/2003 07:38a 1,152 araz.pl
3 File(s) 1,815,932 bytes
4 Dir(s) 95,502,336 bytes free
اينها در واقع ليست فايلها و دايرکتوريهاي موجود در درايو C کامپيوتر من است. مثلا اينجا GAMES يک فولدر ( دايرکتوري) است چون در در اون سطر کلمه <DIR> اومده که معني دايرکتوري ميده. ولي araz.pl که آخرين سطر از ليسته، فايله. حالا مينويسم:
C:\> cd games
و جواب ميشنوم:
C:\GAMES>
يعني وارد فولدري بع اسم games شدهام. بازم دستور dir رو مينويسم که ببينم در اين فولدر چه فايل يا فولدرهايي هست و جواب ميشنوم:
Volume in drive C is FREE-START
Volume Serial Number is 3623-07E6
Directory of C:\GAMES
09/06/2003 06:29a <DIR> .
09/06/2003 06:29a <DIR> ..
09/06/2003 06:29a <DIR> FORMULA1
09/06/2003 06:35a <DIR> SP
09/06/2003 06:36a <DIR> SUPER
09/06/2003 06:39a <DIR> UF
0 File(s) 0 bytes
6 Dir(s) 95,502,336 bytes free
که ميگه ۶ دايرکتوري وجود داره. دوتاي اولي دايرکتوريهاي واقعي نيستند، چون اگه بنويسم:
C:\GAMES> cd .
جواب ميگيرم:
C:\GAMES>
يعني هيچ اتفاقي نيفتاد. و اگه بنويسم:
C:\GAMES> cd ..
جواب ميشنوم:
C:\>
يعني يه فولدر به عقب برگشتم و اومدم به همون ريشه درايو C که قبلا بودم. پس الان در درايو C هستم و چون قبلا ديدهام که فايلي به اسم araz.pl در اون هست ميخوام محتويات اين فايل متني رو ببينم. مينويسم:
C:\> type araz.pl
و جواب ميشنوم:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
use Socket;
my ($remote, $port, @thataddr, $that, $them, $proto, $getpage );
$remote = shift || 'www.securitytracker.com';
$port = 80;
@thataddr=gethostbyname($remote) or die "Not Connected";
$that=pack('Sna4x8',AF_INET, $port, $thataddr[4]);
$proto=getprotobyname('tcp');
socket(SOCK, PF_INET, SOCK_STREAM, $proto) or die $!;
connect(SOCK, $that) or die $!;
........
اين محتويات فايل araz.pl است. ميخوام يک متني فايل جديد بسازم، که محتوياتش فقط يک سطر باشه مثلا salam bar to و نامش هم باشه ali1000.txt براي اينکار چند راه وجود داره که دو تاشو ميگم:
۱- ميتونيد بنويسيد:
C:\> echo salam bar to > ali1000.txt
۲- و ميتونيد بنويسيد:
C:\> copy con ali1000.txt
و enter زده و جمله!! salam bar to را اونجا تايپ کنيد و وقتي تمام شد، ترکيب: CTRL + Z رو فشار بديد که فايل تموم بشه.
در هر دو حالت چون ما در درايو C و در ريشه ( يعني نه در يک فولدر خاص ) بوديم، فايل همينجا درست ميشه و اگه دستور dir رو اجرا کنيد،ميبينيد که يک فايل جديد به ليست اضافه شده. حالا ميتونيد با دستور:
C:\> type ali1000.txt
محتويات فايل رو ببينيد، اگرچه الانشهم ميدونيد چي هست! ميخواهيم يک فولدر جديد به اسم tur2 بسازيم. مينويسيم:
C:\> md tur2
حالا اگر dir رو بنويسم، ميبينم که فولدر جديد ايجاد شده. حالا ميخوام برم تو فولدري که ساختم. مينويسم:
C:\> cd tur2
و بعد dir ميگيرم. ميبينم فعلا فقط همان دو فولدر . و .. در اينجا وجود داره که قبلا گفتم چي هستند. اگه بخوام يه فولدر جديد در داخل اين فولدر tur2 به اسم far30 بسازم، مينويسم:
C:\tur2> md far30
و اگر dir بگيرم، ميبينم اينها وجود دارند:
Volume in drive C is FREE-START
Volume Serial Number is 3623-07E6
Directory of C:\tur2
10/04/2003 07:17p <DIR> .
10/04/2003 07:17p <DIR> ..
10/04/2003 07:18p <DIR> far30
0 File(s) 0 bytes
3 Dir(s) 95,477,760 bytes free
يعني فولدر far30 هم اضافه شده. ميخوام فايل ali1000.txt رو از ريشه به فولدر far30 که خودش در فولدر tur2 است، کپي کنم. مينويسم:
C:\tur2> copy c:\ali1000.txt c:\tur2\far30
ساختارش خيلي ساده است، حتما فهميدين که اول دستور copy رو مينويسم. بعد با يک فاصله، مسير و نام فايلي که ميخوام کپي کنم رو مينويسم و در آخر با يک فاصله، مسيري که ميخوام فايل کپي بشه رو مينويسم. دقت کنيد که فايل اصلي دست نخورده باقي ميمونه و يک کپي جديد در مسير جديد ايجاد ميشه. ميتونستم همين فايل رو به درايو D کپي کنيم که در اين حالت بايد بنويسم:
C:\tur2> copy c:\ali1000.txt d:
که فايل به درايو D کپي بشه. حالا يه دستور جديد، ميخوام فايل ali1000.txt رو از درايو C پاک کنم، مينويسم:
C:\tur2> del c:\ali1000.txt
دقت کنيد که چون من الان در فولدر tur2 هستم ولي فايلي که قراره پاک کنم در ريشه است، مسير رو بايد بنويسم، ولي اگر فايل همونجايي که من الان هستم بود، مينوشتم:
C:\> del ali1000.txt
نکته مهم اينه که وقتي روي کامپيوتر خودم shell رو باز کردم، ميتونم ببينم که کجا قرار دارم ( با نگاه به پرامت که مثلا اينجا <c:\tur2 بود) ولي در shell ي که موقع هک کردن به اون ميرسيم، معمولا اين پرامت ظاهر نميشه. اونجا چطوري ميشه فهميد کجا هستم؟ خيلي سادهاست با دستور زير:
cd
که جواب ميده:
c:\tur2
چون قبلا فايل ali1000.txt رو به فولدر far30 موجود در فولدر tur2 موجود در درايو C کپي کردم، ميرم همونجا مينويسم:
C:\> cd c:\tur2\far30
اگه dir بگيرم، اينو ميبينم:
Volume in drive C is FREE-START
Volume Serial Number is 3623-07E6
Directory of C:\tur2\far30
10/04/2003 07:18p <DIR> .
10/04/2003 07:18p <DIR> ..
10/04/2003 07:08p 15 ali1000.txt
1 File(s) 15 bytes
2 Dir(s) 95,477,760 bytes free
اگه بخوام اين فايل رو منتقل کنم به فولدر tur2 از درايو C (يعني به يه فولدر پايين تر) از دستور زير استفاده ميکنم:
C:\tur2\far30> move ali1000.txt c:\tur2
فرق دستور move با copy اينه که فايل اصلي منتقل ميشه نه کپي! يعني از محل قبلي پاک ميشه و به محل جديد مياد!! حالا که فولدر far30 حالي شده (يعني هيچ فايل يا فولدري در اون نيست) ميتونم پاکش کنم. اول ميام يه فولدر پايينتر، با دستور:
C:\tur2\far30> cd ..
و با دستور جديد زير که مخصوص پاک کردن فولدر ( نه فايل ) است، فولدر far30 رو پاک ميکنم:
C:\tur2> rd far30
و فولدر پاک ميشه. حالا ميخوام اسم فايل ali1000.txt رو به araz.inc تغيير بدم، مينويسم:
C:\tur2> ren ali1000.txt araz.inc
يه dir بيريد که مطمئن بشين!! حالا ميخوام يه کپي از اين فايل که اسمش هست araz.inc بگيرم ولي با اسم ali1000.inc و در همين فولدر. پس مينويسم:
C:\tur2> copy araz.inc ali1000.inc
حالا اگه dir بگيريد، ۲ تا فايل ميبينيد. حالا ميخوام هر دو تا فايل رو منتقل کنم به درايو C ولي به ريشه، ميبينم که هر دو فايل حرف اولشون a است و پسوندشون inc ميتونم به دو شکل بنويسم:
C:\tur2> move a*.inc c:\
ولي چون فقط همين دوتا فايل در اين فولدر بود، ميتونستم بنويسم:
C:\tur2> move *.* c:\
گرفتين چي شد؟ حالا يه جديد ميخوام برم به فولدر و درايوي که فولدر ويندوز باشه. ميتونم يکي يکي درايو ها رو برم و از همه dir بگيرم تا برسم به اوني که درايو winnt داره، ولي چون اين کامپيوتر خودمه و ميدونم که فولدر ويندوز من کجاست!! مينويسم:
C:\tur2> I:
و بعد
I:\> cd winnt
و يک dir ميگيرم. ميبينم که لسيتي از فايلها و فولدرهاي زيادي از جلو چشم رد ميشه ولي نميتونم همه رو ببينم. اگه بخوام صفحه به صفحه ببينم، مينويسم:
I:\winnt> dir /p
که اين سويچ p مخفف page است. اگه بخواين ليست همه سويچها رو ببينيد، ميتونيد بنويسيد:
I:\winnt> dir /?
حالا يه چيز جالب! با دستورات زير اول برگرديم به ريشه درايو I و بعد برگرديم درايو C :
I:\winnt> cd ..
I:\> C:
حالا ميخوام مستقيما از درايو C محتويات فولدر winnt از درايو I رو اونهم به صورت صفحه به صفحه بخونم:
C:\> dir i:\winnt /p
حالا يه چيز بسيار مهم، ميخوام بدون دادن مسير! ليست فايلها رو در فولدر مربوط به ويندوز ببينم:
C:\> dir %SystemRoot%
اينه... !!! پس در Shell کلمه %SystemRoot% يعني فولدر ويندوز. يه سويچ جديد براي دستور dir رو ميخوام بگم. فرض کنيد که من يادم رفته فايل اجرايي cmd.exe در کدام فولدر از درايو I ( که در کامپيوتر من فولدر مربوط به ويندوز هست ) قرار داره. چون نميتونم برم تک تک فولدرها رو ببينم، بايد از سويچي استفاده کنم که وقتي يه مسير بهش ميدم، بره و تمام سوراخ سنبههاي اون فولدر ( يعني همام فولدرهاي داخليتر ) رو هم ببينيه. از سويچ s استفاده ميکنم و مينويسم:
C:\> dir i:\cmd.exe /s
و جواب ميشنوم:
Volume in drive I has no label.
Volume Serial Number is DC24-A09D
Directory of i:\WINNT\system32
12/07/1999 04:00a 236,304 cmd.exe
1 File(s) 236,304 bytes
Directory of i:\WINNT\system32\dllcache
12/07/1999 04:00a 236,304 cmd.exe
1 File(s) 236,304 bytes
Total Files Listed:
2 File(s) 472,608 bytes
0 Dir(s) 1,255,153,664 bytes free
پس اين دستور توانست فايل مربوطه رو در دو تا فولدر پيدا کنه، يعني اينا:
i:\WINNT\system32
i:\WINNT\system32\dllcache
اين cmd.exe همونه که ما در run نوشتيم که shell ويندوز اومد. حالا برميگردم به درايو C ( دستورش که يادتون هست! ) و dir ميگيرم و ميبينم که فايل ali1000.inc هنوز هم اونجا هست. ميخوام يه دستور جديد رو بگم. ببينيد گاهي پيش مياد که ما فايلي رو به يک سرور ميفرستيم ولي ميخوايم به صورت مخفي يا hidden باشه. دستوري که فايل ali1000.inc رو مخفي ميکنه، اينه:
C:\> attrib +h ali1000.inc
حالا اگه dir بگيرم، ديگه فايل ali1000.inc رو نميبينم. البته هنوز هم هست!! اگه بخوام به کمک دستور dir فايلهاي مخفي رو ( از جمله ali1000.inc ) ببينم، از سويچ a استفاده ميکنيم:
C:\> dir ali1000.inc /a
حالا ميخوام فايل رو از حالت مخفي در بيارم، مينويسم:
C:\> attrib -h ali1000.inc
به همين راحتي!
اينا دستورات معمولي dos بود که براتون نوشتم. اين دستورات خيلي زياد هستند و من فقط تعداد کميشو براتون گفتم. اگه کتاب داس تو انباري خونتون پيدا کردين، ميتونين دستورات بيشتري ياد بگيريد!!!
- پسوند فايلها و مفاهيم آنها در ويندوز
در سيستمعامل ويندوز پسوندها مفاهيم خاصي دارند.
۱- فايلهاي اجرايي پسوند exe يا com يا bat دارند. ( فايلهاي با پسوند bat رو batch file ميگن که مجموعهاي از دستورات داس رو ميتونني توش بنويسين که به ترتيب اجرا بشوند پس ميتونين به کمک دستور type محتوياتشو ببينيد). ولي فايلهاي exe و com فايلهاي اجرايي هستند که محتوياتش براتون قابل خوندن نيست ولي قابل اجراست. حالا ميخوام يه فايل اجرايي رو براتون بيارم که ببينيد که در shell چطوري ميتونيد فايل اجرايي رو اجرا کنيد! ميخوام فايل tftp.exe رو اجرا کنم. اول يه dir ميگيرم از فولدر %SyestemRoot% و ميبينم که اين فايل در فولدر i:\winnt\system32 قرار داره. حالا ميخوام اجراش کنم. به دو طريق ميتونم اين کارو انجام بدم، اولي اينکه برم تو فولدر winnt\system32 و بعد بنويسم:
I:\WINNT\system32> tftp.exe
يا اينکه مستقيما از هرجايي که باشم، بنويسم:
C:\> i:\winnt\system32\tftp.exe
و جواب بشنوم:
Transfers files to and from a remote computer running the TFTP service.
TFTP [-i] host [GET | PUT] source [destination]
-i Specifies binary image transfer mode (also called
octet). In binary image mode the file is moved
literally, byte by byte. Use this mode when
transferring binary files.
host Specifies the local or remote host.
GET Transfers the file destination on the remote host to
the file source on the local host.
PUT Transfers the file source on the local host to
the file destination on the remote host.
source Specifies the file to transfer.
destination Specifies where to transfer the file.
پس چون پسوند فايل من exe بود فهميدم که با نوشتن اسم اون ميتونم اجراش کنم. اگه يادتون باشه واسه ابزارهاي خطفرماني مثل nc هم، همين کارو ميکرديم.
۲- فايلهاي استاندارد:
فايلهاي اجرايي در ويندوز با ساير سيستمعاملها از نظر پسوند فرق ميکنه. مثلا در سيستمهاي مبتني بر يونيکس ممکنه اصلا فايل اجرايي پسوندي نداشته باشه! ولي يه سري فايلها هستند که يهجورايي استاندارد شدهاند. مثلا فايلهاي تصويري ( که پسوندهاي gif، jpg و... دارند)، فايلهاي html ( که پسوندهاي html يا htm دارند )، فايلهاي asp ، php، و ... پس آشنايي با اين فايلها و فرمت اونا ميتونه خيلي کمک کنه. فرض کنيد که شما يه سايت وب رو هک کرديد ولي نميتونيد يه فايل html طراحي کنيد که بجاي صفحه اول سايت قرار بديد، نتيجه اين ميشه که نميتونيد پز بديد!!!
۳- فايلهاي نرمافزارهاي کاربردي:
نرمافزارهاي کاربردي هرکدوم خروجيهاشونو با يه پسوند خاص ارائه ميکنند. مثلا فايلهاي فتوشاپ پسوند psd دارند. فايلهاي MS Word پسوند doc دارند و...
- انواع سيستمهاي فايل در ويندوز
منظور من از سيستمهاي فايل در واقع روش پارتيشنبندي و فرمتکردن درايوهايي است که در ويندوزها استفاده ميشه. مايکروسافت از زماني که داس رو ارائه داد تا حالا از روشهاي مختلف براي سيستمهاي فايل استفاده کرده است.
۱- FAT16 : در سيستمعامل داس استفاده ميشد.
۲- FAT32 : از ويندوز ۹۵ تا me استفاده ميشد.
۳- NTFS 4.0 : در سيستمهاي nt 4.0 استفاده ميشد.
۴- NTFS هاي جديد : از ويندوز ۲۰۰۰ به بعد استفاده ميشود. هرجا گفتم NTFS منظور اين NTFS هاست. مثلا NTFS ويندوز ۲۰۰۰ ورژن 5.0 هستش.
نکته تابلو: سيستمعاملهاي جديدتر ميتونن از روشهاي پارتيشنبندي مربوط به سيستمعاملهاي قديميتر سر دربياورند ولي براي اجراي بهتر نياز به پارتيشنبندي مخصوص خود دارند. مثلا براي اينکه ويندوز ۲۰۰۰ سرور بتونه از امکاناتي که داره ( که بعدا ميگم چيها داره! ) استفاده کنه خداقل يک درايو بايد به روش NTFS فرمت بشه