Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - seth

#141
Dudas y pedidos generales / Re:Ipv4 ipv6
Septiembre 07, 2016, 11:36:47 AM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#142
Python / Re:Taller de web scrapping, consumo de apis, etc
Septiembre 07, 2016, 11:35:51 AM
Que raro que ya vi dos consultas en el irc sobre esto, pero nadie se pone a practicar
#143
Dudas y pedidos generales / Re:Pastas Térmicas
Septiembre 06, 2016, 05:05:20 PM
La diferencia entre con y sin, es que con te anda la computadora y sin se rompe
Si no haces overclocking pone la que te vendan en cualquier negocio de electronica o computacion, va a andar bien. Saca el disipador, limpia tanto el disipador como el procesador con alcohol, espera que se evapore, pone un poquito de pasta en el medio del procesador y volve a armar
#144
Mas casos de usos: tenes un servidor en tu casa y queres conectarte desde otro lado para bajar archivos, como la ip cambia necesitas un dominio que apunte a la ip correcta

creo que You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login y You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login tienen eso gratis
#145
fijate que en la configuracion hay lineas que son ignoradas, seguramente empiezan con # o algun otro caracter raro. hace lo mismo con esa para que no se ejecute. Tambien la podes borrar
#147
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Lo estas corriendo desde una consola?
::) ::)

no le des doble click, correlo desde cmd o powershell
#148
Te falta /opt/lampp/modules/mod_ssl.so
Es para usar https, asi que si no lo necesitas podes comentar la linea que te dice ahi
#149
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

La fila 1, columna 1 se desplaza a la posición 10, 50?
Si

Es la posicion 10, 50 de la pantalla, no de la matriz
#150
Dudas y pedidos generales / Re:En que me afecta un SQLi
Septiembre 01, 2016, 07:16:27 PM
Puede haber SQLi en cualquier programa que use sql, no necesariamente una web
#151
Lo estas corriendo desde una consola? no se deberia cerrar
#152
Dudas y pedidos generales / Re:PHP comandos eval()
Agosto 31, 2016, 09:02:19 PM
tenes que usar  FILE_APPEND, en el link que pase yo lo explica
#153
Es la posicion del label
#154
Dudas y pedidos generales / Re:PHP comandos eval()
Agosto 31, 2016, 01:26:51 AM
Tambien podes escribir un archivo de texto en el mismo servidor donde esta el php, es mas facil que una db
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#155
Soluciones de Wargames / Re:Completando CTF Mr. Robot
Agosto 30, 2016, 06:50:51 PM
me quedaron unas dudas

nmap estaba con setuid, no? como se dieron cuenta?
ademas es una version muy vieja. La mia no tiene --interactive. Sigue existiendo con otro nombre?
#156
Donde lo vas a hostear? si es en un host gratuito o en uno hackeado, te conviene php porque es lo que mas se usa
ademas, hay muchos tutoriales de php apuntados a principiantes

Si podes elegir cualquiera, seguramente con node o python lo harias mas rapido
#157
Bueno, no se por que esto está en off topic, pero arrancamos con el primer post (el que puede lo manda a python? o capaz talleres underc0de, donde corresponda)

Vamos a usar python 2.7
Para hacer peticiones http vamos a usar la libreria requests. Es facil de usar y tiene buena documentacion (leanla cuando quieran hacer algo que no expliqué): You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Cuando vean codigo corranlo, no se queden con lo que yo les digo que hace. Tambien puede ser util y modificandolo para ver que pasa.

Todos saben que es http, no? Es el protocolo que se usa en las webs. https es http cifrado y para nuestro uso va a ser exactamente lo mismo porque eso lo maneja la libreria.
Cada vez que abris una web, el navegador se conecta al servidor y le hace una peticion. Cada vez que mandas un formulario, lo mismo. También cuando carga css, imagenes, javascript, etc. (si, se pueden reusar conexiones pero queda afuera de esto que voy a explicar).
La mayoria de estas peticiones son del tipo GET. En las peticiones get, todos los parametros se pasan en la url. A veces, cuando mandas un formulario se usa POST en lugar de GET. En POST, podes mandar datos que no van por la url, van por otro lado, y por lo tanto pueden ser mas grandes.
Hay mas métodos que no se suelen usar en webs.

Hagamos un get al index del foro:
Código: python
import requests #importa la libreria requests

resultado = requests.get("https://underc0de.org/foro/index.php") #dentro del modulo requests, busca la funcion get
print resultado.text #el resultado es un objeto con varios metodos y propiedades, por ahora usamos .text

Como se hacer eso? está en el link que pasé de la libreria
Si da un error de la libreria requests, hay que instalarla con pip install requests

Eso nos va a imprimir el html del indice del foro. Esto del web scrapping se trata de sacar datos, asi que vamos a tratar de sacar la cantidad de usuarios en linea. Nos importa buscar donde está ese dato y que tiene alrededor, como para poder hacer que el programa lo identifique:
Código: html5
			<p class="inline stats">
1738 Visitantes, 209 Usuarios (16 Arañas, 2 Oculto(s))
</p>


Quiero sacar ese 209, que va a ir cambiando, y mostrarlo con el programa.
Hay varias formas de sacar eso. Nosotros no vamos a tratar de parsear el html, si no que vamos a hacerlo de una forma un poco mas bruta, con expresiones regulares. Vieron cuando en un buscador podes poner * y ? para que hagan de comodines? las expresiones regulares son algo asi, pero muchisimo mas potentes.
En python hay que usar el modulo re:
Código: python
import re

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

Se usa asi:
Cita de: pythonYou are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login("regexp", "string")
Donde regexp es la expresion regular y string es el texto en el que va a buscar (en nuestro caso, resultado.text)
Por ejemplo:
Código: python
import re
print re.search("planeta", "hola mundo")
print re.search("mundo", "hola mundo")

El primer print va a devolver None, porque no encontró "planeta" en "hola mundo" y el segundo va a devolver un objeto del tipo SRE_Match. Esto nos permite hacer un if:
Código: python
import requests
import re

resultado = requests.get("https://underc0de.org/foro/index.php")


if re.search("underc0de", resultado.text):
    print "se encontro underc0de en el html del index"
else:
    print "no se encontro underc0de en el html del index"


if re.search("elefante", resultado.text):
    print "se encontro elefante en el html del index"
else:
    print "no se encontro elefante en el html del index"


Hasta ahi es lo mismo que las funciones de busqueda en cadenas, pero podemos usar muchos caracteres que en una expresion regular tienen un significado especial.
Por ejemplo, un . va a ser un comodin que matchea con cualquier caracter:
Código: python
import re

regexp = "unde.c0de"
texto = "underc0de"
if re.search(regexp, texto):
    print texto + " matchea con " + regexp
else:
    print texto + " NO matchea con " + regexp

eso va a entrar por el true
Si quiero que el . sea interpretado como un . literal, hay que escaparlo asi: \.
Reemplazando en el ejemplo anterior las variables por esto, no va a matchear:
Código: python
regexp = "unde\.c0de"
texto = "underc0de"

Pero asi si:
Código: python
regexp = "unde\.c0de"
texto = "unde.c0de"


Con un * va a matchear el caracter anterior entre 0 e infinitas veces. Ejemplos:
Código: python
regexp = "under*c0de"
texto = "underc0de"

Código: python
regexp = "under*c0de"
texto = "underrrc0de"

Código: python
regexp = "under*c0de"
texto = "undec0de"

Los tres matchean. También podemos combinar eso con un ., que matchearia casi cualquier cosa:
Código: python

regexp = ".*"
texto = "underc0de"


Esto no nos está alcanzando, porque nosotros queremos extraer datos. Esto se hace envolviendo en parentesis la parte que va a matchear con los datos que queremos. Para ver que es lo que matchearon los parentesis, usamos el metodo .groups() del objeto que nos devuelve .search():
Código: python

import re

resultado = re.search("un(.*)de", "underc0de")
print resultado.groups()

El resultado:
Código: text
('derc0',)

Eso es una tupla, que en este caso tiene un solo resultado. Tambien pueden haber dos:
Código: python

import re

resultado = re.search("u(.*)r(.*)e", "underc0de")
print resultado.groups()

Resultado:
Código: text
('nde', 'c0d')


Vamos con otro caso:
Código: python
import re

resultado = re.search("und(.*)de", "underc0de underc0de")
print resultado.groups()


Que va a devolver? "erc0" o "erc0de underc0"? Resulta que el * va a matchear todo lo que pueda, asi que devuelve algo que probablemente no sea lo que buscamos:
Código: text
('derc0de underc0',)
Para que matchee lo minimo posible hay que agregarle un ?:
Código: python
import re

resultado = re.search("und(.*?)de", "underc0de underc0de")
print resultado.groups()


Esto es muy util, por ejemplo, si tenemos un html asi:
Código: html5
<div id="sidebar"><div id="dato_que_queremos">EL DATO ACA</div></div>

La expresion regular que queremos es esta:
Código: text
<div id="dato_que_queremos">(.*?)</div>

Sin el ? tambien va a traer el </div>

Para acceder a cada dato particular podemos usar .group(ID+1), donde ID es el indice de la tupla. Hay que sumarle 1 porque .group(0) devuelve todo lo que matcheo, no solo lo que va entre parentesis.
Volvamos a lo de sacar el 209 de aca:
Código: html5
<p class="inline stats">
1738 Visitantes, 209 Usuarios (16 Arañas, 2 Oculto(s))
</p>


