elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ... 77
131  Programación / PHP / ¿Cómo mantener una sesión en PHP? en: 20 Marzo 2016, 04:18 am
Buenas noches caballeros, resulta que tengo un servidor PHP y quiero tener usuarios que sean capaces de registrarse e iniciar sesión, para mantener la sesión de cada uno.

El problema es que no se como funciona lo de las cookies para mantener sesión, lo que quiero es iniciar sesión con un cliente y que pasado un rato caduque la cookie restringiendo de nuevo el acceso.
Y que nadie sea capaz de acceder a ese contenido más que el cliente que tenga esas cookies.

¿que debería de hacer en PHP para hacer esto posible?.

Código, ¿cómo sería?, y ¿qué es lo más recomendable?.

Como adicional, dejo caer cual es la mejor manera de guardar los logins de los usuarios registrados Y saber si hay formas de detectar archivos en una página que tiene index vacío, me refiero a que si por ejemplo tengo un index.html vacio y en ese directorio tengo un archivo llamado 1091y30r9u9efum92uf901u90r1un3r.nada si ese archivo podría ser detectado por alguna técnica por un atacante o el atacante para encontrarlo tendría que ir metiendo random urls hasta encontrarlo.

Un saludo y mcuhas gracias socios.
132  Programación / Programación C/C++ / Re: funcion en c que pueda ser llamada con parámetros de distintos tipos en: 16 Marzo 2016, 01:08 am
Es lo que digo, en C++ se puede hacer con las platillas, pero en C, en tu código, estás presuponiendo que son enteros, mientras que la pregunta pide una función general para sumar entre diferentes tipos

Hombre pero en una función eso no se puede hacer.

Se podría crear una clase que almacene variables genéricas y trabajar con ellas con métodos como suma, resta... por ejemplo una clase numero generica y ponerla métodos.

Pero con una función, si la pasas variables genéricas de argumento, no puedes saber con que variable estas tratando (quizás haya alguna manera), al menos a priori.

Saludos.
133  Programación / Programación C/C++ / Re: funcion en c que pueda ser llamada con parámetros de distintos tipos en: 15 Marzo 2016, 23:42 pm
¿Cómo sumaríais después los números? (Es lo que pide el que pregunta XD)

En este caso recibe 2 punteros void, y los castea a enteros, accede a su contenido, y los suma, luego hace lo inverso pasa de int a *void que en este caso no vale para nada pero esta bien como ejemplo. Si quiere devolver solo la suma en entero, con una linea de return valdría, sin necesidad de "aux".

Código
  1. void* Sumar(void *x, void *y){
  2. int aux;
  3. aux = *(int*)x + *(int*)y;
  4. return (void*)&aux;
  5. }
  6.  
  7. int a = 3;
  8. int b = 4;
  9. printf("%d", *(int*)Sumar(&a, &b));
  10.  

XD.

Pero mira que fino queda en C++:

Código
  1. template<typename T>
  2.  
  3. T add(T a, T b){
  4. return a + b;
  5. }
  6.  
  7. int a = 3;
  8. int b = 4;
  9. std::cout << add(a, b);
  10.  

Un saludo.
134  Programación / Programación C/C++ / Re: Enviar archivo con HTTP POST a servidor PHP. en: 13 Marzo 2016, 20:00 pm
Hola socio, gracias por la respuesta. Como recomendastes he dejado de usar sockets y he pasado a usar las APIs.

El código sin embargo no funciona, os comento más abajo, primero lo muestro:

Código
  1. bool tracker::send_file(std::string _path)
  2. {
  3. HINTERNET hi;
  4. DWORD dwBytes;
  5.  
  6. if ((hi = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0)) == NO_ERROR){
  7. return false;
  8. }
  9.  
  10. if ((hi = InternetConnect(hi, L"web.com", INTERNET_DEFAULT_HTTP_PORT,
  11. NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0)) == NO_ERROR){
  12. std::cout << "error en connect";
  13. InternetCloseHandle(hi);
  14. return false;
  15. }
  16.  
  17. DWORD dwOpenRequestFlags = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP |
  18. INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS |
  19. INTERNET_FLAG_KEEP_CONNECTION |
  20. INTERNET_FLAG_NO_AUTO_REDIRECT |
  21. INTERNET_FLAG_NO_COOKIES |
  22. INTERNET_FLAG_NO_CACHE_WRITE |
  23. INTERNET_FLAG_NO_UI |
  24. INTERNET_FLAG_RELOAD;
  25.  
  26. if ((hi = HttpOpenRequest(hi,
  27. L"POST",
  28. L"/catcher.php",
  29. L"HTTP/1.1",
  30. NULL, NULL,
  31. dwOpenRequestFlags, 0)) == NO_ERROR){
  32. std::cout << "error en openrequest";
  33. InternetCloseHandle(hi);
  34. return false;
  35. }
  36.  
  37. std::string boundary = "-----------------------------autoupdater1234";
  38. std::string headers;
  39. headers += "Host: web.com\r\n";
  40. headers += "Content-Type: multipart/form-data; boundary=" + boundary;
  41.  
  42. HttpAddRequestHeadersA(hi, headers.c_str(), headers.length(), HTTP_ADDREQ_FLAG_ADD);
  43.  
  44. std::string request;
  45. std::string body;
  46.  
  47. std::ifstream filer("C:\\Users\\User\\Desktop\\ciclista.jpg", std::ifstream::ate | std::ifstream::binary);
  48. int size = filer.tellg();
  49. char* buffer = new char[size];
  50. filer.seekg(0, std::ios::beg);
  51. filer.read(buffer, size);
  52. filer.close();
  53. std::string content = std::string(buffer, size);
  54.  
  55. /*Body*/
  56. body += boundary + "\r\n";
  57. body += "Content-Disposition: form-data; name=\"archivo\"; filename=\"ciclista.jpg\"\r\n";
  58. body += "Content-Type: image/jpeg\r\n\r\n";//application/octet-stream\r\n\r\n multipart/form-data\r\n\r\n
  59. body += content;
  60. body += "\r\n";
  61. body += boundary + "\r\n";
  62. body += "Content-Disposition: form-data; name=\"boton\"\r\n";//"\r\n\r\n"
  63. body += "Enviar archivo\r\n";
  64. body += boundary + "--\r\n";
  65.  
  66. int a = body.length();
  67. char aux[10];
  68. _itoa(a, aux, 10);
  69.  
  70. /*Headers*/
  71. //request += "Host: web.com\r\n";
  72. request += "Content-Type: multipart/form-data; boundary=" + boundary + "\r\n";
  73. request += "Content-Length: " + std::string(aux) + "\r\n\r\n";//"\r\n";
  74.  
  75. //HttpAddRequestHeadersA(hi, request.c_str(), request.length(), HTTP_ADDREQ_FLAG_ADD);
  76.  
  77. /*Body*/
  78. request += body;
  79. std::cout << request.substr(0, 600) << request.substr(request.length() - 200, 200);
  80. //InternetSetOption(hi, INTERNET_OPTION_USERNAME, "username\0", 9);
  81. //InternetSetOption(hi, INTERNET_OPTION_PASSWORD, "password\0", 9);
  82. std::cout << body.length() << "  " << request.length() << std::endl;
  83. if (HttpSendRequest(hi, NULL, 0, (LPVOID)request.c_str(), request.length())== NO_ERROR){
  84. std::cout << "error send req";
  85. InternetCloseHandle(hi);
  86. return false;
  87. }
  88.  
  89. std::string res;
  90. char ch;
  91. while (InternetReadFile(hi, &ch, 1, &dwBytes))
  92. {
  93. if (dwBytes != 1)break;
  94. res += ch;
  95. }
  96.  
  97. InternetCloseHandle(hi);
  98. std::cout << res;
  99. }
  100.  

Y ahora os dejo lo que tengo en el PHP:

