[PYTHON] todayhashtag() - Generación de identificador diario

Iniciado por Karcrack, Junio 16, 2013, 06:16:04 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Una función que obtiene un "hashtag" diferente por día...
Código: python
def todayhashtag(MAGIC = "abcdefghijklmnopqrstuvwxyz0123456789", CHR_PER_FIELD = 5):
    """
        Obtiene un hashtag unico para el dia de hoy
    """
    def struct_time_now(SERVER = 'hora.roa.es'):
        """
            Conectamos al servidor NTP (UDP, puerto 123) y obtenemos la fecha.
            En caso de cualquier problema obtiene la fecha actual del ordenador.
        """
        from time import gmtime
        try:
            from socket import socket
            from struct import unpack
            client = socket(2, 2)
            client.sendto('\x1b' + (47 *'\0'), (SERVER, 123))
            r = gmtime(unpack('!12I', client.recv(1024))[10] - 2208988800L)
        except:
            r = gmtime()
            pass
        finally:
            return r

    t = struct_time_now()
    r = "#"
    for i in [2,1,0]:
        for w in range(1, CHR_PER_FIELD+1):
            r+= MAGIC[(t[i]*w) % len(MAGIC)]

    return r


Hay dos elementos variables en la función: "MAGIC" y "CHR_PER_FIELD". El primero no es más que el listado de caracteres utilizados y el segundo es la cantidad de chars por cada valor (año, mes y día)

Ejemplo de hoy con diferentes variaciones de CHR_PER_FIELD (de 1 a 12):
Citar#qe6
#q6ei62
#q6meim62y
#q6m2eimq62yu
#q6m2ieimqu62yuq
#q6m2iyeimquy62yuqm
#q6m2iyeeimquy262yuqmi
#q6m2iyeueimquy2662yuqmie
#q6m2iyeuaeimquy26a62yuqmiea
#q6m2iyeuaqeimquy26ae62yuqmiea6
#q6m2iyeuaq6eimquy26aei62yuqmiea62

Con un valor de MAGIC más pequeño pero más pintoresco xD ("karc137" y otra vez con CHR_PER_FIELD de 1 a 12):
Citar#r1c
#r11ac7
#r171a3c7r
#r17a1a3rc7r3
#r17ac1a3r7c7r3a
#r17ac31a3r7cc7r3a1
#r17ac3k1a3r7ckc7r3a1k
#r17ac3kr1a3r7ck1c7r3a1kc
#r17ac3kr11a3r7ck1ac7r3a1kc7
#r17ac3kr171a3r7ck1a3c7r3a1kc7r
#r17ac3kr17a1a3r7ck1a3rc7r3a1kc7r3

No es muy útil que digamos... pero quería probar ciertas cosas y he decidido compartir el código xD

Saludos.
I code for $$$.

(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer