اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

السلام عليكم ورحمة الله وبركاته..

اولاً: جلب الوقت والتاريخ من time.windows.com ثم ضبط وقت وتاريخ الكومبيوتر..

العملية كلها بطرفة عين البرنامج مكتوب 100% بلغة Visual Studio .NET يمكنك تشغيله بالاكسس  بـ shell

السورس كود للفائدة (شرحت فيه كل شيء):

 

Imports System.Net
Imports System.Net.Sockets

Module Main

    'c0ded by: SEMO.Pa3x
    'date: 23-09-2024 - 06:36  PM
    'enjoy  (:

    Sub Main()
        Try
            Dim computerDate As String = GetNetworkTime.ToShortDateString
            Dim computerTime As String = GetNetworkTime.ToShortTimeString
            ' قم بتشغيل العملية لتعيين التاريخ والوقت معاً
            Dim processInfo As New ProcessStartInfo("cmd.exe")
            processInfo.UseShellExecute = True
            processInfo.Verb = "runas" ' طلب صلاحيات المسؤول
            processInfo.Arguments = "/C date " & computerDate & " && time " & computerTime.Replace("ص", "AM").Replace("م", "PM")
            Process.Start(processInfo)
        Catch ex As Exception
            Console.WriteLine(ex.Message)
            Console.ReadLine()
        End Try
    End Sub

    Public Function GetNetworkTime() As DateTime
        ' خادم الوقت الافتراضي
        Const ntpServer As String = "time.windows.com"

        ' حجم رسالة NTP - 16 بايت من بيانات الهضم (RFC 2030)
        Dim ntpData As Byte() = New Byte(47) {}

        ' إعداد القيم LI = 0 (بدون تحذير)، VN = 3 (IPv4 فقط)، Mode = 3 (وضع العميل)
        ntpData(0) = &H1B

        ' الحصول على عناوين IP الخاصة بالخادم
        Dim addresses As IPAddress() = Dns.GetHostEntry(ntpServer).AddressList

        ' منفذ UDP المستخدم من قبل NTP هو 123
        Dim ipEndPoint As New IPEndPoint(addresses(0), 123)

        ' استخدام UDP
        Using socket As New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
            socket.Connect(ipEndPoint)

            ' إيقاف تعليق الكود إذا تم حظر NTP
            socket.ReceiveTimeout = 3000

            ' إرسال الطلب واستقبال الرد
            socket.Send(ntpData)
            socket.Receive(ntpData)
            socket.Close()
        End Using

        ' إزاحة للحصول على حقل "Transmit Timestamp"
        Const serverReplyTime As Byte = 40

        ' الحصول على الجزء الخاص بالثواني
        Dim intPart As ULong = BitConverter.ToUInt32(ntpData, serverReplyTime)

        ' الحصول على الكسر الخاص بالثواني
        Dim fractPart As ULong = BitConverter.ToUInt32(ntpData, serverReplyTime + 4)

        ' تحويل البيانات من big-endian إلى little-endian
        intPart = SwapEndianness(intPart)
        fractPart = SwapEndianness(fractPart)

        ' تحويل البيانات إلى ميلي ثانية
        Dim milliseconds As ULong = (intPart * 1000UL) + ((fractPart * 1000UL) / &H100000000UL)

        ' الوقت بناءً على التوقيت العالمي UTC
        Dim networkDateTime As DateTime = (New DateTime(1900, 1, 1, 0, 0, 0, DateTimeKind.Utc)).AddMilliseconds(CLng(milliseconds))

        ' إعادة الوقت المحلي
        Return networkDateTime.ToLocalTime()
    End Function

    ' دالة لتحويل البيانات من big-endian إلى little-endian
    Private Function SwapEndianness(x As ULong) As UInteger
        Return CUInt(((x And &HFFUL) << 24) +
                     ((x And &HFF00UL) << 8) +
                     ((x And &HFF0000UL) >> 8) +
                     ((x And &HFF000000UL) >> 24))
    End Function

End Module

 

اهداء للمعلم جعفر @jjafferr

لا تنسوني ووالدي من صالح دعائكم.

SetDateTimeInternetSEMO.zip

  • Thanks 2

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information