I've ran into several 10.4 machines here recently (intel only) that have the "looping network prefs" where it just keeps saying your settings have been changed and won't let you in. It's caused by an old school uuencoded password for PPP being in the network settings file, and a security update trying to upgrade the passwords and making the prefs panel flip out and not save the change, tossing it into a loop.

Recently though my previous fix wasn't working reliably, and the apparent cause of the problem, the security update, wasn't always on the machine, so I made some changes to my script. Here's the new fixer. AFAIK, nobody else knows how to fix this issue but our group, google for it wink

I also added the feature to display the passwords (in plaintext) that will be removed, provided they're not too long.

Code:
#!/bin/bash

# banner
clear
echo "Running $0"
echo
echo "This program will clear non-hashed password from your network settings"
echo "to fix access to the Network system preferences panel."
echo

# must run as root
if ! [ $EUID == 0 ] ; then
  echo
  echo -n "This script requires your (non-blank) administrator "
  sudo -k
  sudo -v
  if [ $? != 0 ] ; then
    echo "(cancelled)"
    exit
  fi
  sudo "$0"
  exit
else
  echo "Administrator access verified."
fi

# verify 10.4
vers=$(cat /System/Library/CoreServices/SystemVersion.plist  | grep -A 1 "ProductUserVisibleVersion" | tail -n 1 | cut -d ">" -f 2 | cut -d "<" -f 1)
vers=${vers%.*}
if [ "$vers" != "10.4" ] ; then
  echo "This script only works on mac os 10.4 (intel)"
  read -n 1 -p "Press RETURN to proceed anyway... " x
  if [ -n "$x" ] ; then
    echo "(cancelled)"
    exit
  fi
else
  echo "Mac OS 10.4 verified."
fi

# verify plist
plist="/Library/Preferences/SystemConfiguration/preferences"
old="${plist}_old"
new="${plist}_new"
plist="${plist}.plist"
new="${new}.plist"
if ! [ -f "$plist" ] ; then
  echo "Cannot find plist \"$plist\""
  echo
  exit
else
  echo "Plist \"$plist\" verified."
fi

# modify plist - remove all "DATA" type passwords (passwords stored in the plist, not in the keychain)
echo -n "Removing non-hashed passwords from network preferences... "

# display found passwords
cat "$plist" | tr '\n' '\r' | grep -o '<key>AuthPassword<\/key>[^<]*<data>[^<]*<[^<]*' | tr '\r' '\n' | grep -A 1 "<data>" | grep -v "<data>" | grep -v "-" | while read n ; do echo -n "Will remove password: \"" ; echo "$n" | openssl base64 -d ; echo "\"" ; done

echo

cat "$plist" | tr '\n' '\r' | sed 's/<key>AuthPassword<\/key>[^<]*<data>[^<]*<[^<]*//g' | sed 's/.$//g' | tr '\r' '\n' > "$new"

echo "done."

# verify lines removed
v1=$(($(cat "$plist" | wc -l)))
v2=$(($(cat "$new" | wc -l)))
((v3=v1-v2))
echo
echo "Netowrk plist changes from $v1 to $v2 lines ($v3 lines removed)"
echo "(normally four lines will be removed for each occurrence)"
read -n 1 -p "Press RETURN to replace... " x
if [ -n "$x" ] ; then
  echo "(cancelled)"
  exit
fi

echo -n "Replacing... "
if [ -f "$old" ] ; then
  rm "$old"
fi
mv "$plist" "$old"
mv "$new" "$plist"
echo "done."
echo
echo "Now you should be able to open the Network system preference."
echo
echo


I work for the Department of Redundancy Department