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

قراءة مسلسل القرص الصلب الخاص بالمصنع و طرق تشفيرة بمكتبات جاهزة

بدأه waqwaq في 10 يناير 2010 · 3 رد · 1,671 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

إهتتمت بالبحث خلال العديد من المنتديات العربية والاجنبية عن حل لهذه المشكلة و إقتصرت علي حلين اما قراءة مسلسل المحركpartition او قراءة مسلسل القرص الصلب لكن لاتعمل مع الاقراس من النوع sata وايضا تعمل فقط مع vb6

لذا اقدم لكم مكتبة ( منقولة للامانة) ولكن قمت ببعض التعديلات عليها وهي تعمل حاليا علي

windows xp

harddisk sata , ata

visual studio 2002,2005,2008,2010

واترك باقي الاحتمالات لتجربتكم

إسم المكتبة Interop.HWINFOCOMLib.dll

بالطبع يلزم مسبقا قبل استخدامها ان تضاف الي مسجل الــ windows

فقط اكتب في قائمة run

regsvr32 %SystemRoot%\System32\Interop.HWINFOCOMLib.dll

وبعد ذلك يمكنك إستيرادها كمرجع داخل مشروعك من قائمة add reference داخل visual studio

ولمعرفة رقم مسلسل القرص الخاص بك

Dim harddiskserial As New HWINFOCOMLib.HD
dim ser as string = harddiskserial.serialnumber

المتغير ser يحتوي علي رقم مسلسل الخاص بالمصنع للقرص الاساسي علي الجهاز

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

Chilkat

وهي اعتبرها من ناحيتي انها افضل مكتبة علي الإطلاق في كل المجالات التي نتعامل معها

مميزات المكتبه

مكتبة الــ Chilkat

الموقع الرسمي للمكتبة

http://www.chilkatsoft.com/

فوائد المكتبة

Bounced Mail

Bz2

Character Encoding

CSV

Digital Certificates

Digital Signatures

Email

FTP

HTML to XML

HTTP

IMAP

Encryption

MHT / HTML Email

POP3

PFX

RSA

S/MIME

SMTP

Socket

Spider

SSH

SSH Tunnel

SSH Key

SFTP

Tar Archive

Upload

XML

XMP

Zip Compression

Misc

وبالطبع من اهم هذه المميزات التشفير encryption وإرسال البريد الإلكتروني smtp

وضغط الملفات بصورة zip , rar ,tar,7z بكلمة مرور او بدون

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

chilkatsoft.com

المكتبة مجانية تماما (ليست للدعايا وانما للإفادة العامة)

اولا الـــ Encryption

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

بس قبل ما ابدأ لازم نعرف اننا لازم نضيف المكتبة كمرجع داخل المشروع

وطبعا كنوع من تنظيم مشروعك يفضل ان كل ما هو يتعلق بالتشفير يكون في class خارجي علشان تقدر تستخدمه بعد كده

وانا من ناحيتي هسهل عليكم طرق الإستخدام جدا جدا بس المهم انكم تستخدموا صح!!!

هفترض ان في class مخصصة للتشفير داخل مشروعك ولنفترض انها ENCODING_CLASS

وكل طريقة او ميزة للمكتبة هستخدمها في هيئة داله داخل ال class و برضه هوريكم ازاي تستخدموا الclass دي

علي فكرة في 200 طريقة تشفير جوه المكتبة انا هشرح 3 منهم و الباقي تقدروا تفهموه من عل الموقع

1- blowfish2

ودي انا عن نفسي بعتبرها من اصعب دوال التشفير في الكسر و من اكثرها امانا

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

الإستخدام

دالة التشفير

الداله التي سيتم وضعها في الــ class