Código
  1. <form action="" method="post" enctype="multipart/form-data">
  2.    Subir archivo:
  3.    <input type="file" name="archivo" id="Seleccionar archivo" />
  4.    <input type="submit" name="boton" value="Enviar archivo" />
  5. </form>
  6.  
  7. <?php
  8. if($_FILES["archivo"]["name"]){
  9.      if ($_FILES["archivo"]["error"] > 0) {
  10.        echo $_FILES["archivo"]["error"] . "<br/>";
  11.      } else {
  12.          // Si no hubo ningun error, hacemos otra condicion para asegurarnos que el archivo no sea repetido
  13.          if (file_exists("" . $_FILES["archivo"]["name"])) {
  14.            echo $_FILES["archivo"]["name"] . " ya existe. ";
  15.          } else {
  16.           // Si no es un archivo repetido y no hubo ningun error, procedemos a subir a la carpeta /archivos, seguido de eso mostramos la imagen subida
  17.            move_uploaded_file($_FILES["archivo"]["tmp_name"],
  18.            "" . $_FILES["archivo"]["name"]);
  19.            echo "Archivo Subido <br />";
  20.          }
  21.      }
  22. }
  23. ?>
  24.  

Bueno, con el navegador funciona perfectamente y sube el archivo, y con mozilla firefox usando http live headers he tratado de copiar prácticamente los campos sin éxito, he estado buscando bastantes códigos (se que no es una buena solución, es lo peor que se puede hacer) pero de nada han servido.

Básicamente hay que delimitar el archivo por el boundary, la variable "content-length" pongo en ella todo lo que mando en el body es decir el contenido del archivo, el los boundary, Content-Disposition etc.

Citar
POST /catcher.php HTTP/1.1
Host: web.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Referer: http://web.com/catcher.php
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------283331266631290
Content-Length: 80890
-----------------------------283331266631290
Content-Disposition: form-data; name="archivo"; filename="ciclista.jpg"
Content-Type: image/jpeg
ÿØÿá824tn017ct09134n9t7n190347tv09q0924nct09DATOS ARCHIVO0QWECTQWTCQWT
Q48Y1V 384YNC09834NUTC
-----------------------------283331266631290
Content-Disposition: form-data; name="boton"

Enviar archivo
-----------------------------283331266631290--


Bien, ahora la petición que envío yo capturada con wireshark:

Citar
POST /catcher.php HTTP/1.1
Host: web.com
Content-Length: 81003
Connection: keep-alive
Cache-Control: no-cache

Content-Type: multipart/form-data; boundary=-----------------------------autoupdater1234
Content-Length: 80888
-----------------------------autoupdater1234
Content-Disposition: form-data; name="archivo"; filename="ciclista.jpg"
Content-Type: image/jpeg
q4w98n8934qynqv893y4ntARCHIVOQ0WY4CTN184
QWETCQWETQWTVQWETV
-----------------------------autoupdater1234
Content-Disposition: form-data; name="boton"

Enviar archivo
-----------------------------autoupdater1234--

Me salen 2 content-length pero aun corrigiendo eso falla, ahí ando. La cosa es que el content-length que "se supone estaría bien" es el que calculo yo que es el tamaño del body, pero la funcion automaticamente me pone el otro (el de toda la peticion incluyendo la cabecera), ¿como puedo cambiar eso?.

Un saludo y gracias. :)
135  Programación / Programación C/C++ / Enviar archivo con HTTP POST a servidor PHP. en: 11 Marzo 2016, 13:27 pm
Hola, a todos llevo muchos días sin estar al tanto del foro, pero he vuelto a programar un poco, y he tenido un problema para enviar un archivo con HTTP POST, os dejo el código del cliente C++ y del servidor PHP.

Hay otros métodos como PUT pero no me interesan. Quiero enviarlo por POST que funciona para todo tipo de archivos. La idea es que al subirlo envio 2 variables, una con el nombre del archivo y su extensión y otra con el contenido del archivo en binario. Quizás pueda tener que ver con el fallo.

Ojo, solo quiero subir todos los bytes del archivo y su nombre en 2 variables (nombre y contenido), y con el script PHP guardarlo. La idea sería poner cifrado a los bytes del archivo y desencriptarlo en el PHP, pero eso ya más adelante. Pero por eso necesito enviar el archivo en una variable como un array de bytes.

