SEMO.Pa3x قام بنشر سبتمبر 23 قام بنشر سبتمبر 23 السلام عليكم ورحمة الله وبركاته.. اولاً: جلب الوقت والتاريخ من 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
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.