Function cryp2(ByVal inp As String, ByVal i As Integer) As String
        Dim crypt As New Chilkat.Crypt2()

        Dim success As Boolean
        success = crypt.UnlockComponent("Anything for 30-day trial")



              crypt.CryptAlgorithm = "blowfish2"

        '  CipherMode may be "ecb", "cbc", or "cfb"
        crypt.CipherMode = "cbc"

        '  KeyLength (in bits) may be a number between 32 and 448.
        '  128-bits is usually sufficient.  The KeyLength must be a
        '  multiple of 8.
        crypt.KeyLength = 128

        '  The padding scheme determines the contents of the bytes
        '  that are added to pad the result to a multiple of the
        '  encryption algorithm's block size.  Blowfish has a block
        '  size of 8 bytes, so encrypted output is always
        '  a multiple of 8.
        crypt.PaddingScheme = 0

        '  EncodingMode specifies the encoding of the output for
        '  encryption, and the input for decryption.
        '  It may be "hex", "url", "base64", or "quoted-printable".
        crypt.EncodingMode = "hex"

        '  An initialization vector is required if using CBC or CFB modes.
        '  ECB mode does not use an IV.
        '  The length of the IV is equal to the algorithm's block size.
        '  It is NOT equal to the length of the key.
        Dim ivHex As String
        ivHex = "0001020304050607"
        crypt.SetEncodedIV(ivHex, "hex")

        '  The secret key must equal the size of the key.  For
        '  256-bit encryption, the binary secret key is 32 bytes.
        '  For 128-bit encryption, the binary secret key is 16 bytes.
        Dim keyHex As String
        keyHex = "000102030405060708090A0B0C0D0E0F"
        crypt.SetEncodedKey(keyHex, "hex")


        If i = 0 Then
            Return (crypt.EncryptStringENC(inp))
        Else
            Return (crypt.DecryptStringENC(inp))
        End If

    End Function

ويعدين هنطلب الداله . بس في إضافه انا عاملها و هي ان الداله دي هي اللي بتشفر و بتفك التشفير و الفرق في المتغير i

بمعني اني لما اطلب الدالة لو i ب 0 يبقي الداله هترجعلك ناتج التشفير و لو ب 1 هترجعلك ناتج فك التشفير

الطريقة الثانية

2- AES

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

والناتج مش unique يعني كل مرة ناتج تشفير شكل لكن المتعة في ان ناتج فك التشفير ثابت و دي طريقة روعة ----- طول التشفير 128 بت زي اللي قبلها

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

دالة التشفير

Function crypt_file(ByVal inp As String, ByVal i As Integer) As String
        Dim crypt2 As New Chilkat.Crypt2()
        crypt2.UnlockComponent("anything for 30-day trial")
        crypt2.CryptAlgorithm = "aes"
        crypt2.EncodingMode = "base64"
        crypt2.KeyLength = 128
        crypt2.SecretKey = crypt2.GenerateSecretKey("jsa2jack1@1!")

        If i = 0 Then
            Return (crypt2.EncryptStringENC(inp))
        Else
            Return (crypt2.DecryptStringENC(inp))
        End If
    End Function

وهي كمثيل سابقتها

الطريقة الثالثة والأخيرة

3-3des

ودي طريقة بتقوم بالتشفير 3 مرات لكل بلوك بالــ blowfish و طبعا مش هعد في المميزات لكن العيب الوحيد انها ممكن تاخد وقت طويل في فك التشفير ( مش كتير حوالي 10 ثواني بس طبعا بالنسبة لنا الوقت عامل مهم وفي الاول والاخر المعالج له دوره!!)

وطبعا مش محتاج الا ان اضيف الدالة والباقي انتم عارفينه

دالة التشفير

Function cryp_db(ByVal inp As String, ByVal i As Integer) As String
        Dim crypt As New Chilkat.Crypt2()

        Dim success As Boolean
        success = crypt.UnlockComponent("Anything for 30-day trial")



        '  Specify 3DES for the encryption algorithm:
        crypt.CryptAlgorithm = "3des"

        '  CipherMode may be "ecb" or "cbc"
        crypt.CipherMode = "ecb"

        '  Set the key length
        crypt.KeyLength = 112

        '  Choose a padding scheme...
        crypt.PaddingScheme = 0

        '  EncodingMode specifies the encoding of the output for
        '  encryption, and the input for decryption.
        '  It may be "hex", "url", "base64", or "quoted-printable".
        crypt.EncodingMode = "hex"

        '  An initialization vector is required if using CBC or CFB modes.
        '  ECB mode does not use an IV.
        '  The length of the IV is equal to the algorithm's block size.
        '  It is NOT equal to the length of the key.
        Dim ivHex As String = "0001020304050607"
        crypt.SetEncodedIV(ivHex, "hex")

        '  The secret key must equal the size of the key.
        '  Remember, DES (i.e. 3DES) uses a parity bit in the key,
        '  so 112-bit 3DES requires 128 bits of key material
        '  (i.e. 16 bytes)
        Dim keyHex As String = "11265395389c904862912aba16d315b8"
        crypt.SetEncodedKey(keyHex, "hex")

        If i = 0 Then
            Return (crypt.EncryptStringENC(inp))
        Else
            Return (crypt.DecryptStringENC(inp))
        End If

    End Function

ثانيا

email sender

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

ودالهة الارسال بتاخد الرسالة و الايميل المرسل ليه و إسم المستخدم الخاص بالايميل وكلمة السر و smtp server و بورت الارسال

طبعا اللي فاهمين اكيد يعرفوا البيانات دي لكن اللي مش فاهمين احب اقولهم انك مش كل انواع الإيميل بتدعم smtp (simple mail transfer protocol )

انا هوصف ايميل جوجل لانه بيدعم الخاصية دي كمثال

كود الداله

Function sendmail(ByVal body As String, ByVal emailto As String, ByVal userr As String, ByVal passs As String, ByVal smtp As String, ByVal portf As Integer)
        Dim mailman As New Chilkat.MailMan()
        Dim success As Boolean = mailman.UnlockComponent("Hello World")
        mailman.SmtpHost = smtp
        mailman.SmtpPassword = passs
        mailman.SmtpUsername = userr
        mailman.SmtpSsl = True
        mailman.SmtpPort = portf

        Dim email As New Chilkat.Email()

        email.Body = body
        email.Subject = "email subject"
        email.AddTo("to name", emailto)
        email.From = "from name"

        ' Send mail.
        success = mailman.SendEmail(email)
        If success Then
            MessageBox.Show("تم إرسال رسالة ")
        Else
            MessageBox.Show(mailman.LastErrorText)
        End If
    End Function

ولنفترض ان إسم الكائن المنبثق من الــ class هو obj

فتكون هذه طريقة إستدعائها (وضعت بريد الكتروني خاص للتوضيح علي الــ gmail)

obj.sendmail("emailbody", "example@gmail.com", "username", "password", "smtp.gmail.com", 465)

ثالثا

FTP upload and download

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

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

دالة الرفع upload و التنزيل download

function uploadfile(byval file_name as string, byval i as integer)
Dim ftp As New Chilkat.Ftp2()

Dim success As Boolean

'  Any string unlocks the component for the 1st 30-days.
success = ftp.UnlockComponent("Anything for 30-day trial")

ftp.Hostname = "ftp.chilkatsoft.com"
ftp.Username = "****"
ftp.Password = "****"

'  The default data transfer mode is "Active" as opposed to "Passive".

'  Connect and login to the FTP server.
success = ftp.Connect()
If (success <> true) Then
    MsgBox(ftp.LastErrorText)
    Exit Sub
End If


'  Change to the remote directory where the file will be uploaded.
success = ftp.ChangeRemoteDir("junk")
If (success <> true) Then
    MsgBox(ftp.LastErrorText)
    Exit Sub
End If


'  Upload a file.
Dim localFilename As String
localFilename = file_name
Dim remoteFilename As String
remoteFilename = file_name

if i =0 then

success = ftp.PutFile(localFilename,remoteFilename)
If (success <> true) Then
    MsgBox(ftp.LastErrorText)
    Exit Sub
End If

else

success = ftp.GetFile(remoteFilename,localFilename)
If (success <> true) Then
    MsgBox(ftp.LastErrorText)
    Exit Sub
End If

end if


ftp.Disconnect()

end function

وهي كسابقتها غذا كان i بــ 1 معناها تحميل و 0 معناها رفع

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

رابط تحميل المكتبة وملف قراءة مسلسل القرص الصلب في المرفقات

كلمة سر فك الضغط

waqwaq

روابط التحميل.txt

#2

ما شاء الله موضوع رائع

بارك الله فيك اخى الكريم

وجزاك الله خيرا

#3

ماشاء الله ... انا كنت محتاج هذه المكتبة من زمان ... جزاك الله كل خير وجعلها في ميزان حسناتك

#4

شكرا اخوتي الكرام علي مروركم و ردكم الجميل

اتمني ان تفيد المكتبة الجميع كما استفدت منها

وارجو الا يتأخر اي احد يحتاج الي اي شيء غير مفهوم عن السؤال

وانا تحت الامر في اي وقت

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…