الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

برمجة أقراص التخزين?

بدأه net master في 6 سبتمبر 2004 · 29 رد · 16,828 مشاهدة · في قسم المواضيع الهامة في قسم السي /سي++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

ارجو من من يعلم اي شي عن هذا الامر ان يخبرني

كيف استطيع ان اعين نظام الملفات للقرص الممرن او للبارتشن

هل ممكن اساسا هذة العملية؟

يعني اعمل format للبارتشن و بعدين احدد الفاتات بتاعتة

وشكرا مقدما والسلام عليكم

#2
اقتباس
كيف استطيع ان اعين نظام الملفات للقرص الممرن او للبارتشن

هل تقصد تعيين ,, ام معرفة فقط ,,

يعني هل ترد أن تفرمت , أم تريد أن تعرف مانوع نظام الملفات المستخدم من قبل قرص أو قسم في هاردسك ,,

اقتباس
يعني اعمل format للبارتشن و بعدين احدد الفاتات بتاعتة

بالسي++ ؟؟

وضح سؤالك ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#3

السلام عليكم

شكرا جدا علي الرد السريع جدا

واريد ان اعبر عن اعجابي بك يا اخ HGB وعن ردودك ومقالاتك العظيمة

انا اريدان افرمت البارتشن وتقربا وصلت الي الطريقة بس اللي محيرني هو نظام الفاتات ازاي اقدر اعينة يعني (set) وليس ان استعلم عنة اكيد فهمتني

طبعا بلغة سي او سي++ ولو تعرف اي لغة تانية تقدر تقوم بالموضوع يا ريت قول اسمها بس

هل تعرف اي .h خاص بهذا الموضوع او يارت تقولي علي الطريق(فرمتة + تثبيت فاتات)

انا في انتظار الرد والسلام عليكم

#4

شوف http://msdn.microsoft.com/library لازم هنا تجد شيء .. .

سأرسل بعد قليل ملف يحتوي على كود فورمات من نظام تشغبل linux

يمكنك الإستفاده منه

#5

هذا هو الكود مكتوب بـ سي

format-0.91s.zip

#6

شكرا جدا

علي الملف

بس انا اريد الهيدر فيل او الدوال المعينة و كمان مش علي اللينكس

ممكن حبيبي

#7

السلام عليكم ,,

ملفات اللنكس تعمل من الصفر كما هو واضح منها ,, فتكتب على القرص بشكل مباشر لتهيئته ,,

للابتداء من الصفر في تهيئة قرص صلب مثلا يجب أن نستخدم نظام ملفات معين ,, لديك العديد منها ,, فلنقل مثلا أنك ستستخدم ال FAT32 أو NTFS ,, عندها يجب أن تلم بطريقة كتابة أوامر كل منهما في أول القرص المطلوب ,,

في الوندوز لم أسمع بدالة API لعمل Format مباشرة ,, لأنك وقتها تحتاج للكتابة على القرص بشكل مباشر دون تدخل نظام التشغيل ,,

لفعل ذلك عليك باستخدام الدوال WriteFile و CreateFile ,, لتكتب البيانات المطلوبة ,,

وبما أنك لن تعرف ماذا تكتب ,, فأقترح أن تقرأ أولا مثلا من القرص D لديك حاليا وتقرأ كل ال boot Sector "لست متأكدا ربما ال fat32 يحتاج لأكثر من Sector ليجهز بياناته ,, المهم مع معرفة ولو سطحية بنظام الملفات ,, أين يضع حجم القرص وماذا سيكون اسمه ,, وبعض هذه التفاصيل ,, يمكن أن تعدل عليها كما تشاء وتكتب بشكل فيزيائي مباشر دون الاستعانة بنظام التشغيل هذه البيانات بعد التعديل عليها لتناسب احتياجاتك لقرص آخر بالدالة WriteFile ,,

أعلم أن الطريقة اعلاه مرهقة وغير عملية ,, لذا يمكن أن تستخدم طريقة ثانية لحسن الحظ ,, وهي الدالة system ,, وتستخدم الأمر Format ,, للدالة كالتالي مثلا ,,

system("format a");

طبعا بعد التعرف على البارامترات الأخرى للأمر format منها ماستكتب فيه نوع نظام الملفات وغيره من الحقول ,,

وهذه هي القائمة :

FormatFormats the disk in the specified volume to accept Windows files. 

Syntax
format Volume [/fs:FileSystem] [/v:Label] [/q] [/a:UnitSize] [/c] [/x]

format Volume [/v:Label] [/q] [/f:Size]

format Volume [/v:Label] [/q] [/t:Tracks /n:Sectors]

format Volume [/v:Label] [/q]

format Volume [/q]

Parameters
Volume 
Specifies the mount point, volume name, or drive letter (followed by a colon), of the drive you want to format. If you do not specify any of the following command-line options, format uses the volume type to determine the default format for the disk. 
/fs:FileSystem 
Specifies the file system to use file allocation table (FAT), FAT32, or NTFS. Floppy disks can use only the FAT file system. 
/v:Label 
Specifies the volume label. If you omit the /v command-line option or use it without specifying a volume label, format prompts you for the volume label after the formatting is completed. Use the syntax /v: to prevent the prompt for a volume label. If you format more than one disk by using one format command, all of the disks will be given the same volume label. For more information about disk volume labels, see Related Topics. 
/a:UnitSize 
Specifies the allocation unit size to use on FAT, FAT32, or NTFS volumes. If you do not specify UnitSize, it is chosen based on volume size. The following table lists valid values for UnitSize. Value Description 
512 Creates 512 bytes per cluster. 
1024 Creates 1024 bytes per cluster. 
2048 Creates 2048 bytes per cluster. 
4096 Creates 4096 bytes per cluster. 
8192 Creates 8192 bytes per cluster. 
16K Creates 16 kilobytes per cluster. 
32K Creates 32 kilobytes per cluster. 
64K Creates 64 kilobytes per cluster. 

/q 
Performs a quick format. Deletes the file table and the root directory of a previously formatted volume but does not perform a sector by sector scan for bad areas. You should use the /q command-line option to format only previously formatted volumes that you know are in good condition. 
/f:Size 
Specifies the size of the floppy disk to format. When possible, use this command-line option instead of the /t and /n command-line options. Windows accepts the following value for size: 
1440 or 1440k or 1440kb or 1.44 or 1.44m or 1.44mb 
1.44-MB, double-sided, quadruple-density, 3.5-inch disk

/t:Tracks 
Specifies the number of tracks on the disk. When possible, use the /f command-line option instead of this command-line option. If you use the /t command-line option, you must also use the /n command-line option. These two command-line options provide an alternative method of specifying the size of the disk being formatted. You cannot use the /f command-line option with the /t command-line option. 
/n:Sectors 
Specifies the number of sectors per track. When possible, use the /f command-line option instead of this command-line option. If you use the /n command-line option, you must also use the /t command-line option. These two command-line options provide an alternative method of specifying the size of the disk being formatted. You cannot use the /f command-line option with the /n command-line option. 
/c 
NTFS only. Files created on the new volume will be compressed by default. 
/x 
Causes the volume to dismount, if necessary, before it is formatted. Any open handles to the volume will no longer be valid. 
/? 
Displays help at the command prompt. 
Remarks
Using format at the Recovery Console 
The format command, with different parameters, is available from the Recovery Console.

Administrative credentials 
You must be a member of the Administrators group to format a hard drive.

Using format 
The format command creates a new root directory and file system for the disk. It can also check for bad areas on the disk, and it can delete all data on the disk. To be able to use a new disk, you must first use this command to format the disk.

Typing a volume label 
After formatting a floppy disk, format displays the following message: 

Volume label (11 characters, ENTER for none)? 

The volume label can be a maximum of 11 characters (including spaces). If you do not want your disk to have a volume label, just press ENTER. For information about volume labels, see Related Topics.

Formatting a hard disk 
When you use the format command to format a hard disk, format displays a message of the following form before attempting to format the hard disk:

WARNING, ALL DATA ON nonremovable DISK 
DRIVE x: WILL BE LOST! 
Proceed with Format (Y/N)?_ 

To format the hard disk, press Y; if you do not want to format the disk, press N. You must have Administrator rights to format a hard disk.

Unit size 
FAT file systems restrict the number of clusters to no more than 65526. FAT32 file systems restrict the number of clusters to between 65527 and 4177917.

NTFS compression is not supported for allocation unit sizes above 4096.

Format messages 
When formatting is complete, format displays messages showing the total disk space, any space marked as defective, and the space available for your files.

Quick formatting 
You can speed up the formatting process by using the /q command-line option. Use this command-line option only if there are no bad sectors on your hard disk.

Using format with a reassigned drive or a network drive 
You should not use the format command on a drive prepared by using the subst command. You cannot format disks over a network.

Format exit codes 
The following table lists each exit code and a brief description of its meaning. 

Exit code Description 
0  The format operation was successful.  
1  Incorrect parameters were supplied.  
4  A fatal error occurred (any error other than 0, 1, or 5).  
5  The user pressed N in response to the prompt "Proceed with Format (Y/N)?" to stop the process.  

You can check these exit codes by using the errorlevel condition with the if batch command.

Examples
To format a new floppy disk in drive A using the default size, type:

format a:

To perform a quick format operation on a previously formatted disk in drive A, type:

format a: /q

To format a floppy disk in drive A and assign it the volume label "DATA," type:

format a: /v:DATA

Formatting legend
Format Meaning 
Italic Information that the user must supply 
Bold Elements that the user must type exactly as shown 
Ellipsis (...) Parameter that can be repeated several times in a command line 
Between brackets ([]) Optional items 
Between braces ({}); choices separated by pipe (|). Example: {even|odd} Set of choices from which the user must choose only one 
Courier font Code or program output 

Related Topics

ويمكن أن تكتب في ال Help الخاص بالوندوز format وستجد نفس الكلام ,,

تابع لنتابع معك ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#8

حدث عطل بسيط !!! .. هذاك الكود تقريباً نفسه الذي سيتخدم في نظام تشغيل دوس قصدي نفس الفورمات الفي دوس مأخود من مشروع مفتوح أسمه FreeDos

يمكنك أن تجده في www.sourceforge.net

#9

السلام عليكم,

لمعرفة كل ما يتعلق بالفاتات أو أنضمة الملفات يجب أن نعرف قراءة السكتور الأول للقرص الصلب إذ هو يحتوي على كل هذه المعلومات. سأبحث عن ملف يتكلم عن هذا وسأضعه هنا إن شاء الله.

ليست لدي ذاكرة الأرقام ولكن يمكن أن أقول أن آخر السكتور الأول أو الأربع بتات الأخيرة تحتوي على إمضاء ليحدد إذا كان القرص Boot أم لا وقبل هذا توجد Tables لتحديد البارتشنز وكل واحدة إذا لم تخني الذاكرة تحتوي على 16 بتا وهذه البتات هي التي ستحدد كل الخصائص فمثلا البت الأول مثلا سيحدد إذا كانت هذه Boot والأبيات التالية ستحدد نوع الفات وأخرى تعطي السكتور الأول لبداية الفات وأخرى تحدد الطول وإلى غير ذلك. إذن إذا أردنا تغيير شيء ما ما علينا سوى أن نملء Table أو Tables حسب العدد ونملؤها حسب المعطيات التي نريد.وطبعا إذا غيرنا طول البارتشن الأولى يجب تصحيح الباقيات حيث سيتغير السكتور الأول لها وطولها أيضا وإلا سنحصل على أخطاء في القرص. هذا من جهة ومن جهة أخرى كيف يمكن أن نكتب داخل هذه التايبلز أو عموما على القرص الصلب وهنا أضن أن اللغة المؤهلة لهذا تبقى أولا حسب رأيي هي الأسمبلر إذ لدينا كل يلزم لهذا مثل قراءة أو كتابة سكتور محدد أو فرمتة تراك أو قرص كامل.حيث لدينا دوال البيوس فيها كل هذا. إذا كنا في الوندوز ففي نضام الإكس بي لم أجرب هذا ولكن على ما يبدو هناك دالة CreateFile تمكن من الكتابة على القرص وربما الفلوبي فقط حيث ليست لدي معلومات دقيقة على هذا النضام. أما في الوندوز 98 فهذا سيكون غير ممكن الكتابة مباشرة على الأقراص ولكن يمكن أن نعمل ذلك إذا دخلنا إلى حلقة نظام التشغيل ويمكن أن نعمل كأننا لا زلنا في بيئة الدوس. وقد صادفت مرة من وضع مثل هذه الطرق بطريقة يمكن استعمالها في س أو س++ في نضام 98 للذين لا يعرفون كيفية التعامل مع الحلقة 0 ولربما تكون لا زالت عندي نسخة لهذا سأحاول وضعها لاحقا إن شاء الله. وإذا كانت عندك معرفة بالأسمبلر ربما تسهل عليك المأمورية.

إلى اللقاء.

#10

السلام عليكم

شكرا جدا علي التفاعل معي واليوم اطل عليكم باسئلة اكثر واكثر

بالنسبة للطريقة الاولي :

اعتقد انها الفكرة التوهجت في راسي هي ان ادرس ملفات الفاتات وتغير البيانات بها حسب ما اريد لكن المشكلة انني لم اجدها

نعم لم اجد اي ملفات تدل علي القرص الصلب تفيد بانها هي ملفات الفاتات

السوال

1-هل من الممكن الحصول علي ملفات الفاتات بطريقة غير القراءة المباشرة من boot Sector كما تفضلت وذكرت

2-اذا فكرت في تسجيل وبيع البرنامج الن يكون هذا غير شرعي لاني لست من كتب الاكواد الخاصة بملفات الفاتات وليست ملكيتي

بالنسبة للطريقة الثانية :

فعلا طريقة جيدة جدا ولم تخطر علي بالي ولكن

1- في تعليق turbo c++ اعتقد ان هذة الدالة مرتبطة بنظام التشغيل دوس

الي اي مدي يكون هذا الارتباط حيث اعتقد اني من الممكن ان يكون برنامجي bootable وحينها سوف لا يكون اي ارتباط بيني وبين نظم التشغيل

2-اذا كانت هذة الدالة لا تعتمد علي النظام فهذا معناه ان لغة السي تستطيع فرمتة البارتيشن وكمان كتابة الفاتات لها

3-ماذا عن التقسيم اعتقد ان البارميتر UnitSize له علاقة بهذا الامر لذلك ارجو منكم احد يقولي عنة اي كلمة بسيطة حيث المعلومات عنة غير كافية

4-ماذا عن بقية الانظمة مثل (hpfs - netware file sys - ext2 ) هل هي مدعومة من قبل الدالة ايضا ام ان العملية معتمدة علي نظام التشغيل

في النهاية

ارجو توضبح من اين اتيت بهذة المعلومة فقد بحثت عن كل شيئ لم اجد شيء

ارجو المشاركة في موضوع الاحتراف في هذا القسم

#11

بصراحة لم أفهم السؤال ؟؟

عن ماذا تريد أن تسأل

كتابة جداول الفات في وندوز أو لينكس ؟

هل تريد أن تعمل برنامج إقلاع مثلا

المهم

يتم التعامل مع الأقراص وكأنها ملف عادي وفي كل إصدار وندوز

مثلا في وندوز 98 القرص المرن

 hDevice = CreateFile ( "\\\\.\\vwin32",0,0,NULL,0,
   FILE_FLAG_DELETE_ON_CLOSE,
   NULL );

ويتم الكتابة والقرائة منة مثل سواقات الأجهزة بإستخدام الدالة

DeviceIoControl

وندوز NT

	hDevice = CreateFile("\\\\.\\A:", 
        GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 
        NULL, OPEN_EXISTING, 0, NULL);

والقرائة والكتابة فية كأنة ملف نصي بإستخدام الدوال

Read File -Write File

أما التعامل مع الأقراص + الأقسام + الفورمات كلة بهذة الدالة

DeviceIoControl

فقد تغير الثابت ( مثلا للفورمات الثابت =IOCTL_DISK_FORMAT_TRACKS )

مثلا لمعرفة محتويات الأقسام = PARTITION_INFORMATION

وتوجد قيم كثيرة لهذة الدالة تمكنك من فعل كل شيء تقريبا بالقرص

-

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#12

السلام عليكم

لا تستطيع اخي جاس (لا استيع الكتابة بالانجليزية) تصور فرحتي بالدالة اللعينة التي تكلمت عنها وهي DeviceIoControl

ولكن تحول ذلك الي غضب غضب شديد عندما لم اجد اي شيء بهذا الاسم

لا توجد في التيربو سي++

ولا في مرجع لدوال السي والسي++

ممكن تتفضل وتقولي هذة الدالةتوجد في اي هيدر فيل او اي كلاس

وما احتاجة ببساطة هو

ام اقوم بتقسيم او فرمتة البارتشن ومن ثم تعيين الفاتات التي ارغب بها علي اختلاف انواعها كل ذلك فرمجيا ومن الافضل اي ييكون بعيدا عن نظام التشغيل

ارجو ذكر اي معلومة تتعلق بهذا الموضوع

وارجو مراجع الاسئلة السابقة حيث بها استفساراتي عن ردود الاخوة الكرام

وشكرا علي المشاركة

والسلام علكيم

#13

السلام عليكم ,,

بداية خذ المصادر التي تحدث عنها jaas جزاه الله خيرا :

http://msdn.microsoft.com/library/default....ceiocontrol.asp

http://msdn.microsoft.com/library/default....ntrol_codes.asp

http://msdn.microsoft.com/library/default....ntrol_codes.asp

المصادر كلها من ال MSDN في موقع microsoft ,,

اقتباس
لا توجد في التيربو سي++

ولا في مرجع لدوال السي والسي++

انسى !! مستحيل تجد دوال كهذه في مرجع لسي++ أو غيره ,, حتى كتب ال Visual C++ الكبيرة أغلبها لن تجد فيها شيئا كهذا ,, "دعك من أنني لم أرها في كتاب ل visual C+ أصلا "

يجب أن تغير طريقة تفكيرك في السي++ ,, فهي فقط مجرد واجهة بسيطة جدا جدا ,, لتدخل على برمجة التطبيقات لنظام تشغيل معين ,, يعني الدالة DeviceIoControl في الأصل هي لاستدعاء ال Device Drivers الموجودة سلفا في ملفات sys ,,

لذا السي++ الأوامر الاساسية , والكتب الموجودة فقط تدرس عظم اللغة ,, "الفئات وحلقات التكرار وبعض المكتبات الأساسية مع اللغة ,, وفقط " لكن لاتتطرق لبرمجة نظام التشغيل بهذه اللغة ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#14

الدالة DeviceIoControl تأخذ Handel من الدالة CreateFile كما هو واضح من تصريحها ,,

الآن توجد طريقة لفتح الأجهزة ,, ويمكن أن يكون الجهاز أي شيء ,, ملف , قرص منطقي"وهو مانريده هنا", قرص فيزيائي "للوصول لجدول التجزئة" , Serial Port , وغيره الكثير ,,

وجدت البارمترات في كتاب لدي اسمه Server-Side Programming ,, ولم أجدها في موقع Microsoft نهائيا "أو أنني لاأعرف البحث " أو أن مايكروسوفت لاتريد من العامة العبث بهذه الأمور ,, حيث أن فيروسات ال Kernel Mode أهلكتهم :) !!

البيانات التالية لفتح القرص فيزيائيا ,, ولانحتاجها هنا ,, بل نحتاج للفتح المنطقي ,,

المهم مرر البارمتر الأول للدالة CreateFile كالتالي :

CreateFile("\\.\PHISICALDRIVE0",....);

لاحظ ال PHISCALDRIVE0 معناها القرص رقم صفر أي الأول ,, وربما سيكون ال A ,, أو ال C: ,, لاأعرف من أين يبدأ ,,

لفتح القرص منطقيا :

CreateFile("\\.\c:",...);

البارمتر الأول للقرص c كما هو واضح ,, البارمترا لثاني الذي لم أجربه أبدا ,, ينبغي أني كون لتهيئة عدد تراكات معين ,,

تابع في الرد التالي ,,

وتوجد أوامر أخرى للبارامتر الأول مثلا لفتح منفذ com1

CreateFile("COM1",...);
[code]
لفتح Com2 ,,
[code]
CreateFile("COM2",...);

لفتح Parrallel Port :