La expresion regular puede ser esta:
Código: text
Visitantes, (.*?) Usuarios


Y el codigo nos quedaria asi:
Código: python

import requests
import re

web = requests.get("https://underc0de.org/foro/index.php")
regexp = 'Visitantes, (.*?) Usuarios'
resultado = re.search(regexp, web.text)
print resultado.group(1)

Eso nos imprime la cantidad de usuarios conectados

Ahora quiero sacar la lista de los ultimos mensajes publicados, esa que sale abajo. El html es asi:
Código: html5

<dl id="ic_recentposts" class="middletext">
<dt><strong><a href="https://underc0de.org/foro/dudas-generales-121/la-ram/msg104688/?topicseen#msg104688" rel="nofollow">Re:Ocupar la memoria RAM de procesos inutiles</a></strong> por <a href="https://underc0de.org/foro/profile/selohu/">selohu</a> (<a href="https://underc0de.org/foro/dudas-generales-121/">Dudas y pedidos generales</a>)</dt>
<dd><strong>Hoy</strong> a las 07:14:59 pm</dd>
<dt><strong><a href="https://underc0de.org/foro/dudas-generales-121/kali-payload-y-no-ip-ataque-fuera-lan/msg104687/?topicseen#msg104687" rel="nofollow">Re:kali payload y no-ip ataque fuera lan</a></strong> por <a href="https://underc0de.org/foro/profile/blackdrake/">blackdrake</a> (<a href="https://underc0de.org/foro/dudas-generales-121/">Dudas y pedidos generales</a>)</dt>
<dd><strong>Hoy</strong> a las 07:11:33 pm</dd>
<dt><strong><a href="https://underc0de.org/foro/dudas-generales-121/android-duda-base-de-datos/msg104686/?topicseen#msg104686" rel="nofollow">Re:Android -  Duda Base de Datos para camareros en un bar</a></strong> por <a href="https://underc0de.org/foro/profile/seth/">seth</a> (<a href="https://underc0de.org/foro/dudas-generales-121/">Dudas y pedidos generales</a>)</dt>
<dd><strong>Hoy</strong> a las 07:10:00 pm</dd>
<dt><strong><a href="https://underc0de.org/foro/dudas-generales-121/dudas-sin-aclarar/msg104685/?topicseen#msg104685" rel="nofollow">Re:Empezar en las ramas de Phishing y Programación</a></strong> por <a href="https://underc0de.org/foro/profile/blackdrake/">blackdrake</a> (<a href="https://underc0de.org/foro/dudas-generales-121/">Dudas y pedidos generales</a>)</dt>
<dd><strong>Hoy</strong> a las 07:08:29 pm</dd>
<dt><strong><a href="https://underc0de.org/foro/dudas-generales-121/stub-limpio-server-detectado-por-que/msg104684/?topicseen#msg104684" rel="nofollow">Re:stub limpio server detectado, por que?</a></strong> por <a href="https://underc0de.org/foro/profile/blackdrake/">blackdrake</a> (<a href="https://underc0de.org/foro/dudas-generales-121/">Dudas y pedidos generales</a>)</dt>
<dd><strong>Hoy</strong> a las 07:06:05 pm</dd>
<dt><strong><a href="https://underc0de.org/foro/dudas-generales-121/symlink/msg104683/?topicseen#msg104683" rel="nofollow">Re:Symlink</a></strong> por <a href="https://underc0de.org/foro/profile/blackdrake/">blackdrake</a> (<a href="https://underc0de.org/foro/dudas-generales-121/">Dudas y pedidos generales</a>)</dt>
<dd><strong>Hoy</strong> a las 07:03:10 pm</dd>
<dt><strong><a href="https://underc0de.org/foro/dudas-generales-121/que-me-aconsejan-en-ventiladores-y-muestras-de-mis-datos/msg104682/?topicseen#msg104682" rel="nofollow">Re:Que me aconsejan en ventiladores y muestras de mis datos.</a></strong> por <a href="https://underc0de.org/foro/profile/selohu/">selohu</a> (<a href="https://underc0de.org/foro/dudas-generales-121/">Dudas y pedidos generales</a>)</dt>
<dd><strong>Hoy</strong> a las 06:35:01 pm</dd>
</dl>


La complicacion es que queremos matchear varios posts con una sola regexp, para eso vamos a usar re.findall():
Código: python

import requests
import re

web = requests.get("https://underc0de.org/foro/index.php")
regexp = '<dt><strong><a href=".*?" rel="nofollow">(.*?)</a></strong>'
resultado = re.findall(regexp, web.text)
print resultado

