Delanover

    Personal Blog

    El peligro de no usar CAPTCHA

    Buenas! Esta vez voy a tratar de hablar acerca de Prestashop, un sistema de comercio electrónico de código abierto.

    Leí en otro blog acerca de un “fallo” (más bien descuido o como lo quieran llamar) de esta plataforma, y es que no usa captcha, pero no solo eso, sino que su sistema de verificación de usuarios a la hora de registrarse deja bastante que desear. Por un lado, se traga correos del tipo a@a.c y por otro, es posible crear cuentas con idénticos nombres, apellidos, direcciones… Lo único que se verifica, es que no haya dos cuentas de correo electrónico exáctamente iguales.

    Procedemos a analizar con Tamper Data todos los datos que pasamos a la hora de registrarnos, simplemente rellenando los campos que son obligatorios. Deste Tamper Data, podremos ver algo parecido a esto:

    Para encontrar lo que queremos con mayor facilidad, fijarnos en el campo de “Método” y buscar “POST” (método que usa el formulario para enviar los datos). Una vez encontrado, copiamos el contenido de POSTDATA, y vamos a hacer lo interesante: llenar la base de datos de cuentas basura.

    Como dije anteriormente… lo único que se comprueba es que no existan dos direcciones de correo iguales, asi que podrían valer:

    a1@a.c
    a2@a.c
    a3@a.c

    Como no es plan de molestarnos en hacer un programa para ello, vamos a programar un script en la conocida addon de Firefox, iMacros. iMacros permite ejecutar todo tipo de cosas dentro del navegador, podria dedicarle una entrada entera y bien larga a este complemento tan interesante, que si no conociais, ya iba siendo hora. Usaremos iMacros para repetir el proceso tantísimas veces como queramos, de forma controlada.

    Antes de programar el script, vamos a ver la base de datos con usuarios de prueba que he creado, para ver el antes, y el después. Como podemos ver, solo tenemos 6 usuarios en nuestra base de datos.

    Procedemos a programar el script de iMacros, el cual explicaré un poco. Lo bueno de este addon, es la facilidad y flexibilidad que permite su código. Como vamos a ver, con 2 líneas habremos conseguido lo que queriamos:

    1 URL GOTO=http://delanover.com/shop/authentication.php?POSTDATA=customer_firstname=nombre&customer_lastname=apellidos&email=delanover{{!loop}}%40a.c&passwd=password&days=&months=&years=&company=&firstname=nombre&lastname=apellidos&address1=asddd&address2=&postcode=1234&city=asddd&id_country=6&id_state=&other=&phone=&phone_mobile=&alias=Mi+direcci%C3%B3n&dni=&email_create=1&back=my-account.php&submitAccount=Registrarse
    2 URL GOTO=http://delanover.com/shop/index.php?mylogout

    La primera línea nos manda a esa dirección, en la cual, como podemos comprobar, están los datos que hemos recogido de Tamper Data anteriormente, precedidos de “http://delanover.com/shop/authentication.php?”. La interrogación es para separar, y el resto, es la dirección en donde nos registramos. Esto nos permite registrarnos con una sola línea.
    La segunda línea, nos dirige a un enlace que nos desloguea. Es decir que lo que hacemos es: Registrarnos -> Desloguearnos -> Registrarnos -> Desloguearnos -> .. y así sucesivamente.

    Prestamos atención a la variable {{!loop}} que se encuentra en la primera línea, en el correo. Esta variable, se irá incrementando en uno a medida que aumenta el bucle, así obtendremos cuentas de correo del tipo delanover1@a.c, delanover2@a.c, delanover3@a.c, …

    Ahora sencillamente, ponemos el navegador, iniciamos el iMacros, seleccionamos el rango del bucle (desde 1, hasta 200 por ejemplo) y a esperar. Lo malo de esto es que no podremos usar el ordenador hasta que acabe (alguna pega tendria que tener) así que lo dejamos un rato corriendo y seguimos. Resultado de 15 minutos:

    Continuará…

    Parte 2

    Saludos, lipman

    ¿Quien alguna vez ha borrado algo accidentalmente y ha deseado recuperarlo? Pocas personas. Pero, ¿a quien le han dejado un pendrive y ha tenido ganas de husmear a ver que ha contenido? Seguro que muchas más.

    Llegados a este punto, uno, lo primero que hace es buscar en internet, software, que nos permite recuperar archivos borrados. Pero, cuando llegamos a una página estilo softonic y tenemos tantos para elegir, ¿cual deberiamos cojer? Lo primero que hacen algunos es irse a los freeware o a los que se encuentran en español, pero realmente, lo que nos interesa es saber la capacidad que cada uno tiene, para poder recuperar la mayor cantidad de datos.

    A continuación, realizaré una comparativa entre 4 herramientas que nos permiten recuperar archivos, dos de ellas son freeware:

    TuneUp Utilities 2010 (dentro de cual, usaremos el TuneUp Undelete)
    FileRestorePlus
    Recuva (freeware)
    Restoration (freeware)

    Para realizar las pruebas, usé un viejo MP3 que tenía por casa, ya que necesitaba algo por donde hubieran pasado muchos archivos a lo largo del tiempo. Antes de realizar la comparativa de resultados, escribiré notas personales acerca de cada uno de los programas utilizados.

    TuneUp Undelete

    +Español
    +Es parte de una Suite
    -Shareware
    Características de los archivos:

    • Nombre
    • Directorio
    • Tamaño
    • Tipo
    • Fecha de modificación
    • Estado

    FileRestorePlus

    +Árbol gráfico de los tipos de archivos y carpetas que hay
    +Previsualización de los archivos
    -Shareware
    Características de los archivos:

    • Nombre
    • Directorio
    • Estado
    • Tamaño
    • Fecha de creación
    • Fecha de modificación

    Recuva

    +Español
    +Interfaz grafica
    +Asistente muy útil
    Características de los archivos:

    • Nombre
    • Directorio
    • Última modificación
    • Tamaño
    • Estado
    • Comentario
    • Clusters y offsets

    Restoration

    +Portable, no requiere instalación
    +Búsqueda Cluster por Cluster
    +Se pueden restaurar carpetas enteras con su contenido
    -Interfaz gráfica
    Características de los archivos:

    • Nombre
    • Directorio
    • Tamaño
    • Fecha de modificación
    • Cluster

    Tras las tablas de características de los cuatro programas que usamos para la comparación, pasamos a realizar las pruebas:

    Programas Archivos Encontrados
    TuneUp Undelete 1271 archivos
    FileRestorePlus 1259 archivos
    Recuva 1259 / 1464 archivos (1*)
    Restoration 3157 / 13833 archivos (2*)

    (1*) Recuva tiene dos tipos de scan, el normal y el profundo
    (2*) Restoration tiene dos tipos de scan, el normal y uno cluster por cluster

    El siguiente análisis, lo realizaremos sobre el mismo dispositivo, tras realizarle un formateo rápido:

    Programas Archivos Encontrados
    TuneUp Undelete 0 archivos
    FileRestorePlus 0 archivos
    Recuva 0 / 622 archivos (1*)
    Restoration 0 / 24667 archivos (2*)

    Nota: como podemos observar, TuneUp Undelete y FileRestorePlus, no encuentran ningún archivo tras este formateo rápido, en cambio, Recuva y Restoration si. Lo más llamativo puede ser, es que el Restoration encuentre más archivos ahora que antes. ¿Cómo es posible? Los archivos que encuentra posteriormente, son archivos del tipo FILEXXXX.CHK, que contienen restos de otros archivos. A pesar de poder recuperar estos archivos, no recuperamos los demás, aunque no todos son del tipo FILEXXXX.CHK, sino que también encuentra algunos que pueden ser restaurados.

    Ahora, realizaremos un formateo normal:

    Programas Archivos Encontrados
    Recuva 0 archivos
    Restoration 0 archivos

    Ooops, no encontramos nada, ni siquiera mediante una búsqueda cluster por cluster con el Restoration. Esto quiere decir, que para evitar que alguien husmee nuestros antiguos datos mediante herramientas normales, nos serviria realizarle un formateo normal a nuestro dispositivo. Sin embargo, dicho sea de paso, la única manera de borrar totalmente un archivo de un sistema de almacenamiento, es sobreescribirlo varias veces.

    Conclusión personal
    Partiendo de que los dos únicos freeware son Restoration y Recuva, se podria decir que el que primero usaria para realizar este tipo de análisis es el Recuva. No solo es gratis, sino que su interfaz gráfica y sobre todo, su asistente personalizable, hacen de él un programa muy atractivo, además, no olvidemos que está en completo castellano. Por otra parte, si no encontrásemos algo que buscamos con el Recuva, probaría el Restoration con una búsqueda Cluster por Cluster.
    Por último, señalar lo curioso que es, que los dos únicos programas de pago de este análisis, no detectan ningún archivo tras un leve formateo.

    1.-Introducción: ¿Qué es exactamente el Spoofing?
    El IP (Internet Protocol) Spoofing (Suplantación) consiste básicamente en el engaño mediante alguna técnica de una lo que queramos suplantar, a cualquier tipo de receptor. Este concepto apareció originariamente debido a la necesidad que tenían los delincuentes de ocultar su rastro de internet, al igual que, fuera de internet, actualmente los delincuentes usan técnicas para tratar de no ser descubiertos. La primera vez que se usó el término de ‘Spoofing’ se remonta a los años ochenta, por Robert Morris, creador del primer gusano de internet.

    2.-IP Spoofing
    Para poder hablar acerca del IP Spoofing debemos de tener unos mínimos conocimientos acerca del funcionamiento de los protocolos TCP/IP, encargados de la transmisión de datos entre ordenadores.

    2.1.-¿Para qué se usa?
    El principal uso que se le da al IP Spoofing es para la realización de ataques DoS, los cuales se basan en inundar de paquetes un servidor para intentar saturarlo y que no pueda recibir más. Para el atacante tiene dos ventajas respecto este ataque. El primero de ellos es la ocultación de su propia identidad para que no le descubran. El segundo, es poder enviar paquetes con distintas direcciones de origen para que al receptor le resulte más difícil defenderse.
    Otro objetivo menos común, puede ser el conseguir loguearse en un sistema de autentificación basado en las direcciones IP. Resultaría bastante difícil encontrar alguno entre ordenadores alejados (físicamente hablando) y además, para poder realizarlo deberíamos ser capaces de modificar miles de paquetes a la vez. Por otro lado, es más frecuente encontrarlo en redes locales (como las existentes en oficinas), la cual nos permitirían loguearnos sin un usuario y contraseña, solo mediante la IP del tipo 192.168.XXX.XXX
    Otro último uso que se le puede dar al IP Spoofing, es el engaño a servidores que tienen censurado o limitado su contenido dependiendo del país del visitante. Para esto último es muy frecuente usar proxies que nos aseguran el mismo resultado.

    2.2.-Protocolos TCP/IP
    El protocolo IP, es un protocolo de transferencia débil (hablando en términos de seguridad), ya que una vez completada la transferencia, no tenemos conocimiento del estado de transacción de los datos. Lo entenderemos mejor si vemos y explicamos un poco su cabecera:

    Por otra parte, el protocolo TCP, usa conexión orientada al diseño. Esto es debido a que su conexión (mucho más segura que la del protocolo IP) se asegura, entre otras cosas, del establecimiento de la conexión entre el emisor y el receptor en 3 etapas distintas:
    -En primer lugar, el cliente envía al servidor un paquete SYN.
    -Después, el servidor revisa si el puerto correspondiente se encuentra abierto o cerrado. En el caso de encontrarse cerrado, el servidor envía un paquete de respuesta rechazando la conexión. En el caso de que se encuentre abierto, el servidor envía un paquete de respuesta SYN/ACK.
    -Finalmente, cuando el emisor recibe la respuesta afirmativa con el paquete SYN/ACK, éste envía al receptor un paquete ACK completando así el establecimiento de conexión.

    Hasta aquí, encontramos la primera diferencia con respecto el protocolo IP, que este último no usa ningún sistema como tal, para establecer una conexión correcta con el servidor.

    Por último, mencionar también que el protocolo TCP también es el encargado de reordenar los paquetes de la transferencia, detectar errores, paquetes duplicados y múltiples cosas más que podemos ver en la cabecera de este protocolo.

    Para concluir con esta parte, solo me queda por decir, que el funcionamiento de una transferencia de datos tiene el siguiente orden: primero, las aplicaciones traspasan los datos a la capa TCP. TCP divide los datos y añade a cada segmento su cabecera. Después, se pasa a la capa IP, donde a través de la red, llega a la capa TCP de destino. Aquí, TCP comprueba que no se ha perdido ningún elemento y que todo está en orden. Finalmente, desde esta última capa TCP del receptor, se envía al emisor un paquete que confirma la perfecta llegada de los datos.

    2.2.-Seguridad al respecto y anotaciones
    El IP Spoofing fue un problema importante hace unos años, sin embargo a día de hoy es más complicado realizar esta práctica, debido a que los routers modernos bloquean la salida de paquetes con dirección de origen falsa. A pesar de ello existen medidas para protegernos contra cualquier posible amenaza relacionada con el Spoofing.
    La creación de filtros de entrada y salida en los routers pueden ayudar a combatir esta amenaza. Configurando una lista de control de acceso (ACL) y restringiendo el rango de IPs privadas, ya que es común que el origen suplantado en la transferencia de paquetes de los ataques de Spoofing sean direcciones de IP locales, con lo que fácilmente podrían atravesar el firewall.

    3.-ARP Spoofing
    El protocolo ARP, protocolo de resolución de direcciones, nace de la necesidad existente de traducir la dirección IP en la dirección MAC, para que, entre equipo y router, puedan transmitir paquetes (ya que no se podrían entender entre ambos).
    Para entender cómo se produce el Spoofing sobre el protocolo ARP, me limitaré primeramente a explicar cómo funciona el protocolo ARP encargado que existe entre la conexión de un portátil y un router.
    El portátil manda paquetes (ARP request) con la dirección a la que se lo quiere enviar. Los ordenadores que no sean los receptores desecharán este paquete, y cuando el receptor objetivo (router) ha recibido esta petición, manda una respuesta (ARP reply). Una vez relacionadas, el portátil puede acceder a internet mandando maquetes a la MAC del router. Esta relación se guarda en la caché de las máquinas, en una tabla denominada, tabla ARP.
    El ARP Spoofing se basa sencillamente, en el engaño de un terminal con conexión inalámbrica, al que hacemos creer que la MAC del router al que envía los paquetes, es otra inexistente, por lo que, los paquetes que envía el terminal se pierden y no llegan al router (desconexión de internet). Por otra parte, se le puede enviar a este terminal que quiere acceder a internet, un paquete para que piense que la MAC de una tercer máquina (equipo atacante) sea la del router (este proceso es posible, debido a que el protocolo ARP puede recibir respuestas (reply) sin emitir preguntas (request)), y así, la máquina víctima estaría enviando paquetes al atacante, mientras este decide si solamente quiero verlos y reenviarlos al router, o incluso si el atacante quiere modificarlos para posteriormente enviarlos al router, lo que nos permite la redirección de equipos a una página antes de permitirles el acceso a la red.
    La tabla ARP de la que hablábamos antes la podemos visualizar en la consola de Windows con la línea “arp –a”. A continuación veremos su funcionamiento de un modo práctico.

    3.1.-Defensas
    El uso de tablas ARP estáticas nos permitiría no generar esa caché que es vulnerable de ser suplantada. Para ello, desde la consola de Windows escribimos: arp –s [IP] [MAC]. NOTA: la dirección MAC se tiene que escribir de la siguiente forma 00-11-22-33-44-55.

    Otro método que se podría usar, sería el RARP, protocolo usado para consultar a partir de una dirección MAC su dirección IP correspondiente. De tal manera que si el RARP devuelve más de una dirección IP, significa que esa dirección MAC ha sido clonada.
    Mencionar un último método, que sería el reconocimiento de cualquier cambio en las tablas ARP mediante programas como ArpWatch.

    3.2.-Herramientas
    Existen diversas herramientas que nos permiten realizar el ARP Spoofing, quizás unas de las más famosas sea ettercap, la cual nos ayuda a realizar un posterior Man In the Middle (esto nos permite “escuchar” lo que un terminal manda a un router)

    4.-Email Spoofing
    Este es sin duda el más sencillo de entender. Simplemente se basa en la suplantación de una dirección de correo, en la que suelen tener diversos objetivos, como el phising (por ejemplo, pueden intentar suplantar el email de una página web importante como puede ser paypal y nos mandan a una web falsa para que pongamos los datos y el atacante reciba la información) pero en general, mediante la ingeniería social pueden intentar sacar diversa información a la víctima.

    4.1.-Defensas
    El método más eficaz y fácil para defenderse frente al Email Spoofing es comparar la IP del email recibido con la IP del servicio que intentan suplantar.

    4.2.-¿Cómo se realiza?
    Existen diversas maneras para realizar correctamente esta práctica. Una de ellas, sería montarse un servidor de correo casero y usarlo para mandar emails, pudiendo modificar configuraciones que nos permitirían esta suplantación. Otra sería mediante telnet usando un servidor de correo de alguna página en la que nos permita hacerlo y el cual hay cientos de tutoriales circulando por internet. Pero el método que considero más fácil sería directamente hacerlo con un script en PHP, el cual mediante la función mail (más información: http://php.net/manual/en/function.mail.php) nos permite configurar el correo emisor (correo spoofeado), el correo receptor (víctima), el cuerpo del mensaje, el asunto, un correo de copia oculta, etc.

    4.3.-Anotación
    Primeramente me gustaría recordar que la suplantación de identidad de una persona está totalmente penada por la ley. Puede parecer antiguo, pero todo lo contrario, a día de hoy se siguen intentando spoofear páginas importantes. Sin ir más lejos, en mi caso personal recibo emails de supuestamente paypal, pidiéndome datos (por correo) bastante importantes, y aquí adjunto una foto del susodicho email.

    Strcspn nos devuelve el número de caracteres que hay en una cadena que no aparecen en otra. Es complicado de explicar pero fácil de entender con algún ejemplo.

    Su sentencia es:

    <?
    $var = strcspn($cadena1, $cadena2);
    ?>

    Cadena1 será la cadena de texto que compararemos.
    Cadena2 será la cadena de texto que tendrá los caracteres que no queremos contar.

    Ejemplo

    <?
    $texto = "xyzmnoptq"; //esta cadena de texto tiene 9 caracteres
    $noContables = "abcdefg";
     
    echo strcspn($texto, $noContables);
    //Imprime 9, porque se han contado todos los caracteres del texto
     
    $noContables = "abco";
     
    echo strcspn($texto, $noContables);
    //Imprime 5, porque cuenta caracteres hasta que llega al caracter "o", y ahí para de contar.
    ?>

    Strip_tags nos permite controlar los tags que queremos mostrar de una cadena de texto, incluso eliminarlos todos.

    Su sentencia es:

    <?
    $var = strip_tags($cadena, ($tagsPermitidas));
    ?>

    Cadena es la cadena de texto entrante a la que vamos a realizarle los cambios.
    tagsPermitidas es la cadena de texto en la que ponemos las tags que si que queremos permitir. Este parámetro es opcional, y si no ponemos nada, no se filtra ninguna y se eliminan todas.

    Ejemplo

    <?
    $cadena = "<b>Texto</b> <i>de</i> <u>ejemplo</u>";
     
    echo strip_tags($cadena) . "<br>";
    echo strip_tags($cadena, "<b>");
    //Solo vamos a filtrar la negrita, el resto no aparecerá.
    ?>

    Devuelve:
    Texto de ejemplo
    Texto de ejemplo


    Stripcslashes nos permite traducir a los símbolos unicode. Con un ejemplo se entiende:

    <?
    echo stripcslashes("\xb6");
    ?>

    Nos devuelve: ¶


    Stripos nos devuelve la posición en la que se encuentra uno o varios caracteres dentro de una cadena.

    <?
    echo stripos("Hola mundo", "u")
    ?>

    Nos devuelve 6. En caso de no encontrar nada, no devuelve nada.


    Stripslashes nos devuelve la cadena de texto introducida sin los caracteres de la barra inclinada \

    <?
    $cadena = "Esto \es \un eje\mp\lo\\";
     
    echo stripslashes($cadena);
    ?>

    Devuelve: Esto es un ejemplo.


    Stristr nos permite, dado un caracter o cadena de texto, obtener lo que hay detrás o lo que hay delante.

    <?
    $email = 'correo@dominio.com';
      echo stristr($email, '@') . "<br>";
      echo stristr($email, '@', true); //Esta función solo funciona de la versión 5.3.0 hacia adelante
     
    ?>

    Devuelve:
    @dominio.com
    correo

    Encontré en esta web un listado bastante completo de cámaras que tienen autobracketing, traducido al español como horquillado automático.

    El autobracketing, nos permite obtener fotos de manera automática con distinta apertura del diafragma de la lente. Cuanto más cerrado esté, menos luz entra y más oscura se ve la foto, y viceversa.

    Esto, cada vez se usa con mayor frecuencia para obtener imágenes HDR (high dynamic range). Para ello, tenemos que obtener exáctamente la misma foto con distintos valores de apertura del diafragma. Luego las juntamos con algún tipo de software como el Photoshop de Adobe, y el resultado es esa imagen, con un balance de colores impresionante.

    Aquí tenemos un ejemplo:

    Podemos realizar imágenes HDR sin necesidad de una cámara con autobracketing, pero teniendo una facilita muchísimo las cosas. Y aquí dejo la lista:

    Camera Model Auto-bracketed frames Maximum EV step Maximum EV range with AEB Maximum burst rate
    Canon 1D MKII / MKII N 3, 5 or 7 3 18 8.5 fps
    Canon 1D MKIII 2, 3, 5 or 7 3 18 10 fps
    Canon 1D MKIV 2, 3, 5 or 7 3 18 10 fps
    Canon 1Ds MKII 2, 3, 5 or 7 3 18 4 fps
    Canon 1Ds MKIII 2, 3, 5 or 7 3 18 5 fps
    Canon 5D 3 2 4 3 fps
    Canon 5D Mark II 3 2 4 3.9 fps
    Canon 7D 3 3 6 8 fps
    Canon 10D 3 2 4 3 fps
    Canon 20D 3 2 4 5 fps
    Canon 30D 3 2 4 5 fps
    Canon 40D 3 2 4 6.5 fps
    Canon 50D 3 2 4 6.3 fps
    Canon 300D / Digital Rebel 3 2 4 2.5 fps
    Canon 350D / Digital Rebel XT 3 2 4 3 fps
    Canon 400D / Digital Rebel XTi 3 2 4 3 fps
    Canon 450D / Digital Rebel XSi 3 2 4 3.5 fps
    Canon 500D / Digital Rebel T1i 3 2 4 3.4 fps
    Canon 550D / Digital Rebel T2i 3 2 4 3.7 fps
    Canon 1000D (Rebel XS) 3 2 4 3 fps
    Canon 2000D (from submitted info, may be incorrect) 3 1 2 6 fps
    Canon D30 / D60 3 2 4 3 fps
    Canon EOS 1V Film 3 3 6 6 fps
    Canon Powershot A350 3 1 2 0.9 fps
    Canon Powershot G1/G2 3 2 4  
    Canon Powershot G3/G5/G6 3 2 4  
    Canon PowerShot G7 3 2 4 2 fps
    Canon PowerShot G9/G10 3 2 4 1.5 fps
    Canon PowerShot G11 3 2 4  
    Canon PowerShot Pro1 3 2 4 2.5 fps
    Canon PowerShot S2/S3/S5 IS 3 2 4 2.5 fps
    Canon PowerShot S45 3 2 4 3 fps
    Canon PowerShot S50 3 2 4 2 fps
    Canon Powershot S70/S80 3 2 4  
    Canon Powershot S90 3 2 4 0.9 fps
    Canon PowerShot SX1 IS 3 2 4 4 fps
    Canon PowerShot SX10 IS 3 2 4 1.4 fps
    Canon Power Shot SX20 IS 3 1 1/3 2 2/3  
       
    Casio EX-F1 3 or 5 2 or 1 4 60 fps
       
    Contax 167MT 3 1.5 3 3 fps
    Contax Aria 3 1 2 3 fps
    Contax G1 3 1 2 2 fps
    Contax TVS Digital 3 1 2 3 fps
       
    Fuji FinePix E550 3 1 2  
    Fuji FinePix E900 3 1 2 2 fps
    Fuji FinePix F810 3 1 2 10 fps
    Fuji FinePix HS10 3 1 2  
    Fuji FinePix S100FS 3 1 2 3 fps
    Fuji FinePix S200EXR 3 1 2 3 fps
    Fuji FinePix S1000fd 3 1 2  
    Fuji FinePix S1500 3 1 2 1.4 fps
    Fuji Finepix S2700 3 1 2  
    Fuji FinePix S5000/S5500 3 1 2 3 fps
    Fuji FinePix S5600/S5700 3 1 2 1.4
    Fuji FinePix S5800 3 1 2 0.8
    Fuji FinePix S6000fd/S6500fd 3 1 2 1.5 fps
    Fuji Finepix S7000 3 1 2  
    Fuji FinePix s8000fd 3 1 2  
    Fuji FinePix S9100/S9600 3 1 2 1.5 fps
    Fuji IS-1 3 1 2 1.5 fps
    Fuji S2 Pro 3 1 2 2 fps
    Fuji S3Pro 2 or 3 2 4 2.5 fps
    Fuji S5 Pro 2 to 9 1 8 3 fps
       
    Kodak 7590DX/Z7590 3 1 2  
    Kodak 7630DX 3 1 2  
    Kodak DCS Pro SLR/c 3 3 6 1.66 fps
    Kodak DCS Pro SLR/n 3 2 4 1.7 fps
    Kodak DX7440 3 1 2 3.2 fps
    Kodak C643 3 1 2  
    Kodak C875 3 1 2 1.5 fps
    Kodak Z612 / Z712 3 1 2 2 fps
    Kodak Z760 3 1 2  
    Kodak Z885/Z8612/Z1285 3 1 2  
    Kodak Z812 IS 3 1 2 3 fps
    Kodak Z1012 IS 3 1 2 1.6 fps
    Kodak Z1015 IS 3 1 2 2.1 fps
    Kodak z950 3 1 2 1.5 fps
    Kodak P712 3 or 5 1 4 1.6 fps
    Kodak P880 3 or 5 1 4 2.3 fps
       
    Konica Minolta 5D 3 0.7 1.4 3 fps
    Konica Minolta 7D 3 or 5 0.5 2 3 fps
    Minolta Dimage A1 3 0.5 1.5 2.8 fps
    Konica Minolta A200 3 1 2  
    Konica Minolta Dimage 7i 3 1 2  
    Konica Minolta Dimage Z3/Z6/Z10 3 1 2 3 fps
    Minolta S414 3 1 2 3 fps
       
    Leica D-LUX 3 3 1 2 3 fps
    Leica D-LUX 4 (firmware 2.2) 3 3 6 2.5 fps
    Leica M9 5 (2 EV) or 7 (1 EV) 2 8 2 fps
    Leica X1 3 3 6 3 fps
       
    Mamiya 645 AFD III 3 1 2  
       
    Nikon D100 2 to 3 1 2 3 fps
    Nikon D200 2 to 9 1 8 5 fps
    Nikon D300 2 to 9 1 8 6 or 8 fps
    Nikon D300s 2 to 9 1 8 8 or 9 fps
    Nikon D700 2 to 9 1 8 8 fps
    Nikon D2H 2 to 9 1 8 8 fps
    Nikon D2X/D2Xs 2 to 9 1 8 5 fps (8 cropped)
    Nikon D3 / D3s 2 to 9 1 8 9 fps (11 in DX mode)
    Nikon D3X 2 to 9 1 8 5 fps (7 in DX mode)
    Nikon D50 3 2 4 2.5 fps
    Nikon D70 2 or 3 2 4 1 fps
    Nikon D80 2 or 3 2 4 3 fps
    Nikon D90 2 or 3 2 4 4.5 fps
    Nikon D5000 3 2 4 4 fps
    Nikon Coolpix E4500 3 or 5 1 4 1.3 fps
    Nikon Coolpix 5400 3 or 5 1 4 1.25 fps
    Nikon Coolpix E5000 3 or 5 2 8 3 fps
    Nikon 5700 3 or 5 1 4 3 fps
    Nikon Coolpix P4 3 1/2 1 0.5 fps
    Nikon Coolpix P90 3 1 2 3.5 fps
    Nikon Coolpix P100 3 1 2  
    Nikon Coolpix P5000/P5100 3 1 2 1 fps
    Nikon Coolpix P6000 3 1 2  
    Nikon 8080 3 or 5 1 4 1.6 fps
    Nikon 8400 3 or 5 1 4 2.3 fps
    Nikon 8700 3 or 5 1 4 2.3 fps
    Nikon 8800 3 or 5 1 4 2.3 fps
       
    Olympus C2100 Ultra Zoom 3 or 5 1 4 1.7 fps
    Olympus C5050 Zoom 3 or 5 1 4  
    Olympus C5060 Wide Zoom 3 or 5 1 4 3.3 fps
    Olympus C730UZ 3 or 5 1 4 1 fps
    Olympus C765UZ 5 1 4 3 fps
    Olympus C770UZ 5 1 4  
    Olympus C-8080 3 or 5 1 4  
    Olympus E-1 3 or 5 1 4 3 fps
    Olympus E-3 3 or 5 1 4 5 fps
    Olympus E-20P 3 1 2  
    Olympus E-30 3 or 5 1 4 5 fps
    Olympus E-300/E-330 3 1 2 3 fps
    Olympus E-400/E-410/E-420 3 1 2 3 fps
    Olympus E-500 3 1 2 2 fps
    Olympus E-510 3 1 2 3 fps
    Olympus E-520 3 1 2 3.5 fps
    Olympus E-620 3 1 2 4 fps
    Olympus EP-1 3 1 2 3 fps
    Olympus SP-310 3 or 5 1 4 1.5 / 2.4 fps
    Olympus SP-320 3 or 5 1 4 4 fps
    Olympus SP-350 3 or 5 1 4 3 fps
    Olympus SP-510UZ 3 or 5 1 4 1.7 fps
    Olympus SP-550UZ/SP-560UZ 3 or 5 1 4 5 fps
       
    Panasonic Lumix DMC-FS6 3 1 2 3 fps
    Panasonic Lumix DMC-FX3/FX30/FX33/FX500 3 1 2  
    Panasonic Lumix DMC-FX150/FX180 3 1 2 2 fps
    Panasonic DMC-L1 3 or 5 1 4 3 fps
    Panasonic Lumix DMC-G1 / GH1 7 2/3 4 3 fps
    Panasonic Lumix DMC-GF1 3, 5 or 7 2/3 4 3 fps
    Panasonic Lumix DMC-G1K 3, 5 or 7 2/3 4 3 fps
    Panasonic Lumix DMC-L10 3 2 4 3 fps
    Panasonic Lumix DMC-LS80 3 1 2  
    Panasonic Lumix DMC-LX1 3 1 2 1 fps
    Panasonic Lumix DMC-LX2 3 1 2 3 fps
    Panasonic Lumix DMC-LX3 3 1 2 4.5 fps
    Panasonic Lumix DMC-LX3 (with firmware update) 3 3 6 4.5 fps
    Panasonic DMC-LZ3/LZ4/LZ5 3 1 2 3 fps
    Panasonic DMC-LZ8 3 1 2 2.5 fps
    Panasonic DMC-TS1 3 1 2 2.3 fps
    Panasonic DMC-TZ1/TZ3/TZ4 3 1 2 3 fps
    Panasonic DMC-TZ5/TZ7 3 1 2 2.5 fps
    Panasonic DMC-ZS3A 3 1 2 2.8 fps
    Panasonic DMC-ZS5/ZS7 3 1 2 10 fps
    Panasonic FZ-18 3 1 2 3 fps
    Panasonic FZ-8/FZ-20/FZ-30 3 1 2 3 fps
    Panasonic FZ-28 3 1 2 2.5 fps
    Panasonic FZ35/FZ38 3 1 2 2.3 fps
    Panasonic FZ5/FZ7 3 1 2 3 fps
    Panasonic Lumix DMC-FZ50 3 1 2 1 fps
    Panasonic Lumix DMC-FZS1 3 1 2 2 fps
       
    Pentax *ist DL 3 2 4 2 fps
    Pentax *ist DS2 3 2 4 3 fps
    Pentax K7 3 or 5 2 8 5.2 fps
    Pentax K10D 3 or 5 2 8 3 fps
    Pentax K20D 3 or 5 2 8 3 fps
    Pentax K100D 3 2 4 2.8 fps
    Pentax K200D 3 2 4 2.8 fps
    Pentax K-m / K2000 3 1.5 3 3.5 fps
    Pentax K-x 3 1.5 3 4.7 fps
    Pentax Optio M85 3 2 4  
       
    Ricoh Caplio R6 / R7 3 0.7 1.4 3 fps
    Ricoh GX100 / GX200 3 0.5 1.5 2.4 fps
       
    Samsung GX-10 3 or 5 2 8 2 fps
    Samsung GX-20 3 or 5 2 8 3 fps
    Samsung NV3 3 0.5 1  
    Samsung s850 3 0.5 1 0.8 fps
    Samsung s1050 3 1/3 0.7  
    Samsung TL320 3 1/3 0.7  
       
    Sigma SD14 3 3 6 3 fps
    Sigma DP1 / DP-1s / DP2 3 3 6 3 fps
       
    Sony Alpha A-100 3 0.7 1.4 1.4 fps
    Sony Alpha A-200 3 0.7 1.4 3 fps
    Sony Alpha A-300 3 0.7 1.4 3.5 fps
    Sony Alpha A-350 3 0.7 1.4 3.5 fps
    Sony Alpha A-350 3 0.7 1.4 3.5 fps
    Sony Alpha A-380 3 0.7 1.4 2.5 fps
    Sony Alpha A-500 3 2/3 1.4  
    Sony Alpha A-550 3 2/3 1.4 9 fps
    Sony Alpha A-700 3 or 5 0.7 2.7 5 fps
    Sony Alpha A-700 – V4 firmware 3 or 5 2 (with 3 frames) 4 5 fps
    Sony Alpha A-850 3 2 4 3 fps
    Sony Alpha A-900 3 2 4 5 fps
    Sony DSC-828 3 1 2  
    Sony DSC-F707 3 1 2 0.5 fps
    Sony DSC-F717 3 1 2 3 fps
    Sony DSC-H1 3 1 2 1.25 fps
    Sony DSC-H2 3 1 2 0.8 fps
    Sony DSC-H5 3 1 2 0.9 fps
    Sony DSC-H7 3 1 2 2.2 fps
    Sony DSC-H9 3 1 2 2.2 fps
    Sony DSC-H10 3 1 2  
    Sony DSC-H50 3 1 2 1.6 fps
    Sony DSC-H20 3 1 2 1.8 fps
    Sony DSC-HX1 3 1 2 10 fps
    Sony DSC-HX5V 3 1 2 10 fps
    Sony DSC-N1 3 1 2  
    Sony DSC-R1 3 1 2 3 fps
    Sony DSC-R2 9 1 8 5 fps
    Sony DSC-V1 3 1 2 2 fps
    Sony DSC-V3 3 1 2  
    Sony DSC-T100 3 1 2  
    Sony DSC-T200 3 1 2 2 fps
    Sony DSC-T33 3 1 2  
    Sony DSC-T7/DSC-T9 3 1 2 1.25 fps
    Sony DSC W2 3 1 2  
    Sony DSC W80 3 1 2  
    Sony W90 3 1 2  
    Sony DSC-W150 3 1 2 1.5 fps
    Sony DSC-W170 / W290 3 1 2  
       
    Traveler DC-X5 3 0.7 1.4