Código
  1. //_path C:\\Users\\User\\Desktop\\bicieta.jpg
  2. bool tracker::send_file(std::string _path)
  3. {
  4. WSADATA wsa;
  5. SOCKET sock;
  6. sockaddr_in addr;
  7. std::string data;
  8. std::string peticion;
  9.  
  10. WSAStartup(MAKEWORD(2, 0), &wsa);
  11.  
  12. if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == SOCKET_ERROR){
  13. WSACleanup();
  14. return CODIGO::ERR_RED;
  15. }
  16.  
  17. memset(&addr, 0, sizeof(addr));
  18. addr.sin_family = AF_INET;
  19. addr.sin_port = htons(IPPORT_HTTP);
  20. addr.sin_addr.s_addr = inet_addr("71.60.170.21");//ip
  21. domain = "web.com";//quitar
  22. std::ifstream filer(_path, std::ifstream::ate | std::ifstream::binary);
  23. int size = filer.tellg();
  24. char* buffer = new char[size];
  25. filer.seekg(0, std::ios::beg);
  26. filer.read(buffer, size);
  27. filer.close();
  28.  
  29. char aux[8];
  30. int len;
  31. data = "n=" + _path.substr(_path.find_last_of('\\') + 1) + "&c=";
  32. len = data.size();
  33. data += std::string(buffer, size);
  34. len = len + size;
  35. _itoa(len, aux, 10);
  36.  
  37. peticion += "POST /catcher.php HTTP/1.1\r\n";
  38. peticion += "Host: " + domain + "\r\n";
  39. //peticion += "Cookie: " + cookie + "\r\n";
  40. peticion += "Content-type: application/octet-stream\r\n";//multipart/form-data también he probado..
  41. peticion += "Content-length: " + std::string(aux);// data.length();
  42. peticion += "\r\n\r\n";
  43. peticion += data;
  44.  
  45. if (connect(sock, (struct sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR){
  46. closesocket(sock);
  47. WSACleanup();
  48. return CODIGO::ERR_RED;
  49. }
  50.  
  51. if (send(sock, peticion.c_str(), peticion.length(), 0) == SOCKET_ERROR){
  52. closesocket(sock);
  53. WSACleanup();
  54. return CODIGO::ERR_RED;
  55. }
  56.  
  57. char respuesta[1024];
  58. memset(respuesta, 0, sizeof(respuesta));
  59. if (recv(sock, respuesta, 1024, 0) == SOCKET_ERROR){
  60. closesocket(sock);
  61. WSACleanup();
  62. return CODIGO::ERR_RED;
  63. }
  64.  
  65. return CODIGO::CORRECTO;
  66. }
  67.  

Código
  1. <?
  2. $name = htmlspecialchars($_POST["n"]);
  3. $content = htmlspecialchars($_POST["c"]);
  4. file_put_contents($name, $content);
  5. ?>
  6.  

Bueno el cliente funciona sin problemas, sin embargo el php me dice que la variable "c" esta vacía. "empty". Luego la función salta error, pero no entiendo porque cuando le estoy enviando el contenido a la variable "c".

Edito: Y sí el código no es de lo mejorcito estoy de pruebas xd, hay chapuzillas y faltan cosas para que quede la función como tal.

Un saludo y gracias.

Edito: Bueno lo acabo de enviar como application/octet-stream y me daba error de que el filename estaba vacio que no se porque, de todas maneras lo elimine y dije que el server pusiera el nombre y solo mandar el contenido de la imagen, y se ha subido con éxito solo que al ver la imagen me dice que hay error y no me deja verla :""D.. bueno quizas no lo habra porque tiene 0 bytes.. por lo mismo que me daba error de que el nombre estaba vacio, la variable del contenido también esta vacia, quizás sea por el htmlgetspecialchars.

Lo suyo sería hacerlo con el boundary.. pero no entiendo porque de esta manera no deja. Solo quiero mandar los bytes en una variable cifrados y que al llegar los desencripte y los meta en un archivo.

Bueno continuando un poco la mejor manera creo que es enviandolo con el application/x-www-form-urlencoded, recibe la variable del nombre correctamente y el contenido a medias 1,900kb cuando el archivo es de 80kb, así que luego al abrir la foto me dice que no la puede mostrar. Creo que es el htmlgetspecialchars que lo corta al encontrar un caracter o algo porque los 80kb se mandan por wireshark. Sin el specialshars se corta en el 1,6kb XD.

Habrá un caracter nulo que corte el array o algo :).

