37 lines
		
	
	
		
			801 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			801 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/python3
 | 
						|
 | 
						|
import dbus
 | 
						|
import sys
 | 
						|
 | 
						|
bus = dbus.SystemBus()
 | 
						|
 | 
						|
if len(sys.argv) < 6 and len(sys.argv) > 2:
 | 
						|
	path = sys.argv[1]
 | 
						|
 | 
						|
	rands = []
 | 
						|
	for i in sys.argv[2:]:
 | 
						|
		rands.append(bytearray.fromhex(i))
 | 
						|
 | 
						|
	sim_auth = dbus.Interface(bus.get_object('org.ofono', path),
 | 
						|
							'org.ofono.SimAuthentication')
 | 
						|
	apps = sim_auth.GetApplications()
 | 
						|
 | 
						|
	for i in apps:
 | 
						|
		if apps[i]['Type'] == 'Umts':
 | 
						|
			umts_path = i
 | 
						|
 | 
						|
	if not umts_path:
 | 
						|
		print("No Umts application found")
 | 
						|
		quit()
 | 
						|
 | 
						|
	umts = dbus.Interface(bus.get_object('org.ofono', umts_path),
 | 
						|
						'org.ofono.USimApplication')
 | 
						|
	av = umts.GsmAuthenticate(rands)
 | 
						|
 | 
						|
	for i in av:
 | 
						|
		print('SRES: ' + ''.join('%02x' % x for x in i['SRES']))
 | 
						|
		print('KC: ' + ''.join('%02x' % x for x in i['Kc']))
 | 
						|
 | 
						|
else:
 | 
						|
	print("./run-usim-gsm-auth <modem> <rands>...[up to 3]")
 |