mirror of
https://github.com/seemoo-lab/opendrop.git
synced 2026-09-14 15:16:11 -04:00
Remove code for legacy AirDrop mode
This commit is contained in:
+1
-2
@@ -49,7 +49,6 @@ class AirDropCli:
|
||||
parser.add_argument('-p', '--phone', nargs='*', help='User\'s phone numbers (currently unused)')
|
||||
parser.add_argument('-n', '--name', help='Computer name (displayed in sharing pane)')
|
||||
parser.add_argument('-m', '--model', help='Computer model (displayed in sharing pane)')
|
||||
parser.add_argument('-l', '--legacy', help='Enable legacy mode', action='store_true')
|
||||
parser.add_argument('-d', '--debug', help='Enable debug mode', action='store_true')
|
||||
parser.add_argument('-i', '--interface', help='Which AWDL interface to use', default='awdl0')
|
||||
args = parser.parse_args(args)
|
||||
@@ -61,7 +60,7 @@ class AirDropCli:
|
||||
|
||||
# TODO put emails and phone in canonical form (lower case, no '+' sign, etc.)
|
||||
|
||||
self.config = AirDropConfig(email=args.email, phone=args.phone, legacy=args.legacy,
|
||||
self.config = AirDropConfig(email=args.email, phone=args.phone,
|
||||
computer_name=args.name, computer_model=args.model,
|
||||
debug=args.debug, interface=args.interface)
|
||||
self.server = None
|
||||
|
||||
+2
-13
@@ -38,22 +38,14 @@ logger = logging.getLogger(__name__)
|
||||
class AirDropBrowser:
|
||||
|
||||
def __init__(self, config):
|
||||
self.legacy_mode = config.legacy
|
||||
if self.legacy_mode:
|
||||
self.useIPv6 = False
|
||||
else:
|
||||
self.useIPv6 = True
|
||||
self.ip_interface_name = config.interface
|
||||
|
||||
self.ip_addr, self.byte_address = AirDropUtil.get_ip_for_interface(self.ip_interface_name, ipv6=self.useIPv6)
|
||||
self.ip_addr, self.byte_address = AirDropUtil.get_ip_for_interface(self.ip_interface_name, ipv6=True)
|
||||
|
||||
if self.ip_addr is None:
|
||||
raise RuntimeError('Interface {} does not have IP(v6) address'.format(self.ip_interface_name))
|
||||
|
||||
if self.legacy_mode:
|
||||
self.zeroconf = Zeroconf()
|
||||
else:
|
||||
self.zeroconf = Zeroconf(interfaces=[self.ip_addr], ipv6_interface_name=self.ip_interface_name)
|
||||
self.zeroconf = Zeroconf(interfaces=[self.ip_addr], ipv6_interface_name=self.ip_interface_name)
|
||||
|
||||
self.callback_add = None
|
||||
self.callback_remove = None
|
||||
@@ -143,9 +135,6 @@ class AirDropClient:
|
||||
'SenderID': self.config.service_id,
|
||||
'ConvertMediaFormats': False,
|
||||
}
|
||||
if self.config.legacy:
|
||||
ask_body['SenderEmailHash'] = AirDropUtil.doubleSHA1Hash(self.config.email)
|
||||
ask_body['SenderPhoneHash'] = AirDropUtil.doubleSHA1Hash(self.config.phone)
|
||||
if self.config.record_data:
|
||||
ask_body['SenderRecordData'] = self.config.record_data
|
||||
|
||||
|
||||
+2
-4
@@ -48,7 +48,7 @@ class AirDropConfig:
|
||||
|
||||
def __init__(self, host_name=None, computer_name=None, computer_model=None, server_port=8771,
|
||||
airdrop_dir='~/.opendrop', service_id=None,
|
||||
email=None, phone=None, legacy=False, debug=False, interface=None):
|
||||
email=None, phone=None, debug=False, interface=None):
|
||||
self.airdrop_dir = os.path.expanduser(airdrop_dir)
|
||||
|
||||
self.discovery_report = os.path.join(self.airdrop_dir, 'discover.last.json')
|
||||
@@ -71,10 +71,8 @@ class AirDropConfig:
|
||||
self.debug = debug
|
||||
self.debug_dir = os.path.join(self.airdrop_dir, 'debug')
|
||||
|
||||
self.legacy = legacy
|
||||
|
||||
if interface is None:
|
||||
interface = 'awdl0' if not self.legacy else 'en0'
|
||||
interface = 'awdl0'
|
||||
self.interface = interface
|
||||
|
||||
if email is None:
|
||||
|
||||
+7
-23
@@ -43,33 +43,22 @@ class AirDropServer:
|
||||
def __init__(self, config):
|
||||
self.config = config
|
||||
|
||||
if self.config.legacy:
|
||||
self.useIPv6 = False
|
||||
else:
|
||||
self.useIPv6 = True
|
||||
self.ip_interface_name = self.config.interface
|
||||
|
||||
if self.useIPv6:
|
||||
self.address_family = socket.AF_INET6
|
||||
self.serveraddress = ('::', self.config.port)
|
||||
self.ServerClass = HTTPServerV6
|
||||
else:
|
||||
self.address_family = socket.AF_INET
|
||||
self.serveraddress = ('0.0.0.0', self.config.port)
|
||||
self.ServerClass = HTTPServer
|
||||
# Use IPv6
|
||||
self.address_family = socket.AF_INET6
|
||||
self.serveraddress = ('::', self.config.port)
|
||||
self.ServerClass = HTTPServerV6
|
||||
|
||||
self.ServerClass.allow_reuse_address = False
|
||||
|
||||
self.ip_addr, self.byte_address = AirDropUtil.get_ip_for_interface(self.ip_interface_name, ipv6=self.useIPv6)
|
||||
self.ip_addr, self.byte_address = AirDropUtil.get_ip_for_interface(self.ip_interface_name, ipv6=True)
|
||||
|
||||
self.Handler = AirDropServerHandler
|
||||
self.Handler.config = self.config
|
||||
|
||||
if self.config.legacy:
|
||||
self.zeroconf = Zeroconf()
|
||||
else:
|
||||
self.zeroconf = Zeroconf(interfaces=[self.ip_addr], ipv6_interface_name=self.ip_interface_name,
|
||||
apple_mdns=True)
|
||||
self.zeroconf = Zeroconf(interfaces=[self.ip_addr], ipv6_interface_name=self.ip_interface_name,
|
||||
apple_mdns=True)
|
||||
|
||||
self.http_server = self._init_server()
|
||||
self.service_info = self._init_service()
|
||||
@@ -115,11 +104,6 @@ class AirDropServer:
|
||||
|
||||
def get_properties(self):
|
||||
properties = {b'flags': str(self.config.flags).encode('utf-8')}
|
||||
if self.config.legacy:
|
||||
properties[b'phash'] = AirDropUtil.doubleSHA1Hash(self.config.phone).encode('utf-8')
|
||||
properties[b'nhash'] = False
|
||||
properties[b'ehash'] = AirDropUtil.doubleSHA1Hash(self.config.email).encode('utf-8')
|
||||
properties[b'cname'] = self.config.computer_name.encode('utf-8')
|
||||
return properties
|
||||
|
||||
|
||||
|
||||
@@ -153,23 +153,6 @@ class AirDropUtil:
|
||||
|
||||
return signed_data
|
||||
|
||||
@staticmethod
|
||||
def doubleSHA1Hash(toHash):
|
||||
"""
|
||||
This method gets an array of strings as input and creates a double SHA-1 Hash formatted in BASE64 from it.
|
||||
It will return a comma seperated list of SHA-1 hashes in BASE64
|
||||
|
||||
:param toHash: An iterable which contains one or many str
|
||||
"""
|
||||
|
||||
single_hashed = [SHA.new(to_hash.encode('utf-8')).digest() for to_hash in toHash]
|
||||
double_hashed = [SHA.new(single).digest() for single in single_hashed]
|
||||
|
||||
double_hashed_base64 = [base64.b64encode(h).decode('utf-8') for h in double_hashed]
|
||||
hash_string = ','.join(double_hashed_base64)
|
||||
|
||||
return hash_string
|
||||
|
||||
@staticmethod
|
||||
def pem2der(s):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user