Vous n'êtes pas identifié(e).
Pages : 1
== 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#53Non-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 ==
== 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
Merci
Hors ligne
Pages : 1