CreateFile("LPT1",...);

وبالمثل ل 2 أيضا ,,

لفتح ملفات بطريقة عادية ,,

CreateFile("C:\\Documents\\play.wav",...);

وهكذا مرر بقية البارمترات لتفعل المطلوب ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#15

لكيفية استخدام ال DeviceIoControl ,, راجع الصفحة التالية بعناية ,,

http://msdn.microsoft.com/library/default....t_tracks_ex.asp

وربما حاولت أن أجربها لك ,, لكن ليس لدي Drive A ,, وليس لدي بت واحد في الهاردسكات التي لدي ,, لأستطيع أن أضحي بها ,, فأخاف أن أجرب وأفعل كارثة :) ,,

فقط اقرأ الرابط الأخير من أول حرف فيه حتى آخر حرف ,, كل شيء موجود تقريبا ,, وابحث في الدائرة التي حولها ,, وستجد مايسعفك ,, وابحث أيضا في الروابط التي أعطيتك ايها في الأعلى ,,

تابع لنتابع معك ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#16

السلام عليكم,

الدالة DeviceIoControl هي موجودة في MSDN وهي تعمل للإتصال مع الدرايفرات أو الأقراص للأنضمة من عائلة NT حيث يمكنها أن ترسل له وتأخذ منه المعلومات التي نريدها وحتى الدرايفرات لها بدورها دوال خاصة للتعامل مع هذه الدالة إذ بمجرد ما يفتح الدرايفر يراقب هذه الدالة ويرى ما أتت به له. والتعامل مع الدرايفرات يكون بواسطة الهاندل الذي فتح بواسطة CreateFile وأكرر مرة أخرى أن هذه لن تفتح لك القرص في نظام 98 أو 95 وهنا يمكن أن نبرمجها ب س أو س++ ولكنها ستكون مثل برمجة الدرايفرات مثل المثال الذي في الملف المرفق. وإذا كان من يهمه البرمجة هذه على 98 يمكن أن نصنع درايفرا يقوم بالكتابة أو قراءة قرص ما وكل ما سنقوم به هو استدعاء المقاطعات المعروفة في الدوس ونحن تحت نضام الوندوز 98 .

ولكن البرمجة السهلة تبقى في بداية التشغيل باستعمال دوال البيوس حيث هنا لا يكون أي نضام يمنعنا من عمل ما نريده.

وفي الملف المرفق تجدون مجموعة من الملفات تتكلم عن مختلف هذه المعلومات وأتمنى أن تكون مفيدة للجميع.

إلى اللقاء.

SomeFiles.zip

#17

السلام عليكم,

سأعطي هنا في الملف المرفق برنامج يقرا سكتور من القرص. وتلاحظون أن في 98 نتعامل مع الدرايفر وليس مع القرص مباشرة وتلاحظون تقنية برمجة الدرايفرات رغم أنها مبرمجة بطريقة توحي لنا كأنها برمجة عادية إذا أمكن القول.

إلى اللقاء.

ReadSector_source.zip

#18

السلام عليكم

شكرا جدا جدا

في البداية اود ان انوة ان كل ما اريدة هو الاجابة علي الاسئلة السابقة فهي مفتاح اللغز الدائر في راسي

اعتقد اننا توسعنا اكثر من اللازم حيث اني بعد قراءة الملفات تهت وتاهت الافكار في راسي

في البداية كنت اريد الفورمات وقد وجدت لة الحل عن طريق دوال البويس الموجودة في ملف boid.h

ولكن يوجد تعليق في الهلب ان عليك كتابة الفاتات التي تريدها بنفسك

لذلك ان الفاتات هي المشكلة واعتقد هي مربط الفرس في التقسيم بعد ذلك

الملفات التي ارسلها الاخ chik كان بها الكثير من الفوائد والتي حقا استفدت منها كثيرا ((كيف حصلت عليها ))

بالنسبة للدالة DeviceIoControl انت تقول انها تعمل علي علي nt , xp فقطولكن يوجد ملف من الملفات المرفقة(DeviceIo_Win98.txt) يقو انا تعمل علي 98 و مي ايضا ومن ذلك هل هي تعتمد علي السيستم بكل كلي

بالنسبة للدالة creatfile لم اجدها و في المثال لم تكتب هذة الدالة ارجو توضيح اين اجد هذة الدالة

رجاء حار حار جدا

مراجعة الاسئلة حيث و ضعت بها كل ما اريد

اضيف اليها

-ان التيربو سي يحتوي علي كل شيء لكن المشكلة ان الدالة ليست بة

من اين تحصلون علي المساعدة فانا دخت علي مرجع لكل الدوال ولو سطر بسيط من التعليق ولكن لم اجد الا التيربو سي ولكنة 16 بيت و الفيجوال سي اكثر تقدما و دوالامن التي في اليربو

ارجو توضيح من تحصلون علي هذة المعلومات

انا طبعا لا انر جميل مساعدتكم لكن اريد ان احس اني من قمت بكتابة المشروع فانا حاسس انكم بعد قليل سوف قولوا خذ هذا هو برنامجك وانا لا اريد ذلك فقط اعمل بالمثل الصيني (لا تعطني سمكة ولكن علمنمي كيف اصطادها )

