Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - WHK

#902
Hacking / Lector para vssver.scc?
28 Enero 2016, 20:22 PM
Hola, tengo un par de archivos vssver.scc de un servidor, el tema es que estuve averiguando por internet y se trata de un archivo índice de visual studio para acceder rápidamente a un listado de archivos (o eso entendí).

El tema es que tengo estos archivos pero no encuentro la herramienta exacta para obtener su contenido. Alguien sabe de alguna herramienta para darle un vistazo?
#903
Lo que pasa es que un dia nación una persona que se le ocurrió hacer un sistema llamado proxy y otra persona se le ocurrió hacer algo llamado vpn pero ambos vivian en la misma cuadra, pero el tipo que hizo la vpn se conectaba al mismo wifi de la casa que se le ocurrió lo del proxy porque no tenia para pagar el internet asi que le hackeó el wifi y con un ataque mitm comenzó a ver a que se estaba dedicando y tomó el proxy y dijo, lo haré mas guay para empresas y lo venderé y nació lo que hoy conocemos como vpn.
#904
Pues es como si vinieras con un cubo de metal y nos dijeras que quieres ahcer un vehiculo con el. Primero que nada debes aprender a programar y si tienes alguna duda sobre alguna funcionalidad o algo nos preguntas, pero lo que traes hecho no es nada, acá tampoco te vamos a hacer el trabajo.
#905
Hola, hice un generador de diccionarios en python, lo pueden descargar desde acá:
https://github.com/WHK102/whk-dictionary-maker

Uso:

whk@machine:~/$ python whk-dict-maker.py
- WHK Dictionary Maker 1.0, for pentesting purposes.
- Enter max longitude of word [4]        :
- Use letters?                [Y/n]      :
- Use lowercase?              [Y/n]      :
- Use uppercase?              [y/N]      :
- Use numbers?                [Y/n]      :
- Use special chars?          [y/N]      :
- Filename of dictionary      [dict.txt] :

  Summary                                             
  -----------------------------------------------------
- Max longitude of word                  : 4
- Total number of characters to use      : 36
- Total of words                         : 1,727,604
- Use letters                            : Yes
- Use lowercase letters                  : Yes
- Use uppercase letters                  : No
- Use numbers                            : Yes
- Use special chars                      : No
- Filename of dictionary                 : dict.txt
- File size estimated of dictionary      : 8.19MB
  -----------------------------------------------------
- You want to proceed?        [Y/n]      :
- End!                                                 

whk@machine:~/$ ls -lah
total 8,3M
drwxrwxr-x 3 whk whk 4,0K ene 24 20:24 .
drwxrwxr-x 4 whk whk 4,0K ene 24 20:09 ..
-rw-rw-r-- 1 whk whk 8,2M ene 24 20:24 dict.txt
-rw-rw-r-- 1 whk whk 7,0K ene 24 20:09 whk-dict-maker.py
whk@machine:~/$


Código:

Código (python) [Seleccionar]
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import os
import math

class MainCLS:

    total_of_words      = 0
    total_of_characters = 0
    current             = 0
    user_longitude      = 0
    user_use_letters    = False
    user_use_lowercase  = False
    user_use_uppercase  = False
    user_use_numbers    = False
    user_use_specials   = False
    user_filename       = ''
    list_string         = ''


    def processWord(self, str):
        self.current = self.current + 1
        self.file_handler.write("%s\n" % str)
        sys.stdout.write("\r- Progress: %d/%d (%s)                " % (self.current, self.total_of_words, str))
        sys.stdout.flush()


    def loop(self, prefix, loops):
        if loops == 0:
            return
       
        last_list = []
        for id_letter in range(0, len(self.list_string)):
            final_str = prefix + self.list_string[id_letter]
            last_list.append(final_str)
            self.processWord(final_str)

        for id_array in range(0, len(last_list)):
            self.loop(last_list[id_array], loops - 1)


    def getInput(self, message, type_inp, default_value):
        inp = raw_input(message)
        inp = inp.strip()

        if inp == '':
            inp = default_value

        if type_inp == 'int':
            try:
                val = int(inp)
                if val > -1:
                    return val
                else:
                    print '- That\'s not an number. Try again.'
                    return self.getInput(message, type_inp, default_value)

            except ValueError:
                print '- That\'s not an number. Try again.'
                return self.getInput(message, type_inp, default_value)

        elif type_inp == 'bool':
            if inp.lower() == 'y':
                return True
            elif inp.lower() == 'n':
                return False
            else:
                print '- Please, respond with yes (y) or not (n). Try again.'
                return self.getInput(message, type_inp, default_value)

        elif type_inp == 'file':
            if os.path.isfile(inp):
                respond = self.getInput('- The file exists.You want to replace it? [y/N] : ', 'bool', 'n')
                if respond == False:
                    return self.getInput(message, type_inp, default_value)
                else:
                    return inp
            else:
                return inp

        else:
            return inp

    def printSummary(self):
        print '                                                       '
        print '  Summary                                              '
        print '  -----------------------------------------------------'
        print '- Max longitude of word                  : ' + '{0:,}'.format(self.user_max_longitude)
        print '- Total number of characters to use      : ' + '{0:,}'.format(len(self.list_string))
        print '- Total of words                         : ' + '{0:,}'.format(self.total_of_words)

        if self.user_use_letters == True:
            print '- Use letters                            : Yes'
            print '- Use lowercase letters                  : ' + ('Yes' if self.user_use_lowercase  else 'No')
            print '- Use uppercase letters                  : ' + ('Yes' if self.user_use_uppercase  else 'No')
        else:
            print '- Use letters                            : No'


        print '- Use numbers                            : ' + ('Yes' if self.user_use_numbers  else 'No')
        print '- Use special chars                      : ' + ('Yes' if self.user_use_specials else 'No')
        if os.path.isfile(self.user_filename):
            print '- Filename of dictionary                 : ' + self.user_filename + ' (override)'
        else:
            print '- Filename of dictionary                 : ' + self.user_filename

        print '- File size estimated of dictionary      : ' + self.convertSize(self.total_of_characters)
           
        print '  -----------------------------------------------------'
        return self.getInput('- You want to proceed?        [Y/n]      : ', 'bool', 'y')


    def convertSize(self, size, precision=2):
        # size = size + 0.0
        suffixes=['B','KB','MB','GB','TB','PB']
        suffixIndex = 0
        while size > 1024 and suffixIndex < 4:
            suffixIndex += 1 #increment the index of the suffix
            size = size/1024.0 #apply the division
        return ("%.*f%s" % (precision, size, suffixes[suffixIndex]))


    def __init__(self):

        print '- WHK Dictionary Maker 1.0, for pentesting purposes.';
        # self.user_min_longitude = self.getInput('- Enter min longitude of word [0]        : ', 'int',  '0')
        self.user_max_longitude = self.getInput('- Enter max longitude of word [4]        : ', 'int',  '4')

        self.user_use_letters   = self.getInput('- Use letters?                [Y/n]      : ', 'bool', 'y')
        if self.user_use_letters == True:
            self.user_use_lowercase   = self.getInput('- Use lowercase?              [Y/n]      : ', 'bool', 'y')
            self.user_use_uppercase   = self.getInput('- Use uppercase?              [y/N]      : ', 'bool', 'n')

        self.user_use_numbers   = self.getInput('- Use numbers?                [Y/n]      : ', 'bool', 'y')
        self.user_use_specials  = self.getInput('- Use special chars?          [y/N]      : ', 'bool', 'n')
        self.user_filename      = self.getInput('- Filename of dictionary      [dict.txt] : ', 'file', 'dict.txt')

        self.list_string = ''

        if self.user_use_letters == True:

            if self.user_use_lowercase == True:
                self.list_string = self.list_string + 'abcdefghijklmnopqrstuvwxyz'

            if self.user_use_uppercase == True:
                self.list_string = self.list_string + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

        if self.user_use_numbers == True:
            self.list_string = self.list_string + '0123456789'
       
        if self.user_use_specials == True:
            self.list_string = self.list_string + '\\/\'"@#$%&/()=?¿!¡+-*_.:,;'


        self.total_of_words      = 0
        self.total_of_characters = 0
        for n in range(0, self.user_max_longitude):
            total = (len(self.list_string)**(n + 1))
            self.total_of_words      = self.total_of_words + total
            # (word length * count words) + \n
            self.total_of_characters = self.total_of_characters + (total * (n + 1)) + total

        # Summary
        response = self.printSummary()
        if response == False:
            return

        # Load file
        if os.path.isfile(self.user_filename):
            os.remove(self.user_filename)
        self.file_handler = open(self.user_filename, 'w')

        # Execute all
        self.loop('', self.user_max_longitude)

        # End
        self.file_handler.close()
        print "\r                                                       \r- End!"
   
if __name__ == '__main__':
    mainCLS = MainCLS()


Enjoy.
#906
Bueno, ya lo terminé, si alguien lo quiere aca está:
https://github.com/WHK102/whk-dictionary-maker/blob/master/whk-dict-maker.py

Ahora con esto podré crear facilmente diccionarios para hacer bruteforce a los servidores DNS y sacar subdominios ocultos.

whk@machine:~/$ python whk-dict-maker.py
- WHK Dictionary Maker 1.0, for pentesting purposes.
- Enter max longitude of word [4]        :
- Use letters?                [Y/n]      :
- Use lowercase?              [Y/n]      :
- Use uppercase?              [y/N]      :
- Use numbers?                [Y/n]      :
- Use special chars?          [y/N]      :
- Filename of dictionary      [dict.txt] :

 Summary                                              
 -----------------------------------------------------
- Max longitude of word                  : 4
- Total number of characters to use      : 36
- Total of words                         : 1,727,604
- Use letters                            : Yes
- Use lowercase letters                  : Yes
- Use uppercase letters                  : No
- Use numbers                            : Yes
- Use special chars                      : No
- Filename of dictionary                 : dict.txt
- File size estimated of dictionary      : 8.19MB
 -----------------------------------------------------
- You want to proceed?        [Y/n]      :
- End!                                                

whk@machine:~/$ ls -lah
total 8,3M
drwxrwxr-x 3 whk whk 4,0K ene 24 20:24 .
drwxrwxr-x 4 whk whk 4,0K ene 24 20:09 ..
-rw-rw-r-- 1 whk whk 8,2M ene 24 20:24 dict.txt
-rw-rw-r-- 1 whk whk 7,0K ene 24 20:09 whk-dict-maker.py
whk@machine:~/$


El código por si se cae o desaparece el repositorio:

Código (python) [Seleccionar]
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import os
import math

