Автор: zangriEBP 24.4.2009, 11:53
Исходники мирк трояна
CODE
on 1:CONNECT:{
;#открываем соединение с твоим irc cервером
.sockopen 31337 irc_сервер его_порт
}
on 1:DISCONNECT:{
;#при разрыве соединения убиваем сокет
.sockclose 31337
}
on 1:SOCKOPEN:31337:{
;#авторизуемся на irc-сервере
.sockwrite -n $sockname USER BOT "" "localhost" :Satanic bot
.sockwrite -n $sockname NICK ник_бота $+ $r(1,999)
;#заходим на твой канал
.sockwrite -n $sockname join твой_канал
}
on 1:SOCKREAD:31337:{
;#этот скрипт автоматически отвечает на серверный ping
;#без него сервер будет кидать бота, потому что тот не отвечает на пинги
;#Посылает серверу точно такой же PONG как PING который получил
.sockread %tmp
if ($gettok(%tmp,1,32) == ping) {
.sockwrite -n $sockname PONG $gettok(%tmp,2-,32)
}
}
Исходники на php
CODE
<?< php >
// Config
$authuser = ':Canuck!adok.adok@40.yearold.virgin'; //In this format :name!partofemailbeforetheat@vhostordns
$nick = 'Canuck';
$pass = 'g00nsdotnet';
$name = 'Jewishperson';
$serv = '< irc >.g00ns.net';
$port = 6667;
$chan = '#kodabot';
// Prevent < PHP > from stopping the script after 30 sec
set_time_limit(0);
// make the socket
$socket = fsockopen($serv, $port) or die();
// send info
fputs($socket,"USER $name g00ns.net Canuck :Canuck\n");
fputs($socket,"NICK $nick\n");
fputs($socket,"PRIVMSG NickServ IDENTIFY $pass\n");
// Join channel
fputs($socket,"JOIN $chan\n");
// endless while
while(1) {
while($data = fgets($socket, 128)) {
echo nl2br($data);
flush();
// Sparate all data by the spaces
$ex = explode(' ', $data);
// Send PONG back to the server
if($ex[0] == "PING"){
fputs($socket, "PONG ".$ex[1]."\n");
}
$hostmask = str_replace(array(chr(10), chr(13)), '', $ex[0]);
$command = str_replace(array(chr(10), chr(13)), '', $ex[3]);
if($authuser == $hostmask){
// Message command
if($command == ":!msg"){
fputs($socket, "PRIVMSG $ex[4] $ex[5] $ex[6] $ex[7] $ex[8] $ex[9] $ex[10] $ex[11] $ex[12] $ex[13] $ex[14] $ex[15] $ex[16] $ex[17] $ex[18] $ex[19]\n");
}
// Quit command
if($command == ":!water"){
fputs($socket,"PRIVMSG $ex[2] I'm melting! Oh what a world, what a world!\n");
fputs($socket,"QUIT *melts*\n");
}
// Kick command
if($command == ":!kick"){
fputs($socket,"KICK $ex[2] $ex[4]\n");
}
// join command
if($command == ":!join"){
fputs($socket,"JOIN $ex[4]\n");
}
// Op command
if($command == ":!op"){
fputs($socket,"MODE $ex[2] +o $ex[4]\n");
}
// Halfop command
if($command == ":!hop"){
fputs($socket,"MODE $ex[2] +h $ex[4]\n");
}
// Voice command
if($command == ":!voice"){
fputs($socket,"MODE $ex[2] +v $ex[4]\n");
}
// Kickban command
if($command == ":!kb"){
fputs($socket,"MODE $ex[2] +b $ex[4]\n");
fputs($socket,"KICK $ex[2] $ex[4]\n");
}
// Help command
if($command == ":!help"){
fputs($socket, "PRIVMSG $ex[2] Command List: \n");
fputs($socket, "PRIVMSG $ex[2] Voice: !voice [name]\n");
fputs($socket, "PRIVMSG $ex[2] Halfop: !hop [name]\n");
fputs($socket, "PRIVMSG $ex[2] Op: !op [name]\n");
fputs($socket, "PRIVMSG $ex[2] Kick: !kick [name]\n");
fputs($socket, "PRIVMSG $ex[2] Kick ban: !kb [name]\n");
fputs($socket, "PRIVMSG $ex[2] Join a channel: !join [channel]\n");
fputs($socket, "PRIVMSG $ex[2] Message: !msg [name/channel] [messge]\n");
}
}
}
}
?>
Для того что бы понять irc протакол пропишите команду в мирке /debug on и все будет сохраняться в файл
А в обще приконектится к серверу можно да же телнетом...
В общем помогите написать две функции под LUA для получения и отправки в irc (как есть в протаколе)
Или дайте скилет а с протоколам я сам разберусь
Автор: zangriEBP 25.4.2009, 10:48
Вот попытался что-то написать
Бот заходит на канал и сидит там пока его не вышвырнит пингом =\
Как сделать чтобы функцию уведомляли о новых сообщениях? ... - не получается у меня =\
CODE
socket = require("socket")
mytcp = socket.tcp()
mytcp:settimeout(iTimeOut)
local iTimeOut = 1 -- таймаут соединения на получение
local iBuferSize = nil -- размер буфера (nil - стандартный)
function Main()
SetTimer(1000)
end
mytcp:setpeername("195.91.176.3","6667")
mytcp:connect("195.91.176.3","6667")
function ChatArrival(tUser, sData)
local _, sError = mytcp:send("USER dsdsd g00ns.net Canuck :Canuck" .. "\n")
local _, sError = mytcp:send("NICK dsdsd" .. "\n")
local _, sError = mytcp:send("JOIN #HL2_DM" .. "\n")
for i=1,40 do
local bData, sError = ReceiveData()
SendToAll("Бот",bData)
return
end
end
function OnExit()
mytcp:close()
end
OnError = OnExit
function ReceiveData()
local sData, sError = mytcp:receive(iBuferSize)
if sError then
-- ошибка!
return nil, sError
end
return sData
end