Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
added some text
  • Loading branch information
SwathiR03 authored Aug 25, 2023
1 parent 93c9cac commit d3c8916
Showing 1 changed file with 14 additions and 18 deletions.
32 changes: 14 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,24 @@

## Introduction

The **Server Fingerprinter** is a Java application designed to retrieve and present key technical information about a specified target website's server and its associated SSL certificate. By establishing a secure connection to the target server and utilizing HTTPS protocols, the program extracts a range of details, including server-related information, IP address allocation, SSL certificate specifics, and more. It helps users make informed decisions about visiting websites and trusting them, in the age of data theft. However, it is important to note that this program is built for educational purposes and trusts all certificates.
The **Server Fingerprinter** is a Java application designed to retrieve and present key technical information about a specified target website's server and its associated SSL certificate. By establishing a secure connection to the target server and utilizing HTTPS protocols, the program extracts a range of details, including server-related information, IP address allocation, SSL certificate specifications, and more! It helps users make informed decisions about visiting websites and trusting them, especially relevant in the age of data theft. However, it is important to note that this program is built for educational purposes and trusts all certificates.

## Functionality

The program undertakes the following steps to achieve its objectives:
## How does it work?

1. **Default HTTP Headers Configuration:**
- The application starts by setting up a default collection of HTTP headers, comprising standard values like User-Agent, Accept-Language, Accept-Charset, and Connection.
- These headers are essential for establishing coherent communication with the server and are automatically included in all requests to the target server.
- These headers are essential for establishing communications with the server.

2. **User Input and URL Parsing:**
- The user is prompted to input the URL of the target website.
- The provided URL is parsed to extract the hostname and, if specified, the port number.
- If no port number is provided, the default port for the HTTPS protocol is used.

- The user is asked to input the URL of the target website.
- The user given URL is parsed to extract the hostname and (in some cases) the port number. If no port number is provided- we use the HTTPS protocol by default!

3. **SSL Context and Trust Management Configuration:**
- An SSL context is established, incorporating a custom trust manager that accepts all certificates.
- This approach enables the program to connect to the target server even if its SSL certificate is self-signed or not issued by a recognized certificate authority.
- An SSL context is established, incorporating a custom trust manager that accepts all certificates. It's still pretty rudimentary and accepts faked certificates.

4. **Connection Establishment:**
- Using the provided URL, an HTTPS connection is established with the target server.
- The default SSL socket factory and the customized trust manager are associated with the connection, ensuring proper SSL handling.
- The default SSL socket factory and the customized trust manager are associated with the connection, ensuring SSL handling.

5. **Setting HTTP Headers:**
- The predefined default headers are added to the connection request.
Expand Down Expand Up @@ -54,11 +50,11 @@ The program undertakes the following steps to achieve its objectives:

## Usage

1. **Compilation:** Compile the Java code using an appropriate compiler.
2. **Execution:** Run the compiled program.
3. **Input:** Provide the target URL when prompted.
4. **Results:** The application will display comprehensive information about the server, IP address allocation, SSL certificate, and its validity status.
1. **Compile!:** Compile the Java code using an appropriate compiler. I use BlueJ. (Time to grow up)
2. **Execute!:** Run the compiled program.
3. **Input!:** Provide the target URL when prompted.
4. **Results!:** The application will display comprehensive information about the server, IP address allocation, SSL certificate, and its validity status.

## Important Consideration
## Caution

It's vital to acknowledge that the code employs a custom trust manager that trusts all certificates. This approach, while useful for educational purposes and exploring server details, is not recommended for production environments. In practical scenarios, securing connections using trusted and validated SSL certificates is necessary for ensuring data security during transmission.
This code employs a custom trust manager that trusts all certificates. While useful for educational purposes and exploring server details, this configuration is not recommended for the real world.

0 comments on commit d3c8916

Please sign in to comment.