diff --git a/pyren/mod_elm.py b/pyren/mod_elm.py index 0429373..44ad4b8 100755 --- a/pyren/mod_elm.py +++ b/pyren/mod_elm.py @@ -39,30 +39,37 @@ AllowedList = ['12', '1A', '21', '22', '23'] MaxBurst = 0x7 # Functional_2_CAN address translation tables for Renault cars -snat = {"01": "760", "02": "724", "04": "762", "07": "771", "08": "778", "0D": "775", "0E": "76E", "0F": "770", - "13": "732", "1B": "7AC", "1C": "76B", "1E": "768", "23": "773", "24": "77D", "26": "765", "27": "76D", - "29": "764", "2A": "76F", "2C": "772", "2E": "7BC", "32": "776", "3A": "7D2", "40": "727", "4D": "7BD", - "50": "738", "51": "763", "57": "767", "59": "734", "62": "7DD", "66": "739", "67": "793", "68": "77E", - "6B": "7B5", "6E": "7E9", "77": "7DA", "79": "7EA", "7A": "7E8", "7C": "77C", "86": "7A2", "87": "7A0", - "93": "7BB", "95": "7EC", "A5": "725", "A6": "726", "A7": "733", "A8": "7B6", "C0": "7B9", "D1": "7EE", - "F7": "736", "F8": "737", "FA": "77B", "FD": "76F", "FE": "76C", "FF": "7D0", "12": "7C3", "A1": "76C", - "58": "767", "2B": "735", "11": "7C9", "28": "7D7", "E8": "5C4", "2F": "76C", "64": "7D5", "D3": "7EE", - "DF": "5C1", "61": "7BA", "46": "7CF", "EA": "4B3", "ED": "704", "EC": "5B7", "E9": "762", "25": "700", - "E2": "5BB", "97": "7C8", "DE": "69C", "63": "73E", "E6": "484", "EB": "5B8", "78": "7BD", "5B": "7A5", - "81": "761", "06": "791", "E1": "5BA", "1A": "731", "E3": "4A7", "91": "7ED", "09": "7EB", "E7": "7EC", - "E4": "757", "E0": "58B", "82": "7AD", "47": "7A8"} -dnat = {"01": "740", "02": "704", "04": "742", "07": "751", "08": "758", "0D": "755", "0E": "74E", "0F": "750", - "13": "712", "1B": "7A4", "1C": "74B", "1E": "748", "23": "753", "24": "75D", "26": "745", "27": "74D", - "29": "744", "2A": "74F", "2C": "752", "2E": "79C", "32": "756", "3A": "7D6", "40": "707", "4D": "79D", - "50": "718", "51": "743", "57": "747", "59": "714", "62": "7DC", "66": "719", "67": "792", "68": "75A", - "6B": "795", "6E": "7E1", "77": "7CA", "79": "7E2", "7A": "7E0", "7C": "75C", "86": "782", "87": "780", - "93": "79B", "95": "7E4", "A5": "705", "A6": "706", "A7": "713", "A8": "796", "C0": "799", "D1": "7E6", - "F7": "716", "F8": "717", "FA": "75B", "FD": "74F", "FE": "74C", "FF": "7D0", "12": "7C9", "A1": "74C", - "58": "747", "2B": "723", "11": "7C3", "28": "78A", "E8": "644", "EC": "637", "2F": "74C", "64": "7D4", - "D3": "7E6", "DF": "641", "61": "7B7", "46": "7CD", "EA": "79A", "ED": "714", "E9": "742", "25": "70C", - "E2": "63B", "97": "7D8", "DE": "6BC", "63": "73D", "E3": "73A", "E6": "622", "EB": "638", "78": "79D", - "5B": "785", "81": "73F", "06": "790", "E1": "63A", "1A": "711", "91": "7E5", "09": "7E3", "E7": "7E4", - "E4": "74F", "E0": "60B", "82": "7AA", "47": "788"} +snat = {"01":"760","02":"724","04":"762","06":"791","07":"771","08":"778","09":"7EB", + "0D":"775","0E":"76E","0F":"770","11":"7C9","12":"7C3","13":"732","1A":"731", + "1B":"7AC","1C":"76B","1E":"768","23":"773","24":"77D","25":"700","26":"765", + "27":"76D","28":"7D7","29":"764","2A":"76F","2B":"735","2C":"772","2E":"7BC", + "2F":"76C","32":"776","3A":"7D2","3C":"7DB","40":"727","46":"7CF","47":"7A8", + "4D":"7BD","50":"738","51":"763","57":"767","58":"767","59":"734","5B":"7A5", + "5D":"18DAF25D","60":"18DAF160","61":"7BA","62":"7DD","63":"73E","64":"7D5", + "66":"739","67":"793","68":"77E","6B":"7B5","6E":"7E9","77":"7DA","78":"7BD", + "79":"7EA","7A":"7E8","7C":"77C","81":"761","82":"7AD","86":"7A2", + "87":"7A0","91":"7ED","93":"7BB","95":"7EC","97":"7C8","A1":"76C","A5":"725", + "A6":"726","A7":"733","A8":"7B6","C0":"7B9","D1":"7EE","D2":"18DAF1D2", + "D3":"7EE","DE":"69C","DF":"5C1","E0":"58B","E1":"5BA","E2":"5BB","E3":"4A7", + "E4":"757","E6":"484","E7":"7EC","E8":"5C4","E9":"762","EA":"4B3","EB":"5B8", + "EC":"5B7","ED":"704","F7":"736","F8":"737","FA":"77B","FD":"76F","FE":"76C", + "FF":"7D0"} + +dnat = {"01":"740","02":"704","04":"742","06":"790","07":"751","08":"758","09":"7E3", + "0D":"755","0E":"74E","0F":"750","11":"7C3","12":"7C9","13":"712","1A":"711", + "1B":"7A4","1C":"74B","1E":"748","23":"753","24":"75D","25":"70C","26":"745", + "27":"74D","28":"78A","29":"744","2A":"74F","2B":"723","2C":"752","2E":"79C", + "2F":"74C","32":"756","3A":"7D6","3C":"7D9","40":"707","46":"7CD", + "47":"788","4D":"79D","50":"718","51":"743","57":"747","58":"747","59":"714", + "5B":"785","5D":"18DA5DF2","60":"18DA60F1","61":"7B7","62":"7DC","63":"73D", + "64":"7D4","66":"719","67":"792","68":"75A","6B":"795","6E":"7E1","77":"7CA", + "78":"79D","79":"7E2","7A":"7E0","7C":"75C","81":"73F","82":"7AA", + "86":"782","87":"780","91":"7E5","93":"79B","95":"7E4","97":"7D8","A1":"74C", + "A5":"705","A6":"706","A7":"713","A8":"796","C0":"799","D1":"7E6","D2":"18DAD2F1", + "D3":"7E6","DE":"6BC","DF":"641","E0":"60B","E1":"63A","E2":"63B","E3":"73A", + "E4":"74F","E6":"622","E7":"7E4","E8":"644","E9":"742","EA":"79A","EB":"638", + "EC":"637","ED":"714","F7":"716","F8":"717","FA":"75B","FD":"74F","FE":"74C", + "FF":"7D0"} # Code snippet from https://github.com/rbei-etas/busmaster # Negative responses diff --git a/pyren/mod_scan_ecus.py b/pyren/mod_scan_ecus.py index 24c5647..65d0d4b 100755 --- a/pyren/mod_scan_ecus.py +++ b/pyren/mod_scan_ecus.py @@ -295,6 +295,9 @@ class ScanEcus: for row in self.detectedEcus: if 'idf' not in row.keys(): row['idf'] = '' + if row['dst'] not in m_elm.dnat.keys(): + m_elm.dnat[row['dst']] = '000' + m_elm.snat[row['dst']] = '000' if row['idf'] in families.keys() and families[row['idf']] in mod_globals.language_dict.keys(): fmlyn = mod_globals.language_dict[families[row['idf']]] if mod_globals.opt_scan: diff --git a/pyren/pyren.py b/pyren/pyren.py index 2089829..5e63968 100755 --- a/pyren/pyren.py +++ b/pyren/pyren.py @@ -273,8 +273,11 @@ def main(): if i in se.allecus.keys(): se.allecus[i]['ecuname']=i se.allecus[i]['idf']=se.allecus[i]['ModelId'][2:4] - if se.allecus[i]['idf'][0]=='0': - se.allecus[i]['idf'] = se.allecus[i]['idf'][1] + if se.allecus[i]['idf']!='': + if se.allecus[i]['idf'][0]=='0': + se.allecus[i]['idf'] = se.allecus[i]['idf'][1] + else: + continue se.allecus[i]['pin'] = 'can' se.detectedEcus.append( se.allecus[i] ) else: @@ -307,7 +310,9 @@ def main(): if os.path.isfile(ecucashfile): #if cache exists ecu = pickle.load( open( ecucashfile, "rb" ) ) #load it - else: #else + else: + if len(choosen_ecu['ModelId'])!=5: + continue ecu = ECU(choosen_ecu, lang.dict ) #loading original data for chosen ECU pickle.dump( ecu, open( ecucashfile, "wb" ) ) #and save cache