This site uses cookies own and third. If you continue to browse consider to accept the use of cookies. OK More Info.

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - ANTRAX

Pages: [1] 2 3 ... 69
1

En papers anteriores vimos como usar Postman, ahora veremos como podemos combinarlo con la potente herramienta de Newman para poder correr las colecciones de postman desde la consola. Además nos permite integrarlo a Jenkins o a cualquier otro tipo de integración continua y ver los resultados de las ejecuciones tanto en la consola como en un reporte en HTML.

Para esta PoC, voy a hacer rapidamente una petición GET a un endpoint y le voy a agregar 4 tests:

        Validar el código de respuesta
        Validar el mensaje de respuesta
        Validar el tiempo de respuesta
        Validar la estructura del schema

El endpoint que voy a utilizar, es el mismo que he estado utilizando a lo largo de todos los papers relacionados a APIs. Les dejo la URL del Swagger por si alguien más quiere practicar con esta API pública:

You are not allowed to view links. Register or Login

Pasamos el endpoint a Postman y agregamos los primeros tests desde los snippets


Para validar la estructura del schema y los tipos de datos que debería llevar, vamos a utilizar el siguiente test:

Code: (javascript) You are not allowed to view links. Register or Login
const schema = {

ESTRUCTURA DEL JSON

pm.test("Schema validation", () => {
pm.response.to.have.jsonSchema(schema);
});

A esa «Estructura del JSON» la obtendremos haciendo la petición al GET que estamos testeando, copiamos el resultado y lo pegamos en el siguiente conversor de Json to Schema: You are not allowed to view links. Register or Login


Ese Json resultante, es la estructura o schema con los tipos de datos de cada elemento. Copiamos todo eso, y lo pegamos dentro del código que dejé más arriba. Y con esto ya podremos validar el Schema también. Debería quedarnos algo así:

Code: (javascript) You are not allowed to view links. Register or Login
const schema = {

  "type": "array",
  "items": [
    {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "category": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer"
            },
            "name": {
              "type": "string"
            }
          },
          "required": [
            "id",
            "name"
          ]
        },
        "name": {
          "type": "string"
        },
        "photoUrls": {
          "type": "array",
          "items": {}
        },
        "tags": {
          "type": "array",
          "items": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer"
                },
                "name": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "name"
              ]
            }
          ]
        },
        "status": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "category",
        "name",
        "photoUrls",
        "tags",
        "status"
      ]
    }
  ]
}

pm.test("Schema validation", () => {
    pm.response.to.have.jsonSchema(schema);
});


Una vez que ya tenemos todos los tests hechos, procedemos a exportar la colección. Para ello clickeamos en los 3 puntitos de la colección y damos en click en «Exportar» y lo guardamos.


Newman

Para poder utilizar Newman, es necesario tener instalado NodeJS. A este lo podemos descargar desde su página oficial: You are not allowed to view links. Register or Login

Una vez que lo tenemos instalado, abrimos una consola y tipeamos lo siguiente para instalar Newman:

Code: (text) You are not allowed to view links. Register or Login
npm install -g newman
Ahora bien… Como dije antes, «sirve para correr colecciones de Postman desde la consola»… Es por ello, que abrimos una consola, nos situamos en el directorio en donde descargamos la colección de postman y ejecutamos lo siguiente:

Code: (text) You are not allowed to view links. Register or Login
newman run “nombre_coleccion.json”

Newman ejecutará todos los test que hayamos creado, y nos arrojará una tabla con todos los tests que pasaron y los que fallaron. Además de mostrarnos el detalle de que fue lo que falló.

Ahora bien, en caso de que necesitemos un reporte más visible para mostrarle a un cliente o lo que fuese, debemos tener instalado lo siguiente:

Code: (text) You are not allowed to view links. Register or Login
npm install -g newman-reporter-htmlextra
Y luego corremos la colección de la siguiente manera:

Code: (text) You are not allowed to view links. Register or Login
newman run collection.json -r htmlextra
Esto nos generará un archivo HTML con el reporte


Esto es todo por ahora! Espero que les sea de utilidad!
ANTRAX

2
Autoc0de / Automatizaciones con Autoc0de desde cero
« on: March 07, 2022, 11:35:39 pm »

En esta ocasión quiero presentarles a este gran Framework de automatización llamado Autoc0de, creado por You are not allowed to view links. Register or Login , miembro activo de la comunidad de Underc0de.

Autoc0de se diferencia del resto de los frameworks por sus siguientes características:

– Muy fácil de implementar
– Facilidad para aprender a usarlo
– Se actualiza constantemente
– Gran respaldo de la comunidad
– Cada vez más empresas estan empezando a implementarlo
– Facil de integrar a GitHub y Jenkins
– Hecho en Java
– No requiere conocimientos extensos de programación
– Desde el primer día se puede comenzar a automatizar
– Sirve para automatizar Web, APIs y Mobile

Autoc0de es Framework que utiliza BDD (Cucumber), puede integrarse a Jenkins y Github, funciona con Selenium para automatizar web, Appium para aplicaciones mobile, y también sirve para automatizar API REST. Por otro lado, emite reportes en PDF y en HTML que son muy intuitivos

En esta guía vamos a ver como montarlo desde cero y como correr el ejemplo que trae.

Requerimientos:

– Java
– Maven
– IntelliJ o cualquier otro IDE que les guste
– Cucumber (Plugin del IDE)

 
Instalación de Java

Lo primero que haremos será instalar Java de su página oficial: You are not allowed to view links. Register or Login


Una vez descargado, lo instalamos.


Configuración de Maven

Para descargar Maven, debemos hacerlo de su página oficial: You are not allowed to view links. Register or Login y descargar el archivo binario


Una vez descargado, lo debemos descomprimir


Ahora vamos a las variables de entorno y debemos agregar la ruta de Maven y de Java


A continuación dejo los pasos a seguir:


Hacemos lo mismo con Java


Para corroborar si quedó todo bien, abriremos una consola y colocaremos lo siguiente:

java -version y mvn -v


Si nos reconoce ambos comandos, es porque lo hemos hecho bien, de lo contrario, dirá que no reconoce el comando y esto es porque esta mal colocada la ruta en la variable de entorno.

 
Instalación de IntelliJ

En mi caso voy a utilizar IntelliJ como IDE, porque es el que más me gusta, pero pueden usar cualquier otro que prefieran.

Para descargarlo, vamos a su sitio oficial: You are not allowed to view links. Register or Login y descargamos la versión Community

Lo instalamos como a cualquier otro software, lo único que tenemos que tener en cuenta, es que debemos marcar el siguiente checkbox en este paso:


Esto es para evitar tener que colocarlo después en las variables de entorno.

 
Levantar el proyecto de Autoc0de

Para descargar autoc0de, deberemos ir a su repo en GitHub: You are not allowed to view links. Register or Login


Una vez descargado, lo descomprimimos y lo abrimos con IntelliJ. Para ello, clickeamos en OPEN


Y buscamos la carpeta descomprimida. (Importante: Abrir el directorio que tiene el ícono negro en la parte de abajo)


A continuación, nos saldrá una alerta, indicandonos si confiamos en el proyecto (lo que no es algo de cero y estamos abriendo un proyecto ya creado)


Seguido a esto, comenzará a cargar el framework. La primera vez demorará un rato en cargar todo. Nos daremos cuenta, porque dejará de cargar cosas en la esquina inferior derecha.


También, esta primera vez nos pedirá instalar Cucumber, para poder interpretar el Gherkin de los test cases. Simplemente damos click en Configure Plugins, y le damos a instalar.


Una vez que finalice de cargar todo, podremos ver toda la estructura del framework.


Por último, debemos seleccionar la versión de JDK que usaremos. Para ello, debemos ir a File >> Project Structure y seleccionamos el JDK que tengamos instalado.


Con esto ya tendremos nuestro ambiente listo para empezar con la automatización!

Arquitectura de Autoc0de

Su arquitectura es la siguiente:


Parece un poco complejo de entender, pero al principio de esta guía, mencioné que es un framework muy sencillo, y esto se debe a que solo tiene 3 capas de suma importancia y que son con las que estaremos interactuando permanentemente:

Feature (En donde se escriben los test cases)
Steps (Traducción de lenguaje coloquial a Java)
PageObject (Mapeos de elementos y métodos)

El resto de las capas, es como para configurar otros parámetros más avanzados, que por ahora no es necesario tocar.

Capa 1: Features

El Feature es en donde tendremos el escenario escrito en lenguaje coloquial (Cucumber). En otras palabras, podemos decir que cada feature, tendrá todos los test cases que se le pueden ejecutar a una funcionalidad.

Cucumber es una herramienta utilizada para implementar metodologías como BDD (Behaviour Driven Development) las cuales permiten ejecutar descripciones funcionales escritas en texto plano como pruebas de software automatizadas.

Estas descripciones funcionales, se escriben en un lenguaje específico y legible llamado “Gherkin”, el cual sirve como documentación al desarrollo y para las pruebas automatizadas.

Cucumber tiene palabras reservadas como GIVEN, WHEN, THEN, AND, entre otros que no son tan usuales, como por ejemplo BUT

En el siguiente ejemplo, vamos a ver como loguear a un usuario en el foro de Underc0de. Haremos una prueba con un usuario real y otro con uno que no existe, para que vean como se ven en el reporte


Quizas no se entienda nada a simple vista, pero voy a explicar linea por linea para que se entienda mejor.

Linea 1: «Feature» Acá tenemos el nombre del feature, es decir, que es lo que se va a probar. En este caso, el login del foro de Underc0de
Linea 3: «@Tags» Con autoc0de podemos crearles tags a los distintos test cases, y luego solo correr a todos los test cases que tengan un tag en específico. Por ejemplo, podemos escribir 100 test cases automatizados, pero solo 10 tienen el tag de «@Smoke», si a la hora de correr los test cases solo coloco el tag de «@Smoke», se correrán unicamente esos 10 casos de prueba.
Linea 4: «Scenario ó Scenario Outline» Si el escenario es uno simple, solo colocamos scenario, pero si es un scenario que se ejecutará más de una vez utilizando una tabla de examples, entonces se coloca scenario outline. (En la linea 11 explicaré la diferencia un poco mejor)
Lineas del 5 al 10: «Pasos» Como dije anteriormente, cucumber tiene palabras reservadas:

Given: Dado
When: Cuando
AND: Y
Then: Entonces


Acá es cuando especificamos el paso a paso de lo que debe hacer la automatización.
El Given indica desde donde parte el usuario a navegar, el When y And son los pasos que va realizando y el Then es la verificación.

Linea 11 al 14: «Examples» La tabla de examples se utiliza cuando queremos ejecutar un mismo test cases, pero con distintos sets de datos. En este caso, este test case se ejecutará 2 veces. Primero se logueará al foro utilizando la cuenta autoc0de con la pass Underc0de y la segunda vez usará el usuario autoc0deFail con la password underc0defail

Hay algo que me han preguntado con mucha frecuencia, y es si a estos steps hay que escribirlos si o si en inglés. La respuesta es NO. Se pueden escribir en cualquier idioma.

Para entender todo esto mejor, vamos a ver el siguiente ejemplo de como pasar un test case normal (manual) a Gherkin


Code: (text) You are not allowed to view links. Register or Login
Feature: Loguearse con un mail y contraseña válidos

@Logueo
Scenario: Loguearse en el sistema con credenciales válidas
Given el usuario esta en el login del sistema
When el usuario ingresa un mail y contraseña válidos
And el usuario clickea en el botón Entrar
Then El sistema redirecciona al dashboard principal

Con esto ya tendríamos armado nuestro feature.

Capa 2: Steps

La segunda capa del framework son los STEPS o pasos. El archivo de steps contiene cada línea de nuestro feature convertida a lenguaje de programación y acá es en donde le decimos que acciones debe ejecutar nuestro script.

Para entenderlo un poco mejor, vamos a examinar algunos steps


En este código resalté dos porciones del código para explicarlas mejor.
La linea 24 y 39 empiezan con un You are not allowed to view links. Register or Login que son los AND del feature. Siempre que tengamos un @Given, @When, You are not allowed to view links. Register or Login o @Then, es porque estamos llamando al paso de la capa 1 (del feature)

En las líneas 25 y 26, y en las 40 y 41, tenemos código en Java, que son clases, en donde le decimos que deben hacer en ese paso.

En la 25 y 26 hacen un click a un botón, mientras que en la 40 y 41, completan con usuario y contraseña unos input para loguearse.

Cada una de estas clases, apunta a un método de la capa 3 del framework (Page Object)

Capa 3: Page Object

El Page Object esta compuesto por 2 partes, el mapeo y los métodos.

Mapeo = Declarar en variables como se llama cada elemento de una web/aplicación
Métodos = Es en donde indicamos que acción debe hacerle a cada elemento mapeado (si es un click, completar con texto, etc)

Mapeo de elementos

Cada elemento de una web o aplicación puede ser mapeado por distintos tipos de selectores. Entre ellos:

– Class
– ID
– Name
– Xpath
– Algún otro ID personalizado.

En la siguiente imagen, vamos a ver el mapeo que viene como ejemplo en Autoc0de.


En este caso, esta usando XPATH para el mapeo.

Para poder mapear un elemento, debemos ir a la web que estamos automatizando y dar click derecho sobre algún elemento y luego en inspeccionar. En este caso, vamos a inspeccionar el botón «Buscar con Google»


Una vez hecho esto, se nos abrirá el inspector del browser y podremos analizar ese elemento en particular.


En este caso, vemos que el botón tiene una clase llamada gNO89b y un name llamado btnK. Podríamos mapear a ese botón con cualquiera de esos 2 elementos.

Por otro lado, si damos click derecho en esa línea resaltada, podremos copiar el XPath.


En este caso el XPath es el siguiente:

/html/body/div[1]/div[3]/form/div[1]/div[1]/div[3]/center/input[1]

El XPath es la ruta que indica en donde se encuentra este elemento en el DOM de la página. Lo malo de usar este selector, es que si agregran un DIV o si mueven de lugar el botón, esta ruta del XPath cambiará y tendremos que modificar nuestro código para reemplazarlo por el nuevo.

Por lo general los IDs suelen ser únicos, por lo que suele ser el elemento ideal para mapear.

En caso de mapear por una Clase, esta puede repetirse. Las clases son las que suelen usarse para darle un estilo a un elemento, por lo que si hay 2 botones iguales, puede que tengan la misma clase. Y si queremos clickear un botón que aparezca en la parte de abajo del sitio, deberemos recorrer todos los botones hasta llegar al que queremos, de lo contrario, clickeará el primer elemento que encuentre con esa clase.

Una vez obtenido el selector, lo declaramos en una variable de esta forma:

private final String LOGIN_BUTTON_XPATH = "//*[You are not allowed to view links. Register or Login=\"top\"]/section[1]/div/div/div/div/h2";

En el nombre de la variable pueden poner cualquier cosa, pero Autoc0de sugiere usar la siguiente estructura:

NombreDelElemento_TipoDeElemento_Selector

En este caso, estamos mapeando podemos decir que estamos mapeando un botón que se llama «Login» y lo estamos haciendo através de XPath

En caso de mapear por ID sería:

private final String LOGIN_BUTTON_ID = "btnK";

 
Métodos

En esta parte de la capa 3, le indicamos que debe hacerle a cada elemento que mapeamos anteriormente. Es decir, si mapeamos un botón, se supone que le vamos a hacer un click. En la siguiente porción de código del ejemplo de Autoc0de, podemos ver como hacer el click a un botón mapeado.


Ejecutando el ejemplo de Autoc0de

Para poder ejecutar el ejemplo de Autoc0de, debemos abrir la terminal del intelliJ y escribir: mvn clean test


Seguido a esto, se abrirá el browser que tengamos configurado (Chrome por defecto) y hará todos los pasos del test. Al finalizar, dentro de la carpeta Target >> Reports, podremos ver el reporte


Reporte en HTML:


Y también podemos ver el paso que fallo, con su respectivo screenshot:


En este caso no me creó el reporte en PDF por mi versión de Java. Para que lo genere, debemos tener una versión superior a la 8. Pero se ve algo así:


Esto es todo por ahora!

Espero que les guste y sirva este excelente framework de Automation!

ANTRAX

3
Hola a todos!

En esta ocasión vengo a preguntarles como puedo hacer para validar con postman un scheme que tenga un elemento cuyo data type pueda venir null o con algún valor numérico?

Ejemplo:

Code: (javascript) You are not allowed to view links. Register or Login
const schema = {
  "type": "object",
  "properties": {
    "values": {"type": "array",
      "items": [
        {
          "type": "object",
          "properties": {
            "battery_charge_state": {"type": "number"}
          },
          "required": [
            "battery_charge_state"
          ]
        }
      ]
    },
   
  },
}

pm.test("Schema validation", () => {
    pm.response.to.have.jsonSchema(schema);
});

En donde ese  "battery_charge_state" algunas veces puede venir como un número y otras veces como null.

Alguna idea?

Saludos,
ANTRAX

4
Hola a todos! Estoy intentando validar un schema con postman. Utilicé la siguiente web para convertir el JSON en Schema: You are not allowed to view links. Register or Login
Y el resultado fue este:

Code: (javascript) You are not allowed to view links. Register or Login
const schema = {
  "type": "object",
  "properties": {
    "system_id": {"type": "string"},
    "start": {"type": "string"},
    "end": {"type": "string"},
    "period": {"type": "string" },
    "unit": {"type": "string"},
    "values": {"type": "array",
      "items": [
        {
          "type": "object",
          "properties": {
            "timestamp": {"type": "string"},
            "battery_charge": {"type": "float" },
            "battery_discharge": {"type": "number"},
            "grid_export": {"type": "number"},
            "grid_import": {"type": "number"},
            "home_consumption": {"type": "number"},
            "solar": {"type": "number"},
            "battery_charge_state": {"type": "number"}
          },
          "required": [
            "timestamp",
            "battery_charge",
            "battery_discharge",
            "grid_export",
            "grid_import",
            "home_consumption",
            "solar",
            "battery_charge_state"
          ]
        }
      ]
    },
    "totals": {
      "type": "object",
      "properties": {
        "battery_charge": {"type": "number"},
        "battery_discharge": {"type": "number"},
        "grid_export": {"type": "number"},
        "grid_import": {"type": "number"},
        "home_consumption": {"type": "number"},
        "solar": {"type": "number"}
      },
      "required": [
        "battery_charge",
        "battery_discharge",
        "grid_export",
        "grid_import",
        "home_consumption",
        "solar"
      ]
    }
  },
  "required": [
    "system_id",
    "start",
    "end",
    "period",
    "unit",
    "values",
    "totals"
  ]
}

pm.test("Schema validation", () => {
    pm.response.to.have.jsonSchema(schema);
});

El problema esta en que coloca varios "Numbers" en alguno de los elementos. Por ejemplo:

"battery_discharge": {"type": "number"},

Y en realidad debería ser un "float". Pero cuando cambio esto, inmediatamente postman me tira el siguiente error:

Code: (text) You are not allowed to view links. Register or Login
Schema validation | Error: schema is invalid: data.properties['values'].items should be object,boolean, data.properties['values'].items[0].properties['battery_charge'].type should be equal to one of the allowed values, data.properties['values'].items[0].properties['battery_charge'].type should be array, data.properties['values'].items[0].properties['battery_charge'].type should match some schema in anyOf, data.properties['values'].items should match some schema in anyOf
Alguna sugerencia?

Saludos,
ANTRAX

5
Criptomonedas / Calcular ganancias minando ETH
« on: February 09, 2022, 12:21:48 am »
Hola Underc0ders!
Voy a hacer un breve post explicando como calcular rapidamente la ganancia que tendríamos minando ETH.
Lo primero que tenemos que hacer, es ver que potencia de minado tiene nuestra placa (MH/s), para ello, vamos a nuestro amigo Google y escribimos lo siguiente:


En donde "3080 ti" es el modelo de nuestra placa de video.


Como podemos ver, en los resultados dice que mina a 86.78 MH/s (Esto puede variar dependiendo del overclock que le pongamos, puede ser un poco más o un poco menos, pero al menos ya tenemos el aproximado)

Lo siguiente es ir a una pool, como por ejemplo a: You are not allowed to view links. Register or Login

Scrolleamos un poco y nos vamos a topar con la calculadora:


En esta calculadora colocamos la potencia de minado de la placa y podremos ver el aproximado en dolares que ganaríamos con ella


Tenes en cuenta que este valor cambia cada vez que sube o baja el ETH. Pero al menos podemos tener un panorama más certero de las ganancias.

Espero que les sirva!
Saludos,
ANTRAX

6
Cursos, manuales y libros / Cursos en Torrent
« on: January 13, 2022, 10:50:45 am »
Hola Underc0ders!
Como ya todos saben, tenemos un servidor de torrent con cursos que se va actualizando casi a diario.


Enlaces Magnéticos:
You are not allowed to view links. Register or Login

En caso de no saber como se descargan los cursos, les dejo una guía escrita por You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

También los invito a dejar sus opiniones o recomendaciones de cursos en este hilo. Es decir, si descargaron algún curso y les gustó o no

7
QA (Quality Assurance) / Pruebas automatizadas con Katalon
« on: December 08, 2021, 07:03:41 pm »

Hola a todos! El día de hoy vamos a ver y analizar la herramienta Katalon, la cual sirve para realizar pruebas automatizadas de forma simple.

Para aquellos que alguna vez utilizaron Selenium IDE, esta es una muy buena alternativa y facil de utilizar.

Para comenzar, debemos ir a su página principal y registrarnos: You are not allowed to view links. Register or Login


Una vez registrados, activamos nuestra cuenta y vamos a Productos >> Katalon Studio


Y descargamos Katalon Studio


Una vez descargado, descomprimimos el ZIP y ejecutamos el archivo llamado “katalon.exe”

Cuando se abre por primera vez, nos pedirá una “licencia”, simplemente debemos colocar el email y password con el cual nos registramos en la web


Una vez que ingresamos, creamos un nuevo proyecto, para ello vamos a: FILE >> New >> Project


Le ponemos un nombre al proyecto y le indicamos que tipo de proyecto será. En este caso será web, ya que voy a probar testeando el foro de Underc0de.


Ahora simplemente seleccionamos el browser que vayamos a utilizar y clickeamos en Record para comenzar a grabar los pasos.


Se abrirá un browser, en este caso Firefox con la URL especificada, y comenzaremos a navegar el sitio y a ejecutar los pasos de ese test case. Es decir, entrar al foro, loguearse y verificar el perfil mio del foro.


Una vez finalizado, guardamos el script. En este caso le rcearé un nuevo directorio para poner los TC del foro en esa carpeta.


Luego, le colocamos un nombre a ese test case y una descripción en caso de ser necesario.


Una vez guardado, podemos correr la prueba clickeando el ícono de RUN, y al finalizar podremos ver el resultado de la prueba.


Se pueden crear varios casos de prueba y correrlos uno después del otro.

Es una herramienta muy facil de usar y muy práctica que nos ahorra mucho tiempo en las regresiones. Además, es una buena forma de empezar a automatizar un proyecto antes de llevarlo a un framework más sofisticado.

Esta herramienta también permite generar reportes en PDF y en HTML. La recomiendo para todo aquel que esté empezando con el QA y sobre todo con la automatización. Si bien no se requiere nada de código (que es lo que se pide en las empresas), sirve de mucho como para dar los primeros pasos, entender conceptos y realizar scripts rápidos de automatización.

En caso de que quieran que escriba sobre como generar los reportes y algunas funciones más avanzadas, simplemente dejen sus comentarios.

Espero que les sirva y nos leemos en el próximo post.

ANTRAX

8
QA (Quality Assurance) / Estrés de APIs con JMeter
« on: November 03, 2021, 12:44:58 pm »

En uno de los primeros posts que escribí sobre JMeter, mencioné que para testear APIs era un poco diferente, ya que en algunos casos debemos especificar las cabeceras, tokens, cookies, body, etc.

Para este ejemplo, usaremos el método POST de una API que venimos usando en varios tutoriales, y es la de: You are not allowed to view links. Register or Login


Vamos a usar el POST que crea mascotas, en el cual debemos enviarle un body. Lo que debemos hacer, es modificar el HTTP Request y apuntar a la API que deseemos estresar, y luego en el tab de Body Data, enviamos el JSON con la información.