Seguramente haya que usar octet-stream pero en el PHP me aparecen nulas cuando las mando con ese formato.
136  Foros Generales / Noticias / Re: EE.UU. invita a hackear al Pentágono en: 3 Marzo 2016, 18:01 pm
Jaja "hackea el pentagono", pero si hackeas un colegio y subes medio punto la nota de tu hija te caen 50 años en la cárcel.

Yankees...
137  Sistemas Operativos / Windows / NDIS driver en windows 10 - ARP spoofing windows en: 27 Febrero 2016, 15:47 pm
Buenos días a todos, siento que ya no me conecte mucho al foro pero bueno como ya sabéis esto va por rachas.

Como algunos sabréis estaba haciendo un sniffer para windows 10 y anteriores versiones. Anteriormente el sniffer funcionaba bien y era capaz de realizar ARP spoofing, interceptar paquetes y modificarlos que ahí era por donde me quede la última vez que me funcionó.

Para hacer el ARP spoofing necesitaba usar un driver NPF para poder inyectar los paquetes ARP spoofeados donde mando un ARP response con mi MAC asociandola a la IP del router como sabréis. Lo que ocurre es que los paquetes ARP donde asocio mi MAC la IP del router son bloqueados en drivers de nivel más bajo que el NPF (Intermediate drivers, NDIS...) y no salen a la red, aunque el wireshark del atacante los capture.

Os dejo un link donde viene muy bien explicado:
https://www.winpcap.org/docs/docs_412/html/group__NPF.html

NPF funciona correctamente y manda el paquete a la NIC correspondiente sin error luego el problema es lo que ocurre más allá de usar el protocol driver, el paquete una vez enviado a la NIC pasa por drivers intermedios hasta salir y es allí donde uno filtro lo capa impidiendo el ARP spoofing en windows 10 y probablemente en 8 también. Lo que necesito saber es cual es el driver que filtra ese paquete en última instancia para de alguna manera suplantarlo por una versión de driver anterior al mismo.

En windows 10 (principal SO) las versiones de NDIS que tengo son: VirtualBox Host-Only Network 6.0, Wi-Fi 6.50, Ethernet 6.30. En windows 7 (VirtualBox): No pude comprobarlos por un error de la PS. En windows 10 (VirtualBox): Ethernet 6.0. Quizás las versiones NDIS anteriores no tengan implementado el filtro.

Todas las máquinas virtuales usan adaptador puente de red y cuando utilizo mi programa de ARP spoofing es capaz de spoofear las máquinas virtuales y las máquinas virtuales spoofean el SO principal, pero no son capaces de spoofear paquetes de fuera de la red.

El caso es que con máquinas virtuales no puedo comprobar si funciona en otras versiones de windows porque como driver de última instancia usan el de windows 10 al ser máquinas virtuales, así que es perder el tiempo, necesitaría probar con los SOs instalados en la BIOS directamente.
Si alguien hiciera una prueba de si le funciona en su windows el ARP spoofing le estaría agradecido y que me diera información de los drivers de red que usa.

El caso es que con máquinas virtuales no puedo comprobar si funciona en otras versiones de windows porque como driver de última instancia usan el de windows 10 al ser máquinas virtuales, así que es perder el tiempo, necesitaría probar con los SOs instalados en la BIOS directamente.

Drivers NDIS windows 10: ndis.sys, ndisuio.sys, ndisimplatform.sys, ndisvirtualbus.sys, ndiscap.sys, ndistapi.sys, ndiswan.sys. Tanto en el primario como en el de la máquina virtual.

Drivers NDIS windows 7: ndis.sys, ndisuio.sys, ndistapi.sys, ndiswan.sys, ndiscap.sys.

Vemos que se han añadido al menos 2 drivers intermedios: ndisimplatform.sys(Network Adapter Multiplexor Protocol service), ndisvirtualbus.sys (Virtual Network Adapter Enumerator service).

Creo que en windows 7 si que funcionaría (al menos con las primeras versiones de sus drivers al igual con windows 10 ya que antes me funcionaba hasta que modifico sus drivers de red), si ese fuera el caso, supongo que tendría que hacer algo como reinstalar los drivers afectados de windows 7 en windows 10... como nunca he tratado con drivers no sabría como hacerlo pero seguro habrá alguna manera como desinstalar el driver que bloquea los paquetes una vez detectado o bypassear su filtro ARP.