Presten atencion a que usamos .*? para que matchee con cualquier url, pero no nos interesa capturarlas.
Nos va a imprimir una lista. Cada elemento de esa lista es uno de los matches:
Código: text
[u'Re:[Ayuda] Window no se monta en el grub (est\xe1 cifrado)', u'Re:Saber ID De Un objeto JQuery ?', u'Re:Ocupar la memoria RAM de procesos inutiles', u'Re:kali payload y no-ip ataque fuera lan', u'Re:Android -  Duda Base de Datos para camareros en un bar', u'Re:Empezar en las ramas de Phishing y Programaci\xf3n', u'Re:stub limpio server detectado, por que?']


Ahora, si agregamos parentesis para capturar las urls nos va a devolver una lista de tuplas, donde cada tupla tiene la url y el titulo del post:
Código: python
import requests
import re

web = requests.get("https://underc0de.org/foro/index.php")
regexp = '<dt><strong><a href="(.*?)" rel="nofollow">(.*?)</a></strong>'
resultado = re.findall(regexp, web.text)
print resultado

Código: text
[(u'https://underc0de.org/foro/dudas-generales-121/(ayuda)-window-no-se-monta-en-el-grub-(-esta-cifrado)/msg104690/?topicseen;PHPSESSID=ub91qif2cdbng1itkjomd0g646#msg104690', u'Re:[Ayuda] Window no se monta en el grub (est\xe1 cifrado)'), (u'https://underc0de.org/foro/dudas-generales-121/saber-id-de-un-objeto-jquery/msg104689/?topicseen;PHPSESSID=ub91qif2cdbng1itkjomd0g646#msg104689', u'Re:Saber ID De Un objeto JQuery ?'), (u'https://underc0de.org/foro/dudas-generales-121/la-ram/msg104688/?topicseen;PHPSESSID=ub91qif2cdbng1itkjomd0g646#msg104688', u'Re:Ocupar la memoria RAM de procesos inutiles'), (u'https://underc0de.org/foro/dudas-generales-121/kali-payload-y-no-ip-ataque-fuera-lan/msg104687/?topicseen;PHPSESSID=ub91qif2cdbng1itkjomd0g646#msg104687', u'Re:kali payload y no-ip ataque fuera lan'), (u'https://underc0de.org/foro/dudas-generales-121/android-duda-base-de-datos/msg104686/?topicseen;PHPSESSID=ub91qif2cdbng1itkjomd0g646#msg104686', u'Re:Android -  Duda Base de Datos para camareros en un bar'), (u'https://underc0de.org/foro/dudas-generales-121/dudas-sin-aclarar/msg104685/?topicseen;PHPSESSID=ub91qif2cdbng1itkjomd0g646#msg104685', u'Re:Empezar en las ramas de Phishing y Programaci\xf3n'), (u'https://underc0de.org/foro/dudas-generales-121/stub-limpio-server-detectado-por-que/msg104684/?topicseen;PHPSESSID=ub91qif2cdbng1itkjomd0g646#msg104684', u'Re:stub limpio server detectado, por que?')]


Les dejo como ejercicio hacer una funcion que devuelva una lista con todos los nombres de los usuarios que aparecen abajo de " Usuarios activos en los últimos 25 minutos:", llamarla y mostrar el resultado. Cuando lo tengan o se traben posteen el codigo

Puede ser que tengan que escapar algunos caracteres especiales, aunque lo dudo. Si hace falta, acuerdense de que es escapan con \
También puede ser que hagan una expresion regular que matchee con mas datos que los que buscamos. Por ejemplo, puede ser que traiga los nombres de los usuarios que salen al lado de los titulos de los posts. Pueden tratar de hacer una expresion regular mas compleja, o capaz dos: una que matchee el div en el que estan los datos y otra que saque los usuarios de ahi adentro.

#158
Aprende sql con cualquier tutorial que encuentres, una vez que sepas los basico, pasarte a sqlite es muy facil. Yo use You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login pero capaz encontras algo mejor

Si bien el diseño ya lo tenes mas o menos hecho, podes googlear sobre modelado conceptual, modelado fisico y normalizacion de bases de datos


Lo del servidor yo pensaba que, por ejemplo, podes querer ver desde la computadora del que maneja la caja cuanto se recaudó en el dia. No vas a pedirle a todos los mozos que te digan cuando tienen sumado y hacer la cuenta a mano, lo mas logico seria tener toda la informacion en una sola db. Un servidor puede ser tranquilamente una computadora que esta atras de la barra o metida abajo de tu cama (no va a ser lo mas confiable, pero una vez que sabes que funciona todo, el costo de un vps es muy bajo para un bar)
Igual no te compliques, segui con una db por dispositivo como lo tenes pensado
#159
El idioma del teclado hace que puedas poner o no la ñ y te cambia la posicion de los caracteres especiales, no tiene nada que ver con esto

ejecuta "pwd" para saber si estas en el directorio correcto y "ls -l" para ver que carpetas hay ahi adentro
#160
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login