Otra cosa nueva que debemos añadir, es un HTTP Header Manager, para indicarle si debe llevar algo en la cabecera. En este caso, debe llevar el Content-Type y debemos especificarle que es un application/json



En este caso solo envié 1 sola petición como para corroborar de que se hace bien


Lo que queda ahora, es simplemente estresarla incrementando el número de hilos para ver cuantas peticiones soporta.

Espero que les sea de utilidad!
ANTRAX

9
QA (Quality Assurance) / Ejecutando JMeter desde la consola
« on: November 03, 2021, 12:43:04 pm »

En el post anterior vimos como hacer pruebas de stress con Jmeter usando la GUI, pero hay muchas ocasiones en las que queremos probar con grandes cantidades de usuarios y nuestra computadora colapsa, y es acá en donde nuestro cliente de JMeter tiene limitaciones. Es por ello, que en esta breve guía, les voy a enseñar a como ejecutar las pruebas desde la consola y poder ver los reportes.

Para este ejemplo, vamos a utilizar el mismo ejemplo que la vez anterior, el cual era una petición GET al foro de Underc0de.


Lo que debemos hacer es guardar nuestro test plan, para ello vamos a FILE >> SAVE TEST PLAN AS


Una vez guardado, abrimos una consola de Windows o Linux (Dependiendo en el sistema operativo en el que estemos) y nos posicionamos en la carpeta bin de nuestro JMeter. Una vez hecho esto, ejecutaremos el siguiente comando:

jmeter -n -t underc0de.jmx -l test.csv

En donde underc0de.jmx es nuestro test plan guardado de Jmeter y test.csv será un archivo en donde guardaremos los resultados de la ejecución.


Ahora como se puede ver, en la siguiente imágen, nos genera nuestro archivo test.csv con los resultados. Lo que resta es ir a nuestro JMeter, a cualquiera de nuestros reportes e importar este archivo para poder ver desde la aplicación los resultados de la ejecución.



Además, podemos decirle que solo nos muestre los erróneos a la hora de importar para que sea más sencillo verlo


Espero que les sea de utilidad!
ANTRAX

10
QA (Quality Assurance) / Pruebas de stress con JMeter
« on: November 02, 2021, 10:26:37 am »

Hace un tiempo escribí un post sobre como hacer pruebas de stress con JMeter, pero hace no mucho, lanzaron una actualización y ahora hay cosas que funcionan un poco diferentes.

Para comenzar, debemos descargar JMeter de su web oficial: You are not allowed to view links. Register or Login


Debemos descargar la versión ZIP o TGZ del la sección de Binarios. Y tal como dice el requerimiento, debemos tener instalado Java 8 o superior.

Una vez descargado, debemos descomprimirlo. Para ejecutarlo, debemos entrar a la carpeta BIN y ejecutar el archivo llamado “jmeter.bat


El motivo por el cual ejecuto el .bat y no el .jar, es porque el .bat abre una consola y esta abre el .jar. La consola sirve para que muestre el log de errores en caso de que algo falle en JMeter.

Agregaremos un nuevo grupo de hilos, para ello damos click derecho en nuestro test plan y luego vamos a ADD >> THREADS (USERS) >> THREAD GROUP


Este grupo de hilos contiene la información de cuantas veces vamos a querer que se ejecute una acción X. Es decir, indica cuantos usuarios vamos a simular que entran a una aplicación y cada cuanto tiempo.


En este ejemplo, vamos a ejecutar este hilo 100 veces (Number of Threads) al mismo tiempo (Ramp-up period) y esta repetición solo se va a efectura una sola vez (Loop Count)

Ahora vamos a agregar un HTTP Request, para indicarle a que URL debe hacerle esa cantidad de peticiones. Para ello damos click derecho en nuestro grupo de Hilos y vamos a: ADD >> SAMPLER >> HTTP REQUEST


Acá debemos prestar atención si es una petición de tipo GET o POST. En este caso haremos un GET al foro de Underc0de, por lo tanto completamos los siguientes campos: Protocol, Server Name, HTTP Request y Path.


En caso de ser un POST, deberíamos completar el body data con el JSON de la petición y las cabeceras con alguna Cookie, Token o lo que sea necesario para enviar dicho POST.

Por último, debemos agregar un Listener, que será el encargado de mostrarnos los resultados de la ejecución. Cabe aclarar que hay varios, cada uno para cosas distintas. Para este ejemplo voy a usar el más simple a modo de muestra. Para ello damos click derecho en el grupo de hilos y vamos a: ADD >> LISTENER >> VIEW RESULTS TREE


Lo único que resta, es clickear el ícono del PLAY de color verde y aguardar los resultados


Al finalizar la ejecución, podremos ver los resultados


Otro reporte muy útil y el cual recomiento agregar siempre, es el de “Sumary Report”. Este reporte muestra de forma ordenada un poco más de información acerca de la ejecución y también cual es el porcentaje de error que arroja dicha prueba


Ahora que ya sabemos usar JMeter y ver los resultados de la ejecución, vamos a proceder a testear stress. Para esto, debemos ver cuantos usuarios soporta el foro al mismo tiempo. Esto se configura en nuestro Thread Group, incrementando el numero de usuario que entrarían al mismo tiempo hasta que comience a fallar.


En este caso, lo que hice fue aumentarlo de 100 a 200 y seguía funcionando bien, luego de 200 a 300 y falló, y lo bajé a 275 y tiró un 2.55% de error. Por lo que se puede concluir de que el foro de Underc0de soporta 270 usuarios entrando al mismo tiempo.

Al revisar el View Results Tree y analizar alguna petición fallida, pude ver de que los errores que arrojó, vienen de CloudFlare


Cloudflare es una especie de protección entre el usuario que intenta ingresar y el servidor. Al detectar que yo estoy enviando muchas peticiones al mismo tiempo, este me bannea. Es por ello que puede que este tirando error al pasar las 270 peticiones.

Lo más probable es que el servidor de Underc0de soporte más, pero Cloudflare lo frena. Para poder hacer más real la prueba, habría que desactivarlo mientras se prueba el stress en este sitio para determinar cuanta es la cantidad de usuarios real que soporta.

Algunas cosas a tener en cuenta al momento de probar stress

– Estas pruebas NO deben realizarse en producción
– Se debe ejecutar esta prueba en el flujo más pesado de la aplicación. En este caso apunté al inicio del foro, pero quizas lo correcto hubiese sido apuntar a una petición POST a la hora de crear un post, ya que debe ir y almacenar las cosas en la base de datos.
– Estas pruebas se realizan en un ambiente espejo a producción. Es decir, No se deben hacer ni en producción, ni en un servidor de QA o Desarrollo. Debe ser otro ambiente que tenga las mismas características que producción. De lo contrario, los datos que obtendremos no serán datos que escenarios que pasarán en producción.
- Al momento de hacer esta prueba, nadie debería estar conectado en ese ambiente para no afectar los resultados de las pruebas

Esto es todo por ahora! nos leemos en el próximo post!
ANTRAX

11
QA (Quality Assurance) / Pruebas automatizadas con Postman
« on: November 01, 2021, 02:30:04 pm »

Para continuar con los posts sobre Postman, vamos a ver como realizar pequeños scripts automatizados utilizando alguno de los snippets que trae Postman, además veremos como ejecutar los tests de todos los métodos de una sola vez.

Para este ejemplo, utilizaremos las mismas peticiones que veniamos usando en posts anteriores, y ejecutaremos scripts en los métodos GET y POST.

Para empezar, debemos ir a la pestaña TESTS dentro de algún método. En este caso, el método GET. A la derecha, veremos una lista de snippets. Estos snippets son porciones de códigos reusables. Es decir, que podemos usarlos en cualquiera de nuestras peticiones y sirven para ahorrarnos el trabajo de tener que escribirlas nosotros. Estos Snippets estan hechos en Javascript, asique cualquiera con conocimientos en este lenguaje puede escribir sus propios scripts automatizados o editar los existentes para hacerlos más avanzados o más puntuales. Sino, simplemente con utilizar los existentes podemos hacer varias pruebas.

A continuación, voy a usar el más común de todos, que es para asegurarnos si este GET devuelve un valor 200. Simplemente clickeamos el Snippet y automaticamente se colocará el código en Javascript de mi test.


Para probarlo, simplemente clickeamos en SEND, para enviar la petición y podremos ver en el tab de Test Results, como salió la ejecución de dicho script


En este caso, pasó correctamente. Ahora agregaremos algunos más, para poder ver como se vería una ejecución con varios tests


En este caso agregué 3 tests, el primero es para ver si la ejecución devuelve un 200, el segundo es para ver si esta petición demora menos de 200ms y el tercero es para ver si ese status 200 trae un mensaje “Creado”

Actualmente falla el segundo, porque demora 696ms y el test esperaba que fuese menor a 200ms, es por ello que lo marca en rojo

El tercero también falla, porque la petición devuelve un “OK” y la respuesta que estabamos esperando era un “Created”

Como se ve en el listado de snippets, hay muchos más, podemos evaluar la estructura de un modelo, el contenido del body, podemos almacenar una respuesta en una variable (por si trabajamos con tokents) y a ese token enviarlo a una variable de entorno, etc.

Además, se pueden crear casos negativos, es decir, se podría crear un método GET que no funcione, es decir, apuntando a una URL que no exista y validar si esta devuelve un 404, de esta forma podríamos hacer pruebas de casos negativos cuando una URL no funciona y ver que el mensaje de error sea el correcto.

Ahora, lo que haremos será crear estos mismos test en el POST de crear mascota y vamos a agregarle un validador de JSON, para corroborar que la mascota que yo estoy creando, se cree verdaderamente con ese nombre.


Y si vemos el resultados de los test, tendremos lo siguiente:


Como se puede ver, pasan todos los tests, excepto el del tiempo.

Lo ideal acá, es preguntarle a un desarrollador cual debería ser el tiempo de carga esperado para cada API, y aplicarlo en el test. En este ejemplo, vamos a dejarlo tal cual, para poder ver un caso de error cuando algo falla.

Una vez que ya tenemos creados todos los tests para todos los métodos, veremos como correrlos a todos juntos. Para ello, clickeamos la carpeta que contiene a todos nuestros métodos y luego damos click en RUN


Esta parte es muy importante, ya que podemos cambiar el orden de ejecución (simplemente arrastrando el médoto). Esto sirve por ejemplo, cuando una petición X, necesita un token que lo genera la petición Y, entonces ejecutamos la petición Y, guardamos ese token en una variable y luego lo utilizamos en X.

Otra cosa importante, es que se puede ejecutar esta misma prueba varias veces, modificando el parámetro que viene en el input “Iterations”, y también podemos ponerles un tiempo en milisegundos del delay que debería tener una ejecución de otra.

En este caso yo ejecutaré el GET y el POST, que fue en donde yo coloqué los tests. Cuando ya tengo todo configurado, simplemente debemos clickear el botón azul de RUN


Y como se puede ver en la siguiente captura, podemos ver el resultado de todas las ejecuciones, con sus respectivos mensajes de error (en caso de que alguno falle)


Esto es todo por ahora! Pueden probar y comentar como les va con sus tests automatizados de API.

En un próximo tutorial veremos como mostrar estos resultados en Newman, que es un visualizador de reportes en formato HTML, para mostrar los resultados de estas ejecuciones de una manera más formal.

Espero que les sirva!
ANTRAX

12
Soluciones de Wargames / Solución CTF ICE s1-100
« on: October 21, 2021, 04:36:49 pm »

Hola a todos! En esta ocasión vamos a ver como solucionar el CTF ICE s1-100 desde cero y paso a paso.
Requesitos Previos a configurar en el CTF

Configuración del router

Al iniciar con el CTF, me topé con el problema, el cual me demandó mucho tiempo investigar. El mismo fue que la VM tenia una IP fija, la cual es 192.168.1.100 y mi router estaba configurado para asignar IPs con el rango 192.168.0.X, por lo que me tocó configurar previamente el router con el rango 192.168.1.X para que le asignara la IP correcta a la maquina virtual.


Encontrar la IP de la VM

Para poder encontrar la IP de la máquina virtual, utilicé NMAP y así poder mapear toda la red.

El parámetro que utilicé fue: nmap -sP 192.168.1.1-255


Como se puede ver en el screenshot, la IP de la maquina virtual es: 192.168.1.100
Fortalezas del sistema

ping

Una de las fortalezas de esta máquina virtual, es que no resuelve los ping que se hagan a la IP 192.168.1.100, lo cual permite despistar a los atacantes, e incluso detener algunos tipos de DoS del tipo ICMP que se hagan a la maquina virtual.


FTP

Otra fortaleza de la plataforma, es que a pesar de estar abierto el puerto 21 del FTP, este no es vulnerable, por lo cual no se puede acceder por ese medio ni explotarlo.


Usuarios

Los usuarios no tiene privilegios de root. Además genera un reporte con el incidente al intentar elevar privilegio con un usuario que no tiene permisos para ello.


Recolección de información - enumeración de puertos y servicios
El primer paso para resolver el CTF, fue recolectar información de los puertos abiertos, servicios corriendo en cada puerto y sus versiones. Para ello utilicé NMAP con los siguientes parámetros:

nmap -sV -O 192.168.1.100

Con el cual obtuve la siguiente información:


Vi puertos que se podrían explotar como el 21 de FTP, 22 con el SSH y vi que el puerto 80 estaba abierto, el cual me sirvió para saber si tiene página web.

Website

Al ingresar a You are not allowed to view links. Register or Login me topé con el sitio web de la máquina virtual.


Además noté que tiene algunas secciones más como las siguientes:

You are not allowed to view links. Register or Login


You are not allowed to view links. Register or Login


You are not allowed to view links. Register or Login


Esta última me llamó la atención ya que poseía varios mails y nombres de personas. En la mayoría de los casos, se pueden utilizar esos mismos nombres o mails como credenciales para ingresar al ssh o ftp en este caso, ya que los puertos de esos servicios estaban abiertos.
Pentesting

SSH

Al tener el puerto del SSH abierto, se puede intentar ingresar por ese medio


Solo resta averiguar usuarios y contraseñas. Para ello, crearé un diccionario con los nombres y correos electrónicos que aparecen en la página web y también combinaré sus nombres y apellidos intentando lograr credenciales válidas.


En total logré 71 combinaciones utilizando nombres, apellidos y mail. El paso siguiente es hacer un bruteforce usando esta lista para obtener el usuario y contraseña del SSH.

Para realizar el ataque, utilizare la herramienta ncrack, la cual es una tool desarrollada por la misma empresa que el NMAP.

ncrack -p 22 -U pass.txt -P pass.txt 192.168.1.100

En el archivo pass.txt tengo el listado o diccionario que cree con las combinaciones mencionadas anteriormente.


Después de unos minutos, la herramienta arrojó usuario y contraseña.

User: bbanter
Pass: bbanter


Al probarlo con el SSH de la maquina virtual, podemos ver que logramos ingresar.


Si volvemos a la maquina virtual y probamos las mismas credenciales, podremos ver que también podremos ingresar


Al intentar entrar a la carpeta FTP, me topé con que el usuario bbanter no tiene permisos


Por lo que intentaré loguearme como root colocando sudo su


Tampoco me deja entrar al /etc/shadow


Al no dejarme, voy a intentar romper alguno de los otros usuarios (aadams – ccoffee) para ver si alguno de ellos tiene mas privilegios.

Elevación de privilegios

Para ello volveré a usar ncrack, pero esta vez utilizando otro diccionario más extenso, ya que la última vez no salió. El diccionario que utilizaré será el famoso rockyou.txt

(You are not allowed to view links. Register or Login)

ncrack -p 22 –user ccoffee -P rockyou.txt 192.168.1.100
ncrack -p 22 –user aadams -P rockyou.txt 192.168.1.100



Como se puede ver en la captura, se pudo obtener la contraseña del usuario aadams. Nuevamente procederemos a probar si este usuario tiene privilegios en la plataforma.

Al probarla en el servidor, no tiene privilegios de root, pero si puede entrar al fichero /etc/shadow en donde se encontraba el usuario root con la contraseña hasheada.


root:$1$TOi0HE5n$j3obHaAlUdMbHQnJ4Y5Dq0:13553:0:::::

Romper pass de root

Utilizando John The Ripper y un diccionario, podemos probar si se puede obtener la password. Utilizaré el mismo diccionario rockyou.txt para hacer la prueba.

john.exe -wordlist:..\..\rockyou.txt ..\..\root.txt


Con esto hemos obtenido el user y pass de root

Usuario: root
Pass: tarot


Ahora si probaremos elevar privilegios. Para ello colocamos su nuevamente con el usuario aadams y ponemos la password que hemos obtenido.


Desencriptar CSV (CTF)

Al ingresar ahora a la carpeta /home/ftp me he topado con un archivo de salarios encriptado. Para poderlo descargar, simplemente puedo copiarlo al directorio del sitio web /var/www/htdocs y descargarlo con el navegador.


Una vez descargado, trataremos de romper el cifrado. Existen muchos tipos de cifrado, y tras probar con varios, logré dar con el correcto, el cual es aes128.

En una consola tecleamos openssl y dentro colocamos lo siguiente

enc -d -aes128 -in salary_dec2003.csv.enc -pass pass:tarot -out salario.txt

Esto generará un archivo llamado salario.txt con toda la información de ese CSV. Ahora solo resta abrirlo con exel para ver la información obtenida:


Como se puede ver en la imagen, se han obtenido los salarios de varias personas a pesar de haber estado encriptado.

Website

Además de esto, la página web también puede ser editada o eliminada.


Espero que les guste y les sirva para practicar!
ANTRAX

13
Underc0de / Underc0de APP
« on: October 21, 2021, 09:10:42 am »

Hola Underc0ders!

Queremos anunciar oficialmente el lanzamiento de la primer versión de nuestra app!
Por el momento solo esta disponible para Android, pero muy pronto estará disponible para iOS también. (la vamos a empezar a testear en breve)
Esta primer versión es una credencial digital, la cual acredita que son miembros de la comunidad y podrán usarla para tener descuentos en negocios y cursos.
Para poder usarla, deben estar registrados en Underc0de: You are not allowed to view links. Register or Login
Una vez logueados, les mostrará una credencial con sus datos y su actividad. Mientras mayor sea su actividad en el foro, más grande será el descuento en los negocios.
Al foro lo utilizamos para publicar dudas, dejar algún aporte, o responder algún post. Cualquiera de estas 3 cosas incrementarán los descuentos en la app.

Además cuenta con una sección de noticias flash, en donde podrán ver noticias cortitas de 2 parrafos para mantenerse con lo último que esta pasando en la red.

Próximamente estaremos sacando nuevas versiones con más funcionalidades y beneficios para ustedes!

Para descargarla, pueden buscarla en Play Store como "Underc0de"

Aprovecho para agradecer a todos los que colaboraron para realizarla

- Jioxep
- Alex
- WHK
- Denisse

Esperamos que la disfruten!
HAIL UNDERC0DE!

14
Hacking / Leak de Twitch completo (125gb)
« on: October 07, 2021, 06:23:28 pm »

Este miércoles el hacker anónimo publicó un archivo de 125 gigas en 4chan con el objetivo según él de causar más polémica y competitividad en una comunidad que ya de por sí considera tóxica. Una fuente de anónima de la compañía declaró al medio VGC que toda la información revelada es legítima, por lo que Twitch, la plataforma de streaming propiedad de Amazon, se enfrenta a un grave problema una vez su código fuente ha sido desvelado.

Entre lo publicado, destacan las cifras que cobran los streamers más populares del planeta en el mes de septiembre y los 100 que más han cobrado de agosto de 2019 a octubre de 2021. Cifras de auténtica locura entre las que destacan varios nombres.

Twitch afronta un grave problema

Si las dudas ante la plataforma no eran pocas en los últimos tiempos, algo así no hace más que acrecentarlas. Muchos streamers se sentirán indefensos ante la publicación de sus datos personales y ganancias económicas.

El streamer que más ganó en el mes de septiembre es Félix «xQc» Lengyel, con una mareante cantidad de 752.467 dólares, más del doble de lo que ha ganado el siguiente: summit1g con 362.987 dólares.


Entre los españoles el más destacado es Ibai Llanos habiendo ganado 164.827 dólares en septiembre, una cifra que más o menos pudimos conocer por una filtración del propio streamer en uno de sus directos.

De agosto de 2019 a octubre de 2021 el que más ganancias ha generado es CriticalRole con 9 millones y 626 mil dólares, seguido de xQc con cerca de 8 millones y medio. El español que más ha ganado en ese periodo de tiempo es Auronplay con algo más de 3 millones de dólares.

Cantidades apabullantes de un problema que acaba de comenzar y va a revolucionar internet en los próximos días.

Descarga del Leak completo por torrent: magnet:?xt=urn:btih:N5BLZ6XECNEHHARHJOVQAS4W7TWRXCSI&dn=twitch-leaks-part-one&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce


Fuente: esportmaniacos

15

Para continuar con la seguidilla de posts de Postman y de testeo de APIs, ahora vamos a ver que son las variables de entorno, las variables globales y como utilizarlas para hacernos la vida más facil a la hora de testear APIs.

Para este ejemplo, voy a usar la URL que vengo utilizando en todos estos tutoriales, que es la siguiente: You are not allowed to view links. Register or Login

Variables de entorno

Tal y como lo indica su nombre, una variable de entorno es en donde se guarda el entorno de trabajo. Estas se pueden crear de manera estática o dinámica. Para agregarlas, debemos clickear el ícono del ojo que aparece en la esquina superior derecha, luego clickeamos en “Add”


La declaración de variables es muy sencillo, simplemente colocamos el nombre de la variable en la columna “Variable” y su valor en la columna “Initial Value”


Seguido a esto, debemos activar el environment


Ahora lo que resta, es ir a un request de nuestra colección y reemplazar la URL por la variable que creamos. Para poderla usar, debemos poner la variable entre doble llaves. Es decir, debería quedar de la siguiente manera {{URL}} y si clickeamos en SEND, podremos ver que envía la petición con normalidad.


Esto sirve para evitar tener que poner la URL de forma manual en todas las peticiones.

Variables globales

La diferencia con las variables de entorno es que las globales son visibles y accesibles desde cualquier entorno con el que trabajemos. Por lo tanto, son comunes a todos los entornos de trabajo que se hayan creado.

Para crearlas es exactamente igual a las variables de entorno, solo que debemos clickear en Agregar, en la parte de “Globals”


El funcionamiento es el mismo a las variables de entorno, con la diferencia de que se pueden utilizar en diferentes entornos de trabajo.
Esto es todo por el momento! Muy pronto se viene un post sobre como automatizar testeos de APIs con postman.

Saludos,
ANTRAX

16
QA (Quality Assurance) / Testeo de APIs con Postman
« on: October 03, 2021, 02:11:19 pm »

En el tutorial anterior sobre APIs, vimos como testearlas con Swagger. En esta ocasión vamos a realizar los mismos ejercicios, pero utilizando Postman. Antes de empezar, voy a colocar la misma introducción del post anterior, para refrescar un poco la teoría sobre APIs. (Si ya lo leyeron en el post de Swagger, pueden saltarse esta primera parte)

¿Qué es una API?

El término API es una abreviatura de Application Programming Interfaces, que en español significa interfaz de programación de aplicaciones. De forma resumida podemos decir que se utiliza para permitir la comunicación entre dos aplicaciones a través de un conjunto de reglas.

Es esta comunicación podemos establecer como un módulo de un software interactúa con otro, para cumplir una o muchas funciones dependiendo de los permisos que les dé el propietario de la API a los desarrolladores de terceros.

De cara al usuario final, lo único que se ve de una API, son los resultados. Un ejemplo de esto, es cuando entramos a una aplicación móvil o web y nos permite loguear utilizando nuestra cuenta de Facebook o Google. En este caso, esa aplicación se esta conectando a la API de estas empresas para obtener tus datos de sesión.

Las API pueden ser privadas para el uso de una empresa, abiertas sólo para partners, o públicas para que cualquier desarrollador pueda interactuar con ellas. También es muy común ver APIs locales para que aplicaciones se comuniquen dentro de un mismo ambiente.

¿Para qué sirve una API?

Una de las principales funciones de una API es la de poder facilitarle el trabajo a los desarrolladores y ahorrar tiempo y dinero. Para explicar esto con un ejemplo y que quede claro, vamos a suponer que nos piden desarrollar una tienda virtual que tenga una web y una aplicación móvil. Esta tienda tendría una estructura como la siguiente:

    Versión web de la tienda (para acceder desde la PC o desde el movil de forma responsive)
    Versión mobile (para instalar en el móvil)
    Base de datos para almacenar los productos
    Módulo de pago

Cuando un usuario entra a la página web de la tienda y de 10 teléfonos compra 2, el sistema debería descontarlos del stock y nos quedarían 8 teléfonos. Si entramos desde la aplicación móvil y revisamos ese producto luego de la compra, deberíamos ver 8 productos y no 10.

Toda esta conexión se puede lograr a través de APIs, ahorrandole al desarrollador tener que escribir un código para la web y uno para la versión móvil, debido a que ambas plataformas consumen el mismo backend. (Esto es un ejemplo de una API local)

Por otro lado, en el listado de funcionalidades mencionamos al módulo de pago. En este caso para ahorrarnos tiempos de desarrollo, podemos usar APIs existentes para la pasarela de pago y así permitirle al usuario poder pagar a través deMercadoPago, Paypal o cualquier otra plataforma similar sin tener que desarrollar algo de cero. (Esto es un ejemplo de una API externa, debido a que estamos interactuando con una API no creada por nosotros)

¿Qué son los EndPoint y los métodos?

De forma resumida podemos decir que los EndPoint son las URLs de una API y cada EndPoint puede tener varios métodos. Los métodos son todas las formas que tenemos de poder interactura con ese EndPoint.

Entre los métodos más comunes encontramos a los siguientes:

    POST:crear un recurso nuevo.
    PUT: modificar un recurso existente.
    GET: consultar información de un recurso.
    DELETE: eliminar un recurso determinado.
    PATCH: modificar solamente un atributo de un recurso.

Para explicarlo con el ejemplo de la tienda podemos decir que con el método POST, podemos crear un nuevo producto. Con el método PUT podemos modificar un producto de la tienda, con el GET podemos traer todos los productos o un producto en específico, con el DELETE podemos eliminar el producto y con el PATCH podemos modificar un atributo de un producto.

¿Qué es Postman?

Postman es un cliente que permite gestionar peticiones a las APIs. Es una herramienta muy completa y muy utilizada, y su mayor ventaja es que permite crear tests automatizados. Otra de sus ventajas, es que ahora se puede usar la versión web y también la versión cliente, pudiendo sincronizar nuestras colecciones. Y también, nos permite compartir nuestras colecciones con nuestros compañeros de trabajo, lo cual la vuelve nuestra nueva mejor amiga.

Para empezar, debemos ir a la web de Postman y descargarlo. (You are not allowed to view links. Register or Login)

Abrimos el programa y nos vamos a Workspaces >> + New Workspace


Le colocamos un nombre y lo creamos.


Acá podemos invitar a nuestros compañeros para que puedan ver y colaborar en nuestro espacio de trabajo.

Una vez creado, debemos crear una colección. Las colecciones son basicamente el conjunto de peticiones que tendrá un endpoint. Para este caso, utilizaré la misma API que en el post anterior.

You are not allowed to view links. Register or Login


La colección que haré ahora, servirá para testear los metodos principales del endpoint “pet”


Una vez creada la colección, comenzaremos a agregar request. Uno por cada metodo que deseemos a testear. El primero será el GET para listar a todas las mascotas segun su estado.

Una vez creado el request, vamos al Swagger y vemos a que URL hay que realizarle el request.

Ejemplo método GET (Listar)


Y esa misma URL es la que debemos poner en el GET de Postman


Al clickear en SEND, podremos ver los resultados que devuelve la petición.

Algunas cosas a aclarar…

Para hacer este GET, debemos especificar si o si el estado. Es decir, si queremos listar mascotas disponibles, vendidas o pendientes. Swagger, nos da la opción de seleccionarlas desde la interface web. Pero en Postman debemos pasarla como un parámetro. Esto automáticamente la pondrá en la URL, o si la colocamos en la URL, de forma automática se colocará como parámetro.


Ejemplo método POST (Crear)

Para agregar un nuevo Request, debemos ir a los 3 puntos de nuestra colección y clickeamos en “Add Request”


Para el método POST, debemos enviarle un body tal cual indica la documentación de Swagger


Copiamos ese contenido del body, y dentro de Postman debemos pegarlo el body. Tener en cuenta de que debemos seleccionar la opción RAW e indicarle que es de tipo JSON


Al clickear en SEND, podremos ver que nos devuelve una respuesta con un Status 200, lo cual indica que se creó correctamente.

Ejemplo método PUT (Update/Actualizar)

Muy similar al anterior, colocamos en el Body, el JSON con las modificaciones a realizar. Recuerden que para este método es sumamente importante especificar el ID de la mascota, para que Postman sepa que mascota modificar.


Al clickear en el botón SEND, se enviará la petición y realizará el cambio. En este caso, actualicé el nombre de la mascota que creamos anteriormente.

Ejemplo método DELETE (Eliminar)

Con este último método, lo que haremos será eliminar una mascota. Para ello, debemos colocar el ID en la URL del request.


Al presionar SEND, esto eliminará a la mascota con ese ID.



Esto es todo por ahora, proximamente haré uno o dos posts de Postman más explicando como colocar variables y sobre como automatizar las ejecuciones de los tests.
Nos leemos en el próximo post!
ANTRAX

17
Criptomonedas / Como minar Solana (SOL) paso a paso
« on: October 02, 2021, 11:48:47 am »

You are not allowed to view links. Register or Login es una criptomoneda que esta creciendo muchisimo ultimamente y es por ello que decidí hacer una prueba y ponerme a minarla. Encontré muy poca información al respecto, pero por suerte no es muy dificil. Es por ello que decidí hacerles un pequeño tutorial por si también quieren minar esta cripto.

Minando Solana

Lo primero que vamos a necesitar, es el minero. En mi caso voy a usar You are not allowed to view links. Register or Login que lo pueden descargar de su página oficial.

Una dez descargado, lo descomprimimos y nos encontraremos con un archivo llamado start_miner.bat le damos click derecho >> Editar


Puede que no lo vean igual al mio, porque el mio esta modificado para optimizar mi placa, pero la linea que más importa, es la que esta resaltada en AZUL.

PhoenixMiner.exe -pool ethash.unmineable.com:3333 -wal SOL:MI_WALLET.Rig001 -pass x

Con esa linea debería bastar. Lo único que debemos modificar es el ID de nuestra wallet de Solana y el nombre del minero, que en mi caso le puse “Rig001” que es el nombre que se le pone para identificarlo.

Una vez hecho esto, guardamos los cambios, lo ejecutamos y comenzará a minar


A los resultados de lo minado, lo podremos ver en la siguiente web: You are not allowed to view links. Register or Login


Colocamos nuestra Wallet y podremos ver nuestros rendimientos.


Como pueden ver, es muy sencillo y facil de realizar. Espero que les sirva y les sea de utilidad.

Aprovecho para agradecerle a You are not allowed to view links. Register or Login por ayudarme con el armado de mi nuevo RIG, y justamente el fue quien me pidió este post.

Nos leemos en un próximo post.
ANTRAX

18
Criptomonedas / Overclocks para distintas Placas / Criptos
« on: September 20, 2021, 08:35:53 am »

En este post voy a ir dejando los distintos OC para las distintas placas dependiendo cada cripto que quieran minar.
La idea es que sea colaborativo y que ustedes también puedan dejar los OC que usan.



Software: MSI AfterBurner
Criptomoneda: RVN
GPU: 3090 RTX

Core Clock: -200
Memory Click: +600
Power Limit: 95%
Temp Limit: 80ºC
Fan Speed: 85%

Total: 71.58 MHS



Software: MSI AfterBurner
Criptomoneda: ETH
GPU: 3070 RTX

Core Clock: -200
Memory Clock: +1600
Power Limit: 55%
Temp Limit: 78ºC
Fan Speed: 75

Total: 63.4 MHS



Software: MSI AfterBurner
Criptomoneda: ETH
GPU: 3090 RTX

Core Clock: -200
Memory Click: +1100
Power Limit: 95%
Temp Limit: 80ºC
Fan Speed: 100%

Total: 120.10 MHS MHS



Software: HIVEOS
Criptomoneda: ETH
GPU: 3070 RTX

