VR
Virtual Reality On-line   Visual Basic
Новости   |     Журнал    |    Хаkер   |     Магазин   |   Проекты
[   Вход    ]
[Kарта сайтa]
[ Download  ]
[  Конкурс  ]
[  Анекдоты ]
[  Ссылки   ]
[  Реклама  ]
[ Почтальон ]
[ О проекте ]






TopList
Программирование софта на VisualBasic:

Только писал, что портсканнер - это игрушка для чайников, но уже сейчас даю инструкции по его написанию. Я думаю пример будет полезен тем, кто хочет научиться работать с Winsock. Для примера я взял не свои исходники, т.к. принцип работы данного портсканнера намного легче для понимания.

Разместим на форме компоненты.

1
 Фрейм(Frame) Ip + в нем Textbox ;Caption="127.0.0.1" 
2
 Фрейм(Frame) Port + в нем   Textbox ;Caption="1" + Label  ;Caption="To" 
Textbox ;Caption="1024" 
3
 Фрейм(Frame) Connections + в нем Textbox ;Caption="3" 
4
 Фрейм(frame) Opened Ports + в нем ListBox
5
 Kнопки OK, STOP, Clear 
6
 Tаймер
7
 Label ; Caption="" - пусто 
Logo

И, конечно, самое главное -Winsock. Т.к. я взял для примера чужой исходник, то сначала возникли проблемы с компиляцией. Но ведь в группе не один я кодер - звоним BYpasser'y, объясняем проблему и через пару секунд получаем решение.

Автор для облегчения работы использовал Control Array.Ок.Сделаем тоже самое.

Создадим на форме Winsock и сделаем ему Copy-Paste, на вопрос о создании массива ответим Да.Таким образом, после этого мы сможем определять переменные в момент создания процедур.Назовём его Wsk.

Сам код :

Declarations
Option Explicit

Private Sub Form_Load()
'Очищаем листбокс в начале работы
Me.ListBox1.Clear
End Sub

Private Sub Button3_Click()
'Очищаем листбокс ко кнопке Clear
Me.ListBox1.Clear
End Sub

Private Sub Button1_Click()
Dim intI As Integer 'Определяем переменную
lngNextPort = Val(Me.Text2)'Назначаем переменной начальный порт
For intI = 1 To Val(Me.Text4)'Назначаем максимальное кол-во соединений
Load Me.wsk(intI)'Грузим сокет
lngNextPort = lngNextPort + 1 'Увеличиваем значение (порт)
Me.wsk(intI).Connect Me.Text1, lngNextPort 'Коннектимся
Next intI ' Все заново
End Sub

Private Sub Button2_Click()
Dim intI As Integer
For intI = 1 To Val(Me.Text4)
Me.wsk(intI).Close
Unload Me.wsk(intI)
Next intI
' Аналог, только теперь закрываем сокет.  
End Sub

Private Sub Timer1_Timer()
' Изменение показания Label  
Label1.Caption = "Current Port: " + Str(lngNextPort)
End Sub

Private Sub wsk_Connect(Index As Integer)
'Если удалось приконнектиться
Me.ListBox1.AddItem "Port: " + Str(Me.wsk(Index).RemotePort)
'Добавляем в листбокс
Try_Next_Port (Index)
'Переходим к следующему порту
End Sub

Private Sub wsk_Error(Index As Integer, ByVal Number As Integer, Description As String, 
       ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, 
        ByVal HelpContext As Long, CancelDisplay As Boolean)
'Попытка реагировать на ошибку :-)
Try_Next_Port (Index)
End Sub

Private Sub Try_Next_Port(Index As Integer)
'Пытаемся сканить другой порт
Me.wsk(Index).Close
If lngNextPort < Val(Me.Text3) Then
Me.wsk(Index).Connect , lngNextPort
lngNextPort = lngNextPort + 1
Else
'Конец      
Unload Me.wsk(Index)
End If
End Sub

Теперь последниий штрих. Project-Add Module-New. В новом модуле пишем :

Option Explicit
Public lngNextPort As Long

Готово!Начинаем сканнить.

Written by U1traDIMM & BYpasser 31.08.2001


Copyright©: Horrific aka Флёнов Михаил
Design by FMk group©