SEMO.Pa3x قام بنشر سبتمبر 23, 2024 قام بنشر سبتمبر 23, 2024 السلام عليكم ورحمة الله وبركاته.. اولاً: جلب الوقت والتاريخ من 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 2
الردود الموصى بها
انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد
يجب ان تكون عضوا لدينا لتتمكن من التعليق
انشئ حساب جديد
سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .
سجل حساب جديدتسجيل دخول
هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.
سجل دخولك الان