Continuará...

https://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwib5dj-_5rLAhXC0hoKHZ7zC7QQFgggMAA&url=http%3A%2F%2Fwww.ipcsit.com%2Fvol29%2F004-ICSST2012-S013.pdf&usg=AFQjCNEd2xNu_jS1FBga6oMv2pSw41tYdg

Saludos.

138  Programación / .NET (C#, VB.NET, ASP) / Re: Regex.Matches() error de uso C# en: 21 Febrero 2016, 23:18 pm
Buenas elektro, gracias por la respuesta.

Al final ya lo conseguí resolver:

Código
  1. "<div class=\"logo\">(\n\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s)<a href=\".*?\""
  2.  

Al final he aprendido un poco a usar los regex aunque seguro se puede simplificar eso XD, supongo que habrá algo para que ignore.. mañana lo miraré con más tiempo.

Respecto a lo de Singleline entendí mal lo que hacía entonces XD.

Al final con la página conseguí hacerlo funcionó como lo esperado al menos esta vez, de todas maneras gracias por las alternativas las echaré un vistazo por el tema de eficiencia y demás, y probaré tu código socio, muchas gracias y un saludo.
139  Programación / .NET (C#, VB.NET, ASP) / Re: Regex.Matches() error de uso C# en: 21 Febrero 2016, 19:36 pm
Te falta especificar las opciones o flags adecuadas:
Código
  1. Regex r = new Regex("<div class=\"logo\">.*<a href=\".*\"", RegexOptions.Singleline | RegexOptions.IgnoreCase);

Buenas socio, gracias por la respuesta. El parametro SingleLine solo detiene el match hasta el primer \n eso no es lo que interesa, porque de hecho en el match creo que aparece un \n entre <div class=\"logo\"> y <a href=... por eso puse el .* por si había tabuladores \n etc.

Pero vamos muy raro, debería de salir sin poner nada, y probando con lo tuyo obtengo casi todo el HTML.. seguiré probando. De todas formas con lo de single lane si que sale algo, porque si no pones nada no sale nada :P.

PD: y sí era un error de corta pega.

Saludos.

Edito: También  pasa una cosa muy rara, la respuesta que recibo del servidor la intento mostrar en Messagebox.Show() y no sale nada, sin embargo tiene contenido cuando depuro, también me pasa con los matches que trato de mostrar las subcadenas que encuentra y no las muestra con MB, sin embargo las voy almacenando en una String que muestro al final y esa si que funciona un poco raro vaya. :xD :xD :xD

La idea es que saque todos los links del HTML que cumplan esas condiciones, con las flags SingleLine y IgnoreCase me sale esta salida:

Citar
<div class="logo">
                                <a href="/link/qa/"
                                   title="titulo"
                                   data-mixpanel="panel">
                                    <img src="...............

Se debería detener en la segunda línea y buscar otros 40 links que debe de haber en la página.

La clave está en probar en esta página: https://regex101.com/r/vN3sH3/41

Solo me interesa "/link/qa".

Es por el salto de linea, no se como seguir matcheando después de el. Si están en la misma línea si que funcionaría el div y el href pero no es el caso.
140  Programación / .NET (C#, VB.NET, ASP) / Regex.Matches() error de uso C# en: 21 Febrero 2016, 18:22 pm
Hola,

Código
  1. Regex r = new Regex("<div class=\"logo\">.*<a href=\".*\"");
  2.  
  3.                foreach (Match m in r.Matches(responseData))
  4.                {
  5.                    MessageBox.Show(m.Value);
  6.                }
  7.  

No encuentra coincidencias (matches), sin embargo hay varias. ¿que le falla a la expresión?.

Le digo que empiece en <div class=\"logo\"> que continue independientemente de lo que haya hasta llegar a <a href=\" y que siga hasta llegar a la siguiente doble comilla.

HTML de la página:

Código
  1. div class="logo">
  2.                                <a href="/randomlink/here/"
  3.  

No entra siquiera en el bucle, 0 matches found.

Saludos, gracias.

Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ... 77
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines