halo / LinkLiar

:link: Link-Layer MAC spoofing GUI for macOS
http://halo.github.io/LinkLiar
MIT License
1.23k stars 84 forks source link

Parts of the menu disappear (Wi-Fi, Help and Quit items) #14

Closed halo closed 9 years ago

halo commented 9 years ago

Moved here over from https://github.com/halo/LinkLiar/issues/13#issuecomment-74580303

@GnrGnr wrote:

Installation now works. Yet en1 (WiFi) disappears after authorization of the helper tool from the dropdown. Maybe that's what @kwolk meant/experienced. It doesn't seem to make a difference whether the adapter is active/deativated. Turning wifi on/off also doesn't bring the entry back. En0 works fine though. Like a charm :)

There was some output on the console:

16/02/15 22:58:09,467 SecurityAgent[12901]: Failed to initialize IconCache named: com.apple.iconservices with error: Error Domain=NSCocoaErrorDomain Code=4097 "Couldn’t communicate with a helper application." (connection to service named com.apple.iconservices) UserInfo=0x7fa869794d50 {NSDebugDescription=connection to service named com.apple.iconservices}
16/02/15 22:58:09,468 SecurityAgent[12901]: Error returned from iconservicesagent: Error Domain=NSCocoaErrorDomain Code=4097 "Couldn’t communicate with a helper application." (connection to service named com.apple.iconservices) UserInfo=0x7fa8695127e0 {NSDebugDescription=connection to service named com.apple.iconservices}
16/02/15 22:58:13,934 SecurityAgent[12901]: Error returned from iconservicesagent: Error Domain=NSCocoaErrorDomain Code=4097 "Couldn’t communicate with a helper application." (connection to service named com.apple.iconservices) UserInfo=0x7fa869481840 {NSDebugDescription=connection to service named com.apple.iconservices}
16/02/15 22:58:16,016 Link[12873]: <NSXPCConnection: 0x60000010e8e0> connection to service named com.funkensturm.LinkHelper: Warning: Exception caught during decoding of received reply to message 'getVersionWithReply:', dropping incoming message and calling failure block.

Exception: *** -[NSArray objectsAtIndexes:]: index 2 in index set beyond bounds [0 .. 1]
16/02/15 22:58:17,304 Link[12873]: <NSXPCConnection: 0x60000010e8e0> connection to service named com.funkensturm.LinkHelper: Warning: Exception caught during decoding of received reply to message 'getVersionWithReply:', dropping incoming message and calling failure block.

Exception: *** -[NSArray objectsAtIndexes:]: index 2 in index set beyond bounds [0 .. 1]
16/02/15 22:58:19,558 CoreServicesUIAgent[11649]: unexpected message <OS_xpc_error: <error: 0x7fff7abf9c60> { count = 1, contents =
    "XPCErrorDescription" => <string: 0x7fff7abf9f70> { length = 18, contents = "Connection invalid" }
}>

Btw: Thanks for the hint to the adequate formatting. I had a quick look yesterday - yet did not identify backticks as the appropriate markdown on first glance.

On another note: Is there any way to shut down LinkLiar except from killing the process/restarting the machine?

EDIT: I just realised that there was a "Quit" option before i authorised the helper tool. Yet after its authorisation the quit option is gone; along with en1 and the "help" entry of the pulldown.

halo commented 9 years ago

Ok so step by step.

Everything related to IconCache is irrelevant I believe. I have those too and not only for LinkLiar but also for other applications.

This one:

Exception caught during decoding of received reply to message 'getVersionWithReply:

is obviously more serious. Google tells me that we're not alone but unfortunately I cannot reproduce the error which makes it very hard to solve it.

The failing method is strikingly simple and there should be nothing special there which could cause a bug. However, the

index 2 in index set beyond bounds [0 .. 1]

gives us a hint. I will make a version of LinkLiar tomorrow which will create a crash report again. With some luck we'll see who it was who called it. I will also try some more google fu.

Things you can try meanwhile

rm ~/Library/Preferences/com.funkensturm.Link.plist

Thank you for your time.

GnrGnr commented 9 years ago

I followed your suggestions step by step but don't see any changes. The console spit out the three already known msg from the security agent and two identical NSXPCConnection errors. The (last) entry from CoreServicesUI did not pop up again this time.

Apart from a second SSD my MacBook doesn't have any weird features or configuration. Yet it's fairly seasoned: A mid 2010 model. As far as i understand bluetooth (LE) changed significantly in later revisions. I wouldn't be surprised if the wifi adapter also has been changed significantly.

When i added a new location, the console showed the following. Unfortunately the wifi (en1) adapter did not reappear.

17/02/15 20:11:55,050 Link[14444]: <NSXPCConnection: 0x608000106660> connection to service named com.funkensturm.LinkHelper: Warning: Exception caught during decoding of received reply to message 'getVersionWithReply:', dropping incoming message and calling failure block.

Exception: *** -[NSArray objectsAtIndexes:]: index 2 in index set beyond bounds [0 .. 1]

I don't know whether this might give you any clue, but the above message also appears, whenever i "open" the helper app. No matter whether i take any action or only scroll over the (in my case remaining) entries for the ethernet (en0) or firewire (fw0) adapter. Even when i simply open and close it again, it shows up.

Let me know if i can provide you with any further data.

EDIT I should read more careful. Initially i only added a new location with a deactivated wifi adapter and switched back and forth. Anyways. When activating a location where the wifi adapter has been removed and installing Linkliar (previously rm all traces of it), the wifi adapter is displayed initially (identical to as when using a location where the wifi adapter is activated). When authorizing the helper app, it disappears from the menu yet only three messages are displayed in the console:

17/02/15 20:26:17,931 SecurityAgent[14687]: Failed to initialize IconCache named: com.apple.iconservices with error: Error Domain=NSCocoaErrorDomain Code=4097 "Couldn’t communicate with a helper application." (connection to service named com.apple.iconservices) UserInfo=0x7fdc035a3610 {NSDebugDescription=connection to service named com.apple.iconservices}
17/02/15 20:26:17,932 SecurityAgent[14687]: Error returned from iconservicesagent: Error Domain=NSCocoaErrorDomain Code=4097 "Couldn’t communicate with a helper application." (connection to service named com.apple.iconservices) UserInfo=0x7fdc035a4160 {NSDebugDescription=connection to service named com.apple.iconservices}
17/02/15 20:26:22,289 SecurityAgent[14687]: Error returned from iconservicesagent: Error Domain=NSCocoaErrorDomain Code=4097 "Couldn’t communicate with a helper application." (connection to service named com.apple.iconservices) UserInfo=0x7fdc03582a90 {NSDebugDescription=connection to service named com.apple.iconservices}

Maybe that boils it down a bit?

kwolk commented 9 years ago

This is what I see: http://cl.ly/image/3h3U0N0u2t3j

GnrGnr commented 9 years ago

That's exactly what i am seeing after authorization of the helper tool. Prior to that, the wifi adapter, "quit" and "help" are on that list as well.

On 18.02.2015, at 00:09, kwolk notifications@github.com wrote:

This is what I see: http://cl.ly/image/3h3U0N0u2t3j

— Reply to this email directly or view it on GitHub.

halo commented 9 years ago

What on earth is the Firewire adapter doing there? :) I knew that this was going to bite me back haha. I assume that is part of the problem. In the new network location, you can add the Wi-Fi again, but could you remove the FireWire?

I will make sure to only include Ethernet and Wi-Fi more reliably than checking for the string "Wi"as in "fireWIre" :)

GnrGnr commented 9 years ago

Apple introduced Ethernet over Firewire some years ago. I actually used it once (!). Check it out: http://en.wikipedia.org/wiki/IEEE_1394

halo commented 9 years ago

Good news! I can reliably reproduce the problem locally. I can confirm that is the issue, a fix is on the way...

halo commented 9 years ago

Ok, here's the new release. Thank you for giving it a try :)

GnrGnr commented 9 years ago

Moin moin,

LinkLiar works like a charm now. Great work, man!

Nevertheless, two separate thoughts:

When changing the MAC address, the current (wifi) connection becomes unusable. The network adapter probably has to renegotiate its connection once the MAC address changes. If this is the standard procedure, it would be much more convenient to the user if LinkLiar kills the ethernet/wifi connection(s) and re-establishes it once a MAC address change has been initiated by the user. The "suddenly unusable network connection" could become a major headache for people forgetting (or not knowing) that they have to re-establish their network connection. A quick drop and re-connect by LinkLiar could probably avoid this.

Secondly, just a pointer: I just recognised my plugged-in iPhone in the LinkLiar connection list. Because you hid the FireWire adapter, I thought that you might want to hide these very common devices (iPhones, iPads) as well. screen shot 2015-02-22 at 19 03 27

Thanks again for your work. Can't wait to use LinkLiar in real life. Probably at my next "free 30 minute wifi session" at some airport ;)

halo commented 9 years ago

Cool! I'm glad it's working. Thank you for your patience with debugging :)

As usual, I extracted your thoughts into new issues :) #15 and #16 and closing this one.