user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 13-10-2013 12:38:19

IceF0x
#! Gourou Linux

[python3]dword2url

== Description ==

URL basées sur DWORD sont utilisés par certains logiciels malveillants pour masquer l'hôte. Par exemple http://www.google.com pourrait être représentée comme suit: http://3512046697. Si vous cliquez sur cette dernière, votre navigateur va  pointer automatiquement vers votre moteur de recherche préféré (ne fonctionne plus avec les navigateurs actuel).

== Comment cela fonctionne? ==

Voici comment un URL est masquée. D'abord convertir votre hôte en IPv4:

$ nslookup somesite.com
Server:        8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:    somesite.com
Address: 82.98.86.175

Puis convertir chaque nombre en hexadécimal:
Décembre 82 98 86 175
Hex 52 62 56 af

La concaténation donne: 526256af

Convertir en décimal: 1382176431. C'est ça: http://1382176431

== Code ==

Comme le code de base est en python 2, je l'ai codé en python 3 pour vous (et pour moi python 3 étant l'environnement python par défaut sur archlinux).

[== python 3 ==]
#!/usr/bin/env python
# 20110811, Sebastien Damaye, www.aldeid.com modified 20131019 by IceF0x to python 3

import urllib.parse
from socket import gethostbyaddr
import sys

BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(8)

def has_colours(stream):
    if not hasattr(stream, "isatty"):
        return False
    if not stream.isatty():
        return False 
    try:
        import curses
        curses.setupterm()
        return curses.tigetnum("colors") > 2
    except:
       
        return False
has_colours = has_colours(sys.stdout)

def printout(text, colour=WHITE):
        if has_colours:
                seq = "\x1b[1;%dm" % (30+colour) + text + "\x1b[0m"
                sys.stdout.write(seq)
        else:
                sys.stdout.write(text)

printout("!‾‾‾‾‾ menu ‾‾‾‾‾!\n!" , GREEN) 
printout("1:" , YELLOW)
printout(" dword" , CYAN)
printout(" ->"  , MAGENTA)
printout(" url "  , CYAN)
printout("!\n!" , GREEN)
printout("2:" , YELLOW)
printout(" url" , CYAN)
printout(" ->"  , MAGENTA)
printout(" dword "  , CYAN)
printout("!\n!" , GREEN)
printout("3:" , YELLOW)
printout(" quit         "  , CYAN)
printout("!\n!________________!\n" , GREEN) 
choice = input("Choice: ")

if choice=="1":
    # DWORD->URL
    url = input("DWORD to convert? Valid examples are\n http://1079984325/foo/bar or just 1079984325: ")
    scheme = urllib.parse.urlsplit(url).scheme
    host = urllib.parse.urlsplit(url).netloc
    path = urllib.parse.urlsplit(url).path
    if host == '':
        # scheme not specified (http, https, ftp, ...) e.g. "1079984325"
        (scheme, host, path) = ('http', path, '')
    hx = "%X" % int(host)
    ip = []
    for i in range(0, 4):
        ip.append(str(int(hx[i*2:i*2+2], 16)))
    printout("==>" , YELLOW)
    print(" %s://%s%s" % (scheme, ".".join(ip), path))

elif choice=="2":
    # URL->DWORD
    url = input("URL to convert? (e.g. http://www.dword.com/foo/bar/): ")
    scheme = urllib.parse.urlsplit(url).scheme
    host = urllib.parse.urlsplit(url).netloc
    path = urllib.parse.urlsplit(url).path
    ip = gethostbyaddr(host)[2][0]
    printout("==>" , YELLOW)
    print(" %s resolves to: %s" % (host, ip))
    hx = ''
    for i in ip.split('.'):
        if len("%X" % int(i))==1:
            hx += "0%X" % int(i)
        else:
            hx += "%X" % int(i)
    printout("==>" , YELLOW)
    print(" %s://%s%s" % (scheme, int(hx, 16), path))

elif choice=="3":
    printout("Good bye!\n" , MAGENTA)

Documentation: http://docs.python.org/3.0/library/urllib.parse.html

J'ai rajouté des couleurs grâce à un bout de code trouvé sur pastebin mais dont je n'ai malheureusement pas la source.

== Résultat ==

1382173874.png

== Voir aussi ==

  * **(en)** http://packetstormsecurity.com/files/vi … url.py.txt
  * **(en)** http://www.aldeid.com/wiki/Dword2url


Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

#2 17-11-2013 15:17:29

manon
#! Crunchikette #!

Re : [python3]dword2url

Merci  big_smile

Hors ligne

Pied de page des forums