Ethical hacking with Python tools
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Part Number | 93 | |
Number of Parts | 169 | |
Author | ||
License | CC Attribution - NonCommercial - ShareAlike 3.0 Unported: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this | |
Identifiers | 10.5446/21165 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
EuroPython 201693 / 169
1
5
6
7
10
11
12
13
18
20
24
26
29
30
31
32
33
36
39
41
44
48
51
52
53
59
60
62
68
69
71
79
82
83
84
85
90
91
98
99
101
102
106
110
113
114
115
118
122
123
124
125
132
133
135
136
137
140
143
144
145
147
148
149
151
153
154
155
156
158
162
163
166
167
169
00:00
Green's functionDew pointSoftware testingMathematical analysisMultiplicationComputing platformPrototypeProof theoryInformation securityInterior (topology)Communications protocolOnline helpEmailSpecial unitary groupSummierbarkeitInformationMedical imagingSoftware testingInformation securityGoodness of fitForcing (mathematics)Presentation of a groupModule (mathematics)InternetworkingCartesian coordinate systemRapid PrototypingMetadataServer (computing)InjektivitätWeb applicationSocial engineering (security)Latent heatVulnerability (computing)Process (computing)Level (video gaming)Theory of relativityPoint (geometry)Proof theoryDatabaseHacker (term)FamilyStructural loadTraffic reportingSummierbarkeitDomain nameDomain namePlanningArithmetic meanWeb pageVideo gameInclusion mapCorrespondence (mathematics)Model theoryComputer animation
03:04
Computer wormMetropolitan area networkUniform resource locatorComputer networkOpen setLetterpress printingStreaming mediaWeb applicationModule (mathematics)Port scannerDomain-specific languageServer (computing)Uniform resource locatorSoftwareProof theorySocket-SchnittstelleWeb 2.0Vulnerability (computing)SequenceInformation securityEmailInformationLatent heatModel theoryOpen setTraffic reportingFeasibility studyRule of inferenceSoftware testingForm (programming)Water vaporVideo gameDistortion (mathematics)Operator (mathematics)
05:13
Letterpress printingInfinityNetwork socketError messageEmailServer (computing)Online helpMessage passingTime domainPermanentServer (computing)InformationNumberLoop (music)Revision controlSocket-SchnittstelleDomain nameDifferent (Kate Ryan album)Subject indexingIP addressParameter (computer programming)Web 2.0Closed setScripting languageComputer programmingCASE <Informatik>Form (programming)Fitness functionRight angleData miningModel theoryGroup actionSet (mathematics)Physical systemComputer animation
06:56
Letterpress printingLemma (mathematics)Dependent and independent variablesEmailProxy serverConnected spaceModule (mathematics)Web 2.0EmailInformation securityDependent and independent variablesSoftware developerInformationProxy serverSubject indexingSoftware testingSymbol tableCategory of beingSet (mathematics)Video gameQuicksortRoutingSource codeJSON
08:32
Dependent and independent variablesLink (knot theory)Line (geometry)Order (biology)Link (knot theory)Domain nameParsingLatent heatWeb pageComputer programmingServer (computing)Information securityWeb 2.0InformationSet (mathematics)CASE <Informatik>Cellular automatonForestWater vaporComputer animation
10:37
Exception handlingLetterpress printingDependent and independent variablesComputer-generated imageryExt functorWorld Wide Web ConsortiumArmSign (mathematics)MathematicsSoftware developerDigital filterBuildingSearch engine (computing)Ring (mathematics)Key (cryptography)3 (number)Execution unitLocal GroupMaizeMedical imagingParsingSparse matrixParsingElement (mathematics)ExpressionPhysical systemInformationUniform resource locatorServer (computing)System callWeb 2.0Software developerProbability density functionEvent-driven programmingProgramming paradigmInternetworkingAsynchronous Transfer ModeOperator (mathematics)Web crawlerKey (cryptography)Set (mathematics)Formal languageVery-high-bit-rate digital subscriber lineTraffic reportingSpacetimeAreaCASE <Informatik>Process (computing)Boss CorporationMereologyDomain nameOpen setTheoryForestArmInequality (mathematics)WebsiteLecture/ConferenceMeeting/Interview
13:44
MereologySummierbarkeitComputer fileExt functorLetterpress printingComputer-generated imageryAsynchronous Transfer ModeAmsterdam Ordnance DatumSynchronizationInformationServer (computing)Boss CorporationDemosceneSpacetimeMathematical optimizationSystem callModel theoryMereologyForestWebsiteLevel (video gaming)Parameter (computer programming)Form (programming)Software frameworkObservational studyWeb 2.0Object (grammar)Matching (graph theory)MassPosition operatorVector spaceWordPort scannerComputer fileMetadataMedical imagingAddress spaceImage resolutionElectronic mailing listComputer animation
17:44
Social classAmsterdam Ordnance DatumLetterpress printingState of matterMountain passOperating systemSocial classLevel (video gaming)Port scannerInformationWhiteboardTraffic reportingMultiplication signFile formatMixed realityPhysical systemSource code
18:32
SynchronizationSummierbarkeitServer (computing)Level (video gaming)Type theoryPort scannerSampling (statistics)Latent heatStreaming mediaFile Transfer ProtocolParameter (computer programming)Revision controlVulnerability (computing)Scripting languageModel theoryFunctional (mathematics)System callProcess (computing)Default (computer science)Feasibility studyPartial derivativeArithmetic meanAreaWater vaporForcing (mathematics)Mathematical analysisCASE <Informatik>
21:01
MathematicsPhysical lawInformationAddress spaceTrigonometric functionsUniform resource nameCASE <Informatik>Level (video gaming)CoroutineServer (computing)Scripting languageAmsterdam Ordnance DatumSet (mathematics)CoroutineMetropolitan area networkAreaCASE <Informatik>Observational studyView (database)40 (number)Default (computer science)Level (video gaming)Scripting languageVulnerability (computing)MassLatent heatServer (computing)Computer animation
22:03
Curve fittingSpecial unitary groupException handlingFile Transfer ProtocolLetterpress printingInstallation artDisassemblerFile formatFilm editingGroup actionSet (mathematics)Multiplication signMereologyWebsiteUniform resource locatorClique-widthModel theoryRule of inferencePhase transitionLoginInternet service providerScripting languageDatabasePredictabilityInformationServer (computing)PasswordElectronic mailing listModule (mathematics)AuthenticationVirtual machine
24:17
Time domainDependent and independent variablesLoginCodeVulnerability (computing)Server (computing)Web 2.0Uniform resource locatorSoftware testingType theoryDomain nameLatent heatModule (mathematics)Computer wormOpen setPredictabilityNetwork socketDefault (computer science)Vulnerability (computing)Observational studyMultiplication signWeb pageSpacetimeCategory of beingSpeciesModel theoryWebsiteEvent horizonWordBeta functionOrder (biology)Similarity (geometry)Form (programming)Workstation <Musikinstrument>
27:24
Vulnerability (computing)Port scannerServer (computing)Structural loadFreewarePasswordExploit (computer security)Amsterdam Ordnance DatumSystem callFile formatWritingLetterpress printingComputer programLoginClient (computing)Software testingServer (computing)InformationVulnerability (computing)Information securityLatent heatVirtual machineFunctional (mathematics)WebsiteTraffic reportingModule (mathematics)System callFile formatLoginEvent horizonForm (programming)DemosceneCASE <Informatik>Table (information)MassProteinWater vaporPulse (signal processing)Heegaard splittingDifferent (Kate Ryan album)Model theoryComputer animation
30:34
Sign (mathematics)QuicksortInformationGroup actionNetwork socketTime domainOpen setRepeating decimalServer (computing)CAN busMIDIDefault (computer science)File Transfer ProtocolPeg solitaireMereologyAbsolute valueEmailArmWebsitePerturbation theoryParameter (computer programming)Disk read-and-write head10 (number)System on a chipPort scannerJava appletNetwork operating systemCore dumpUniform resource nameDomain-specific languageIcosahedronPhysical lawLarge eddy simulationMaxima and minimaWide area networkSummierbarkeitInflection pointLie groupAverageInclusion mapArc (geometry)Twin primeConvex hullNetwork topologyPointer (computer programming)ForceCloud computingMetropolitan area networkSpecial unitary groupBit error rateDressing (medical)Computer-generated imageryFluid staticsSynchronizationTensorVoltmeterInferenceInfinityProbability density functionAddressing modeRule of inferenceInterior (topology)Drum memoryComputer wormAmsterdam Ordnance DatumSoftware testingExecution unitEmulationChi-squared distributionModule (mathematics)Process (computing)Vulnerability (computing)LoginRevision controlElectronic mailing listIP addressConnected spacePatch (Unix)Server (computing)Information securityDirectory serviceInformationOrder (biology)File Transfer ProtocolWeb pageEmailClient (computing)WebsiteDistribution (mathematics)Software testingOpen setDomain-specific languageMetadataUniform resource locatorComputer configurationScripting languageLibrary (computing)Multiplication signBuffer overflowDomain nameVirtual machineProjective planeRepository (publishing)Functional (mathematics)Medical imagingCASE <Informatik>Quantum stateWhiteboardNatural numberRule of inferenceCategory of beingStapeldateiOffice suitePhase transitionSocial classInequality (mathematics)File formatDimensional analysisSelectivity (electronic)Set (mathematics)Event horizonTheoryPresentation of a groupStability theoryForm (programming)Basis <Mathematik>DivisorLatent heatAugmented realityTraffic reportingBefehlsprozessorSource codeJSON
Transcript: English(auto-generated)
00:00
Welcome to Jose Manuel Ortega with Ethical Hacking with Python tools. Good morning, thank you for coming. Well, this talk is for commenting the main tools that we have in the Python ecosystem for obtaining information for the servers that is pulling information in the internet.
00:29
Well, this talk is available in my speaker in Spain where I have another presentation in relation with scraping mobile security and so on.
00:41
These are the main points I will talk. I will make an introduction to Python pen testing. What are the main tools that we have when commenting the main modules like sockets, requests, v2.2 and so on for obtaining information for pulling servers. Last, I will mention how to extract metadata for documents and images.
01:03
Finally, more advanced tools like for scanning, how to connect with scanner vulnerabilities. Finally, I will show a little proof of concepts where I have integrated all these modules in a pen testing tool.
01:24
Well, Python is very useful for making rapid prototypes and proof of concepts. Many of the tools that we have for testing security in databases and web applications are made with Python.
01:46
The main advantage that we have is that they are very good documentation in internet for all these tools that I will comment.
02:02
Well, for example, two of the main tools that we have for testing applications, for example, SQL map for testing security injection vulnerabilities and social engineering toolkit.
02:21
These tools are made with Python. Well, we have another tool like Sparta. Sparta is a port scanning that uses Python in a map. Python in a map is another tool that I will comment after for checking the ports that are open in a specific domain, server, or application.
02:49
Basically, with this tool, we can check the service that are open and make a process, launch a brute force process over a specific service and so on.
03:05
Another tool that we have that are interesting for analyzing is the Harvester. It's a tool for obtaining information, pulling information from the... This tool you can use for obtaining information about the domains,
03:26
email accounts and domains for a specific URL or server. Another very new tool is the web application attack and only framework.
03:40
This is another tool made with Python. This is very useful for auditing web security and detecting vulnerabilities, secure injection, cross-scripting and so on. Another tool that we have, for example, Scapi for analyzing network packets.
04:01
For example, if we want to detect some attacks, it's called injection, you can use these tools. Another tool that we have is FEMA, for example, for detecting remote file-inclusive vulnerabilities.
04:23
All these tools that I have commented are made in Python. I will show the main modules that we can use for developing our tools for testing the security of the servers and web applications.
04:43
The first proof of concept that we can see is SOCKETS. With the SOCKETS module, what we can do is check the port scan.
05:01
With the CONNECTX method, we can check in a specific port if the port is open, filtered or closed in a sequence. This is the most simple program that we can write.
05:21
Basically, what we do is a question to the user, the IP of the server and a starting port number and an ending port number. And with a for loop symbol, we check if the port is open, closed or filtered. The difference between, for example, the CLOSE and FILTER
05:42
is that the port is filtered where it's blocked by firewall, for example. SOCKETS also obtains resolving the IP address from the domain and vice versa.
06:04
With the methods GATEHOST BYADDRESS and GATEHOST MYNAME, we can obtain this information. With the SOCKETS module, also we can obtain the VANERS service. The VANERS service is information related with the name of the version of the server,
06:27
of the web server, for example. In an easy way, we can check, for example, this is a script where we pass as parameters the IP address and the port and retours information about the server.
06:42
In this case, we see that the domain, EuroPython 2016, has an index server. Another module for all Python developers is REQUEST.
07:02
REQUEST is a very useful module for testing web service, IP address, and so on. Basically, what we can do for testing the security of the site, for example,
07:20
we can check, for example, the headers of the request and the response in an easy way. Accessing to the headers, the property, and iterating over the items internally, we can obtain this information.
07:41
For example, if we check over the EuroPython site, we see that it obtained this information, an index server, and also we see other headers, like cookies, the user agent, and so on.
08:05
Another interesting feature that we can make with REQUEST is, for example, we work behind a proxy for making REQUEST, we can use the proxy dictionary, where we indicate the HTTP or HTTPS proxy,
08:25
and an easy way we can check the connection behind a proxy with REQUEST. Another interesting feature is with REQUEST, we can authenticate. We have a server that supports basic or various authentication.
08:49
We can check this information, we can check the security of this server, with the methods, HTTP.js, and the basics.
09:09
Another tool that we have, for web scrapping, for example, is BeautifulSoup. BeautifulSoup is basically a parser, a parser HTML.
09:23
Basically what this does is extract information from specific tags that previously we used REQUEST for obtaining the page, and with the method final, we recover the information.
09:43
In this case, we recover the links. A more advanced program where we extract the internal and external links. Internal links basically consist in following all links that begin with a slash, and for external links, we try to find all links that start with HTTP or HTTPS,
10:10
that now contain the current order. In this example, we can see that we extract the external and internal links. The external links go to an external page,
10:24
and notice the same domain that is not in the domain that we are testing, and internal links go to pages in the internal domain. Another interesting feature, for example, is we want to extract image and PDF documents.
10:46
We can use a specific parser. BeautifulSoup has two or three parsers. We have seen the lxml parser, and in this case, we are using the HTML parser
11:03
where we are using sparse expressions for extracting the element that we want to extract, in this case, image and PDF. Another interesting tool that we have in the bio-deco system is Scrappy.
11:23
Scrappy is for developing. We can use it for developing our web spiders, web crawlers. It is very useful for obtaining the information for web servers and URLs.
11:47
This tool, Twisted, is a tool for making asynchronous calls and following the event-driven development paradigm
12:03
for making these calls in asynchronous mode. Well, for example, with Shodan, Shodan is a very useful tool for obtaining public information that is available on the Internet.
12:24
Shodan, what is that, is obtaining the banners of the servers, operating systems, the versions, the server styles, and so on. Basically, what this provides is a developer API,
12:42
in this case, for Python developers. In a nice way, you can connect with this service through an API key that provides, when you register in the site, you get an API key, and with this API key,
13:02
you can search, we can make the same search, the same search that we can do in the web, you can do with the Python API. In this case, we can see that we look at information
13:24
for a specific host and we obtain the ports that are open, the tools, the banners of the server, the information of the services that are open in this port, and so on.
13:46
Also, when we search for a specific host, we obtain information about the hostname, the ports that are open, and the service that are available in each port.
14:02
This information that we see in the web, also we can access with Python in a nice way, but the information for accessing is a little tricky, it returns in addition, but it's not a K-value,
14:26
it returns the information in addition, but certain positions have a vector or an array, and you have to play with accessing the information.
14:40
Finally, we can obtain information, the same information that we have seen in the web for a specific host, we can obtain this information from Python API. Another EC-module that we have in Python is a EC-module
15:04
that only has one method, parse, and obtain the information about the frameworks that the website is using and the word servers that are using the website.
15:25
Well, for metadata, nice metadata, basically what we can do with Python in a nice way is extract information from metadata from PDS, with the PyPDIF2 module,
15:40
and basically it's very easy, what we have to do is create a PDIF file reader object, and with the get-document-info, we obtain the metadata of the PDIF. The same we can do with image with a pill.shif-tags module,
16:05
and it's a nice way we can obtain, we can decode the tags that are available in an image. For example, we can obtain the GPS info,
16:21
the data of the image, how is the resolution of the image, and so on. Well, another little future that we can do is port scanning.
16:43
Port scanning is very known from the tool that we can see in multiplayer for operating systems, and so on.
17:04
With Python, we can launch the map from Python. Basically, what we have is two models, synchronous and asynchronous. For asynchronous model, we have to launch the port scanner.
17:24
Well, we start seeing any map, the object, any map with port scanner, and we use the scan method where we pass as parameter the IP address and the port listing that we want to scan in this IP.
17:46
This is an example where we defend a class in the map scanner. Here, we initialize the map scanner with calling the port scanner of the map,
18:04
and inside the map scan, we go checking the port, and we are calling the scan method. An internal scan method calls the map command
18:23
that is installed in the operating system. Well, we can see information about, this is a call sample where we pass as parameter the target and port listing,
18:41
and we can see that the map is secured with default parameters in the port specifier and in the IP. And we see and reduce if it's open, and also we can access to the specific port is open,
19:02
we can access the version of the service and so on. The other model that we have within the map is asynchronous model. Asynchronous model allows launch and scan
19:20
in a lot of ports simultaneously. And we can define a callback function for when a specific scan in a port is finished,
19:46
and we call this function for an additional stream in a specific port. We, for example, in this case, we launch in a specific target in the C1 port,
20:05
the FTP port, and we check, firstly, we have to check if it's open, and if it's open, we can launch a specific process
20:22
for detecting vulnerabilities in this port, specifically. For example, in this case, we are testing the FTP port, launching scripts for checking anonymous FTP login,
20:43
checking another type of vulnerabilities if the service is vulnerable to a specific backdoor, for example, or specific versions to the service. For checking these vulnerabilities,
21:04
when we start any map, any map comes by default with any map scripts that are in the mass script folder when you install this tool,
21:23
and have a lot of scripts for checking vulnerabilities in a specific service, like HTTP, HTTP, and MySQL, for example. Basically, what provides these scripts
21:41
are routines for finding potential vulnerabilities in a given target, and then the idea is first, we have to check if the port is open, and if the port is open, we can launch the specific scripts for this service.
22:03
In this case, we are checking that if the MySQL port is open, and if it's open, we are launching scripts like MySQL audit, MySQL brute, MySQL databases. These scripts provide more information about the service,
22:27
and checking, for example, if the database is open, it doesn't have any security, for example,
22:44
or you can see the user without authentication. These kinds of things you can see with launching these scripts. Well, for example, with Shonan, we can check the HTTP login anonymous.
23:03
Basically, with this search, we can check all servers, all machines that allow this kind of logging. Without the login anonymous,
23:21
we don't need to provide user and password for accessing the HTTP server. For checking this in Python, we have the HTTP module that, in a nice way, we can check if a specific server allows anonymous logging.
23:46
Well, for checking websites, we have another tool called Pig with Booth. Pig with Booth provides resources for checking websites,
24:02
basically, with predictable URLs. That is to say, we have a list of URLs, and each URL, each resource, well, we'll see with an example.
24:23
For example, we can access, in this example, we obtain predictable URLs for a specific feature, for example, for logging in a website, we get predictable URLs,
24:41
like admin, login, default web page, administrator, and so on. And what we can do is testing for each predictable URL, testing this predictable URL
25:01
over the domain we are testing. And in a nice way, we see that we can check, we make a request over the domain for each predictable URL to see if we can access or not.
25:21
Many times, there are URLs that we don't see, they are not public, but after testing, after doing this type of testing, we see that there are URLs that are filtered or are not protected, for example,
25:42
and we can access and navigate and discover other vulnerabilities in the site. Well, the Herblade book is another book that we can test with Python.
26:03
Herblade is a community in a specific open SSL version, in servers, and this book was discovered in 2014, and, well, it's a little old,
26:24
but with this, we check this page, Filippoio-Herblade, we see that there are servers, many servers that are also, that are vulnerable to this work.
26:43
Basically, for testing, if a specific server has this book, basically what we have to do, we can use the socket module and set a specific request, a specific package, and if the server responds with a specific payload Herblade,
27:17
the server will be vulnerable to this book.
27:25
In this case, we can see an example, where we launched testing over a specific machine and returns that this machine is vulnerable to this book.
27:44
Well, a more advanced tool that we can use for integrating with Python, for example, with Metasploit. Metasploit is a very useful tool for sending, exploiting vulnerabilities in the servers, in the websites, and so on.
28:02
And Metasploit can be integrated, it has a module called Python MCFRPC for making calls to Metasploit server from Python. Basically, what we can do is, what we have to do is start the server,
28:24
the service of Metasploit throughout a plugin, and what internally Metasploit functions like modules for checking, for testing, for exploiting vulnerabilities,
28:45
in this case, with Metasploit pcall. We can see that with calls in a format specifically called mcgpack,
29:01
we can launch a specific module. In this case, we are using the msql login for launching, for testing this exploit from Python.
29:25
Well, Nespouse, Nexus, and OpenBass are security analyzers for vulnerabilities, and so on. And also, we can integrate these tools from Python.
29:41
For example, it's really easy to integrate from Python. For example, if we have a server with Nespouse, where we have vulnerabilities and reports and so on, we can connect with this server from Python
30:03
using v2.4.0. We can access this information, the information that returns the server is in lxml format, and in a nice way, with v2.4.0,
30:20
we can iterate over the vulnerabilities and sites that are deployed in the Nespouse server. Well, I will show now a pantystein tool. This is a quick process
30:45
that has integrated all the modules that I have mentioned. Basically, what we can do with the pantystein tool is, for example, with a specific machine,
31:02
a specific port, we can check if the port is open or not. In this case, we are checking the 21ftp port to see the information that returns. In this case, we can see that the port is open
31:22
and we can obtain information about the version, the specific version of the ftp, the name, and so on. Like the ftp port is open,
31:41
we can check if the ftp server allows anonymous logging. And then, if we go to the 13th option, we see that returns the port 21 is open and questions about if you like to connect with anonymous users.
32:06
We question, yes, and we see that logging successful returns 230, the version of the ftp,
32:20
the connection is okay, and shows a listing directory of the server. More things that we can do
32:43
is obtain the headers of the server, the header's info. In this case, we obtain that we have a PHP run to 5.10.
33:02
If it is running on a patch with a version 2.2.8, the version of the PHP, and so on. All this is the header's info.
33:21
More things that we can do, for example, check if the ftp server has the buffer overflow vulnerability. This is another vulnerability that has a lot of servers.
33:41
We can check with this option. First, we check if the port is open. The port is open and we send a client request to see if the server is vulnerable. We connect to this IP in the port 4444
34:03
and we check that the server is vulnerable to this book. Basically, all these testing are over a virtual machine
34:23
that I have here in local. This is a virtual machine that has a linear distribution with a lot of vulnerabilities. Many ports open and a lot of vulnerabilities are lashing with ftp, PHP, a patch server, and so on.
34:45
This is called a Metasplotable Linux, if I remember.
35:00
More things that we can do is check domains and obtain metadata. For example, if the server has information relating with mails, hosts, other servers, or URLs that are exposed in the server, we can check this information. In this case, we see that we are testing the options method
35:29
that retours the server. We can obtain the emails that are public in the server.
35:46
Also, we can check, for example, if the server is public, we can check the shodan information that retours. For example, we are using the EuroPython site
36:09
for checking all the information retoured by shodan service. We launch the tool with the target EuroPython 200 system.
36:48
It retours the IP address of the domain. For example, the host info from shodan service, we can use the option 6, disconnect to the shodan service,
37:07
and obtain all polling information. It's time for questions? Okay. It retours all polling information that we have seen in the presentation.
37:21
We see that the polls open are the 18, 22, and 25, and retours more information about foreign service. Basically, we obtain information about the servers, the banners, the versions of the server,
37:54
for example, the option 10 for scraping image.
38:01
In a nice way, we can see the extracting of all the images of the site, and so on. Finally, this project is available. Imagine you have the repository,
38:21
and it's available for if you want to check the tool, you can do it freely. Imagine you have the repository also, we have a script, a small script, for testing each functionality separately from each order. For example, if we want to scan, to launch an NMA scan,
38:44
we have a specific script for this feature. Finally, reference and leaves basically are the main, the official pages of the tools that I commented, the shodan documentation, requests,
39:03
Python NMA documentation, and in the Python security.org, are available, or more libraries that have comment, and it's a very complete site for checking this kind of tools.
39:22
And finally, books that we can find the most, this is the main book that we can find for this topic, for testing, and so on. Thank you.
39:47
Any questions?