-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlinkedOut.py
executable file
·92 lines (77 loc) · 3.16 KB
/
linkedOut.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/usr/bin/env python3
import argparse
import getLinks
import deface
parser = argparse.ArgumentParser()
parser.add_argument("url", help="URL to parse")
parser.add_argument("-v", "--verbose", help="Displays more information",
action="store_true")
parser.add_argument("-l", "--links", help="Print every link in the URL",
action="store_true")
parser.add_argument("-li", "--internal", help="Print every INTERNAL link in the URL",
action="store_true")
parser.add_argument("-le", "--external", help="Print every EXTERNAL link in the URL",
action="store_true")
parser.add_argument("-d", "--deface", help="Scan for defacement",
action="store_true")
parser.add_argument("-t", "--test", help="Test for broken links",
action="store_true")
parser.add_argument("-r", "--recursive", help="Scan every internal link recursively",
action="store_true")
args = parser.parse_args()
print("""
**************************************************
* _ _ _ _ ___ *
* | | (_)_ __ | | _____ __| |/ _ \ _ _| |_ *
* | | | | '_ \| |/ / _ \/ _` | | | | | | | __| *
* | |___| | | | | < __/ (_| | |_| | |_| | |_ *
* |_____|_|_| |_|_|\_\___|\__,_|\___/ \__,_|\__| *
* *
* LinkedOut Ver. 0.0.1 *
* Coded by Marcos Valle (@__mvalle__) *
* marcosvalle@protonmail.com *
**************************************************
""")
def runUrl(baseUrl):
if args.links:
print("==============================")
print("[+] Collecting links from...")
print(baseUrl)
links = getLinks.getRawLinks(baseUrl)
prettyLinks = getLinks.prettifyLinks(links, baseUrl)
if args.verbose:
for l in prettyLinks:
print("\t"+l)
if args.internal:
print("\n[+] Internal links: ")
internalLinks = getLinks.internalLinks(prettyLinks,baseUrl)
print("Total internal links: {}/{}".format(len(internalLinks), len(links)))
for l in internalLinks:
print("\t"+l)
if args.external:
print("\n[+] External links")
externalLinks = getLinks.externalLinks(prettyLinks,baseUrl)
print("Total External links: {}/{}".format(len(externalLinks), len(links)))
for l in getLinks.externalLinks(links, baseUrl):
print("\t"+l)
if args.test:
print("\n[+] Testing links...")
ok = getLinks.testLinks(prettyLinks)
print("[+] Links ok:")
for l in ok:
print("\t"+l)
if args.verbose:
print("[-] Broken links:")
for l in list(set(links)-set(ok)):
print("\t"+l)
if args.deface:
deface.checkDefacement(baseUrl)
print("Check './linkedout.py -h' for help\n")
baseUrl = getLinks.prepareUrl(args.url)
runUrl(baseUrl)
if args.recursive:
links = getLinks.getRawLinks(baseUrl)
prettyLinks = getLinks.prettifyLinks(links, baseUrl)
internalLinks = getLinks.internalLinks(prettyLinks,baseUrl)
for url in internalLinks:
runUrl(url)