Updating project documents and functions to remove old JSON

This commit is contained in:
WebBreacher 2022-09-01 09:03:51 -04:00
parent bfffea9308
commit 09d58f691d
6 changed files with 76 additions and 256 deletions

View File

@ -10,13 +10,13 @@ jobs:
steps:
- name: Checkout files
uses: actions/checkout@v3
- name: Minify new JSON
- name: Minify JSON
uses: StefanEnsmann/Minify-JSON-Action@1.1.0
with:
input_file: wmn-data.json
output_file: wmn-data-min.json
- name: Auto-commit to repository
uses: stefanzweifel/git-auto-commit-action@v4
with:

View File

@ -6,7 +6,7 @@ jobs:
steps:
- uses: actions/checkout@v3
- name: Validate New JSON
- name: Validate JSON
uses: docker://orrosenblatt/validate-json-action:latest
env:
INPUT_SCHEMA: /wmn-data-schema.json

View File

@ -62,9 +62,78 @@ python3 ./web_accounts_list_checker.py -s my.new.site.Ive.added
- Submit a pull request with that change
- There is also the `sample.json` file that you can use for testing. Simply replace the existing content with new data and test.
## Format of the JSON File
### Format of the New/Current JSON file
The format of the `wmn-data.json` JSON was altered due to Issue #414. There are still 3 main elements:
1. License - The license for this project and its data
2. Authors - The people that have contributed to this project
3. Sites - This is the main data
Within the `sites` elements, the format is as follows (with several parameters being optional):
```json
...
{
"name" : "name of the site",
"uri_check" : "URI to check the site with the {account} string replaced by a username",
"uri_pretty" : "if the check_uri is for an API, this OPTIONAL element can show a human-readable page",
"post_body" : "if non-empty, then this entry is an HTTP POST and the content of this field are the data",
"e_code" : "the HTTP response code for a good 'account is there' response as an integer",
"e_string" : "the string in the response that we look for for a good response",
"m_string" : "this OPTIONAL string will only be in the response if there is no account found ",
"m_code" : "the HTTP response code for a bad 'account is not there' response as an integer",
"known" : ["a list of user accounts that can be used to test", "for user enumeration"],
"cat" : "a category for what the site is mainly used for. These are found at the top of the JSON",
"valid" : "this true or false boolean field is used to enable or disable this site element"
},
...
```
Here are examples of the site elements for both HTTP GET and HTTP POST entries:
**HTTP GET entry:**
```json
{
"name" : "Example GET",
"uri_check" : "https://www.example.com/load_profile_info.php?name={account}",
"uri_pretty" : "https://www.test.com/profile/{account}",
"post_body" : "",
"e_code" : 200,
"e_string" : "regist_at",
"m_code" : 200,
"m_string" : "Account not found",
"known" : ["whoami", "johndoe"],
"cat" : "images",
"valid" : true
},
```
**HTTP POST entry:**
```json
{
"name" : "Example POST",
"uri_check" : "https://www.example.com/interact_api/load_profile_info.php",
"post_body" : "Name=Gareth+Wylie&Age=24&Formula=a%2Bb+%3D%3D+21",
"e_code" : 200,
"e_string" : "regist_at",
"m_code" : 200,
"m_string" : "Account not found",
"known" : ["whoami", "johndoe"],
"cat" : "images",
"valid" : true
},
```
### Format of the Old JSON file
The format of the `web_accounts_list.json` JSON file is simple. There are 3 main elements:
**WARNING:** ==THIS FILE IS DEPRICATED, NO LONGER MAINTAINED, AND WILL BE REMOVED FROM THE PROJECT SOON. PLEASE MIGRATE TO USE THE NEW JSON FILE==
The format of the old `web_accounts_list.json` JSON file is simple. There are 3 main elements:
1. License - The license for this project and its data
2. Authors - The people that have contributed to this project
@ -108,71 +177,6 @@ Here is an example of a site element:
...
```
### Format of the New JSON file
The format of the `wmn-data.json` JSON was altered due to Issue #414. There are still 3 main elements:
1. License - The license for this project and its data
2. Authors - The people that have contributed to this project
3. Sites - This is the main data
Within the `sites` elements, the format is as follows (with several parameters being optional):
```json
...
{
"name" : "name of the site",
"uri_check" : "URI to check the site with the {account} string replaced by a username",
"uri_pretty" : "if the check_uri is for an API, this OPTIONAL element can show a human-readable page",
"post_body" : "if non-empty, then this entry is an HTTP POST and the content of this field are the data",
"e_code" : "the HTTP response code for a good 'account is there' response as an integer",
"e_string" : "the string in the response that we look for for a good response",
"m_string" : "this OPTIONAL string will only be in the response if there is no account found ",
"m_code" : "the HTTP response code for a bad 'account is not there' response as an integer",
"known" : ["a list of user accounts that can be used to test", "for user enumeration"],
"cat" : "a category for what the site is mainly used for. These are found at the top of the JSON",
"valid" : "this true or false boolean field is used to enable or disable this site element"
},
...
```
Here are examples of the site elements for both HTTP GET and HTTP POST entries:
**HTTP GET entry:**
```json
{
"name" : "Example GET",
"uri_check" : "https://www.example.com/load_profile_info.php?name={account}",
"uri_pretty" : "https://www.diigo.com/profile/{account}",
"post_body" : "",
"e_code" : 200,
"e_string" : "regist_at",
"m_code" : 200,
"m_string" : "Account not found",
"known" : ["whoami", "johndoe"],
"cat" : "images",
"valid" : true
},
```
**HTTP POST entry:**
```json
{
"name" : "Example POST",
"uri_check" : "https://www.example.com/interact_api/load_profile_info.php",
"post_body" : "Name=Gareth+Wylie&Age=24&Formula=a%2Bb+%3D%3D+21",
"e_code" : 200,
"e_string" : "regist_at",
"m_code" : 200,
"m_string" : "Account not found",
"known" : ["whoami", "johndoe"],
"cat" : "images",
"valid" : true
},
```
## Method 3. Programming, enhancing the tool itself
Basic python programming skills required.

View File

@ -6,7 +6,7 @@ This repository has the unified data required to perform user and username enume
## Tools/Web Sites Using WhatsMyName
* https://whatsmyname.app/ - [Chris Poulter](https://twitter.com/osintcombine) created this site which draws the project's JSON file into a gorgeous and easy to use web interface.
* https://whatsmyname.app/ - [Chris Poulter](https://twitter.com/osintcombine) created this site which draws the project's JSON file into an easy to use web interface.
* Filters for category and in search results.
* Exports to CSV and other formats.
* Pulls the latest version of the project's JSON file when run.

View File

@ -2,5 +2,4 @@
## Reporting a Vulnerability
To report a vulnerability, please create an [Issue](https://github.com/WebBreacher/WhatsMyName/issues) in this project or send
an email to `micah` `@` `spotliight-infosec.com`
To report a vulnerability, please create an [Issue](https://github.com/WebBreacher/WhatsMyName/issues) in this project or send an email to `micah` `@` `spotlight-infosec.com`

View File

@ -1,183 +0,0 @@
{
"definitions": {},
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://raw.githubusercontent.com/WebBreacher/WhatsMyName/master/schema.json",
"title": "Root",
"type": "object",
"required": [
"license",
"authors",
"categories",
"sites"
],
"properties": {
"license": {
"$id": "#root/license",
"title": "License",
"type": "array",
"default": [],
"items":{
"$id": "#root/license/items",
"title": "Items",
"type": "string",
"default": "",
"examples": [
"Copyright (C) 2022 Micah Hoffman"
],
"pattern": "^.*$"
}
},
"authors": {
"$id": "#root/authors",
"title": "Authors",
"type": "array",
"default": [],
"items":{
"$id": "#root/authors/items",
"title": "Items",
"type": "string",
"default": "",
"examples": [
"WebBreacher"
],
"pattern": "^.*$"
}
},
"categories": {
"$id": "#root/categories",
"title": "Categories",
"type": "array",
"default": [],
"items":{
"$id": "#root/categories/items",
"title": "Items",
"type": "string",
"default": "",
"examples": [
"archived"
],
"pattern": "^.*$"
}
},
"sites": {
"$id": "#root/sites",
"title": "Sites",
"type": "array",
"default": [],
"items":{
"$id": "#root/sites/items",
"title": "Items",
"type": "object",
"required": [
"name",
"check_uri",
"account_existence_code",
"account_existence_string",
"account_missing_string",
"account_missing_code",
"known_accounts",
"category",
"valid"
],
"properties": {
"name": {
"$id": "#root/sites/items/name",
"title": "Name",
"type": "string",
"default": "",
"examples": [
"101010.pl"
],
"pattern": "^.*$"
},
"check_uri": {
"$id": "#root/sites/items/check_uri",
"title": "Check_uri",
"type": "string",
"default": "",
"examples": [
"https://101010.pl/@{account}"
],
"pattern": "^.*$"
},
"account_existence_code": {
"$id": "#root/sites/items/account_existence_code",
"title": "Account_existence_code",
"type": "string",
"default": "",
"examples": [
"200"
],
"pattern": "^.*$"
},
"account_existence_string": {
"$id": "#root/sites/items/account_existence_string",
"title": "Account_existence_string",
"type": "string",
"default": "",
"examples": [
"@101010.pl"
],
"pattern": "^.*$"
},
"account_missing_string": {
"$id": "#root/sites/items/account_missing_string",
"title": "Account_missing_string",
"type": "string",
"default": "",
"examples": [
"The page you are looking for isn't here."
],
"pattern": "^.*$"
},
"account_missing_code": {
"$id": "#root/sites/items/account_missing_code",
"title": "Account_missing_code",
"type": "string",
"default": "",
"examples": [
"404"
],
"pattern": "^.*$"
},
"known_accounts": {
"$id": "#root/sites/items/known_accounts",
"title": "Known_accounts",
"type": "array",
"default": [],
"items":{
"$id": "#root/sites/items/known_accounts/items",
"title": "Items",
"type": "string",
"default": "",
"examples": [
"szekspir"
],
"pattern": "^.*$"
}
},
"category": {
"$id": "#root/sites/items/category",
"title": "Category",
"type": "string",
"default": "",
"examples": [
"social"
],
"pattern": "^.*$"
},
"valid": {
"$id": "#root/sites/items/valid",
"title": "Valid",
"type": "boolean",
"examples": [
true
],
"default": true
}
}
}
}
}
}