• STATISTIQUES
  • Il y a eu un total de 0 membres et 40619 visiteurs sur le site dans les dernières 24h pour un total de 40 619 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] xda-developers
    Très bon site pour les gros bidouilleurs de smartphone de windows à androïd et de Apple jusqu'...
    Phreaking
    [EN] Rosecode
    Programming: 36, Math: 29, Probability: 5, Sequence: 7, Crypto: 4, Brainf**k: 13, TimeRace: 4, Hack: 9
    Challenges
    [FR] Zenk-Security
    La communauté zenk-security a pour objet principal la sécurité informatique, nous sommes des tou...
    Hacking
    [EN] SecurityFocus
    SecurityFocus a été conçu pour faciliter la discussion sur des sujets liés la sécu...
    Vulnérabilités
    [EN] Rankk
    Site de challenge construit sur le principe d'une pyramide à 9 level. Level 1: 60,Level 2: 72,Level 3: 68,Lev...
    Challenges
    [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation
    [FR] Secuser
    Actualité de la sécurité informatique, fiches virus et hoax, alertes par email, antivirus gratui...
    Hacking

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[IRC] bot python.
19-05-2014, 11h32
Message : #1
Junky Hors ligne
Snorky Master
*



Messages : 228
Sujets : 35
Points: 203
Inscription : Mar 2013
[IRC] bot python.
Bonjour,

En parallèle d'une journée merdique pour un admin sys linux (maj openssl du parc plus installation d'n windows 7) je vous poste le début du code de mon BOT irc que je suis en train de me faire pour le fun.

Code PYTHON :

#!/usr/bin/python2

import socket
import time
import string
import re

VERSION = "PythonBot: 0.1 powered by Snorky"

DEBUG = False


LIST=["!help", "!quit", "!conn"]


def init_conn(channel, nickname, server, port):
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.connect((server, port))
    return s

def send_data(s, msg):
    msg = msg + "\r\n"
    s.send(msg)

def ping(s, msg):
    send_data(s, "PONG %s" % msg)

def conn(s, channel, nickname, host):
    ident = "aa"
    realname = "bb"
    #Send data for connection
    send_data(s, "NICK %s" % nickname)
    send_data(s, "USER %s %s oxy :%s" % (ident, host, realname))
    #Waiting
    time.sleep(2)
    #Join the channel
    send_data(s, "JOIN %s" % channel)

def cctp(s, line):
    nick, msg_type, chan = info(line)
    if (re.findall(ur"^.+VERSION.+$", line[3])):
        #[':Snorky!Silentd@snorky', 'PRIVMSG', 'Oxy', ':\x01VERSION\x01']
        send_data(s, (("NOTICE %s \001VERSION %s\001")% (nick, VERSION)))
    else:
        send_data(s, (("NOTICE %s \001THE_GAME %s\001")% (nick, "www.tukif.com")))

def info(line):
    nick = line[0].split("!")[0][1:]
    msg_type = line[1]
    channel = line[2]
    return nick, msg_type, channel


def menu(s, channel):
    for cmd in LIST:
        send_data(s, ("PRIVMSG %s %s" % (channel, cmd)))
        time.sleep(0.2)

def do_command(s, line, connected, channel):
    #[':Snorky!Silentd@snorky', 'PRIVMSG', '#Snorky_land', ':zz']
    #:Snorky!Silentd@snorky PRIVMSG #Snorky_land :zz
    regex = ur"^:\x01.+\x01$"
    victim = line[0].split("!")[0][1:]
    if DEBUG: print line

    if (connected == 0):
        print ' '.join(map(str, line))
        if (line[1] == "JOIN"):
            connected = 1
    #CTCP VERSION
    elif (re.findall(regex, line[3])):
        cctp(s, line)
    #Menu
    elif (line[3]==":!menu"):
        menu(s, channel)
    #Chanserv Notification
    elif(victim == "ChanServ"):
        print line
    else:
        print line[0].split("!")[0][1:], "\t| ", line[3][1:]
    return connected

def master(s, channel, nickname, server, port):
    readbuffer = ""
    connected = 0
    while True:
        readbuffer=readbuffer+s.recv(1024)
        temp=string.split(readbuffer, "\n")
        readbuffer=temp.pop( )

        for line in temp:
            line=string.rstrip(line)
            line=string.split(line)
            if(line[0]=="PING"):
                ping(s, line[1])
            else :
                connected = do_command(s, line, connected, channel)
#        msg = raw_input(">>> ")
#        if (connected == 1):
#            send_data(s, ("PRIVMSG %s %s" %(channel, msg)))
        time.sleep(0.2)

def main():
    import sys
    if len(sys.argv) != 4:
        print "Usage: testbot <server[:port]> <channel> <nickname>"
        sys.exit(1)

    s = sys.argv[1].split(":", 1)
    server = s[0]
    if len(s) == 2:
        try:
            port = int(s[1])
        except ValueError:
            print "Error: Erroneous port."
            sys.exit(1)
    else:
        port = 6667
    channel = sys.argv[2]
    nickname = sys.argv[3]

    s = init_conn(channel, nickname, server, port)
    conn(s, channel, nickname, server)

    master(s, channel, nickname, server, port)


if __name__ == "__main__":
    main()

 


Pour le lancer:
Code :
#./prog.py SERVER_NAME CHAN NICK
./oxy.py irc.big-daddy.fr \#bot Oxy

#Attention, bien échapper le '#' du chan sinon marche pas et vous devriez comprendre pk. :)

Voilou, je retourne a mes MAJ + install . Smile

Junky,
Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier

+1 (3) -1 (0) Répondre
23-05-2014, 14h35
Message : #2
Junky Hors ligne
Snorky Master
*



Messages : 228
Sujets : 35
Points: 203
Inscription : Mar 2013
RE: [IRC] bot python.
Bonjour,

J'ai rajouté une "interface ncurses totaly légère. Now le bot permet de recevoir afficher les messages et de discutailler!! On est pas loin du client IRC pour le coup.

Il ne gère par contre qu'un seul serveur pour le moment.

Plutôt que de vous coller le code, je l'ai mis sur mon git dispo ici:

https://github.com/Miorg/bot

Ouias par contre j'ai pas du tt commenté le code! Je le ferai l'année prochaine je crois ... Smile
Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier

+1 (0) -1 (0) Répondre
26-05-2014, 16h23
Message : #3
Aniem Hors ligne
Newbie
*



Messages : 22
Sujets : 1
Points: 9
Inscription : Jun 2013
RE: [IRC] bot python.
Des amis ont codé pour les besoins d'une association réseau Koaz, qui est un "notifier IRC". L'utilisation qui en est faite actuellement et d'afficher les alertes nagios et des connexions aux serveurs sensibles sur des chans IRC dédiés.
C'est en soi pas un bot, mais c'est une assez bonne base, donc voilà le lien git si ça vous interesse : https://github.com/BinetReseau/kaoz
+1 (1) -1 (0) Répondre
26-05-2014, 16h27
Message : #4
Junky Hors ligne
Snorky Master
*



Messages : 228
Sujets : 35
Points: 203
Inscription : Mar 2013
RE: [IRC] bot python.
Bonjour,

Merci pour le lien mais ca existe déjà ce genre de chose:

Code :
(1203) junky@snorky:~$ apt-cache search nagirc
nagircbot - IRC bot that announces Nagios status
(1204) junky@snorky:~$

Je regarderai le code un peu plus en détail lorsque j'aurai un peu plus de tps Wink

Merci,
Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier

+1 (0) -1 (0) Répondre
31-05-2014, 16h15
Message : #5
Talanor Hors ligne
Newbie
*



Messages : 9
Sujets : 1
Points: 2
Inscription : Nov 2012
RE: [IRC] bot python.
Bonjour,

je ne sais pas si tu le fais avec des sockets juste pour le fun ou pas, mais si ton but est "juste" de dev un bot IRC en python, je te conseille d'utiliser des libs externes qui gerent le protocole IRC tres bien.

Celle-ci est vraiment bien faite je trouve : https://bitbucket.org/jaraco/irc
+1 (2) -1 (0) Répondre
04-06-2014, 11h36
Message : #6
Junky Hors ligne
Snorky Master
*



Messages : 228
Sujets : 35
Points: 203
Inscription : Mar 2013
RE: [IRC] bot python.
Je n'avais pas vu ta réponse. :/

En faite je ne veux pas utiliser de lib IRC python.
Les libs c'est de la triche. Smile

Et puis le faite de ne pas utiliser de lib IRC, te fais apprendre le protocole.
Je m'appuis sur la RFC pour les choses essentielles. Je ne pense pas TT recoder. Je ne suis pas fou, et puis c'est plus pour le fun qu'autre chose.

ref:
http://abcdrfc.free.fr/rfc-vf/rfc1459.html

Mais merci du lien.

Junky
Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier

+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [Python]Situer mon niveau. InforMods 19 946 10-11-2016, 00h03
Dernier message: ZeR0-@bSoLu
  [PYTHON] un bot IRC basique darcosion 1 137 13-06-2016, 20h40
Dernier message: Yttrium
  [python] ANBU ::: TCP Session Hunter St0rn 2 222 25-02-2016, 18h45
Dernier message: otherflow
  [Python] Une autre façon de gérer les Virtualenv et Packages thxer 2 120 18-01-2016, 12h06
Dernier message: thxer
  [Python] rot script ark 9 431 08-03-2015, 00h37
Dernier message: ark
  [Python] Todo Manager ark 5 347 03-03-2015, 10h55
Dernier message: ark
  [python] Un décorateur pour inventorier les objets b0fh 1 156 04-12-2014, 17h50
Dernier message: thxer
  [python] UPnP Scanner St0rn 2 179 29-10-2014, 14h50
Dernier message: St0rn
  [python] Buffer Overflow : EBP et EIP St0rn 0 124 25-10-2014, 12h58
Dernier message: St0rn
  [Python] QuickHex thxer 9 419 15-08-2014, 20h26
Dernier message: sakiir

Atteindre :


Utilisateur(s) parcourant ce sujet : 3 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut