nodebotsmx /
NodeBots
Este es el repositorio de todos los bots que vayamos realizando durante los Meetups. Estos estaran divididos en C# y Node.JS
Loading repository data…
jocode / repository
Es este repositorio encontrarás temas básicos para iniciarse en la programación usando C++ como lenguaje de programación
C++ es un lenguaje de programación, es uno de los más utilizados en todo el mundo. Para programar en C++, se necesita un compilador y un editor. El compilador traduce el código fuente a código máquina (Código Binario), y el editor es el programa que nos colorea la sintaxis del lenguaje para poder escribir el código cómodamente,
Hay algunos programas que son compiladores y editores, se conocen como IDE (Entorno de desarrollo Integrado). por ejemplo.
Cualquiera que se escoja se debe descargar e instalar.
En el caso de usar Dev C++, al crear un nuevo proyecto debemos ir a Menu -> Nuevo -> Proyecto y allí escogemos el tipo de aplicación que queramos escoger.
Para ejecutar el programa, debemos previamente haberlo compilado. También podemos usar el botón de compilar y ejecutar
Para ignorar archivos por git, podemos usar la herramienta gitignore, que genera el archivo para usarlo, dependiendo del lenguaje o entorno en el que se trabaje.
Primero, debemos crear un nuevo proyecto, y luego crear un archivo llamado main.cpp, o el nombre que se desee. Luego de eso, debemos incluir las librerías, que son un conjunto de código que viene predefinido y que nos facilita el trabajo.
Para incluir una librería usamos la sentencia
#include <stdio.h>
int main(){
printf("Hola Mundo \n");
std::cout << "Hi everyone" << std::endl;
return 0;
}
stdio.h .h porque es una cabecera.
\n Es un operador de escape, el compilador lo detecta como un salto de línea.
int)iostream Es una librería que nos permite escribir y leer información por consola.
#include <iostream>
Para declarar un variable en C++¨, debemos primero colocar el tipo de dato. Por ejemplo:
int num = 31;
// Otra forma de delcarar y asignar valor es
int num{23};
Para evitar colocar prefijos a las funciones, es necesario especificar los espacios de nombre que vamos a utilizar, por ejemplo:
using namespace std;
// Si no usaramos los espacios de nombre, nos tocaría usar
std::cout << "Hola mundo \n Hola universo " << endl;
Si queremos que haya salto de línea, podemos usar el operador de escape \n, y así colocamos texto en una nueva línea.
bool y chartrue falsecharSi por ejemplo colocamos una palabra en una variable de tipo char, el compilador, sólo tomará el último caracter. En este caso usamos comillas simples
char letra = 'Hola mundo';
Para mostrar varios caracteres usamos comillas dobles y colocamos un *, al final de la palabra reservada char .
boolEs un tipo de variable lógico, 0 - 1, ó verdadero y falso. 0 == false 1 == true
Para declarar una variable booleana, indicamos el tipo de dato bool
bool variable = true; // false | true
floatSon variables que guardar números de coma flotante de baja precisión, son como decimales que no tienen muchos decimales (No tiene tanto espacio en la memoria).
En algunos casos, el compilador redondea el número a un valor superior o inferior.
float num = 5.23478;
doubleSon tambien números de punto flotante que tienen más precisión ó espacio que memoria que los float. Funciona para números con más caracteres.
double num = 12.3479835;
Son variables que no pueden ser modificadas durante la ejecución del programa. Lo valores que le asignemos no se pueden cambiar.
// Es una constante, su valor no se puede cambiar
const int numero = 11;
Son los que nos permiten realizar operaciones matemáticas.
int num1 = 2;
int num2 = 6;
int suma = num1 + num2;
+-*/%El operador de asignación general es =. Exiten otros como:
+= Suma un valor a la variable-= Resta un valor a la variable*= Resta un valor a la variable// Declaración;
int operacion;
// Asignación
operacion = 12;
// Operador de asignación
operacion *= 3;
Algunos ejemplos de operadpres de asignación son:
==!=>>=<<=Estos operadores son usamos en los condicionales y ciclos, donde comparamos dos valores para realizar una determinada acción.
&&
Si ambas condiciones se cumplen, retorna true||
Si alguna de las dos condiciones se cumple, retorna true.!
Niega una condición. Si es true, lo vuelve false y viciversa.La librería header Standard cmathdefine un rango de funciones trigonométricas y numéricas que puede usar en todos sus programas. A continuación se presenta una tabla con las funciones más útiles.
Img. Referencia Beginning C++ Ivor Horton (Pag. 40)
if (Condicionales)Permiten comparar dos variables para ejecutar una acción determinada. La condición se cumple siempre y cuando la condición sea verdadera.
if (numero1 < numero2){
cout << "Es menor" << endl;
} else if (numero1==numero2){
cout<<"Son iguales"<< endl;
} else {
cout << "Es mayor" << endl;
}
switchEs un tipo de condicional que dado un valor introducido los compara con los casos que tiene definido. Un ejemplo de switch en C++ es el siguiente
switch (c){
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
cout << "El una vocal." << endl;
break;
default:
cout << "Es una consonante" << endl;
break;
}
Son útiles para ordenar el código y explicar el código. Cuando se compila el programa, el compilador ignora estas líneas y nos las lee.
/**
* Comentario multilínea
*/
// Comentario de una sola línea
Estas estructuras nos permiten ejecutar bloques de códigos dada una condición.
whileEjecuta las sentencia siempre que la condición sea verdadera. La expresión se verfica en cada inicio de la iteración.
int i = 0;
while (i <= 5) {
cout << "Valor de i: " << i << endl;
// Aumentamos el valor de la variable
i++;
}
do whileEl bucle do-while es una variante del ciclo while. Este ciclo evalúa la expresión al final de cada iteración. Por lo que se garantiza que el ciclo se ejecute al menos una vez.
int a = 10;
do {
cout << "Valor de a: " << a << endl;
// Aumentamos el valor de la variable
a++;
} while (a <= 5);
forEl ciclo for ejecuta la primera expresión al iniciar el ciclo. Luego al inicio de cada iteración (Repetición) evalúa la segunda expresion y al final de cada iteración ejecuta la tercera expresion.
// Declaración de un array
char array[5];
array[0] = 'A';
array[1] = 'B';
array[2] = 'C';
array[3] = 'D';
array[4] = 'E';
// Ciclo for
for (unsigned int i = 0; i < sizeof(array) ; i++){
cout << array[i] << endl;
}
En este ejemplo, vemos algo llamado arreglo. Los arreglos son variables que tienen varias posiciones en memoria, lo que permiten almacenar más de un valor en una sóla referencia.
Para declarar un arreglo, lo hacemos igual que en una variable, colocando al final corchetes angulares indicando el tamaño del arreglo.
// Arreglo de tipo entero con 5 posiciones
int variable[5];
Para asignar valores al arreglo, debemos acceder a la posición y en ella colocar el valor que deseemos (Debe ser del mismo tipo de dato).
// Asignamos un valor al arreglo, en la posición 0
variable[0] = 12;
includeEs un operador del preprocesador, el preprocesador es una parte del compilador que verifica qué librerías se están importando en el código fuente. (#).
El operador #include, permite incluir librerías. Hay dos formas de incluir las librerías
#include <iostream> Busca los archivos en los recursos del compilador#include "iostream" Busca los archivos en la propia carpetadefine#define crea una macro, que es la asociación de un identificador o identificador parametrizado con una cadena de token. Una vez definida la macro,el compilador puede sustituir la cadena de token para cada aparición del identificador del archivo de código fuente.
#define suma(a,b) a+b
...
int valor = suma(2,5);
En este ejemplo, el compilador evalúa el identificador y al utilizarse, sustituye la cadena con la aparición del identificador.
Las funciones son una manera de encapsular una funcionalidad que quieres reutilizar, de manera que puedes llamar esa función con un solo nombre, y no tendrás que escribir el código entero cada vez que la utilices.
La declaración de una función en c++, va de la siguiente manera. tipo-dato-devolver nombre-funcion(){ //Código a ejecutar }
// Funcion suma
int sumar(int a, int b){
return a+b;
}
// Funcion que no retorna nada
void miFuncion(){
cout << "Yo no retorno nada" << endl;
}
Hay dos tipos de funciones
voidint, etc.También podemos definir parámetros por defecto a la función, de la siguiente manera.
void funcion(int a = 10){
cout << a+3 << endl;
}
De esta manera, ya el valor de a tiene predefinido 10, sin embargo este valor puede ser cambiado al pasar por parámetro un nuevo valor en la llamada de la función.
int main(){
function();
function(12);
return 0;
}
Son un tipo de variable estructurada, donde se puede almacenar varios datos sin importar del tipo que sea y que tenga relación entre ellas.
Haciendo relación con otros lenguajes, vendría siendo lo que se conoce como objetos.
// Definición de la estructura
struct Personaje {
int edad;
int telefono;
string nombre;
};
// Declaración y asignación de valores
Personaje juan;
juan.nombre = "Juan Marruecos";
juan.edad = 100;
juan.telefono = 3123;
cout << juan.nombre << endl;
En las estructuras también podemos declarar funciones y constructores. Los constructores son funciones que se inicializan al ser inicializadas las variables.
Ver ejemplo estructuras-2.cpp
namespace)Es una funcionalidad de C++ que permite crear encapsular a las variables para evitar conflictos cuando tienen el mismo nombre.
// Declaración de un espacio de nombre
namespace pueblo {
int calle = 10;
}
// Utilización del espacio de nombre
using namespace ciudad;
Son herramientas que nos permiten gestionar la memoria. Los punteros son variables que guardan la dirección en memoria.
& Operador de referencia, nos permite saber la dirección en memoria de las variables.
* Es un operador de indirección, es decir cambia el valor de memoria por el valor que contiene esa dirección.
cout << &numero << endl;
Cuando accedemos al puntero en un array, se accede a la posición 0. Los demás items están en las posiciones siguientes de la memoria. Para acceder a las direcciónes siguientes de memoria, só
Selected from shared topics, language and repository description—not editorial ratings.
nodebotsmx /
Este es el repositorio de todos los bots que vayamos realizando durante los Meetups. Estos estaran divididos en C# y Node.JS
BanHammer66 /
GHunt es una herramienta de OSINT para extraer información de cualquier cuenta de Google mediante un correo electrónico. Actualmente puede extraer: Nombre del dueño La última vez que se editó el perfil ID de Google Si la cuenta es un bot de Hangouts Servicios de Google activados (YouTube, Fotos, Mapas, News360, Hangouts, etc.) Posible canal de YouTube Posibles otros nombres de usuario Fotos públicas (P) Modelos de teléfonos (P) Firmwares de teléfonos (P) Software instalado (P) Reseñas de Google Maps (M) Posible ubicación física (M) Eventos de Google Calendar (C) Las funciones marcadas con una (P) requieren que la cuenta de destino tenga la configuración predeterminada de Allow the people you share content with to download your photos and videosen el archivo de álbumes de Google, o si el destino alguna vez usó Picasa vinculado a su cuenta de Google. Más info aquí . Aquellos marcados con una (M) requieren que las revisiones de Google Maps del objetivo sean públicas (lo son de forma predeterminada). Los marcados con una (C) requieren que el usuario tenga Google Calendar configurado como público (por defecto está cerrado) Capturas de pantalla 📰 Últimas noticias 10/02/2020 : Desde hace unos días, Google devuelve un 404 cuando intentamos acceder a los álbumes públicos de Google Photos de alguien, solo podemos acceder a él si tenemos un enlace de uno de sus álbumes. O esto es un error y se solucionará, o es una protección que necesitamos para encontrar la forma de evitarlo. 10/03/2020 : superado con éxito.🕺(cometer 01dc016) Requiere que el álbum "Fotos de perfil" sea público (es por defecto) 20/10/2020 : Google WebArchive ahora devuelve un 404 incluso cuando proviene del álbum "Fotos de perfil", por lo que el raspado de fotos está deshabilitado temporal (o permanentemente). (cometer e762543) Instalación Estibador La imagen de Docker se crea automáticamente y se inserta en Dockerhub después de cada inserción en este repositorio. Puede extraer la imagen de Docker con: docker pull mxrch/ghunt Luego, se puede invocar cualquiera de los scripts a través de: docker run -v ghunt-resources:/usr/src/app/resources -ti mxrch/ghunt check_and_gen.py docker run -v ghunt-resources:/usr/src/app/resources -ti mxrch/ghunt hunt.py <email_address> Instalación manual Asegúrese de tener instalado Python 3.7+. (Lo desarrollé con Python 3.8.1) Se requieren algunos módulos de Python que se incluyen requirements.txty se instalarán a continuación. 1. Chromedriver y Google Chrome Este proyecto utiliza Selenium y descarga automáticamente el controlador correcto para su versión de Chrome. ⚠️ Así que asegúrese de tener instalado Google Chrome. 2. Requisitos En la carpeta GHunt, ejecute: python -m pip install -r requirements.txt Adapte el comando a su sistema operativo si es necesario. Uso Para la primera ejecución y, a veces, después, deberá verificar la validez de sus cookies. Para hacer esto, corre check_and_gen.py. Si no tiene cookies almacenadas (por ejemplo: primer lanzamiento), se le pedirán las 4 cookies requeridas. Si son válidos, generará el token de autenticación y los tokens de Google Docs y Hangouts. Luego, puede ejecutar la herramienta de esta manera: python hunt.py myemail@gmail.com ⚠️ Le sugiero que cree una cuenta vacía solo para esto o use una cuenta en la que nunca inicie sesión porque, según su navegador / ubicación, volver a iniciar sesión en la cuenta de Google utilizada para las cookies puede desautorizarlas. ¿Dónde encuentro estas 4 cookies? Inicie sesión en accounts.google.com Después de eso, abra la ventana Herramientas de desarrollo y navegue hasta la pestaña Almacenamiento (Shift + F9 en Firefox) (Se llama "Aplicación" en Chrome). Si no sabe cómo abrirla, simplemente haga clic derecho en cualquier lugar y haga clic en "Inspeccionar Elemento". Luego encontrará todas las cookies que necesita, incluidas las 4. galletas 🛡️ Protegiéndose Con respecto a la recopilación de metadatos de su cuenta de Google Fotos: Dado que Google muestra "X requiere acceso" en el Panel de control de su cuenta de Google , puede imaginar que tuvo que autorizar explícitamente a otra cuenta para que pudiera acceder a sus imágenes; Pero este no es el caso. Cualquier cuenta puede acceder a su AlbumArchive (por defecto): panel de cuenta A continuación, le indicamos cómo verificar y corregir el hecho de que es vulnerable (que probablemente lo sea): vaya a https://get.google.com/albumarchive/ mientras está conectado con su cuenta de Google. Se le redirigirá automáticamente a la URL correcta de albumarchive ( https://get.google.com/albumarchive/YOUR-GOOGLE-ID-HERE). Después de eso, haga clic en los tres puntos en la esquina superior izquierda y haga clic en configuración ajuste de tres puntos Luego, desmarque la única opción allí: ajuste En otra nota, la cuenta de destino también será vulnerable si alguna vez ha utilizado Picasa vinculado a su cuenta de Google de cualquier forma o forma. Para obtener más detalles sobre esto, lea el comentario de PinkDev1 sobre el número 10 . Por ahora, la única solución (conocida) para esto es eliminar los álbumes de Picasa de su AlbumArchive. Gracias
FernandoCalmet /
🦄 Este repositorio contiene el aprendizaje esencial con el lenguaje de programación CSharp (C#). El propósito es tener un “roadmap” de aprendizaje sobre los conocimientos aplicados.
FRIB0II /
Este repositório tem como objetivo estudar POO em C#.
Borja95 /
Este es un repositorio que contiene un proyecto de ASP.NET MVC donde se validan cfdis o facturas ante el SAT, se realiza utilizando la api de la institución ya mencionada. El lenguaje de programación utilizado es C#.
tiagofga /
Este repositório tem como objetivo divulgar o conteúdo de Estruturas de Dados e Algoritmos em C.