-هل مكتبة الMSDN بها كل شيء كل شيء ام يوجد ما يخفية عنا صانعي اللغة

ارجو من الاخوة المشاركة في موضوع الاحتراف وايضا الاجابة علي الاسئلة

واعتذر كثيرا عن كثرة الاسئلة والطلبات لكن

(منهومان لا يشبعان طالب علم وطالب مال )

والسلام عليكم

#19

أعتقد أني فهمت ما تبحث عنة

بما أنك ذكرت مترجم التيربو سي

وذكرت أنك لم تجد الدالة DeviceIoControl وهي من الدوال الأساسية في نظام وندوز

فأعتقد أنك لا تبرمج في نمط وندوز 32 بت وأعتقد أنك تستخدم مترجمات ومراجع

لبيئة الدوس مثل التيربو سي وغيرة ( وأكيد لن تجد هذة الدالة في مترجمات دوس )

هذة الدالة فقط توجد في مترجمات وندوز مثل الفجول سي والبورلند سي وكل المترجمات ال 32 بت

وهي موجودة في الهدر winbase.h أي أنها في مكتبة kernel32

اقتباس
وما احتاجة ببساطة هو

ام اقوم بتقسيم او فرمتة البارتشن ومن ثم تعيين الفاتات التي ارغب بها علي اختلاف انواعها كل ذلك

أعتقد أنك تقصد البرمجة بمترجمات دوس - 16 بت

طبعا برامج دوس تعمل في النمط الحقيقي بمعنى أن الوصول للأقراص يكون

بدون لف ولا دوران ( كما في وندوز )

وكل الدوال التي تحتاجها موجودة في الهدر BIOS.h

مثل :

  _bios_disk

حيث أن البارمتر الأول

يأخذ العملية - وكل عملية واضحة من إسمها

_DISK_RESET     0   /* controller hard reset */
_DISK_STATUS    1   /* status of last operation */
_DISK_READ      2   /* read sectors */
_DISK_WRITE     3   /* write sectors */
_DISK_VERIFY    4   /* verify sectors */
 _DISK_FORMAT    5   /* format track */

والبارمتر الثاني بنية أو إتحاد يأخذ المخزن وتحديد القطاع و التجمع والرأس و...

struct diskinfo_t {
    unsigned drive, head, track, sector, nsectors;
    void far *buffer;
};

وهكذا

أما بالنسبة

اقتباس
ومن الافضل اي ييكون بعيدا عن نظام التشغيل

فأعتقد أنك لا تريد أي نظام تشغيل يتدخل في العملية

ولكن أسمحلي بسؤال ( بصراحة حيرتني )

كيف تريد كتابة نظام ملفات مثل فات مثلا ولا تريد نظام التشغيل أن يتدخل

هل تعرف أن نظام الفات (هو عبارة عن طريقة لمعرفة ملف ما على القرص )

تخص نظام التشغيل دوس - وأصلا الكمبيوتر بشكل عام أو بويس لا يعرف شيء عن فات

بمعنى ماذا ستستفيد من كتابة نظام ملفات لا يعرفة البويس . والشيء الوحيد الذي يعرف جدول فات هو نظام التشغيل وأنت لا تريد إستخدام نظام التشغيل ؟؟

هل تريد أن تعرف مثلا ( كيفية عمل البرامج الموجودة في قرص الطوارئ Startup)

مثل برنامج الفورمات format وبرنامج تقسيم القرص fdisk وغيرها

فالطريقة هي : لكتابة أي شيء على القرص بدون تدخل نظام التشغيل

عن طريق دالة تتصل مباشرة بالبويس وهي الدالة : int86

وتكتب

 int86( int __intno,
                          union REGS _FAR *__inregs,
                          union REGS _FAR *__outregs );

وبارمترات هذة الدالة بإختصار هي مسجلات المعالج + مقاطعات البويس

وكأنك تكتب بلغة الإسمبلي مباشرة

والدالة الموسعة لنفس الدالة السابقة هي : int86x

وتستطيع إستخدام نفس الدالة السابقة ولكن لمقاطعات الدوس(ويجب أن يكون نظام دوس موجود مع البرامج التي تكتبها )

وهذة هي الفكرة العملية للوصول إلى أي مكان في القرص

والدوال المستخدمة هي : intdos و intdosx

وطريقتها نفس الدالة السابقة ولكن بطريقة أسهل شوي

بقيت نقطة واحدة أتمنى أن تتقبلها بصدر رحب - لمصلحتك طبعا

لا تضيع وقتك في مثل هذة الأمور - وإبحث عن مجال آخر قد تستفيد منة

وإلى اللقاء

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#20

السلام عليكم

شكرا اخي jaas علي تفاعلك معي

فعلا لقد وضعت يدك علي لب الموضوع

ماذا اريد ان اصنع؟

اريد ان اصنع برنامج bootable اي يقوم بالاقلاع اولا قبل السيستم ومن ثم يمكن التحكم في الهارد مثل (فرمتة تقسيم تفير الفاتات)

وقد حللت مشكلة الفرمتة ففعلا دوال البويس تتيح لي ذلك

المشكلة اتت في الفاتات فانا اريد اختيار الفاتات التي اريدها

