Diseño e implementación de un sistema de protección contra el ataque de inyección SQL, en un servidor vulnerable utilizando herramientas Open Access.

Actualmente, hay un incremento sustancial del uso de las telecomunicaciones, así como un incremento de inversión en tecnología por las organizaciones, también se tiene la necesidad de mejorar y automatizar procesos en distintas industrias u organizaciones, lo que conlleva a tener información sensibl...

Full description

Autores:
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2021
Institución:
Universidad Distrital Francisco José de Caldas
Repositorio:
RIUD: repositorio U. Distrital
Idioma:
spa
OAI Identifier:
oai:repository.udistrital.edu.co:11349/29053
Acceso en línea:
http://hdl.handle.net/11349/29053
Palabra clave:
Pentesting
Inyección SQL
Kali Linux
Firewall de aplicaciones web
Ingeniería en Telecomunicaciones - Tesis y disertaciones académicas
Firewalls (Informática)
SQL (Lenguaje de programación de computadores)
Open Access (Programa para computador)
Procesadores de palabras
Pentesting
SQL Injection
Kali Linux
Web application firewall
Rights
License
Atribución-NoComercial-SinDerivadas 4.0 Internacional
id UDISTRITA2_6e98c0a654437271b3d617264176eb1e
oai_identifier_str oai:repository.udistrital.edu.co:11349/29053
network_acronym_str UDISTRITA2
network_name_str RIUD: repositorio U. Distrital
repository_id_str
dc.title.spa.fl_str_mv Diseño e implementación de un sistema de protección contra el ataque de inyección SQL, en un servidor vulnerable utilizando herramientas Open Access.
dc.title.titleenglish.spa.fl_str_mv Design and implementation of a protection system against the SQL injection attack, in a vulnerable server using Open Access tools.
title Diseño e implementación de un sistema de protección contra el ataque de inyección SQL, en un servidor vulnerable utilizando herramientas Open Access.
spellingShingle Diseño e implementación de un sistema de protección contra el ataque de inyección SQL, en un servidor vulnerable utilizando herramientas Open Access.
Pentesting
Inyección SQL
Kali Linux
Firewall de aplicaciones web
Ingeniería en Telecomunicaciones - Tesis y disertaciones académicas
Firewalls (Informática)
SQL (Lenguaje de programación de computadores)
Open Access (Programa para computador)
Procesadores de palabras
Pentesting
SQL Injection
Kali Linux
Web application firewall
title_short Diseño e implementación de un sistema de protección contra el ataque de inyección SQL, en un servidor vulnerable utilizando herramientas Open Access.
title_full Diseño e implementación de un sistema de protección contra el ataque de inyección SQL, en un servidor vulnerable utilizando herramientas Open Access.
title_fullStr Diseño e implementación de un sistema de protección contra el ataque de inyección SQL, en un servidor vulnerable utilizando herramientas Open Access.
title_full_unstemmed Diseño e implementación de un sistema de protección contra el ataque de inyección SQL, en un servidor vulnerable utilizando herramientas Open Access.
title_sort Diseño e implementación de un sistema de protección contra el ataque de inyección SQL, en un servidor vulnerable utilizando herramientas Open Access.
dc.contributor.advisor.none.fl_str_mv Cadena Muñoz, Ernesto
dc.subject.spa.fl_str_mv Pentesting
Inyección SQL
Kali Linux
Firewall de aplicaciones web
topic Pentesting
Inyección SQL
Kali Linux
Firewall de aplicaciones web
Ingeniería en Telecomunicaciones - Tesis y disertaciones académicas
Firewalls (Informática)
SQL (Lenguaje de programación de computadores)
Open Access (Programa para computador)
Procesadores de palabras
Pentesting
SQL Injection
Kali Linux
Web application firewall
dc.subject.lemb.spa.fl_str_mv Ingeniería en Telecomunicaciones - Tesis y disertaciones académicas
Firewalls (Informática)
SQL (Lenguaje de programación de computadores)
Open Access (Programa para computador)
Procesadores de palabras
dc.subject.keyword.spa.fl_str_mv Pentesting
SQL Injection
Kali Linux
Web application firewall
description Actualmente, hay un incremento sustancial del uso de las telecomunicaciones, así como un incremento de inversión en tecnología por las organizaciones, también se tiene la necesidad de mejorar y automatizar procesos en distintas industrias u organizaciones, lo que conlleva a tener información sensible en dispositivos y en la red. Debido a esto, se hace indispensable buscar la manera de proteger la información, ya que, actualmente existen cada vez más ciberdelincuentes desarrollando y ejecutando nuevos ataques cibernéticos que vulneran la disponibilidad, integridad o confidencialidad de equipos e información personal o corporativa. Es bien sabido que la información es un activo muy importante y todo el tiempo puede estar en riesgo de ser vulnerado (Najar Pacheco & Suárez Suárez, 2015). Después de realizar una amplia investigación sobre los ataques más comunes y significativos de estos días, se encuentra que la Open Web Application Security Project (OWASP) que es una organización internacional cuyo objetivo principal es determinar y combatir los ataques informáticos, tiene un TOP10 con los riesgos informáticos más importantes en aplicaciones web, el ataque que encabeza este TOP es el de ataque por inyección SQL (Structured Query Language). Dado esto se plantea el diseño e implementación de un proceso que permita la detección y mitigación del ataque de inyección SQL, mediante un conjunto de técnicas y herramientas de seguridad Open Access que orienten a obtener un método eficaz y viable económicamente para poder ser implementado por quien lo requiera (OWASP, 2017). La metodología utilizada para el proyecto fue la siguiente, inicialmente se definieron algunos escenarios de ataque de Inyección SQL los cuales fueron ejecutados en el servidor vulnerable DVWA (Damn Vulnerable Web Application) y mediante estos se obtenía información sensible de la aplicación como los nombres y cantidad de columnas de la base de datos, los usuarios registrados, contraseñas y versión de la misma, se realizaron primero pruebas manuales, es decir, ejecutando el código directamente en el campo ID de la página web de DVWA, se desarrolló un script en Python desde el cual se efectuó una mayor cantidad de ataques al servidor. Después de una investigación sobre las técnicas utilizadas para mitigar la vulnerabilidad de Inyección SQL se encontró que la implementación de un WAF (Firewall de Aplicaciones Web) es una solución muy viable y eficaz para minimizar el riesgo de que sea explotada la vulnerabilidad (ORACLE, 2021); así que se encontraron varias soluciones de WAF Open Source que podrían ser utilizadas entre ellas está Raptor WAF, Octupus WAF y Modsecurity. Teniendo en cuenta lo anterior se llevaron a cabo las pruebas de ataque según los escenarios definidos pero esta vez con cada uno de los WAF activos, se ejecutaron los ataques manuales, desde el script en Python y también utilizando la herramienta SQLMap desde la cual se detecta y se explota la vulnerabilidad ejecutando ataques automáticos y encontrando la información que se puede exponer, la prueba se realiza con cada WAF activo e inactivo para encontrar información de la base de datos de la aplicación. De los tres WAF utilizados para las pruebas de penetración se obtuvieron resultados diferentes, en las pruebas manuales dos de los tres WAF reconocieron todos los ataques como maliciosos y los bloquearon, uno de ellos solo reconoció la mitad de los ataques como maliciosos y fueron bloqueados, cuando se ejecutaron los ataques desde Python se logró evidenciar que uno de los WAF destacó entre los otros ya que soportó un gran número de ataques simultáneos mientras otro de estos se apagó y dejó de funcionar al recibir una cantidad de ataques.
publishDate 2021
dc.date.created.none.fl_str_mv 2021-06-24
dc.date.accessioned.none.fl_str_mv 2022-05-19T17:08:01Z
dc.date.available.none.fl_str_mv 2022-05-19T17:08:01Z
dc.type.degree.spa.fl_str_mv Monografía
dc.type.driver.spa.fl_str_mv info:eu-repo/semantics/bachelorThesis
dc.type.coar.spa.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
format http://purl.org/coar/resource_type/c_7a1f
dc.identifier.uri.none.fl_str_mv http://hdl.handle.net/11349/29053
url http://hdl.handle.net/11349/29053
dc.language.iso.spa.fl_str_mv spa
language spa
dc.rights.*.fl_str_mv Atribución-NoComercial-SinDerivadas 4.0 Internacional
dc.rights.coar.fl_str_mv http://purl.org/coar/access_right/c_abf2
dc.rights.uri.*.fl_str_mv http://creativecommons.org/licenses/by-nc-nd/4.0/
dc.rights.acceso.spa.fl_str_mv Abierto (Texto Completo)
rights_invalid_str_mv Atribución-NoComercial-SinDerivadas 4.0 Internacional
http://creativecommons.org/licenses/by-nc-nd/4.0/
Abierto (Texto Completo)
http://purl.org/coar/access_right/c_abf2
dc.format.mimetype.spa.fl_str_mv pdf
institution Universidad Distrital Francisco José de Caldas
bitstream.url.fl_str_mv http://repository.udistrital.edu.co/bitstream/11349/29053/5/license.txt
http://repository.udistrital.edu.co/bitstream/11349/29053/1/LuqueTovarAngelaLizeth%2cBravoBuilesCristianBernardo2021.pdf
http://repository.udistrital.edu.co/bitstream/11349/29053/2/LuqueTovarAngelaLizeth%2cBravoBuilesCristianBernardo2021Anexos.rar
http://repository.udistrital.edu.co/bitstream/11349/29053/3/Licencia%20de%20uso%20y%20publicacion%20de%20los%20autores%20para%20publicar_.pdf
http://repository.udistrital.edu.co/bitstream/11349/29053/4/license_rdf
http://repository.udistrital.edu.co/bitstream/11349/29053/6/LuqueTovarAngelaLizeth%2cBravoBuilesCristianBernardo2021.pdf.jpg
http://repository.udistrital.edu.co/bitstream/11349/29053/7/Licencia%20de%20uso%20y%20publicacion%20de%20los%20autores%20para%20publicar_.pdf.jpg
bitstream.checksum.fl_str_mv 997daf6c648c962d566d7b082dac908d
688643e52f2b126f3ee7c3b6f7c5e450
6a28a482bfbc22a45fbbcc2934ec603d
338a31b7713acb553a0dc5f9c252a62a
217700a34da79ed616c2feb68d4c5e06
2e3a42aa802d504dc09fb4e127a6d866
9f75ba266978cd8e2630768f31553e06
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Institucional Universidad Distrital - RIUD
repository.mail.fl_str_mv repositorio@udistrital.edu.co
_version_ 1814111215672098816
spelling Cadena Muñoz, ErnestoLuque Tovar, Angela LizethBravo Builes, Cristian Bernardo2022-05-19T17:08:01Z2022-05-19T17:08:01Z2021-06-24http://hdl.handle.net/11349/29053Actualmente, hay un incremento sustancial del uso de las telecomunicaciones, así como un incremento de inversión en tecnología por las organizaciones, también se tiene la necesidad de mejorar y automatizar procesos en distintas industrias u organizaciones, lo que conlleva a tener información sensible en dispositivos y en la red. Debido a esto, se hace indispensable buscar la manera de proteger la información, ya que, actualmente existen cada vez más ciberdelincuentes desarrollando y ejecutando nuevos ataques cibernéticos que vulneran la disponibilidad, integridad o confidencialidad de equipos e información personal o corporativa. Es bien sabido que la información es un activo muy importante y todo el tiempo puede estar en riesgo de ser vulnerado (Najar Pacheco & Suárez Suárez, 2015). Después de realizar una amplia investigación sobre los ataques más comunes y significativos de estos días, se encuentra que la Open Web Application Security Project (OWASP) que es una organización internacional cuyo objetivo principal es determinar y combatir los ataques informáticos, tiene un TOP10 con los riesgos informáticos más importantes en aplicaciones web, el ataque que encabeza este TOP es el de ataque por inyección SQL (Structured Query Language). Dado esto se plantea el diseño e implementación de un proceso que permita la detección y mitigación del ataque de inyección SQL, mediante un conjunto de técnicas y herramientas de seguridad Open Access que orienten a obtener un método eficaz y viable económicamente para poder ser implementado por quien lo requiera (OWASP, 2017). La metodología utilizada para el proyecto fue la siguiente, inicialmente se definieron algunos escenarios de ataque de Inyección SQL los cuales fueron ejecutados en el servidor vulnerable DVWA (Damn Vulnerable Web Application) y mediante estos se obtenía información sensible de la aplicación como los nombres y cantidad de columnas de la base de datos, los usuarios registrados, contraseñas y versión de la misma, se realizaron primero pruebas manuales, es decir, ejecutando el código directamente en el campo ID de la página web de DVWA, se desarrolló un script en Python desde el cual se efectuó una mayor cantidad de ataques al servidor. Después de una investigación sobre las técnicas utilizadas para mitigar la vulnerabilidad de Inyección SQL se encontró que la implementación de un WAF (Firewall de Aplicaciones Web) es una solución muy viable y eficaz para minimizar el riesgo de que sea explotada la vulnerabilidad (ORACLE, 2021); así que se encontraron varias soluciones de WAF Open Source que podrían ser utilizadas entre ellas está Raptor WAF, Octupus WAF y Modsecurity. Teniendo en cuenta lo anterior se llevaron a cabo las pruebas de ataque según los escenarios definidos pero esta vez con cada uno de los WAF activos, se ejecutaron los ataques manuales, desde el script en Python y también utilizando la herramienta SQLMap desde la cual se detecta y se explota la vulnerabilidad ejecutando ataques automáticos y encontrando la información que se puede exponer, la prueba se realiza con cada WAF activo e inactivo para encontrar información de la base de datos de la aplicación. De los tres WAF utilizados para las pruebas de penetración se obtuvieron resultados diferentes, en las pruebas manuales dos de los tres WAF reconocieron todos los ataques como maliciosos y los bloquearon, uno de ellos solo reconoció la mitad de los ataques como maliciosos y fueron bloqueados, cuando se ejecutaron los ataques desde Python se logró evidenciar que uno de los WAF destacó entre los otros ya que soportó un gran número de ataques simultáneos mientras otro de estos se apagó y dejó de funcionar al recibir una cantidad de ataques.Currently, there is a substantial increase in the use of telecommunications, as well as an increase in investment in technology by organizations, there is also the need to improve and automate processes in different industries or organizations, which leads to having sensitive information on devices and In the net. Due to this, it is essential to find a way to protect information, since there are currently more and more cybercriminals developing and executing new cyber attacks that violate the availability, integrity or confidentiality of computers and personal or corporate information. It is well known that information is a very important asset and can be at risk of being violated all the time (Najar Pacheco & Suárez Suárez, 2015). After conducting extensive research on the most common and significant attacks these days, it is found that the Open Web Application Security Project (OWASP) which is an international organization whose main objective is to determine and combat computer attacks, has a TOP10 with the The most important computer risks in web applications, the attack that leads this TOP is the attack by SQL injection (Structured Query Language). Given this, the design and implementation of a process that allows the detection and mitigation of the SQL injection attack is proposed, through a set of techniques and Open Access security tools that guide to obtain an efficient and economically viable method to be implemented by whoever required (OWASP, 2017). The methodology used for the project was as follows, initially some SQL Injection attack scenarios were defined which were executed on the vulnerable DVWA server (Damn Vulnerable Web Application) and through these, sensitive information about the application such as names and quantity was obtained. of database columns, registered users, passwords and version of the same, manual tests were carried out first, that is, by executing the code directly in the ID field of the DVWA web page, a Python script was developed from which carried out a greater number of attacks to the server. After an investigation on the techniques used to mitigate the SQL Injection vulnerability, it was found that the implementation of a WAF (Web Application Firewall) is a very viable and effective solution to minimize the risk of the vulnerability being exploited (ORACLE, 2021 ); so several Open Source WAF solutions were found that could be used among them is Raptor WAF, Octupus WAF and Modsecurity. Taking into account the above, the attack tests were carried out according to the defined scenarios, but this time with each of the active WAFs, the manual attacks were executed, from the Python script and also using the SQLMap tool from which it is detected. and the vulnerability is exploited by executing automatic attacks and finding the information that can be exposed, the test is carried out with each active and inactive WAF to find information from the application database. Of the three WAFs used for the penetration tests, different results were obtained, in the manual tests two of the three WAFs recognized all the attacks as malicious and blocked them, one of them only recognized half of the attacks as malicious and were blocked, When the attacks were executed from Python, it was possible to show that one of the WAFs stood out among the others since it withstood a large number of simultaneous attacks while another of these was turned off and stopped working after receiving a number of attacks.pdfspaAtribución-NoComercial-SinDerivadas 4.0 Internacionalhttp://creativecommons.org/licenses/by-nc-nd/4.0/Abierto (Texto Completo)http://purl.org/coar/access_right/c_abf2PentestingInyección SQLKali LinuxFirewall de aplicaciones webIngeniería en Telecomunicaciones - Tesis y disertaciones académicasFirewalls (Informática)SQL (Lenguaje de programación de computadores)Open Access (Programa para computador)Procesadores de palabrasPentestingSQL InjectionKali LinuxWeb application firewallDiseño e implementación de un sistema de protección contra el ataque de inyección SQL, en un servidor vulnerable utilizando herramientas Open Access.Design and implementation of a protection system against the SQL injection attack, in a vulnerable server using Open Access tools.Monografíainfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fLICENSElicense.txtlicense.txttext/plain; charset=utf-87167http://repository.udistrital.edu.co/bitstream/11349/29053/5/license.txt997daf6c648c962d566d7b082dac908dMD55open accessORIGINALLuqueTovarAngelaLizeth,BravoBuilesCristianBernardo2021.pdfLuqueTovarAngelaLizeth,BravoBuilesCristianBernardo2021.pdfTrabajo de gradoapplication/pdf4876248http://repository.udistrital.edu.co/bitstream/11349/29053/1/LuqueTovarAngelaLizeth%2cBravoBuilesCristianBernardo2021.pdf688643e52f2b126f3ee7c3b6f7c5e450MD51open accessLuqueTovarAngelaLizeth,BravoBuilesCristianBernardo2021Anexos.rarLuqueTovarAngelaLizeth,BravoBuilesCristianBernardo2021Anexos.rarAnexos del trabajo de gradoapplication/octet-stream269301http://repository.udistrital.edu.co/bitstream/11349/29053/2/LuqueTovarAngelaLizeth%2cBravoBuilesCristianBernardo2021Anexos.rar6a28a482bfbc22a45fbbcc2934ec603dMD52open accessLicencia de uso y publicacion de los autores para publicar_.pdfLicencia de uso y publicacion de los autores para publicar_.pdfLicencia y autorización de los autores para publicarapplication/pdf318272http://repository.udistrital.edu.co/bitstream/11349/29053/3/Licencia%20de%20uso%20y%20publicacion%20de%20los%20autores%20para%20publicar_.pdf338a31b7713acb553a0dc5f9c252a62aMD53metadata only accessCC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8811http://repository.udistrital.edu.co/bitstream/11349/29053/4/license_rdf217700a34da79ed616c2feb68d4c5e06MD54open accessTHUMBNAILLuqueTovarAngelaLizeth,BravoBuilesCristianBernardo2021.pdf.jpgLuqueTovarAngelaLizeth,BravoBuilesCristianBernardo2021.pdf.jpgIM Thumbnailimage/jpeg6197http://repository.udistrital.edu.co/bitstream/11349/29053/6/LuqueTovarAngelaLizeth%2cBravoBuilesCristianBernardo2021.pdf.jpg2e3a42aa802d504dc09fb4e127a6d866MD56open accessLicencia de uso y publicacion de los autores para publicar_.pdf.jpgLicencia de uso y publicacion de los autores para publicar_.pdf.jpgIM Thumbnailimage/jpeg13148http://repository.udistrital.edu.co/bitstream/11349/29053/7/Licencia%20de%20uso%20y%20publicacion%20de%20los%20autores%20para%20publicar_.pdf.jpg9f75ba266978cd8e2630768f31553e06MD57open access11349/29053oai:repository.udistrital.edu.co:11349/290532023-06-09 16:39:55.632open accessRepositorio Institucional Universidad Distrital - RIUDrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK