def post(self): if 'value' in self.request.arguments(): #value = base64.b64decode(self.request.get('value')) fields = base64.b64decode(self.request.get('fields')) fields = fields.split('#') fs = {} for f in fields: if f.strip() != '': field,f_value = tuple(f.split('=')) fs[field] = f_value mt = MaltegoTransform() #surname = value.split()[-1] #first_name = value.split()[0] #t = solve_persona_ar( ['persona_ar','telefono',surname+' '+first_name] ) t = solve_persona_ar( ['persona_ar','telefono',fs['lastname']+' '+fs['firstname'] ] ) for solution in t: new_ent = mt.addEntity("PhoneNumber", '54 ' + solution[-1].replace('(','').replace(')','').replace('-',' ') ) phone = solution[-1].replace('(','').replace(')','').replace('-',' ') country = '54' city = phone.split()[0] area = phone.split()[1] last_digits = phone.split()[2] new_ent.addAdditionalFields(displayName='Country Code',fieldName='countrycode',value=country,matchingRule='strict') new_ent.addAdditionalFields(displayName='City Code',fieldName='citycode',value=city,matchingRule='strict') new_ent.addAdditionalFields(displayName='Area Code',fieldName='areacode',value=area,matchingRule='strict') new_ent.addAdditionalFields(displayName='Last Digits',fieldName='lastnumbers',value=last_digits,matchingRule='strict') new_ent.addAdditionalFields(displayName='PhoneType',fieldName='type',value='landline',matchingRule='strict') op = mt.returnOutputString() self.response.out.write( op ) self.response.headers['Content-Type'] = "text/xml" else: self.response.out.write( "PersonToPhoneNumberArgentina Maltego Transform" ) self.response.headers["Content-Type"] = "text/plain"
def main(): print "Content-type: xml\n\n"; MaltegoXML_in = sys.stdin.read() if MaltegoXML_in <> '': m = MaltegoMsg(MaltegoXML_in) # Shows inputs in client as error message # Enable debug on this transform in TDS to see # Comment this section to run the transform print 'Type='+ m.Type +' Value='+ m.Value + ' Weight=' + m.Weight + ' Limit=' + m.Slider print '\nAdditional fields:' for item in m.AdditionalFields.keys(): print 'N:'+item+' V:'+m.AdditionalFields[item] print "\nTransform settings:" for item in m.TransformSettings.keys(): print "N:"+item+" V:"+m.TransformSettings[item] print "\n\nXML received: \n" + MaltegoXML_in # Comment up to here.. # Start writing your transform here! # This one works on Person Entity as input # Swaps firstname and lastname, weight of 99, adds age field # Needs'Age' and 'ImageURL' transform settings Age="0" if m.TransformSettings["Age"] is not None: Age = m.TransformSettings["Age"] TRX = MaltegoTransform() Ent=TRX.addEntity("maltego.Person","doesnotmatter_its_computed") Ent.setWeight(99) Ent.addAdditionalFields("firstname","First Names","strict",m.AdditionalFields["lastname"]) Ent.addAdditionalFields("lastname","Surname","strict",m.AdditionalFields["firstname"]) Ent.addAdditionalFields("Age","Age of Person","strict",Age) if m.TransformSettings["ImageURL"] is not None: Ent.setIconURL(m.TransformSettings["ImageURL"]) TRX.returnOutput()
def main(): print "Content-type: xml\n\n" MaltegoXML_in = sys.stdin.read() if MaltegoXML_in <> '': m = MaltegoMsg(MaltegoXML_in) # Shows inputs in client as error message # Enable debug on this transform in TDS to see # Comment this section to run the transform print 'Type=' + m.Type + ' Value=' + m.Value + ' Weight=' + m.Weight + ' Limit=' + m.Slider print '\nAdditional fields:' for item in m.AdditionalFields.keys(): print 'N:' + item + ' V:' + m.AdditionalFields[item] print "\nTransform settings:" for item in m.TransformSettings.keys(): print "N:" + item + " V:" + m.TransformSettings[item] print "\n\nXML received: \n" + MaltegoXML_in # Comment up to here.. # Start writing your transform here! # This one works on Person Entity as input # Swaps firstname and lastname, weight of 99, adds age field # Needs'Age' and 'ImageURL' transform settings Age = "0" if m.TransformSettings["Age"] is not None: Age = m.TransformSettings["Age"] TRX = MaltegoTransform() Ent = TRX.addEntity("maltego.Person", "doesnotmatter_its_computed") Ent.setWeight(99) Ent.addAdditionalFields("firstname", "First Names", "strict", m.AdditionalFields["lastname"]) Ent.addAdditionalFields("lastname", "Surname", "strict", m.AdditionalFields["firstname"]) Ent.addAdditionalFields("Age", "Age of Person", "strict", Age) if m.TransformSettings["ImageURL"] is not None: Ent.setIconURL(m.TransformSettings["ImageURL"]) TRX.returnOutput()
def post(self): if 'value' in self.request.arguments(): #value = base64.b64decode(self.request.get('value')) mt = MaltegoTransform() #new_ent = mt.addEntity("Phrase", value + '!!!') op = mt.returnOutputString() self.response.out.write(op) self.response.headers['Content-Type'] = "text/xml" else: self.response.out.write("Sample Maltego Transform") self.response.headers["Content-Type"] = "text/plain"
def post(self): if 'value' in self.request.arguments(): #value = base64.b64decode(self.request.get('value')) mt = MaltegoTransform() #new_ent = mt.addEntity("Phrase", value + '!!!') op = mt.returnOutputString() self.response.out.write( op ) self.response.headers['Content-Type'] = "text/xml" else: self.response.out.write( "Sample Maltego Transform" ) self.response.headers["Content-Type"] = "text/plain"
def post(self): if 'value' in self.request.arguments(): #value = base64.b64decode(self.request.get('value')) fields = base64.b64decode(self.request.get('fields')) fields = fields.split('#') fs = {} for f in fields: if f.strip() != '': field, f_value = tuple(f.split('=')) fs[field] = f_value mt = MaltegoTransform() #surname = value.split()[-1] #first_name = value.split()[0] #t = solve_persona_ar( ['persona_ar','telefono',surname+' '+first_name] ) t = solve_persona_ar([ 'persona_ar', 'telefono', fs['lastname'] + ' ' + fs['firstname'] ]) for solution in t: new_ent = mt.addEntity( "PhoneNumber", '54 ' + solution[-1].replace( '(', '').replace(')', '').replace('-', ' ')) phone = solution[-1].replace('(', '').replace(')', '').replace('-', ' ') country = '54' city = phone.split()[0] area = phone.split()[1] last_digits = phone.split()[2] new_ent.addAdditionalFields(displayName='Country Code', fieldName='countrycode', value=country, matchingRule='strict') new_ent.addAdditionalFields(displayName='City Code', fieldName='citycode', value=city, matchingRule='strict') new_ent.addAdditionalFields(displayName='Area Code', fieldName='areacode', value=area, matchingRule='strict') new_ent.addAdditionalFields(displayName='Last Digits', fieldName='lastnumbers', value=last_digits, matchingRule='strict') new_ent.addAdditionalFields(displayName='PhoneType', fieldName='type', value='landline', matchingRule='strict') op = mt.returnOutputString() self.response.out.write(op) self.response.headers['Content-Type'] = "text/xml" else: self.response.out.write( "PersonToPhoneNumberArgentina Maltego Transform") self.response.headers["Content-Type"] = "text/plain"
import argparse from Maltego import MaltegoTransform if __name__ == '__main__': parser = argparse.ArgumentParser(description='Maltego transform') parser.add_argument('DOMAIN', help='Domain value') parser.add_argument('FIELDS', nargs='*', help='Additional fields') args = parser.parse_args() trx = MaltegoTransform() for subd in ["www", "smtp", "admin"]: trx.addEntity("maltego.Domain", subd + '.' + args.DOMAIN) trx.addUIMessage("completed!") print(trx.returnOutput())