ail-framework/bin/packages/lib_gephi.py
Starow 1379ef705a Initial import of AIL framework - Analysis Information Leak framework
AIL is a modular framework to analyse potential information leak from unstructured data source like pastes from Past
ebin or similar services. AIL framework is flexible and can be extended to support other functionalities to mine sen
sitive information
2014-08-06 11:43:40 +02:00

64 lines
No EOL
2.1 KiB
Python

import networkx as nx
import xml.sax.saxutils as xlm
import redis
def Gephi_Graph(r_serv, graphpath, mincard, maxcard, insert_type):
"""Create Gephi Graph by calling a "Sub function": Create_Graph
:param r_serv: -- connexion to redis database
:param graphpath: -- the absolute path of the .gephi graph created.
:param mincard: -- the minimum links between 2 nodes to be created
:param maxcard: -- the maximum links between 2 nodes to be created
:param insert_type: -- the type of datastructure used to create the graph.
In fact this function is juste here to be able to choose between two kind of
Redis database structure: One which is a Sorted set and the other a simple
set.
"""
g = nx.Graph()
if (insert_type == 0):
for h in r_serv.smembers("hash"):
Create_Graph(r_serv, g, h, graphpath, mincard, maxcard)
elif (insert_type == 2):
for h in r_serv.zrange("hash", 0, -1):
Create_Graph(r_serv, g, h, graphpath, mincard, maxcard)
nx.write_gexf(g,graphpath)
print nx.info(g)
def Create_Graph(r_serv, graph, h, graphpath, mincard, maxcard):
"""Create Gephi Graph.
:param r_serv: -- connexion to redis database
:param graph: -- networkx graph object
:param h: -- (str) the hash which will be transform into a node.
:param graphpath: -- the absolute path of the .gephi graph created.
:param mincard: -- the minimum links between 2 nodes to be created
:param maxcard: -- the maximum links between 2 nodes to be created
This function link all the pastes with theirs own hashed lines.
Of course a paste can have multiple hashed lines and an hashed line can be
contained in multiple paste.
In this case it's a common hash.
"""
if (r_serv.scard(h) >= mincard) and (r_serv.scard(h) <= maxcard):
for filename in r_serv.smembers(h):
for line in r_serv.smembers(filename):
line = line.decode('UTF-8', errors='ignore')
line = xlm.quoteattr(line, {'"':'&quot;', "'":"&apos;"})
graph.add_edge(h, line+" -- "+filename)
#OK