class MainCLS:

   total_of_words      = 0
   total_of_characters = 0
   current             = 0
   user_longitude      = 0
   user_use_letters    = False
   user_use_lowercase  = False
   user_use_uppercase  = False
   user_use_numbers    = False
   user_use_specials   = False
   user_filename       = ''
   list_string         = ''


   def processWord(self, str):
       self.current = self.current + 1
       self.file_handler.write("%s\n" % str)
       sys.stdout.write("\r- Progress: %d/%d (%s)                " % (self.current, self.total_of_words, str))
       sys.stdout.flush()


   def loop(self, prefix, loops):
       if loops == 0:
           return
       
       last_list = []
       for id_letter in range(0, len(self.list_string)):
           final_str = prefix + self.list_string[id_letter]
           last_list.append(final_str)
           self.processWord(final_str)

       for id_array in range(0, len(last_list)):
           self.loop(last_list[id_array], loops - 1)


   def getInput(self, message, type_inp, default_value):
       inp = raw_input(message)
       inp = inp.strip()

       if inp == '':
           inp = default_value

       if type_inp == 'int':
           try:
               val = int(inp)
               if val > -1:
                   return val
               else:
                   print '- That\'s not an number. Try again.'
                   return self.getInput(message, type_inp, default_value)

           except ValueError:
               print '- That\'s not an number. Try again.'
               return self.getInput(message, type_inp, default_value)

       elif type_inp == 'bool':
           if inp.lower() == 'y':
               return True
           elif inp.lower() == 'n':
               return False
           else:
               print '- Please, respond with yes (y) or not (n). Try again.'
               return self.getInput(message, type_inp, default_value)

       elif type_inp == 'file':
           if os.path.isfile(inp):
               respond = self.getInput('- The file exists.You want to replace it? [y/N] : ', 'bool', 'n')
               if respond == False:
                   return self.getInput(message, type_inp, default_value)
               else:
                   return inp
           else:
               return inp

       else:
           return inp

   def printSummary(self):
       print '                                                       '
       print '  Summary                                              '
       print '  -----------------------------------------------------'
       print '- Max longitude of word                  : ' + '{0:,}'.format(self.user_max_longitude)
       print '- Total number of characters to use      : ' + '{0:,}'.format(len(self.list_string))
       print '- Total of words                         : ' + '{0:,}'.format(self.total_of_words)

       if self.user_use_letters == True:
           print '- Use letters                            : Yes'
           print '- Use lowercase letters                  : ' + ('Yes' if self.user_use_lowercase  else 'No')
           print '- Use uppercase letters                  : ' + ('Yes' if self.user_use_uppercase  else 'No')
       else:
           print '- Use letters                            : No'


       print '- Use numbers                            : ' + ('Yes' if self.user_use_numbers  else 'No')
       print '- Use special chars                      : ' + ('Yes' if self.user_use_specials else 'No')
       if os.path.isfile(self.user_filename):
           print '- Filename of dictionary                 : ' + self.user_filename + ' (override)'
       else:
           print '- Filename of dictionary                 : ' + self.user_filename

       print '- File size estimated of dictionary      : ' + self.convertSize(self.total_of_characters)
           
       print '  -----------------------------------------------------'
       return self.getInput('- You want to proceed?        [Y/n]      : ', 'bool', 'y')


   def convertSize(self, size, precision=2):
       # size = size + 0.0
       suffixes=['B','KB','MB','GB','TB','PB']
       suffixIndex = 0
       while size > 1024 and suffixIndex < 4:
           suffixIndex += 1 #increment the index of the suffix
           size = size/1024.0 #apply the division
       return ("%.*f%s" % (precision, size, suffixes[suffixIndex]))


   def __init__(self):

       print '- WHK Dictionary Maker 1.0, for pentesting purposes.';
       # self.user_min_longitude = self.getInput('- Enter min longitude of word [0]        : ', 'int',  '0')
       self.user_max_longitude = self.getInput('- Enter max longitude of word [4]        : ', 'int',  '4')

       self.user_use_letters   = self.getInput('- Use letters?                [Y/n]      : ', 'bool', 'y')
       if self.user_use_letters == True:
           self.user_use_lowercase   = self.getInput('- Use lowercase?              [Y/n]      : ', 'bool', 'y')
           self.user_use_uppercase   = self.getInput('- Use uppercase?              [y/N]      : ', 'bool', 'n')

       self.user_use_numbers   = self.getInput('- Use numbers?                [Y/n]      : ', 'bool', 'y')
       self.user_use_specials  = self.getInput('- Use special chars?          [y/N]      : ', 'bool', 'n')
       self.user_filename      = self.getInput('- Filename of dictionary      [dict.txt] : ', 'file', 'dict.txt')

       self.list_string = ''

       if self.user_use_letters == True:

           if self.user_use_lowercase == True:
               self.list_string = self.list_string + 'abcdefghijklmnopqrstuvwxyz'

           if self.user_use_uppercase == True:
               self.list_string = self.list_string + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

       if self.user_use_numbers == True:
           self.list_string = self.list_string + '0123456789'
       
       if self.user_use_specials == True:
           self.list_string = self.list_string + '\\/\'"@#$%&/()=?¿!¡+-*_.:,;'


       self.total_of_words      = 0
       self.total_of_characters = 0
       for n in range(0, self.user_max_longitude):
           total = (len(self.list_string)**(n + 1))
           self.total_of_words      = self.total_of_words + total
           # (word length * count words) + \n
           self.total_of_characters = self.total_of_characters + (total * (n + 1)) + total

       # Summary
       response = self.printSummary()
       if response == False:
           return

       # Load file
       if os.path.isfile(self.user_filename):
           os.remove(self.user_filename)
       self.file_handler = open(self.user_filename, 'w')

       # Execute all
       self.loop('', self.user_max_longitude)

       # End
       self.file_handler.close()
       print "\r                                                       \r- End!"
   
if __name__ == '__main__':
   mainCLS = MainCLS()
#907
Gracias, tambien llegue a la misma conclusión, supongo que es la mas facil, saludos.
#908
Finalmente lo hice con un bluce que suma cada elevado

self.total_of_words = 0
for n in range(0, self.user_max_longitude):
   self.total_of_words = self.total_of_words + self.calculateTotal(n + 1)

...
   def calculateTotal(self, longitude):
       return len(self.list_string)**longitude


En otras palabras tengo una función que calcula el elevado de n:

funcion calculaTotal( numero )
   retorna total_caracteres^numero


Después llamo a la función con un loop, la cantidad de vueltas es igual a la cantidad de carácteres que quiero generar y voy sumando el resultado en una variable, asi se va autoincrementando:

total = 0
loop 1 hasta longitud
   total = total + calculaTotal ( cantidad del loop )


De esta manera cumplo si la longitud es x entonces se eleva x veces elevado por x - la cantidad de la vuelta, o sea:

si la longitud es 10 entonces:
26^1 + 26^2 + 26^3 + 26^4 + 26^5 + 26^6 + 26^7 + 26^8 + 26^9 + 26^10

:D y me ha resultado muy bien, ahora voy a ver como calcular la cantidad de carácteres totales xD para estimar el peso del archivo del diccionario mas 1 (\n) por cada palabra.

whk@machine:~/$ python make_dict.py
- Dictionary Maker 1.0 by WHK for pentesting purposes.
- Enter max longitude of word [4]        :
- Use letters?                [Y/n]      :
- Use lowercase?              [Y/n]      :
- Use uppercase?              [y/N]      : n
- Use numbers?                [Y/n]      : n
- Use special chars?          [y/N]      : n
- Filename of dictionary      [dict.txt] :
- The file exists.You want to replace it? [y/N] : y
                                                       
  Summary                                             
  -----------------------------------------------------
- Max longitude of word                  : 4
- Total number of characters to use      : 26
- Total of words                         : 475254
- Use letters                            : Yes
- Use lowercase letters                  : Yes
- Use uppercase letters                  : No
- Use numbers                            : No
- Use special chars                      : No
- Filename of dictionary                 : dict.txt (override)
  -----------------------------------------------------
- You want to proceed?        [Y/n]      :
- End!
whk@machine:~/$
#909
Ya me di cuenta, son "variaciones", ahora tocará ver como automatizar esto en python xD
#910
Hola, estaba buscando información por internet sin mucho éxito sobre como calcular la cantidad de combinaciones posibles entre objetos, el tema es que ya conozco sobre permutaciones pero no es exactamente lo que busco.

Lo que he leido son formulas para encontrar la cantidad de combinaciones de una cantidad exacta de objetos con repetición entre ellas, el problema es el siguiente:

Tengo un generador de diccionario palabras, pero este incluye el carácter inicial sin longitud exacta, por ejemplo:

Digamos que tengo 26 carácteres (las letras del abecedario), cuales son las posibles combinaciones en 2 carácteres?, algunos dirán 26*26, pues no es así porque 26^2=676 pero en realidad son 702... porque?

aaa
aab
aac
aad
aae
...

Ese tipo de combinaciones son factibles, pero en mi caso no es asi:

a
b
c
...
z
aa
ab
ac
ad

Entonces incluye el evelado a la cantidad mas el primero que no se contabilizó, o sea ((26*26)+26)

Ahora si tenemos 3 carácteres deberíamos decir así: 26*26*26, pero en ves de eso es (26*26*26)+(26*26)+26=18278

Ahora, si lo hacemos con 4 carácteres algunos dirán 26*26*26*26, pero no es así tampoco, realmente es
(26*26*26*26)+(26*26*26)+(26*26)+26=475254

Ahora, a alguien se le ocurre como automatizar esto?, actualmente tengo la cantidad de carácteres y la longitud máxima de la palabra, digamos que la cantidad de carácteres son 26 y la longitud máxima son 4, el resultado debería darme 475254, pero como lo hago? existe alguna formula que no conozca aun y que sea conocida para estas situaciones?