After reading several posts on mac spoofing and having failed to find a working thread.I decided to fill in the gaps with my linux knowledge (however little of that I may have).
So this method seems to solve some issues I've seen (MAC not changing because device wasn't downed) in these threads:
http://forum.xda-developers.com/showthread.php?t=1385577
http://forum.xda-developers.com/showthread.php?t=902354
without editing the nvram.txt
I've tested the ip link method on my recently rooted Samsung Tab 2 7.0"
Changing your mac address:
Prerequisites:
*A rooted device
*Busybox
*Terminal emulator
*Turn wifi on from your device's menu, do not connect to any network.
*Open your terminal emulator, now type:
$su
#ip link
*This should list all networking interfaces, identify your wifi device, take note of the name. now:
#ip link set NAME down
#ip link set NAME address 00:11:22:33:44:55
#ip link set NAME up
I believe that when using ifconfig the procedure is as follows:
$su
#ifconfig
*Take note of the device name
#ifconfig NAME down
#ifconfig NAME hw ether 00:11:22:33:44:55
#ifconfig NAME up
After doing the above you can connect to the desired network normally, using the default / other user interfaces.
NOTE: The mac address will be reset when WIFI is switched off.
I have confirmed the ip link method to be working. i.e. transmitted mac address is the new / changed one!
Actually in my case (SGS) i had to restart wifi first and then (while it's starting) quickly change the MAC using:
Code:
busybox ifconfig wlan0 hw ether 00:11:22:33:44:55
Important: It must be done about 500ms after enabling wifi, otherwise it won't work.
If I change MAC when wifi is off it simply returns to the original during next start.
Worked on i9000 with CM9 / 10
pawci0 said:
Actually in my case (SGS) i had to restart wifi first and then (while it's starting) quickly change the MAC using:
Code:
busybox ifconfig wlan0 hw ether 00:11:22:33:44:55
Important: It must be done about 500ms after enabling wifi, otherwise it won't work.
If I change MAC when wifi is off it simply returns to the original during next start.
Worked on i9000 with CM9 / 10
Click to expand...
Click to collapse
So downing the interface before changing and uping afterwards doesn't work?
i want to learn well the mac spoofing
setoPul Wilcox
this is actually incredibly useful, I got MACblocked off a network near college. thanks!
Doesn't work for me
Code:
# su
# ifconfig tiwlan0 down
# ip link set tiwlan0 address 00:11:22:33:44:55
ip: SIOCSIFHWADDR: Operation not supported on transport endpoint
# ifconfig tiwlan0 hw ether 00:11:22:33:44:55
error: SIOCSIFADDR (Invalid argument)
I guess its a kernel/driver problem... at least I know it works on normal Linux systems.
Itcouldbeyou said:
Doesn't work for me
Code:
# su
# ifconfig tiwlan0 down
# ip link set tiwlan0 address 00:11:22:33:44:55
ip: SIOCSIFHWADDR: Operation not supported on transport endpoint
# ifconfig tiwlan0 hw ether 00:11:22:33:44:55
error: SIOCSIFADDR (Invalid argument)
I guess its a kernel/driver problem... at least I know it works on normal Linux systems.
Click to expand...
Click to collapse
Funny that only some manufacturers disable such features. You could always try editing the nvram file? I haven't tried it though.
Isnt it dangerous ?
Script to apply random mac
I've made a script to create a random ghost mac every time I run it on the terminal emulator with su.
Code:
macaddr="52:54:$(dd if=/dev/urandom count=1 2>/dev/null | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4/')"
ip link set wlan0 down
ip link set wlan0 address $macaddr
ip link set wlan0 up
I've named it as gmac.sh and saved it on /sdcard/, thus by running:
Code:
$ su
# sh /sdcard/gmac.sh
the mac is changed.
Regards :cyclops:
Works differently on HTC Desire
Hello,
This is just to "set in stone" somewhere in the Internet that on some devices, you need *not* to down and up the network interface. Otherwise, the network driver will restore its MAC address from hardware/driver settings.
On a HTC Desire, MAC spoofing works this way:
* turn on the wifi interface using the standard Android interface
* run this script :
Code:
macaddr="52:54:$(dd if=/dev/urandom count=1 2>/dev/null | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4/')"
ip link set wlan0 address $macaddr
Best regards,
On some devices (e.g. HTC Desire among others), the wifi GUI still resets the mac address even with the method described in this thread.
worstenbrood has modified the wifi driver so that the mac address can be configured from a text file. It is described here:
http://forum.xda-developers.com/showthread.php?t=1525230
This is compatible with the wifi GUI and solves the problem of the wifi interface reloading its original mac address.
Anyone interested, I have backported his modifications to the latest state of the kernel developement in CM7.
thanks!
I get a 'operation not supported on transport endpoint' error when running the 'ip link set wlan0 address 00:11:22:33:44:55' and a about the same error with busy box.
Thanks for this! Gonna try this later.
damien.courousse said:
Hello,
This is just to "set in stone" somewhere in the Internet that on some devices, you need *not* to down and up the network interface. Otherwise, the network driver will restore its MAC address from hardware/driver settings.
On a HTC Desire, MAC spoofing works this way:
* turn on the wifi interface using the standard Android interface
* run this script :
Code:
macaddr="52:54:$(dd if=/dev/urandom count=1 2>/dev/null | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4/')"
ip link set wlan0 address $macaddr
Best regards,
Click to expand...
Click to collapse
anyone help me mine Hcl me 2G 2.0 i can't change mac please help me....
Hi,
Does anyone know how to set up DNS for mobile networks without an app? It must stick after reboot.
I found several threads about this (such as http://forum.xda-developers.com/showthread.php?t=1909019) but none of them seem to be useful for me since they're for other devices and I don't have the same files they're referring to.
I have a Defy+ (MB526), rooted, and no other modifications.
Thanks in advance.
Regards
In a terminal emulator, play around with getprop/setprop :
Code:
getprop | grep dns
setprop net.dns2 8.8.8.8
getprop | grep dns
Hi everyone,
This thread is obsolete because I found a solution check out my app here: http://forum.xda-developers.com/android/apps-games/app-dhcpv6-client-t3176443
This is port of Roy Marples dhcpcd client for Android.
Background:
The fact that Android doesn't support DHCPv6 is for many system administrators an eyesore.
The guys from google don't plan to implement this feature very soon or not at all. See https code.google.com/p/android/issues/detail?id=32621
Because of this I decided to cross compile the dhcpcd client from Roy Marples for android.
source: http roy.marples.name/projects/dhcpcd/home
This client was tested on my Nexus 5 with:
Chroma ROM (build from 05-06-2015 with Android 5.1.1)
3.4.107 UBER-L Kernel
Working
Execution of dhcpcd
Optaining AND setting IPv4 address
Optaining IPv6 address (but not assigning the address to an interface)
NOT Working
Assigning IPv6 address to an interface
running as dhcp user (will give you permission denied on the interfaces)
as replacement for the stock client (see below)
Installation
Connect your phone to your PC
Open an adb shell (adb shell)
ON PHONE:
Make a folder for the dhcp client
cd /sdcard && mkdir dhcpcd
ON COMPUTER:
Copy files to phone
adb push roy-marples-dhcpcd-android.tar.gz /sdcard/dhcpcd
ON PHONE:
cd /sdcard/dhcpcd
extract roy-marples-dhcpcd-android.tar.gz
tar -xf roy-marples-dhcpcd-android.tar.gz
aquire root
su
remount /system rw
mount -o remount,rw /system
copy dhcpcd client
cp out/system/bin/dhcpcd /system/bin/dhcpcd6
DO NOT OVERWRITE THE STOCK DHCP CLIENT!!!!!
Copy all other files and create folders
mkdir /data/misc/dhcp6 && mkdir /system/etc/dhcpcd6
cp out/system/etc/dhcpcd6/* /system/etc/dhcpcd6/.
copy required libs
cp libs/* /system/lib
setting permissions
chmod 755 /system/bin/dhcpcd6
chown root:shell /system/bin/dhcpcd6
chmod 644 /system/lib/ld-linux-armhf.so.3
chmod 644 /system/lib/libc.so.6
chmod 755 /system/etc/dhcpcd6
chmod 550 /system/etc/dhcpcd6/dhcpcd-run-hooks
chmod 644 /system/etc/dhcpcd6/dhcpcd.conf
chmod 770 /data/misc/dhcp6
chown dhcp:dhcp /data/misc/dhcp6
Behavior
dhcpcd - stock dhcp client
dhcpcd6 - my cross compiled dhcp client
This client will not work without the stock dhcpcd client for some reason.
When killing dhcpcd and connecting to a w-lan network dhcpcd will be started, you can then call dhcpcd6 and you will get a secondary IPv4 address, however you can get but not set an IPv6 address, see Issues to fix.
If you replace dhcpcd with dhcpcd6, android will not invoke a dhcpcd process, when connecting to a network, also manually over command line by calling dhpcd will not get an IP address.
If dhcpcd6 is invoked by the dhcp user (su dhcp -c "/system/bin/dhcpcd6") will give a permission denied at the interfaces for some reason.
Issues to Fix
You can obtain an IPv6 address but you can not assign it to an interface for some reason:
Code:
wlan0: soliciting a DHCPv6 lease
wlan0: ADV xxxx:67c:xxxx:52cc:xxxx::1419/128 from xxxx:67c:xxxx:52cc:xxxx::1
wlan0: REPLY6 received from xxxx:67c:xxxx:52cc:xxxx::1
wlan0: adding address xxxx:67c:xxxx:52cc:xxxx::1419/128
if_addaddress6: Invalid argument
I went through the source code and found out that the problem might come from the sendmsg function which basically sends data through a socket: if-linux.c line 865
Any advice would be appreciated
Troubleshooting
If you get something like this:
Code:
wlan0: Router Advertisement from 1234::1234:xxxx:xxxx:xxxx
wlan0: ignoring RA from 1234::1234:xxxx:xxxx:xxxx (no public prefix, no managed address)
Add ipv6ra_accept_nopublic to the /system/etc/dhcpcd6/dhcpcd.conf file
Help needed!
Basically just how to get it fully working
Any advise would be appreciated
Compiled with:
Compiled on: x86_64 GNU/Linux (Debian Jessie)
arm-linux-gnueabihf-
package: binutils-arm-linux-gnueabihf
preconfigure.sh
Code:
export CROSS_TARGET=arm-linux-gnueabihf
export CC="${CROSS_TARGET}-gcc-5"
## export CXX="${CROSS_TARGET}-g++"
export AR="${CROSS_TARGET}-ar"
export AS="${CROSS_TARGET}-as"
export LD="${CROSS_TARGET}-ld"
export RANLIB="${CROSS_TARGET}-ranlib"
export READELF="${CROSS_TARGET}-readelf"
export STRIP="${CROSS_TARGET}-strip"
Compile:
Code:
./configure --host=arm-linux-gnueabihf --enable-static --enable-ipv4 --enable-ipv6 --enable-embedded --sysconfdir=/system/etc/dhcpcd6 --bindir=/system/bin --libexecdir=/system/etc/dhcpcd6 --statedir=/data/misc/dhcp6 --dbdir=/data/misc/dhcp6 --rundir=/data/misc/dhcp6 --libdir=/system/lib
make -j2 ARCH=arm
mkdir out
make install DESTDIR=out
Thanks To:
Roy Maprles - for the source of his dhcp client
-realm_01
Edit 1 10:20 17-06-2015
I rebuilded the dhcpcd client with some changes in the directories, also I figured out what why I can't assign a IPv6 address
This thread is obsolete because I found a solution check out my app here: http://forum.xda-developers.com/android/apps-games/app-dhcpv6-client-t3176443
setprop camara.dis.flag 0
setprop: failed to set property 'camara.dis.flag' to '0'
why am i getting this error?
when i am tring to change some other fields i succeeded
for example
HWBLA:/ $ setprop debug.aps.enable 1
HWBLA:/ $ echo $?
0
seems like i dont have root access although i did unlocked the phone..
what am i missing?
Mystery build.prop
Root and install magisk gcam everything works
by tutorial via pc (shell) by adb ...
adb devices
adb shell
su
setprop persist.camera.HAL3.enabled 1
setprop persist.camera.eis.enable 1
my surprise when editing build.prop (apk)
the lines do not exist
and the camera works
where are those lines ???
Thank you very much for the help