Core Clock: -200
Memory Clock: +2800
Power Limit: 150W
Fan Speed: 60

Total: 63.13 MHS



Espero sus comentarios!

19
Base de Datos / Solucion: Instalar Workbench en Windows 7 - 32 bits
« on: September 15, 2021, 09:04:09 pm »
Hola a todos!
Escribo este post debido a que varios alumnos de EGG estan teniendo problemas para instalar Workbench en Windows 7.
El problema está en que la última versión (8.x) son para computadoras más recientes, es decir, para procesadores de 64 bits.
La solución es simple, solo debemos descargar una versión compatible con nuestro procesador de 32 bits.

Para descargarlo, vamos a la siguiente web: You are not allowed to view links. Register or Login


Seleccionamos la versión 5.2.47 y descargamos la primer opción (MSI Installer)

Una vez descargado, procedemos con la instalación:







Al finalizar, ya podremos buscarlo en el menú de inicio y ejecutarlo


Eso es todo! Espero que les sirva!

Creditos: You are not allowed to view links. Register or Login

20

Hola Underc0ders! Para continuar con la seguidilla de posts sobre criptomonedas, hoy día les voy a enseñar a instalar y configurar HiveOS para que puedan armar sus propios rigs.

Para este experimento conté con la ayuda algunos miembros de Underc0de como de Lucas (me prestó componentes de una PC que no usaba), Ricardo (me regaló una mother con un i3), Jioxep (me ayudó con la instalación del rig), Rodo o “El Cresta” (siempre tirando tips de como optimizar absolutamente todo y salvando las papas cuando más se necesita), Juampi (el doble 5, que nos trajo tostados mientras instalabamos todo) y Roman de Compugarage a quien le compré la fuente de 750w para alimentar la placa.

Como les mostré en otra guía que hice sobre como minar ETH, yo tengo una GPU NVIDIA 3070, y esa fue la placa que usé para colocarla en este rig.


¿Qué es un Rig?

Es un sistema basado principalmente en tarjetas gráficas que trabajan para obtener el hash de un bloque y obtener así una recompensa. Un rig de minería se basa en los mismos componentes que un ordenador convencional, con la salvedad que en vez de una tarjeta gráfica, tenemos varias. La cantidad de tarjetas gráficas se ven limitadas por el diseño de la placa base y del chasis donde montemos las tarjetas gráfica

Obviamente para esta PoC solo usé una sola tarjeta gráfica, pero la idea es que tenga varias. En caso de querer ampliarla, voy a tener que cambiar varios componentes, como por ejemplo,

Componentes mínimos necesarios:

– Motherboard (que tenga PCI Express)
– Microprocesador (yo usé un i3)
– Ram (con 4gb debería bastar)
– Fuente (capaz de soportar la placa que vayamos a ponerle) > Revisar esta web: You are not allowed to view links. Register or Login
– GPU (en mi caso una 3070)
– Teclado
– Mouse
– Monitor
– Botón para el encendido (no es necesario, solo lo pusimos para que fuese más cómodo encenderla y apagarla)
– Pendrive con HiveOS (es live, no es necesario tener un HDD)

¿Qué es HiveOS?

HiveOS es una distro utilizada pura y exclusivamente para la minería. Posee un panel web y para poder monitorear en todo momento el comportamiento del rig. Además podemos cambiar parámetros desde esa misma UI.

También posee una app para el movil que es posible descargarla desde Play Store (You are not allowed to view links. Register or Login).

Configuración e instalación de HiveOS

Lo primero que debemos hacer, es ir a la web oficial de HiveOS y registrarnos. Con esta cuenta podremos configurar y poder ver el rendimiento de nuestro rig.


Colocamos un mail, user y password. Verificamos la cuenta con el código que nos llegará al correo y podremos entrar a nuestra cuenta.


A penas ingresamos a la cuenta, nos va a aparecer un recuerdro que se llama como el usuario que hayamos puesto, en mi caso Underc0de farm (granja). Y el resto todo en cero, debido a que lo debemos configurar.

Clickeamos en esa granja y seleccionamos “Rig” (también es posible configurar ASICs en caso de que tengamos)


A continuación completamos con un nombre y password (los tags y la descripción no son requeridos) y clickeamos en ADD para agregarlo.


Una vez hecho esto, veremos la siguiente pantalla, y atención porque es muy importante!


En esta pantalla, debemos descargar el archivo rig.conf clickeando en el botón “Download”. Este archivo es el que conectará nuestro Rig a nuestra cuenta de HiveOS.

Una vez descargado, debemos ir a la web de descarga, para bajar el sistema operativo. Para ello pueden clickear el link azul que dice “Download” mostrado en la imagen anterior o ir directamente al siguiente link: You are not allowed to view links. Register or Login

Descargamos la versión GPU (ya que vamos a minar utilizando la GPU)


En mi caso la bajé por torrent, pero pueden hacerlo por ZIP. Es lo mismo.

Lo otro que necesitan descargar (de esa misma página) es el programa llamado “Etcher” que sirve para hacer booteable el pendrive con HiveOS. Pueden usar Rufus también.


Para resumir, necesitamos descargar 3 archivos:

– HiveOS (La ISO y descomprimirla)
– El archivo de configuración del rig
– Etcher (e instalarlo)

Una vez que tenemos las tres cosas, abrimos Etcher, seleccionamos la imagen de HiveOS, la unidad USB en donde lo instalaremos y por último clickeamos en el botón FLASH!


Una vez que termine, abrimos la unidad USB en donde quemamos la ISO y le copiamos el archivo de configuración (rig.conf)


Con esto, ya tendremos lista nuestra unidad USB lista para bootear.

Una vez hecho esto, entramos nuevamente a la web de HiveOS con nuestra cuenta, clickeamos en nuestra granja y vamos a ver lo siguiente:


Cuando aparece el simbolito del WIFI con un signo de exclamación, es porque aún no esta conectado. Le damos unos minutos a que arranque el sistema operativo. Mientras tanto, vamos a configurar una Wallet. Para ello vamos al tab llamado “Wallets”


En mi caso voy a minar ETH, es por ello que pondré mi dirección de ETH y clickeamos en el botón “CREATE”

Si revisamos el monitor de nuestro rig, podremos ver algo como lo siguiente una vez que encienda. (se abre una terminal, carga nuestra configuración y queda a la espera para empezar a minar)


Ahora volvemos al sitio de HiveOS, al tab de Workers y deberíamos ver algo como esto:


Ahora lo que debemos hacer, es crear una nueva Flight Sheet. Para ello, vamos al tab de Flight Sheets y veremos lo siguiente


Clickeamos en el botón agregar y la creamos. Acá es en donde configuramos que tipo de Moneda vamos a minar, seleccionamos la Wallet que creamos en el paso anterior, que pool vamos a usar (yo siempre uso flexpool porque tiene un servidor en Brasil y el ping es menor), y por último seleccionamos que minero vamos a usar. Como yo siempre uso PhoenixMiner, selecciono ese. Por último, clickeamos en el botón “Create Flight Sheet”


Ahora para aplicar estos cambios, debemos volver a Workers y entrar a ese worker en particular. Para ello clickeamos en el nombre del rig.


Seguido a esto, clickeamos el tab “Flight Sheet” que aparece con un símbolo de advertencia y clickeamos el Cohete que aparece en esa pantalla.


Una vez hecho esto, nos aparecerá una advertencia y clickeamos en Aplicar.


Lo que hará esto, es instalar el minero en el rig, en este caso PhoenixMiner y comenzará de forma automática a minar el la pool que le indicamos en los pasos anteriores.


Si volvemos al overview de ese minero, podremos ver que ya empezó a minar a 51.73mhs. Es decir, con esto, ya dejamos listo nuestro rig andando.


Lo último que nos queda ahora, es overclockear la placa para que rinda al máximo. Para ello clickeamos en el ícono de la derecha (el que tiene forma de velocímetro) o podemos ir al tab de Overclocking. Cualquiera de los dos es lo mismo. Y colocamos los valores para esa placa.


Aplicamos los cambios, y después de unos segundos, podremos ver el impacto en nuestro Overview


sto es todo por ahora! Espero que les haya gustado y les sirva!

Nos leemos en otro post!
ANTRAX

Pages: [1] 2 3 ... 69