Author: themacuser Date: 2007-04-24 06:45:15 +0200 (Tue, 24 Apr 2007) New Revision: 233 Modified: trunk/KisMAC.xcodeproj/project.pbxproj trunk/Resources/Nibs/English.lproj/PrefsAdvanced.nib/classes.nib trunk/Resources/Nibs/English.lproj/PrefsAdvanced.nib/info.nib trunk/Resources/Nibs/English.lproj/PrefsAdvanced.nib/objects.nib trunk/Resources/Nibs/English.lproj/PrefsDriver.nib/classes.nib trunk/Resources/Nibs/English.lproj/PrefsDriver.nib/info.nib trunk/Sources/Core/WaveScanner.mm trunk/Sources/Preferences/PreferencePanes/PrefsAdvanced.h trunk/Sources/Preferences/PreferencePanes/PrefsAdvanced.m trunk/Sources/Preferences/PreferencePanes/PrefsDriver.h trunk/Sources/Preferences/PreferencePanes/PrefsDriver.m trunk/Sources/WaveDrivers/WaveDriver.h trunk/Sources/WaveDrivers/WaveDriver.m trunk/Sources/WaveDrivers/WaveDriverKismet.h trunk/Sources/WaveDrivers/WaveDriverKismet.m Log: Improvements to WaveDriverKismet (now connects on start scan, and disconnects on stop scan) and a new driver - WaveDriverKismetDrone (you can use a kismet drone directly, without a kismet server). Modified: trunk/KisMAC.xcodeproj/project.pbxproj =================================================================== --- trunk/KisMAC.xcodeproj/project.pbxproj 2007-04-22 05:32:46 UTC (rev 232) +++ trunk/KisMAC.xcodeproj/project.pbxproj 2007-04-24 04:45:15 UTC (rev 233) @@ -483,6 +483,10 @@ 6CDAFD030AC4FA7D00A5D180 /* KismetXMLImporter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CDAFD010AC4FA7D00A5D180 /* KismetXMLImporter.m */; }; 6CF9EE6E0B6E9D2A00F54524 /* WaveDriverKismet.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CF9EE6C0B6E9D2A00F54524 /* WaveDriverKismet.h */; }; 6CF9EE6F0B6E9D2A00F54524 /* WaveDriverKismet.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CF9EE6D0B6E9D2A00F54524 /* WaveDriverKismet.m */; }; + 87B513670BD4ED2300DC8861 /* DriverPrefsView.h in Headers */ = {isa = PBXBuildFile; fileRef = 87B513650BD4ED2300DC8861 /* DriverPrefsView.h */; }; + 87B513680BD4ED2300DC8861 /* DriverPrefsView.m in Sources */ = {isa = PBXBuildFile; fileRef = 87B513660BD4ED2300DC8861 /* DriverPrefsView.m */; }; + 87C9272A0BAA137E0025A6AE /* WaveDriverKismetDrone.h in Headers */ = {isa = PBXBuildFile; fileRef = 87C927280BAA137D0025A6AE /* WaveDriverKismetDrone.h */; }; + 87C9272B0BAA137E0025A6AE /* WaveDriverKismetDrone.m in Sources */ = {isa = PBXBuildFile; fileRef = 87C927290BAA137E0025A6AE /* WaveDriverKismetDrone.m */; }; 87CEBA8209AEF03700AEB0B8 /* GrowlController.h in Headers */ = {isa = PBXBuildFile; fileRef = 87CEBA8009AEF03700AEB0B8 /* GrowlController.h */; }; 87CEBA8309AEF03700AEB0B8 /* GrowlController.m in Sources */ = {isa = PBXBuildFile; fileRef = 87CEBA8109AEF03700AEB0B8 /* GrowlController.m */; }; 8D1107280486CEB800E47090 /* KisMAC_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = 32CA4F630368D1EE00C91783 /* KisMAC_Prefix.pch */; }; @@ -839,6 +843,10 @@ 6CDAFD010AC4FA7D00A5D180 /* KismetXMLImporter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KismetXMLImporter.m; sourceTree = "<group>"; }; 6CF9EE6C0B6E9D2A00F54524 /* WaveDriverKismet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WaveDriverKismet.h; sourceTree = "<group>"; }; 6CF9EE6D0B6E9D2A00F54524 /* WaveDriverKismet.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = WaveDriverKismet.m; sourceTree = "<group>"; }; + 87B513650BD4ED2300DC8861 /* DriverPrefsView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DriverPrefsView.h; sourceTree = "<group>"; }; + 87B513660BD4ED2300DC8861 /* DriverPrefsView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DriverPrefsView.m; sourceTree = "<group>"; }; + 87C927280BAA137D0025A6AE /* WaveDriverKismetDrone.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WaveDriverKismetDrone.h; sourceTree = "<group>"; }; + 87C927290BAA137E0025A6AE /* WaveDriverKismetDrone.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = WaveDriverKismetDrone.m; sourceTree = "<group>"; }; 87CEBA8009AEF03700AEB0B8 /* GrowlController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = GrowlController.h; sourceTree = "<group>"; }; 87CEBA8109AEF03700AEB0B8 /* GrowlController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = GrowlController.m; sourceTree = "<group>"; }; 8D1107320486CEB800E47090 /* KisMAC.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = KisMAC.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1154,6 +1162,8 @@ 003533DB06A5DD8500AB4577 /* PreferencePanes */ = { isa = PBXGroup; children = ( + 87B513650BD4ED2300DC8861 /* DriverPrefsView.h */, + 87B513660BD4ED2300DC8861 /* DriverPrefsView.m */, 6C1D31BE09F37BC70005A9F8 /* PrefsAdvanced.h */, 6C1D31BF09F37BC70005A9F8 /* PrefsAdvanced.m */, 003533DC06A5DD8500AB4577 /* PrefsClient.h */, @@ -1249,6 +1259,8 @@ 0035341406A5DD8500AB4577 /* WaveDriverAirport.m */, 00DF456108B1E969003F3C7E /* WaveDriverAirportExtreme.h */, 00DF456208B1E969003F3C7E /* WaveDriverAirportExtreme.m */, + 87C927280BAA137D0025A6AE /* WaveDriverKismetDrone.h */, + 87C927290BAA137E0025A6AE /* WaveDriverKismetDrone.m */, 0035341506A5DD8500AB4577 /* WaveDriverAtheros.h */, 0035341606A5DD8500AB4577 /* WaveDriverAtheros.m */, 0035341706A5DD8500AB4577 /* WaveDriverMacJack.h */, @@ -1674,6 +1686,8 @@ 6CDAFD020AC4FA7D00A5D180 /* KismetXMLImporter.h in Headers */, 6C94AA2F0ADF3FBC001BE161 /* GPSSatInfo.h in Headers */, 6CF9EE6E0B6E9D2A00F54524 /* WaveDriverKismet.h in Headers */, + 87C9272A0BAA137E0025A6AE /* WaveDriverKismetDrone.h in Headers */, + 87B513670BD4ED2300DC8861 /* DriverPrefsView.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2069,6 +2083,8 @@ 6CDAFD030AC4FA7D00A5D180 /* KismetXMLImporter.m in Sources */, 6C94AA300ADF3FBC001BE161 /* GPSSatInfo.m in Sources */, 6CF9EE6F0B6E9D2A00F54524 /* WaveDriverKismet.m in Sources */, + 87C9272B0BAA137E0025A6AE /* WaveDriverKismetDrone.m in Sources */, + 87B513680BD4ED2300DC8861 /* DriverPrefsView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: trunk/Resources/Nibs/English.lproj/PrefsAdvanced.nib/classes.nib =================================================================== --- trunk/Resources/Nibs/English.lproj/PrefsAdvanced.nib/classes.nib 2007-04-22 05:32:46 UTC (rev 232) +++ trunk/Resources/Nibs/English.lproj/PrefsAdvanced.nib/classes.nib 2007-04-24 04:45:15 UTC (rev 233) @@ -13,6 +13,7 @@ kismetserverip = id; kismetserverport = id; "pr_interval" = id; + "show_debugmenu" = id; }; SUPERCLASS = PrefsClient; }, Modified: trunk/Resources/Nibs/English.lproj/PrefsAdvanced.nib/info.nib =================================================================== --- trunk/Resources/Nibs/English.lproj/PrefsAdvanced.nib/info.nib 2007-04-22 05:32:46 UTC (rev 232) +++ trunk/Resources/Nibs/English.lproj/PrefsAdvanced.nib/info.nib 2007-04-24 04:45:15 UTC (rev 233) @@ -7,7 +7,7 @@ <key>IBEditorPositions</key> <dict> <key>109</key> - <string>83 159 501 569 0 0 1024 746 </string> + <string>165 185 501 529 0 0 1024 746 </string> </dict> <key>IBFramework Version</key> <string>446.1</string> @@ -16,6 +16,6 @@ <integer>109</integer> </array> <key>IBSystem Version</key> - <string>8L127</string> + <string>8P135</string> </dict> </plist> Modified: trunk/Resources/Nibs/English.lproj/PrefsAdvanced.nib/objects.nib =================================================================== (Binary files differ) Modified: trunk/Resources/Nibs/English.lproj/PrefsDriver.nib/classes.nib =================================================================== --- trunk/Resources/Nibs/English.lproj/PrefsDriver.nib/classes.nib 2007-04-22 05:32:46 UTC (rev 232) +++ trunk/Resources/Nibs/English.lproj/PrefsDriver.nib/classes.nib 2007-04-24 04:45:15 UTC (rev 233) @@ -20,6 +20,7 @@ enableAEForever = id; selAddDriver = id; selAll = id; + selConfigure = id; selNone = id; selRemoveDriver = id; }; @@ -27,15 +28,23 @@ LANGUAGE = ObjC; OUTLETS = { "_aeForever" = NSButton; + "_chanhop" = NSBox; "_channelSel" = NSMatrix; "_driver" = NSPopUpButton; "_driverTable" = NSTableView; "_dumpDestination" = NSTextField; "_dumpFilter" = NSMatrix; + "_dumpFilterBox" = NSBox; "_firstChannel" = NSTextField; "_frequence" = NSTextField; + "_globalsettings" = NSBox; + "_injection" = NSBox; "_injectionDevice" = NSButton; + "_kdrone_settings" = NSBox; + "_kismet_host" = NSTextField; + "_kismet_port" = NSTextField; "_removeDriver" = NSButton; + "_savedumpsat" = NSBox; "_selAll" = NSButton; "_selNone" = NSButton; }; Modified: trunk/Resources/Nibs/English.lproj/PrefsDriver.nib/info.nib =================================================================== --- trunk/Resources/Nibs/English.lproj/PrefsDriver.nib/info.nib 2007-04-22 05:32:46 UTC (rev 232) +++ trunk/Resources/Nibs/English.lproj/PrefsDriver.nib/info.nib 2007-04-24 04:45:15 UTC (rev 233) @@ -3,11 +3,11 @@ <plist version="1.0"> <dict> <key>IBDocumentLocation</key> - <string>133 116 356 240 0 0 1280 1002 </string> + <string>119 29 356 240 0 0 1024 746 </string> <key>IBEditorPositions</key> <dict> <key>109</key> - <string>392 374 495 589 0 0 1280 1002 </string> + <string>264 147 495 589 0 0 1024 746 </string> </dict> <key>IBFramework Version</key> <string>446.1</string> @@ -16,6 +16,6 @@ <integer>109</integer> </array> <key>IBSystem Version</key> - <string>8J135</string> + <string>8P135</string> </dict> </plist> Modified: trunk/Sources/Core/WaveScanner.mm =================================================================== --- trunk/Sources/Core/WaveScanner.mm 2007-04-22 05:32:46 UTC (rev 232) +++ trunk/Sources/Core/WaveScanner.mm 2007-04-24 04:45:15 UTC (rev 233) @@ -129,18 +129,19 @@ NSUserDefaults *defs = [NSUserDefaults standardUserDefaults]; interval = [defs floatForKey:@"activeScanInterval"]; - - while (_scanning) { - nets = [wd networksInRange]; - - if (nets) { - for(i=0; i<[nets count]; i++) { - network = [nets objectAtIndex:i]; - [_container addAppleAPIData:network]; - } - } - [NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:interval]]; - } + if ([wd startedScanning]) { + while (_scanning) { + nets = [wd networksInRange]; + + if (nets) { + for(i=0; i<[nets count]; i++) { + network = [nets objectAtIndex:i]; + [_container addAppleAPIData:network]; + } + } + [NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:interval]]; + } + } } //does the actual scanning (extra thread) @@ -204,6 +205,10 @@ } else geiger=Nil; [wd startCapture:0]; + if (![wd startedScanning]) { + goto error; + } + while (_scanning) { //this is for canceling @try { frame = [wd nextFrame]; //captures the next frame (locking) Modified: trunk/Sources/Preferences/PreferencePanes/PrefsAdvanced.h =================================================================== --- trunk/Sources/Preferences/PreferencePanes/PrefsAdvanced.h 2007-04-22 05:32:46 UTC (rev 232) +++ trunk/Sources/Preferences/PreferencePanes/PrefsAdvanced.h 2007-04-24 04:45:15 UTC (rev 233) @@ -18,7 +18,8 @@ IBOutlet id pr_interval; //deauthenticate interval IBOutlet id kismetserverip; // Kismet server IP IBOutlet id kismetserverport; // Kismet server port + IBOutlet id show_debugmenu; } -(IBAction)setDefaults:(id)sender; -@end +@end \ No newline at end of file Modified: trunk/Sources/Preferences/PreferencePanes/PrefsAdvanced.m =================================================================== --- trunk/Sources/Preferences/PreferencePanes/PrefsAdvanced.m 2007-04-22 05:32:46 UTC (rev 232) +++ trunk/Sources/Preferences/PreferencePanes/PrefsAdvanced.m 2007-04-24 04:45:15 UTC (rev 233) @@ -16,8 +16,7 @@ [bpfdevice setStringValue:[controller objectForKey:@"bpfdevice"]]; [bpfloc setStringValue:[controller objectForKey:@"bpfloc"]]; [pr_interval setIntValue:[[controller objectForKey:@"pr_interval"] intValue]]; - [kismetserverip setStringValue:[controller objectForKey:@"kismetserverip"]]; - [kismetserverport setIntValue:[[controller objectForKey:@"kismetserverport"] intValue]]; + [show_debugmenu setState:[[controller objectForKey:@"DebugMode"] intValue]]; } -(BOOL)updateDictionary { @@ -26,8 +25,7 @@ [controller setObject:[bpfdevice stringValue] forKey:@"bpfdevice"]; [controller setObject:[bpfloc stringValue] forKey:@"bpfloc"]; [controller setObject:[NSNumber numberWithInt:[pr_interval intValue]] forKey:@"pr_interval"]; - [controller setObject:[kismetserverip stringValue] forKey:@"kismetserverip"]; - [controller setObject:[NSNumber numberWithInt:[kismetserverport intValue]] forKey:@"kismetserverport"]; + [controller setObject:[NSNumber numberWithInt:[show_debugmenu state]] forKey:@"DebugMode"]; return YES; } @@ -42,10 +40,8 @@ [controller setObject:[bpfloc stringValue] forKey:@"bpfloc"]; } else if(sender == pr_interval) { [controller setObject:[NSNumber numberWithInt:[pr_interval intValue]] forKey:@"pr_interval"]; - } else if(sender == kismetserverip) { - [controller setObject:[kismetserverip stringValue] forKey:@"kismetserverip"]; - } else if(sender == kismetserverport) { - [controller setObject:[NSNumber numberWithInt:[kismetserverport intValue]] forKey:@"kismetserverport"]; + } else if(sender == show_debugmenu) { + [controller setObject:[NSNumber numberWithInt:[show_debugmenu state]] forKey:@"DebugMode"]; } else { NSLog(@"Error: Invalid sender(%@) in setValueForSender:",sender); } @@ -57,8 +53,7 @@ [bpfdevice setStringValue:@"wlt1"]; [bpfloc setStringValue:@"/dev/bpf0"]; [pr_interval setIntValue:100]; - [kismetserverip setStringValue:@"127.0.0.1"]; - [kismetserverport setIntValue:2501]; + [show_debugmenu setState:NSOffState]; } @end \ No newline at end of file Modified: trunk/Sources/Preferences/PreferencePanes/PrefsDriver.h =================================================================== --- trunk/Sources/Preferences/PreferencePanes/PrefsDriver.h 2007-04-22 05:32:46 UTC (rev 232) +++ trunk/Sources/Preferences/PreferencePanes/PrefsDriver.h 2007-04-24 04:45:15 UTC (rev 233) @@ -17,17 +17,27 @@ IBOutlet NSMatrix *_channelSel; IBOutlet NSButton *_selAll; IBOutlet NSButton *_selNone; - + IBOutlet NSButton *_injectionDevice; IBOutlet NSPopUpButton *_driver; IBOutlet NSButton *_removeDriver; IBOutlet NSTableView *_driverTable; - + IBOutlet NSMatrix *_dumpFilter; IBOutlet NSTextField *_dumpDestination; + + IBOutlet NSTextField *_kismet_host; + IBOutlet NSTextField *_kismet_port; IBOutlet NSButton *_aeForever; + + IBOutlet NSBox *_chanhop; + IBOutlet NSBox *_kdrone_settings; + IBOutlet NSBox *_injection; + IBOutlet NSBox *_dumpFilterBox; + IBOutlet NSBox *_savedumpsat; + IBOutlet NSBox *_globalsettings; } - (IBAction)selAddDriver:(id)sender; Modified: trunk/Sources/Preferences/PreferencePanes/PrefsDriver.m =================================================================== --- trunk/Sources/Preferences/PreferencePanes/PrefsDriver.m 2007-04-22 05:32:46 UTC (rev 232) +++ trunk/Sources/Preferences/PreferencePanes/PrefsDriver.m 2007-04-24 04:45:15 UTC (rev 233) @@ -57,7 +57,7 @@ } -(NSDictionary*) getCurrentSettings { - int i = [_driverTable selectedRow]; + int i = [_driverTable selectedRow]; if (i<0) return Nil; @@ -69,6 +69,7 @@ bool enableChannel = NO; bool enableInjection = NO; bool enableDumping = NO; + bool enableIPAndPort = NO; Class driverClass; NSDictionary *d = Nil; unsigned int x, y; @@ -87,6 +88,16 @@ if ([driverClass allowsChannelHopping]) enableChannel = YES; if ([driverClass allowsInjection]) enableInjection = YES; if ([driverClass type] == passiveDriver) enableDumping = YES; + if ([driverClass wantsIPAndPort]) enableIPAndPort = YES; + if (enableIPAndPort) { + [_chanhop setHidden:true]; + [_kdrone_settings setHidden:false]; + [_kismet_host setStringValue:[d objectForKey:@"kismetserverhost"]]; + [_kismet_port setIntValue:[[d objectForKey:@"kismetserverport"] intValue]]; + } else { + [_chanhop setHidden:false]; + [_kdrone_settings setHidden:true]; + } } @@ -96,13 +107,13 @@ [_selNone setEnabled:enableChannel]; [_channelSel setEnabled:enableChannel]; [_firstChannel setEnabled:enableChannel]; - + [_dumpDestination setEnabled:enableDumping]; [_dumpFilter setEnabled:enableDumping]; - [_injectionDevice setEnabled:enableInjection]; + [_injectionDevice setEnabled:enableInjection]; if (!enableInjection) { - [_injectionDevice setTitle:@"Injection Not Supported"]; + [_injectionDevice setTitle:@"Injection Not Supported"]; }else [_injectionDevice setTitle:@"use as primary device"]; @@ -161,7 +172,7 @@ int i = [_driverTable selectedRow]; int val = 0, startCorrect = 0; unsigned int x, y; - + [controller setObject:[NSNumber numberWithFloat: [_frequence floatValue]] forKey:@"frequence"]; [controller setObject:[NSNumber numberWithBool: [_aeForever state] == NSOnState] forKey:@"aeForever"]; @@ -200,6 +211,9 @@ [d setObject:[_dumpDestination stringValue] forKey:@"dumpDestination"]; [d setObject:[NSNumber numberWithInt:[_dumpFilter selectedRow]] forKey:@"dumpFilter"]; + [d setObject:[_kismet_host stringValue] forKey:@"kismetserverhost"]; + [d setObject:[NSNumber numberWithInt:[_kismet_port intValue]] forKey:@"kismetserverport"]; + a = [[controller objectForKey:@"ActiveDrivers"] mutableCopy]; [a replaceObjectAtIndex:i withObject:d]; [controller setObject:a forKey:@"ActiveDrivers"]; @@ -252,10 +266,19 @@ - (IBAction)selAddDriver:(id)sender { NSMutableArray *drivers; NSString *driverClassName; + NSNumber *kserverport; int result; driverClassName = [NSString stringWithCString:WaveDrivers[[[_driver selectedItem] tag]]]; + if ([driverClassName isEqualToString:@"WaveDriverKismet"]) { + kserverport = [NSNumber numberWithInt:2501]; + } else if ([driverClassName isEqualToString:@"WaveDriverKismetDrone"]) { + kserverport = [NSNumber numberWithInt:3501]; + } else { + kserverport = [NSNumber numberWithInt:0]; + } + drivers = [[controller objectForKey:@"ActiveDrivers"] mutableCopy]; [drivers addObject:[NSDictionary dictionaryWithObjectsAndKeys: driverClassName, @"driverID", @@ -278,6 +301,8 @@ [NSNumber numberWithInt: 0] , @"dumpFilter", @"~/DumpLog %y-%m-%d %H:%M" , @"dumpDestination", [NSClassFromString(driverClassName) deviceName], @"deviceName", //todo make this unique for ever instance + @"127.0.0.1", @"kismetserverhost", + kserverport, @"kismetserverport", nil]]; [controller setObject:drivers forKey:@"ActiveDrivers"]; @@ -295,10 +320,11 @@ OK,nil, nil); } } + [_driverTable reloadData]; [_driverTable selectRow:[drivers count]-1 byExtendingSelection:NO]; - [self updateUI]; + [self updateUI]; [drivers release]; } Modified: trunk/Sources/WaveDrivers/WaveDriver.h =================================================================== --- trunk/Sources/WaveDrivers/WaveDriver.h 2007-04-22 05:32:46 UTC (rev 232) +++ trunk/Sources/WaveDrivers/WaveDriver.h 2007-04-24 04:45:15 UTC (rev 233) @@ -53,6 +53,7 @@ + (enum WaveDriverType) type; + (bool) allowsInjection; ++ (bool) wantsIPAndPort; + (bool) allowsChannelHopping; + (bool) allowsMultipleInstances; + (NSString*) description; @@ -63,6 +64,7 @@ - (enum WaveDriverType) type; - (bool) allowsInjection; +- (bool) wantsIPAndPort; - (bool) allowsChannelHopping; - (bool) allowsMultipleInstances; - (bool) unloadBackend; @@ -91,6 +93,10 @@ // for passive scanning - (WLFrame*) nextFrame; +// for the kismet drones +-(bool) startedScanning; +-(bool) stoppedScanning; + // for packet injection - (bool) sendFrame:(UInt8*)f withLength:(int) size atInterval:(int)interval; - (bool) stopSendingFrames; Modified: trunk/Sources/WaveDrivers/WaveDriver.m =================================================================== --- trunk/Sources/WaveDrivers/WaveDriver.m 2007-04-22 05:32:46 UTC (rev 232) +++ trunk/Sources/WaveDrivers/WaveDriver.m 2007-04-24 04:45:15 UTC (rev 233) @@ -26,7 +26,10 @@ #import "WaveDriverAirport.h" #import "WaveHelper.h" -char WaveDrivers [][30] = { "WaveDriverAirport", "WaveDriverKismet", "WaveDriverAirportExtreme", "WaveDriverViha", "WaveDriverAtheros", "WaveDriverAironet", "WaveDriverMacJack", "WaveDriverPrismGT", "WaveDriverUSBIntersil", "\0" }; +char WaveDrivers [][30] = { "WaveDriverAirport", "WaveDriverKismet", "WaveDriverKismetDrone", + "WaveDriverAirportExtreme", "WaveDriverViha", "WaveDriverAtheros", + "WaveDriverAironet", "WaveDriverMacJack", "WaveDriverPrismGT", + "WaveDriverUSBIntersil", "\0" }; @implementation WaveDriver @@ -45,6 +48,10 @@ return NO; } ++ (bool) wantsIPAndPort { + return NO; +} + + (bool) allowsChannelHopping { return NO; } @@ -81,6 +88,10 @@ return [[self class] allowsInjection]; } +- (bool) wantsIPAndPort { + return [[self class] wantsIPAndPort]; +} + - (bool) allowsChannelHopping { return [[self class] allowsChannelHopping]; } @@ -92,6 +103,7 @@ - (bool) unloadBackend { return [[self class] unloadBackend]; } + - (NSString*) deviceName { return [[self class] deviceName]; } @@ -293,6 +305,16 @@ #pragma mark - +-(bool) startedScanning { + return YES; +} + +-(bool) stoppedScanning { + return YES; +} + +#pragma mark - + - (bool) sendFrame:(UInt8*)f withLength:(int) size atInterval:(int)interval { return NO; } Modified: trunk/Sources/WaveDrivers/WaveDriverKismet.h =================================================================== --- trunk/Sources/WaveDrivers/WaveDriverKismet.h 2007-04-22 05:32:46 UTC (rev 232) +++ trunk/Sources/WaveDrivers/WaveDriverKismet.h 2007-04-24 04:45:15 UTC (rev 233) @@ -1,10 +1,15 @@ /* - File: WaveDriverKismet.m + File: WaveDriverKismet.h Program: KisMAC Author: Geordie Millar themacuser@xxxxxxxxx Description: Scan with a Kismet server in KisMac. + + Details: Tested with Kismet 2006.04.R1 on OpenWRT White Russian RC6 on a Diamond Digital R100 + (broadcom mini-PCI card, wrt54g capturesource) + and Kismet 2006.04.R1 on Voyage Linux on a PC Engines WRAP.2E + (CM9 mini-PCI card, madwifing) This file is part of KisMAC. Modified: trunk/Sources/WaveDrivers/WaveDriverKismet.m =================================================================== --- trunk/Sources/WaveDrivers/WaveDriverKismet.m 2007-04-22 05:32:46 UTC (rev 232) +++ trunk/Sources/WaveDrivers/WaveDriverKismet.m 2007-04-24 04:45:15 UTC (rev 233) @@ -5,6 +5,11 @@ Author: Geordie Millar themacuser@xxxxxxxxx Description: Scan with a Kismet server in KisMac. + + Details: Tested with Kismet 2006.04.R1 on OpenWRT White Russian RC6 on a Diamond Digital R100 + (broadcom mini-PCI card, wrt54g capturesource) + and Kismet 2006.04.R1 on Voyage Linux on a PC Engines WRAP.2E + (CM9 mini-PCI card, madwifing) This file is part of KisMAC. @@ -41,6 +46,46 @@ self = [super init]; if (!self) return nil; + KismetInstances++; + + return self; +} + ++(int) kismetInstanceCount { + return KismetInstances; +} + +#pragma mark - + ++ (enum WaveDriverType) type { + return activeDriver; +} + ++ (bool) wantsIPAndPort { + return YES; +} + ++ (NSString*) description { + return NSLocalizedString(@"Kismet Server, Passive Mode", "long driver description"); +} + ++ (NSString*) deviceName { + return NSLocalizedString(@"Kismet Server", "short driver description"); +} + +#pragma mark - + ++ (bool) loadBackend { + return YES; +} + ++ (bool) unloadBackend { + return YES; +} + +#pragma mark - + +- (bool) startedScanning { NSUserDefaults *defs; defs = [NSUserDefaults standardUserDefaults]; @@ -56,9 +101,31 @@ return nil; } - hostname = [[defs objectForKey:@"kismetserverip"] cString]; - port = [[defs objectForKey:@"kismetserverport"] intValue]; + int foundhostname=0; + int foundport=0; + NSArray *a; + a = [defs objectForKey:@"ActiveDrivers"]; + NSEnumerator *e = [a objectEnumerator]; + NSDictionary *drvr; + @try { + while ( (drvr = [e nextObject]) ) { + if ([[drvr objectForKey:@"driverID"] isEqualToString:@"WaveDriverKismet"]) { + hostname = [[drvr objectForKey:@"kismetserverhost"] cString]; + foundhostname = 1; + port = [[defs objectForKey:@"kismetserverport"] intValue]; + foundport = 1; + } + } + } + @catch (NSException * ex) { + NSLog(@"Exception getting the hostname and port from plist..."); + } + + if (foundhostname + foundport < 2) { + NSLog(@"Error getting the hostname and port from plist..."); + } + ip = inet_addr(hostname); serv_name.sin_addr.s_addr = ip; @@ -77,42 +144,17 @@ } write(sockd, initstr, strlen(initstr)); - - KismetInstances++; - - return self; + + return YES; } -+(int) kismetInstanceCount { - return KismetInstances; +- (bool) stopCapture { + close(sockd); + return YES; } #pragma mark - -+ (enum WaveDriverType) type { - return activeDriver; -} - -+ (NSString*) description { - return NSLocalizedString(@"Kismet Server, Passive Mode", "long driver description"); -} - -+ (NSString*) deviceName { - return NSLocalizedString(@"Kismet Server", "short driver description"); -} - -#pragma mark - - -+ (bool) loadBackend { - return YES; -} - -+ (bool) unloadBackend { - return YES; -} - -#pragma mark - - - (NSArray*) networksInRange { int len,i,j,flags,t,signalint; int usenetarray = 0; @@ -150,9 +192,9 @@ bssid = [NSData dataWithBytes:bssidstring length:6]; // bssid, simple enough signalint = [[rcvd3 objectAtIndex:4] intValue]; // signal level, as an int if (signalint > 1000 || signalint < 0) { signalint = 0; } // sometimes it comes through as an invalid number - signal = [NSNumber numberWithInt:signalint]; // signal level as NSNumber + signal = [NSNumber numberWithInt:signalint]; // signal level as NSNumber, you can't put int into array noise = [NSNumber numberWithInt:0]; // this is only subtracted from signal, not needed - channel = [NSNumber numberWithInt:[[rcvd3 objectAtIndex:6] intValue]]; // channel + channel = [NSNumber numberWithInt:[[rcvd3 objectAtIndex:6] intValue]]; // channel... flags = 0;