طبعا ذلك دون تدخل النظام لانة لايوجد نظام اصلا

وهذة الطريقة مقسم بها الهارد بتاعي اي انها موجودة وحقيقية

(((((((((بمعنى ماذا ستستفيد من كتابة نظام ملفات لا يعرفة البويس . والشيء الوحيد الذي يعرف جدول فات هو نظام التشغيل وأنت لا تريد إستخدام نظام التشغيل ؟؟

))))))))

انني اريد ان اكتب الفاتات لكي اخدم بها الانظمة فيما بعد هل فهمتني الان؟

ارجو مراجع الاسئلة (الكتير ) السابقة

هل تعرف برنامج (magic partion ) ممكن فكرة بسيطة عن كيفية عملة هل يعتمد علي نظام تشغيل ان لا

في النهاية

شكرا جدا جدا علي نصيحك الغالية وهذا ما احتاجة فعلا في موضوع الاحتراف ارجو ان تشارك فية انت وبقية الاخوة

لكن هل وجود برنامج (hard manger\utility) عربي يعد شيء غير مجدي انا اري انة سيكون شئ رائع علي الاقل سيكون برنامج قوي وناتج من اشباع هواية لكن ماذا عن رايك ارجو عدم حرماني من سماعة

يبقي لي انا نقطة اخير

كيف تحل مشاكلك البرمجية ؟ اعتقد ان لكل مبرمج ادواتة ومراجعة التي يستعين بها ؟فمثلا مثل هذة المشكلة وانت مكاني ماذا ستفعل؟ وماذا سيفعل اي مبرمج اجني لا يعرف منتدي عظيم مثل هذا المنتدي ؟

الاحتراف

ارجو المشاركة

وشكرا مرة اخي

والسلام عليكم

#21

السلام عليكم,

بما أنك تريد البرمجة في بيئة 16 بت فيمكن أن تنسى كل ماسبق لأن ذلك ربما سيعقد شيئا ما المأمورية علما أنها ستكون أسهل في بيئة 16 بت.

لا أعرف دوال تربو سي وشخصيا أفضل هذا النوع من البرمجة بالأسمبلر لأن حتى البرمجة ب سي هي في الحقيقة ترجع كل شيء للأسمبلر.

فيما يخص مشروعك أضن أنك لو تمشي معه خطوة خطوة يكون أحسن وتواجه المشاكا حين تطرح في وقتها. وأضن أن البداية ربما تكون بصنع بوت وهذه هي الخطوة الأولى لأن في هذه المرحلة ليس هناك إلا البيوس وقراءة سكتور واحد من القرص وحتى الفاتات في هذه المرحلة ليست مهمة إذ حتى البيوس لا تهمه هذه. حتى هنا وإذا اختصرنا ببوت سهل سنرى أننا لن نهتم بالفاتات لأننا سنتعامل مع سكتور بين ومعروف وبعد ذلك حين نريد المزيد في برنامجنا كإظهار صورة ما على الشاشة أو غير ذلك سنرى أنه يجب علينا معرفة وجود المعطيات على القرص وهذا سيدفعنا إل الفاتات.إذا كنا نريد أن تتعامل هذه مع أنضمة معروفة فيجب أن تكون بالشكل التي تفهمها هذه الأنظمة أما إذا كنا نريد أن نشغلها بنظام خاص فيمكن أن نتصور نضام آخر للفاتات ربما يكون بتصور شخصي والنضام الذي سنكتبه سيعمل على فهم هذا النوع.

وسأعطيك طريقة استعملتها في وقت ما إذا كنت تريد صنع فلوبي بوت ولا تريد أن تتعامل مع الفاتات وهي أن تسجل الملفات التي تريد في سكتورات معروفة مثلا تسجل الملف أ في السكتور رقم 4 والملف ب في السكتورات المتتالية 5 و 6 و 7 وهذه ستكون بمثابة فات خيالية تكون في ذهنك فقط وستكون الوحيد الذي يفهم هذه الفات وحين تريد قراءة الملفات من جديد ما عليك سوى قراءة السكتورات الذي تريد وتقوم بإعادة الملفات من جديد وأضن أن هذا النوع من التعامل سيعطي فكرة الفات وصلاحيتها والتعامل معها.

هذه وجهة نضري وشخصيا مررت بهذه التجربة ولقيت فيها إفادة.

وهذه بعض الأجوبة على تساؤلاتك :

اقتباس
الملفات التي ارسلها الاخ chik كان بها الكثير من الفوائد والتي حقا استفدت منها كثيرا ((كيف حصلت عليها ))

الملفات عثرت عليها بالبحث في النت ويمكن أن تلقى أشياءا كثيرة إذا زدت في البحث.

اقتباس
بالنسبة للدالة DeviceIoControl انت تقول انها تعمل علي علي nt , xp فقطولكن يوجد ملف من الملفات المرفقة(DeviceIo_Win98.txt) يقو انا تعمل علي 98 و مي ايضا ومن ذلك هل هي تعتمد علي السيستم بكل كلي

نعم هذا ماقلته وربما لم أوضح الفكرة جيدا وأنا قلت أن الدالة CreateFile هي التي لن تشتغل مباشرة في 98 إذ مثلا في Nt أو Xp يمكن أن نفتح هاندل للفلوبي ب : CreateFile(\\.\A,.......) وهذه الدالة سترجع لنا خطء في نضام 98 أما حين يكون لدينا الهاندل فالدالة الأولى ستعمل بشكل عادي.

اقتباس
-هل مكتبة الMSDN بها كل شيء كل شيء ام يوجد ما يخفية عنا صانعي اللغة

في المرحلة الأولى من البرمجة يمكن أن نقول أنها تحوي الكل - هذا ليس إشهارا مني لها - إذ نجد بها كل الدوال والتعريفات . ولكن إذا تعمقنا شيئا ما فسنكتشف أنها تخبء بعض الأشياء وحتى الشركة تستعمل أحيانا بعض Undocumented Functions ولكن بشيء من البحث يمكن أن نلقاها في أماكن أخرى.

أتمنى لك التوفيق وإلى اللقاء.

#22

السلام عليكم

شكرا اخي chik علي ردك الاخير وايضا حنينك علي الاسئلة الاجابة علي

انا عارف اني تعبتكم معايا لكن ان الله مع الصابرين

نعم انا استخدم اليربو سي++ وهو مرجعي الاساسي بالنسبة للسي++ ويجد بة اي دالة ولكن تحت 16 بت فقط

اعتقد اننا اقتربنا جدا من الهدف المنشود لكن اظن ان حكاية البووت سوف تتوهنا وتضللنا ليس قليلا بل كثير اعتقد ان الملفات التي ارفقها الاخ chik كافة للاستفسار عن هذة القصة وان افراد موضوع خاص بة سيكون اكثر نفعا وهذا رايي الخاص ارجو ان تتقبلوه

((.إذا كنا نريد أن تتعامل هذه مع أنضمة معروفة فيجب أن تكون بالشكل التي تفهمها هذه الأنظمة أما إذا كنا نريد أن نشغلها بنظام خاص فيمكن أن نتصور نضام آخر للفاتات ربما يكون بتصور شخصي والنضام الذي سنكتبه سيعمل على فهم هذا النوع))

لا يا اخي انا اريد التعامل الفاتات مع انظمة معروفة و الفكرة هي وجود نسخة من هذة الملفات قابلة للتغير حسب رغبة المستخدم ثم تعدل و تنسخ في مكانها المناسب علي القرص الصلب (و الذي لا اعرفة ) هذة هي الفكرة التي في راسي

اذا كان هناك اي فكرة اخري ارجو طرحها

ماذا يستخدم برنامج ماجيك بارتيشن

سوال علي السريع(وغبي)

اي اصدار من مكتبة msdn يكون للغة السي++ تحت 32بيت و 16 بيت

بصراحة انا اريد ان اعرف ماذا اقول للرجل الذي سينسخ لي الاسطوانات انا لا افكر في الانتقال الي الدوت نت قريبا لذا فماذا اقول للرجل

والسلام عليكم

#23

لماذا توقفتم

اني احتاجلكم ارجو المتابعة

#24

مرحبا أخي

اقتباس
لكن هل وجود برنامج (hard manger\utility) عربي يعد شيء غير مجدي انا اري انة سيكون شئ رائع علي الاقل سيكون برنامج قوي وناتج من اشباع هواية

في الحقيقة أتمنى أن أرى برنامج عربي مثل هذة البرامج

ولكن لا أتوقع في الوقت القريب

لأننا مازلنا نرى نفس الأخطاء ولم يتغير أي شيء

ما بطالع لبعيد بتكلم عنك إنت ؟ لا أتوقع أنك ستنجح في هذا المشروع

وبكل بساطة ( لأن أهم الأساسيات تنقصك - قد تكون عندك خبرة في بعض )

الأمور ولكن الأساس ضعيف

في البداية لم تفرق في أسألتك بين منصات التشغيل 16 بت 32 بت

وتريد تصميم برنامج ذاتي

وأسألتك عن جداول فات ( جداول فات بكل بساطة مساحة خالية من القرص عند كل تخزين يكتب النظام عناوين القطاعات )

وأكبر خطأ إستخدامك مترجم تربو سي لكتابة برامج مستقلة

أعتقد لوكنت تملك خلفية بسيطة عن الإسمبلي لوجدت أن برامج التربو سي

تستخدم في بنيتها مقاطعات الدوس ولن يعمل أي برنامج بدون نظام دوس

كيف تريد عمل برنامج مستقل عن النظام

راجع مواضيع المنتدى فقد وضحت هذة الأمور

وأمور كثيرة ولكن لا أريد أن أحبطك ( ولكن أتمنى أن أوجهك )

--

وإلى اللقاء

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#25

السلام عليكم

لم أقرأ الموضوع كاملا

وددت اضافة شئ بسيط للمهتمين بعمل Format في win32 .

مقال لـ Mark Russinovich

http://www.sysinternals.com/ntw2k/source/fmifs.shtml

هناك مقالات ممتازة له في

http://www.sysinternals.com

(واحد من اشهر الذين يبحثون في system internals ) .

عذرا , لم يكن لدي وقت لقراءة الردود وليس لدي وقت للمشاركة في رد مفصل .

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

مواضيع مشابهة