View Full Version : Need a Full-Duplex Sniffer
Resiliant
11-06-2002, 11:56 AM
I have been successfully using my little sniffer program for a week now, and things are mostly peachy-keen. However.. .(isn't there always an 'however' in life? ;) )... I see an improvement that would GREATLY increase the reliability of the system. I am still getting crashes when I enter my key read request a <bit> too early. Sometimes the net takes a bit longer to load, and i fumble the ball, requiring a complete relog and rezone.
SEQ needs to be able to TELL the sniffer when it needs a key, and then blocks for the sniffer to do it's thing. This needs to be no more complex than creating or updating a file in a perdetermined directory, and then watching for the existance of another file, reading it, then deleting it when it is done. It COULD be as complex as establiching a pipe and doing real-time bidirectional communication. In any case, may i respectfully suggest that the developers give us all a *little* better method of handling the key input. I would REALLY love to be able to fully automate the key acquisition process.
Comments? Suggestions?
MisterSpock
11-06-2002, 02:11 PM
I know Hoihoi is working on code to do it via UDP, which looks pretty slick.
I have automated mine slightly differently. I'm not using udp, I'm using two files (via Samba). One acts as a semaphor to control the action of the keyreader on the winblows box. The second is the keyfile itself.
After some experimentation, I discovered that my method seems to work best if I set the "key needed" semaphor about 500-1000 milliseconds after SEQ displays "your player ID is:" to the console. By this time, it is pretty certain that you have a good key waiting in memory. So, it is here that I added a bit of code to signal my sniffer to do its thing. When the key is ready, the semaphor is set to "key ready" and some code added to SEQ picks it up. (I'm toying with the idea of having a menu option to turn off the automated requesting. I also have hotkeys to do the same functions).
From a coding perspective, it is fairly simple. One must handle two issues: multiple access and "race conditions" between the two applications.
Oh -- one other important detail. The application that I keep running at all times never touches eq, or anything related to eq. It does a few routine nonsenses, including checking the semaphor every so often. It just so happens to have the capability to spawn the 'real' application which does its thing, and then completely vanishes until needed again.
Although this may appear a little bit clumsy, it does preserve SEQ's passive nature. More importantly, the structure allows for interesting flexibility and stealth on the client end. I can randomize when the sniffer launches. Heck, I don't always have to launch the same sniffer, and the sniffer doesn't hang around in memory for long.
Just some thoughts...
Resiliant
11-06-2002, 02:57 PM
Spock, this is *exactly* the way I was going to do the implemetation. The semaphore concept is exactly what is needed imo. Simply indicate in the semaphore file when the key is needed, the 'watcher' program sees it via the Samba share (I do that too), and then fires the sniffer only when required.
My only problemi s I have not ever before, modified the SEQ code. Would you mind pointing me at the proper source module to modify?
Resiliant
11-07-2002, 03:50 PM
OK
I got this almost entirely working! Im at the very *last* step -- issuing the loadKey signal from inside the SetPlayerID module. I'm not sure exactly the right way to do that. I've tried several options.. just referencing the LoadKey module... issuing a loadKey signal... but nothing seems to compile correctly.
sea4th
11-13-2002, 07:27 PM
For the full duplex I was expecting the logic to follow something like this. SEQ sees a new zone and needs a new key so a request is sent to sniffer. Sniffer peeks and returns key. If SEQ does not get a key in a few seconds like a typical zone time, then SEQ requests a key again.
Hey it is my first post so flame away.
Resiliant
11-14-2002, 11:23 AM
OK I'll just ask this.
What code do I need to insert to tell SEQ to go get the key? What modification do I need to make to set the default Key File to my own file path, rather than the standard one?
Res
Powered by vBulletin® Version 4.1.11 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.