Add files via upload
commit
5d64413e9a
|
@ -0,0 +1,25 @@
|
|||
# massiprecon
|
||||
Given a list of ips massiprecon will find location and provider info etc and write them to a csv or json
|
||||
|
||||
|
||||
## useage (standalone)
|
||||
```
|
||||
usage: py -m massiprecon -i INFILE -o OUTFILE
|
||||
|
||||
massiprecon args
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-i INFILE, --infile INFILE
|
||||
list of ips
|
||||
-o OUTFILE, --outfile OUTFILE
|
||||
json or csv file to write to
|
||||
```
|
||||
|
||||
|
||||
## useage (library)
|
||||
```
|
||||
from massiprecon import massiprecon
|
||||
f=massiprecon.FileMaker(args.infile,args.outfile)
|
||||
print(f.generate())
|
||||
```
|
|
@ -0,0 +1 @@
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
from massiprecon import massiprecon
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Importing argparse
|
||||
print(''' _____ ______ ________ ________ ________ ___ ________ ________ _______ ________ ________ ________
|
||||
|\\ _ \\ _ \\|\\ __ \\|\\ ____\\ |\\ ____\\|\\ \\|\\ __ \\|\\ __ \\|\\ ___ \\ |\\ ____\\|\\ __ \\|\\ ___ \\
|
||||
\\ \\ \\\\\\__\\ \\ \\ \\ \\|\\ \\ \\ \\___|_\\ \\ \\___|\\ \\ \\ \\ \\|\\ \\ \\ \\|\\ \\ \\ __/|\\ \\ \\___|\\ \\ \\|\\ \\ \\ \\\\ \\ \\
|
||||
\\ \\ \\\\|__| \\ \\ \\ __ \\ \\_____ \\\\ \\_____ \\ \\ \\ \\ ____\\ \\ _ _\\ \\ \\_|/_\\ \\ \\ \\ \\ \\\\\\ \\ \\ \\\\ \\ \\
|
||||
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\|____|\\ \\\\|____|\\ \\ \\ \\ \\ \\___|\\ \\ \\\\ \\\\ \\ \\_|\\ \\ \\ \\____\\ \\ \\\\\\ \\ \\ \\\\ \\ \\
|
||||
\\ \\__\\ \\ \\__\\ \\__\\ \\__\\____\\_\\ \\ ____\\_\\ \\ \\__\\ \\__\\ \\ \\__\\\\ _\\\\ \\_______\\ \\_______\\ \\_______\\ \\__\\\\ \\__\\
|
||||
\\|__| \\|__|\\|__|\\|__|\\_________\\\\_________\\|__|\\|__| \\|__|\\|__|\\|_______|\\|_______|\\|_______|\\|__| \\|__|
|
||||
\\|_________\\|_________| ''')
|
||||
import argparse
|
||||
|
||||
# Define the parser function
|
||||
def parser():
|
||||
|
||||
# Create the base argument parser
|
||||
parser = argparse.ArgumentParser(description="massiprecon args")
|
||||
parser.add_argument("-i", "--infile", required=True, help="list of ips")
|
||||
parser.add_argument("-o", "--outfile", required=True, help="json or csv file to write to")
|
||||
|
||||
|
||||
# Return parsed arguments
|
||||
args = parser.parse_args()
|
||||
return args
|
||||
|
||||
args = parser()
|
||||
f=massiprecon.FileMaker(args.infile,args.outfile)
|
||||
print(f.generate())
|
|
@ -0,0 +1,55 @@
|
|||
#imports
|
||||
import csv
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
|
||||
#internal function for removing keys
|
||||
def keystripper(rows):
|
||||
rows=[ [ str(value) for value in row.values() ] for row in rows ]
|
||||
return rows
|
||||
|
||||
class FileMaker:
|
||||
|
||||
#initialise FileMaker object
|
||||
def __init__(self,iplist,outfile):
|
||||
self.iplist=iplist
|
||||
self.outfile=outfile
|
||||
#parse extension
|
||||
self.filetype=outfile.split(".")[-1].lower()
|
||||
|
||||
#generator function
|
||||
def generate(self):
|
||||
|
||||
#open iplist file
|
||||
with open(self.iplist, "r") as iplist:
|
||||
rows=[]
|
||||
for ip in iplist:
|
||||
ip=ip.replace("\n","")
|
||||
|
||||
#query api
|
||||
r=requests.post(f"http://ip-api.com/json/{ip}?fields=status,message,continent,continentCode,country,countryCode,region,regionName,city,district,zip,lat,lon,timezone,offset,currency,isp,org,as,asname,reverse,mobile,proxy,hosting,query")
|
||||
rows.append(json.loads(r.text))
|
||||
|
||||
#write to json
|
||||
if self.filetype == "json":
|
||||
with open(self.outfile, "w", newline='\n') as outf:
|
||||
outf.write(json.dumps(rows))
|
||||
return "written to json"
|
||||
|
||||
#write to csv
|
||||
elif self.filetype == "csv":
|
||||
with open(self.outfile, "w", newline='\n') as outf:
|
||||
selected=rows[0]
|
||||
fields = [ key for key in selected.keys()]
|
||||
rows=keystripper(rows)
|
||||
writer = csv.writer(outf, delimiter=",")
|
||||
writer.writerow(fields)
|
||||
writer.writerows(rows)
|
||||
return "written to csv"
|
||||
|
||||
#invalid extension
|
||||
else:
|
||||
return "extension must be json or csv"
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
from setuptools import setup
|
||||
import codecs
|
||||
import os
|
||||
|
||||
here = os.path.abspath(os.path.dirname(__file__))
|
||||
|
||||
with codecs.open(os.path.join(here, "README.md"), encoding="utf-8") as fh:
|
||||
long_description = "\n" + fh.read()
|
||||
|
||||
VERSION = '0.0.11'
|
||||
DESCRIPTION = 'Generate csv or jsons with ip info'
|
||||
LONG_DESCRIPTION = 'Given a list of ips massiprecon will find location and provider info etc and write them to a csv or json'
|
||||
|
||||
# Setting up
|
||||
setup(
|
||||
name="massiprecon",
|
||||
version=VERSION,
|
||||
author="Witchdoctor (malectrica)",
|
||||
description=DESCRIPTION,
|
||||
long_description_content_type="text/markdown",
|
||||
long_description=long_description,
|
||||
packages=['massiprecon'],
|
||||
install_requires=['argparse'],
|
||||
keywords=['python', 'hack', 'osint', 'recon', 'data', 'api', 'ip'],
|
||||
classifiers=[
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
"Intended Audience :: Developers",
|
||||
"Programming Language :: Python :: 3",
|
||||
"Operating System :: Unix",
|
||||
"Operating System :: MacOS :: MacOS X",
|
||||
"Operating System :: Microsoft :: Windows",
|
||||
]
|
||||
)
|
Loading…
Reference in New Issue