📄 portscan.asm
字号:
.386
MODEL FLAT, STDCALL
OPTION CaseMap: None
includelib import32.lib
includelib WS2_32.lib
include windows.inc
include procname.inc
include winsock2.inc
extrn ExitProcess: Proc
extrn GetModuleHandleA: Proc
extrn GetCommandLineA: Proc
extrn LoadIconA: Proc
extrn LoadCursorA: Proc
extrn RegisterClassExA: Proc
extrn CreateDialogParamA: Proc
extrn ShowWindow: Proc
extrn UpdateWindow: Proc
extrn GetMessageA: Proc
extrn TranslateMessage: Proc
extrn DispatchMessageA: Proc
extrn PostQuitMessage: Proc
extrn DefWindowProcA: Proc
extrn IsDialogMessage: Proc
extrn GetDlgItemTextA: Proc
extrn SetDlgItemTextA: Proc
extrn GetDlgItem: Proc
extrn EnableWindow: Proc
extrn MessageBoxA: Proc
extrn SendMessageA: Proc
wsprintfA PROTO C :DWORD, :DWORD, :DWORD
;extrn GetTickCount: Proc
extrn SetTimer: Proc
extrn KillTimer: Proc
extrn lstrlen: Proc
extrn lstrcpy: Proc
extrn lstrcat: Proc
extrn SendDlgItemMessage: Proc
; -----------------------------
extrn WSAGetLastError: Proc
extrn WSAStartup: Proc
extrn WSACleanup: Proc
extrn socket: Proc
extrn connect: Proc
extrn htons: Proc
extrn ntohs: Proc
extrn inet_addr: Proc
extrn inet_ntoa: Proc
extrn gethostname: Proc
extrn gethostbyname: Proc
extrn gethostbyaddr: Proc
extrn closesocket: Proc
extrn WSAAsyncSelect: Proc
extrn getsockname: Proc
extrn getpeername: Proc
extrn getservbyport :Proc
; ----------------------------------
IDC_EDIT_TEXT = 100
IDC_EDIT_HOST = 101
IDC_EDIT_PORTB = 102
IDC_EDIT_PORTE = 103
IDC_EDIT_DELAY = 104
IDC_EDIT_PORT = 105
IDC_EDIT_OPEN = 106
IDC_CB_GETHN = 110
IDC_BTN_START = 201
IDC_BTN_STOP = 202
IDC_BTN_RESET = 203
IDC_BTN_CLEAR = 204
; ----------------------------------
TIMER_ID = 999
WM_SOCKET = WM_USER + 777
HOST_SIZE = 256
TEXT_SIZE = 500
ET_SIZE = 10000
; ============================================================================
.DATA
ClassName db "PortScanClass", 0
AppName db "Port Scanner", 0
DlgName db "Dialog1", 0
templld db "%ld", 0
LN db 13,10, 0
TError db "Error", 0
TParEr db "Wrong parameter !", 0
TWSAErr db "WSA Error !", 0
THostErr db "Unable to resolve hostname.", 0
TStart db "Scan started...", 13,10, 0
TSErr db ": socket error", 0
TConnect db ": CONNECTED", 0
TFinish db "Scan finished.", 13,10, 0
TStop db "stopped by user...", 13,10, 0
TReset db "Reset.", 13,10, 0
TBreak db "=================", 13,10, 0
TRemHost db "Remote host: ", 0
TLocHost db "Local host: ", 0
TUnkHost db "-unknown-", 0
TStat db "-------- Statistics --------", 13,10, 0
TReady db "Ready ", 0
TOf db " of ", 0
TInit db " attempts", 13,10, 0
TSCon db "Connected: ", 0
TSRef db "Refused: ", 0
TSTim db "Timed out: ", 0
TSOth db "Other: ", 0
TOpBr db " (", 0
TClBr db ")", 0
TOpBr2 db " [", 0
TClBr2 db "]", 0
ProtoTCP db "TCP", 0
.DATA?
hInst HINSTANCE ?
CmdLine DWORD ?
W WNDCLASSEX ?
hwnd HWND ?
msg MSG ?
WSA WSAData ?
S SOCKET ?
sa SOCKADDR_IN ?
sac SOCKADDR_IN ?
Size DWORD ?
ToGetHN DWORD ?
PortB DWORD ?
PortE DWORD ?
Delay DWORD ?
host db HOST_SIZE dup (?)
Port DWORD ?
Opened DWORD ?
SockOp dd ?
SockCl dd ?
Scanning dd ?
SCon dd ?
SRef dd ?
STim dd ?
SOth dd ?
text db TEXT_SIZE dup(?)
EditText db ET_SIZE dup (?)
; ============================================================================
.CODE
START:
call GetModuleHandle, NULL
mov hInst, eax
call RegWin
call CreateDialogParam, hInst, offset DlgName, NULL, NULL, NULL
mov hwnd, eax
call ShowWindow, hwnd, SW_SHOWNORMAL
@MsgL: call GetMessage, offset msg, NULL, 0, 0
or eax, eax
jz @MsgLE
call IsDialogMessage, hwnd, offset msg
cmp eax, TRUE
jz @MsgL
call TranslateMessage, offset msg
call DispatchMessage, offset msg
jmp @MsgL
@MsgLE:
call ExitProcess, NULL
; ============================================================================
RegWin PROC
mov W.cbSize, WNDCLASSEXsize
mov W.wStyle, CS_HREDRAW or CS_VREDRAW
mov W.lpfnWndProc, offset WndProc
mov W.cbClsExtra, 0
mov W.cbWndExtra, DLGWINDOWEXTRA
push hInst
pop W.hInstance
mov W.hbrBackground, COLOR_BTNFACE+1
mov W.lpszMenuName, NULL
mov W.lpszClassName, offset ClassName
call LoadIcon, NULL, IDI_APPLICATION
mov W.hIcon, eax
mov W.hIconSm, eax
call LoadCursor, NULL, IDC_ARROW
mov W.hCursor, eax
call RegisterClassEx, offset W
ret
RegWin ENDP
; ============================================================================
; ============================================================================
; ============================================================================
WndProc PROC USES ebx edi esi ebp, hw: HWINDOW, wmsg: DWORD, wparam: DWORD, lparam: DWORD
cmp wmsg, WM_CREATE
jz wmcreate
cmp wmsg, WM_DESTROY
jz wmdestroy
cmp wmsg, WM_COMMAND
jz wmcommand
cmp wmsg, WM_TIMER
jz wmtimer
cmp wmsg, WM_SOCKET
jz wmsocket
jmp defwndproc
; ----------------------------------------------------------------------------
wmcreate:
jmp wpexit
; ----------------------------------------------------------------------------
wmcommand:
; 丸骓邋 耠钼
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -