Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
14b0db3
Update README.md
OSINT-TECHNOLOGIES Dec 28, 2024
c51aaf2
Bumped version
OSINT-TECHNOLOGIES Dec 28, 2024
8e305c2
Create __init__.py
OSINT-TECHNOLOGIES Dec 28, 2024
8213e2b
Created mkdocs.yml for future RTD documentation
OSINT-TECHNOLOGIES Dec 28, 2024
6912d28
Create index.md
OSINT-TECHNOLOGIES Dec 28, 2024
a9177e1
Create dorking.md
OSINT-TECHNOLOGIES Dec 28, 2024
852f583
Create pagesearch.md
OSINT-TECHNOLOGIES Dec 28, 2024
acc2ee3
Create basic_scan.md
OSINT-TECHNOLOGIES Dec 28, 2024
496f36b
Create api.md
OSINT-TECHNOLOGIES Dec 28, 2024
48402e4
Create reporting.md
OSINT-TECHNOLOGIES Dec 28, 2024
2b198b1
Create pagesearch_sitemap.md
OSINT-TECHNOLOGIES Dec 28, 2024
d04fa32
Create getting_started.md
OSINT-TECHNOLOGIES Dec 28, 2024
55413ec
Create contact_dev.md
OSINT-TECHNOLOGIES Dec 28, 2024
e211efa
Create .readthedocs.yaml (empty)
OSINT-TECHNOLOGIES Dec 28, 2024
593b0ee
Added some new paragraphs
OSINT-TECHNOLOGIES Dec 29, 2024
05f29d6
Updated getting_started.md
OSINT-TECHNOLOGIES Dec 29, 2024
2a8ada5
Added configuration for RTD
OSINT-TECHNOLOGIES Dec 29, 2024
647ce41
Fixed wrong path to mkdocs.yml
OSINT-TECHNOLOGIES Dec 29, 2024
95abf0d
Updated README.md with Readthedocs link
OSINT-TECHNOLOGIES Dec 29, 2024
e8439cb
Update contact_dev.md
OSINT-TECHNOLOGIES Dec 29, 2024
db77d85
Update dorking.md
OSINT-TECHNOLOGIES Dec 29, 2024
3845267
Update dorking.md
OSINT-TECHNOLOGIES Dec 29, 2024
03512c4
Update api.md
OSINT-TECHNOLOGIES Dec 29, 2024
a21271c
Create report_storage.md (blank)
OSINT-TECHNOLOGIES Jan 5, 2025
5d4207f
Create demo.md (blank)
OSINT-TECHNOLOGIES Jan 5, 2025
1d2865d
Update api.md (finished)
OSINT-TECHNOLOGIES Jan 5, 2025
85d987a
Update mkdocs.yml
OSINT-TECHNOLOGIES Jan 5, 2025
e152425
Delete docs/dpulse-docs/docs/report_storage.md
OSINT-TECHNOLOGIES Jan 5, 2025
b6bac35
Update README.md
OSINT-TECHNOLOGIES Jan 6, 2025
9e5a35b
Update reporting.md (not finished)
OSINT-TECHNOLOGIES Jan 6, 2025
abbccdb
Removed help menu printing function
OSINT-TECHNOLOGIES Jan 6, 2025
c3ee90e
Made
OSINT-TECHNOLOGIES Jan 6, 2025
2133207
Added documentation page link
OSINT-TECHNOLOGIES Jan 6, 2025
c565026
Update reporting.md (finished)
OSINT-TECHNOLOGIES Jan 6, 2025
8e285d6
Fixed bug with spamming report db's content with every action in manager
OSINT-TECHNOLOGIES Jan 6, 2025
17e87a4
Fixed bug with spamming report db's content with every action in manager
OSINT-TECHNOLOGIES Jan 6, 2025
48b8681
Added 3 new mentions
OSINT-TECHNOLOGIES Jan 9, 2025
7a19dd7
Update README.md
OSINT-TECHNOLOGIES Jan 9, 2025
9bc7018
Improved handling of report storage database
OSINT-TECHNOLOGIES Jan 10, 2025
eea9b94
Improved handling of report storage database
OSINT-TECHNOLOGIES Jan 10, 2025
43bc3fc
Some CLI visual improvements
OSINT-TECHNOLOGIES Jan 10, 2025
9fca8b2
Some CLI visual improvements
OSINT-TECHNOLOGIES Jan 10, 2025
8a79cd6
Update README.md
OSINT-TECHNOLOGIES Jan 10, 2025
1cf1fe8
Update README.md
OSINT-TECHNOLOGIES Jan 10, 2025
bd7ff6c
Updated DPULSE logo
OSINT-TECHNOLOGIES Jan 10, 2025
05e0a8b
Updated logo
OSINT-TECHNOLOGIES Jan 10, 2025
76b99ab
Code clean-up
OSINT-TECHNOLOGIES Jan 23, 2025
0e1448e
Code clean-up
OSINT-TECHNOLOGIES Jan 23, 2025
b576a29
Bumped version
OSINT-TECHNOLOGIES Jan 23, 2025
45a6ff1
Updated GIF
OSINT-TECHNOLOGIES Jan 25, 2025
3d1aa54
Update demo.md
OSINT-TECHNOLOGIES Jan 25, 2025
8890acf
Update demo.md
OSINT-TECHNOLOGIES Jan 25, 2025
a5a1de4
Added requests.exceptions.ReadTimeout exception to handle
OSINT-TECHNOLOGIES Jan 27, 2025
500315f
Added exception handler for social medias gathering function
OSINT-TECHNOLOGIES Jan 27, 2025
bab9241
Widened pool of exceptions to handle
OSINT-TECHNOLOGIES Jan 27, 2025
a458a9d
Widened pool of exception to handle (SSL)
OSINT-TECHNOLOGIES Jan 27, 2025
1753c97
Update demo GIF
OSINT-TECHNOLOGIES Jan 27, 2025
bec83f4
Update demo.md (added new GIF)
OSINT-TECHNOLOGIES Jan 27, 2025
6c3ee98
Update demo.md
OSINT-TECHNOLOGIES Jan 27, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
version: 2

build:
os: ubuntu-20.04
tools:
python: "3.10"
jobs:
pre_build:
- pip install mkdocs mkdocs-material

python:
install:
- requirements: requirements.txt

mkdocs:
configuration: docs/dpulse-docs/mkdocs.yml
29 changes: 15 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
# DPULSE - Domain Public Data Collection Service

<p align="center">
<img src="https://github.com/OSINT-TECHNOLOGIES/dpulse/assets/77023667/fed8d368-7309-4aaa-a82e-2f0b277122de">
<img src="https://github.com/user-attachments/assets/e49c764a-5039-4a54-b002-6b625f0b371b">
</p>

<p align="center">
<b><i>CONVENIENT, FAST AND USER-FRIENDLY COLLECTOR OF DOMAIN INFORMATION FROM OPEN SOURCES</i></b>
</p>

<p align="center">
<img alt="Static Badge" src="https://img.shields.io/badge/v1.1.4-CURRENT%20STABLE%20VERSION?style=for-the-badge&label=CURRENT%20STABLE%20VERSION&color=red"> <img alt="Static Badge" src="https://img.shields.io/badge/V1.1.5-red?style=for-the-badge&logo=f&label=CURRENT%20ROLLING%20VERSION">
<img alt="Static Badge" src="https://img.shields.io/badge/v1.1.6-CURRENT%20STABLE%20VERSION?style=for-the-badge&label=CURRENT%20STABLE%20VERSION&color=red"> <img alt="Static Badge" src="https://img.shields.io/badge/V1.2-red?style=for-the-badge&logo=f&label=CURRENT%20ROLLING%20VERSION">
<img alt="Static Badge" src="https://img.shields.io/badge/DOMAIN_OSINT-CATEGORY?style=for-the-badge&label=TOOL%20CATEGORY&color=red"> <img alt="Static Badge" src="https://img.shields.io/badge/CLI-CATEGORY?style=for-the-badge&label=interface%20type&color=red">
</p>

Expand All @@ -20,32 +20,27 @@

> Attention! DPULSE is a research tool. It is not intended for criminal activities! Use DPULSE only on allowed domains and for legal purposes!

> Please, before creating an issue or DMing developer about DPULSE, make sure that your problem or question is not covered with [DPULSE documentation](https://dpulse.readthedocs.io)

# Repository map

## What to visit?

| What do you want to see? | Link |
| --- | --- |
| What is DPULSE? | [See "About DPULSE" page](https://github.com/OSINT-TECHNOLOGIES/dpulse?tab=readme-ov-file#about-dpulse) |
| Where I can find some demo and use-cases? | [See "Demo and use-cases" page](https://github.com/OSINT-TECHNOLOGIES/dpulse?tab=readme-ov-file#dpulse-demo-and-use-cases) |
| I want to read project documentation | [See DPULSE wiki](https://github.com/OSINT-TECHNOLOGIES/dpulse/wiki/DPULSE-WIKI) |
| I want to read project documentation | [See DPULSE Readthedocs Page](https://dpulse.readthedocs.io) |
| I want to see developer's contacts | [See "Contact developer" page on Readthedocs](https://dpulse.readthedocs.io/en/latest/contact_dev/#) |
| I want to see project roadmap and future development plans | [See DPULSE roadmap](https://github.com/users/OSINT-TECHNOLOGIES/projects/1) |

## What to download?

| Your expectations | Version and link for you |
| --- | --- |
| I want to use only tested and stable version of DPULSE | [DPULSE stable ZIP archive](https://github.com/OSINT-TECHNOLOGIES/dpulse/archive/refs/heads/main.zip) |
| I don't mind to use DPULSE with latest changes and you're OK with bugs and issues | [DPULSE rolling ZIP archive](https://github.com/OSINT-TECHNOLOGIES/dpulse/archive/refs/heads/rolling.zip) |
| I don't mind to use DPULSE with latest changes and I'm OK with bugs and issues | [DPULSE rolling ZIP archive](https://github.com/OSINT-TECHNOLOGIES/dpulse/archive/refs/heads/rolling.zip) |
| I want to use only one specific version of DPULSE | [See DPULSE releases page](https://github.com/OSINT-TECHNOLOGIES/dpulse/releases) |
| I want to see more detailed installation instructions | [See DPULSE installation guides](https://github.com/OSINT-TECHNOLOGIES/dpulse?tab=readme-ov-file#how-to-install-and-run-dpulse)

## How can I contact the developer?

| Reasons to contact | Links & addresses |
| --- | --- |
| I want to talk with developer in person | DM to osint.technologies@gmail.com |
| I want to report some bug or issue, or maybe I have some good idea for developer | [Make a new issue page](https://github.com/OSINT-TECHNOLOGIES/dpulse/issues/new/choose) |

# About DPULSE

Expand Down Expand Up @@ -157,11 +152,11 @@ If you have problems with starting installer.sh, you should try to use `dos2unix

### You can start DPULSE and see the main menu on the screen using one of the recommended commands in DPULSE root folder. Don't forget to install all requirements before starting DPULSE

![dpulse_start](https://github.com/user-attachments/assets/49cb476c-d9a5-4ff6-999f-afa0badf0e0d)
![dpulse_start](https://github.com/user-attachments/assets/9ec0ab73-2206-4d38-bae6-e88656e17f95)

### After choosing first menu point, you will be able to enter target's URL and case comment, and then you will see scanning progress

![dpulse_running](https://github.com/user-attachments/assets/9a3cd8c2-3281-4d58-b12e-91ced6dbbd91)
![dpulse_bs](https://github.com/user-attachments/assets/b0ad7827-6dac-4f82-a369-4447a0e1c878)

### Finally, DPULSE will create report folder which contains case name (basically URL of target), date and time of scan. All report folders are contained in DPULSE root folder

Expand Down Expand Up @@ -194,6 +189,12 @@ If you have problems with starting installer.sh, you should try to use `dos2unix

### [by @UndeadSec](https://x.com/UndeadSec/status/1827692406797689032)

### [by @akaclandestine](https://x.com/akaclandestine/status/1875980998418002151?t=Ac-fZ9oe2FLKkTTCClss8g&s=19)

### [by @hdH4dg8](https://x.com/hdH4dg8/status/1876106586869104906?t=Awfas25ukXkblPRt4krSzA&s=19)

### [by @wy88215534](https://x.com/wy88215534/status/1876522251828494794?t=cmwoNCDZv0kMEDMKokcVFA&s=19)

## Facebook mentions:

### [by Inteligência Cibernética](https://www.facebook.com/osintbrasil/posts/pfbid037ibycZcBWe2MjtV4HiWvRWxyKei8TJ5Ycfxai4TDNHXuwrYkDGuyjDsPow8WUNbyl)
Expand Down
7 changes: 4 additions & 3 deletions datagather_modules/crawl_processor.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ def subdomains_gather(url, short_domain):
print(Fore.RED + f"Cannot gather subdomains due to error. See journal for details" + Style.RESET_ALL)
logging.error(f'SUBDOMAINS GATHERING: ERROR. REASON: {e}')
pass
return ['No subdomains were found'], 0

def sm_gather(url):
response = requests.get(url)
Expand Down Expand Up @@ -173,7 +174,7 @@ def domains_reverse_research(subdomains, report_file_type):
for subdomain in subdomains:
subdomain_url = "http://" + subdomain + "/"
subdomain_urls.append(subdomain_url)
except (socket.gaierror, requests.exceptions.SSLError, requests.exceptions.ConnectionError) as e:
except Exception as e:
print(Fore.RED + "Some URL seems unreachable! DPULSE will continue to work, but the URL causing the error won't be included in report. See journal for details" + Style.RESET_ALL)
logging.error(f'SUBDOMAINS URL FORMING: ERROR. REASON: {e}')
pass
Expand All @@ -183,7 +184,7 @@ def domains_reverse_research(subdomains, report_file_type):
subdomains_ip = ip_gather(subdomain)
subdomain_ip.append(subdomains_ip)
subdomain_ip = list(set(subdomain_ip))
except (socket.gaierror, requests.exceptions.SSLError, requests.exceptions.ConnectionError) as e:
except Exception as e:
print(Fore.RED + "Some URL seems unreachable! DPULSE will continue to work, but the URL causing the error won't be included in report. See journal for details" + Style.RESET_ALL)
logging.error(f'SUBDOMAINS IP GATHERING: ERROR. REASON: {e}')
pass
Expand All @@ -194,7 +195,7 @@ def domains_reverse_research(subdomains, report_file_type):
subdomain_mails.append(subdomain_mail)
subdomain_social = sm_gather(subdomain_url)
subdomain_socials.append(subdomain_social)
except (socket.gaierror, requests.exceptions.SSLError, requests.exceptions.ConnectionError) as e:
except Exception as e:
print(Fore.RED + "Some URL seems unreachable! DPULSE will continue to work, but the URL causing the error won't be included in report. See journal for details" + Style.RESET_ALL)
logging.error(f'SUBDOMAINS MAIL/SOCIALS GATHERING: ERROR. REASON: {e}')
pass
Expand Down
16 changes: 6 additions & 10 deletions datagather_modules/data_assembler.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,12 @@ def data_gathering(self, short_domain, url, report_file_type, pagesearch_flag, k
print(Fore.GREEN + 'Processing subdomain gathering' + Style.RESET_ALL)
subdomains, subdomains_amount = cp.subdomains_gather(url, short_domain)
print(Fore.GREEN + 'Processing social medias gathering' + Style.RESET_ALL)
social_medias = cp.sm_gather(url)
try:
social_medias = cp.sm_gather(url)
except:
print(Fore.RED + "Social medias were not gathered because of error" + Style.RESET_ALL)
social_medias = ['Social medias were not extracted because of error']
pass
print(Fore.GREEN + 'Processing subdomain analysis' + Style.RESET_ALL)
if report_file_type == 'xlsx':
subdomain_urls, subdomain_mails, subdomain_ip, sd_socials = cp.domains_reverse_research(subdomains, report_file_type)
Expand Down Expand Up @@ -164,17 +169,8 @@ def data_gathering(self, short_domain, url, report_file_type, pagesearch_flag, k
api_scan_db.append('No')
pass

#data_array = [ip, res, mails, subdomains, subdomains_amount, social_medias, subdomain_mails, sd_socials,
# subdomain_ip, issuer, subject, notBefore, notAfter, commonName, serialNumber, mx_records,
# robots_txt_result, sitemap_xml_result, sitemap_links_status,
# web_servers, cms, programming_languages, web_frameworks, analytics, javascript_frameworks, ports,
# hostnames, cpes, tags, vulns, common_socials, total_socials, ps_emails_return,
# accessible_subdomains, emails_amount, files_counter, cookies_counter, api_keys_counter,
# website_elements_counter, exposed_passwords_counter, total_links_counter, accessed_links_counter, dorking_status, dorking_results, vt_cats,
# vt_deturls, vt_detsamples, vt_undetsamples]

cleaned_dorking = [item.strip() for item in dorking_results if item.strip()]
#print(cleaned_dorking)

data_array = [ip, res, mails, subdomains, subdomains_amount, social_medias, subdomain_mails, sd_socials,
subdomain_ip, issuer, subject, notBefore, notAfter, commonName, serialNumber, mx_records,
Expand Down
2 changes: 1 addition & 1 deletion datagather_modules/networking_processor.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def get_ssl_certificate(short_domain, port=443):
commonName = str(cert['issuer'][2][0][1]) + ', version: ' + str(cert['version'])
serialNumber = cert['serialNumber']
return issuer, subject, notBefore, notAfter, commonName, serialNumber
except (ssl.CertificateError, ssl.SSLError, socket.gaierror, ConnectionRefusedError) as e:
except Exception as e:
print(Fore.RED + "Error while gathering info about SSL certificate. See journal for details")
logging.error(f'SSL CERTIFICATE GATHERING: ERROR. REASON: {e}')
issuer = subject = notBefore = notAfter = commonName = serialNumber = "No information about SSL certificate was gathered"
Expand Down
1 change: 1 addition & 0 deletions docs/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

41 changes: 41 additions & 0 deletions docs/dpulse-docs/docs/api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Third-party API scan mode

Currently DPULSE supports two third-party APIs:

* SecurityTrails API (securitytrails.com) for deep subdomains and DNS enumeration
* VirusTotal API (virustotal.com) for brief domain information gathering

## SecurityTrails API

SecurityTrails API is used to gather information about a specified domain. It retrieves various types of DNS records, subdomains, and other details. SecurityTrails API in DPULSE returns these details about target domain:

* Alexa rank
* Apex domain
* Hostname
* A/MX/NS/SOA/TXT records
* All subdomains list
* Alive (pingable) subdomains list

## VirusTotal API

VirusTotal API is used to interact with the VirusTotal service programmatically and analyze files and URLs using multiple antivirus engines and website scanners, providing insights into whether they are malicious. VirusTotal API in DPULSE returns these details about target domain:

* Categories
* Detected samples
* Undetected samples
* Detected URLs

## API Keys database

In order to ensure the functioning of API services individually for each DPULSE user, API keys storage database was created. Similar to report storage database, it is lightweight .db extension database with simple structure shown below:

![apistordb](https://github.com/user-attachments/assets/02233813-781e-4bf8-be7c-76ec7627be06)

Since every API key is individual for each user, you can see fillers instead of actual keys when you start DPULSE for the first time, so until you replace filler with a real API key, you can't start using API in scans. You can enter your actual API keys using DPULSE CLI. You can see full process on the screenshot below:

![apiproc](https://github.com/user-attachments/assets/effb27ab-dd4b-4470-b90c-34c6f9a43d8c)

For the first time you will see red-colored API key field, which means that scan is not available with this API. After changing filler for actual key, you will see that color changed, which indicates that you can use your API key for scanning. Be advised that every free API service provided with some limitations (you can see them in DPULSE CLI for all supported API), so keep in mind that frequent usage of free API plans is not possible.

In case if you want to fully replace API keys, you can use reference API keys database. You can see menu point for this action on the screenshot above. This action will delete your actual API keys database, copy reference database and rename it. This action is very optional because you can change your API keys by just using first menu point in API Keys DB Manager (according to the screenshot above)

18 changes: 18 additions & 0 deletions docs/dpulse-docs/docs/basic_scan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Basic scan

Basic scan is default and the most basic scanning mode which starts after all preparation steps. It always starts first and you can't start scanning without it.

## Basic scan results

Basic scan returns some basic information open information about target domain, such as:

1. WHOIS information which contains domain name, full URL, IP address, registrar info, creation and expiration dates, organization name and contact e-mails.
2. Subdomains list
3. E-mail addresses list (gathered from subdomains)
4. IP addresses list (gathered from subdomains)
5. Social medias links, posts and profiles. Supported social medias are Facebook, Twitter (X.com), Instagram, Telegram, TikTok, LinkedIn, VKontakte, YouTube, Odnoklassniki, WeChat
6. DNS and SSL information. DNS information contains name servers and MX addresses. SSL certificate information contains issuer, subject, creation and expiration dates, certificate name and serial number.
7. Basic pre-pentest information such as possible vulnerabilities (CVEs), open ports and hostnames.
8. Development and deployment services and frameworks information, such as CMS, web servers, used programming languages and web frameworks, analytics services, tags and so on.
9. Downloaded copies of sitemap.xml and robots.txt files from a domain

10 changes: 10 additions & 0 deletions docs/dpulse-docs/docs/contact_dev.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
## Contact developer

DPULSE developer will be glad to see your messages with feedback, questions and suggestions. Feel free to contact developer with most convenient ways for you:

* OSINT-TECHNOLOGIES e-mail: osint.technologies@gmail.com
* [Make an issue page on DPULSE GitHub repository](https://github.com/OSINT-TECHNOLOGIES/dpulse/issues/new/choose)




16 changes: 16 additions & 0 deletions docs/dpulse-docs/docs/demo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# DPULSE demos & use-cases

On this page you can see some actual DPULSE demos and use-cases in some cybersecurity and OSINT scenarios

## Demo №1. Starting DPULSE

Yes, starting DPULSE is as simple as that. Don't forget to install all requirements before starting DPULSE

![dpulse_start](https://github.com/user-attachments/assets/9ec0ab73-2206-4d38-bae6-e88656e17f95)

## Demo №2. DPULSE basic scan workflow

Here you can see complete process of DPULSE basic scan from the beginning to the end. Remember that sometimes your scan might not be ideal and errors may appear. However, they will not interrupt scanning process, but will only affect the number and variety of results in the final report.

![dpulse_bs](https://github.com/user-attachments/assets/b0ad7827-6dac-4f82-a369-4447a0e1c878)

Loading
Loading