con questo programma potete fare un sacco di incontri tramite Streetpass Relay:
UPDATE 18/11/2013, corretto un bug sull'arresto del servizio:
Codice: Seleziona tutto
using System;
using System.IO;
namespace HomePassSharp
{
class MainClass
{
public static void Main (string[] args)
{
bool Esci = false;
string Comando;
int NumeroMAC;
//definisce il processo che si occupa di cambiare i MAC address
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents=false;
proc.StartInfo.FileName = AppDomain.CurrentDomain.BaseDirectory + "home_zone";//nome dello script che fa il lavoro di cambio MAC
proc.StartInfo.UseShellExecute=false;
proc.StartInfo.RedirectStandardOutput = true;//sopprime l'output dello script
//legge in memoria il file con l'elenco dei SSID e dei MAC
string[] MAC_Array = File.ReadAllLines(AppDomain.CurrentDomain.BaseDirectory + "zone.txt");
Console.WriteLine ("\nProgramma per ciclare i MAC Address delle Nintendo Zone!\nScritto da Ale\n");
Console.WriteLine ("Inserire il numero del MAC address tra 1 e " + (MAC_Array.GetUpperBound(0)+1).ToString());
while (!Esci) {
Console.Write ("HomePass $: ");//visualizza il prompt
Comando = Console.ReadLine ();
switch (Comando)
{
case "exit"://tutti i vari comandi per uscire
case "quit":
case "stop":
case "esci":
Console.WriteLine ("Chiudo e reimposto la connessione di rete");
proc.StartInfo.Arguments = "stop wlan0 eth0";
proc.Start ();
proc.WaitForExit ();
Environment.Exit (0);
break;
default://processa i comandi di cambio MAC
if (int.TryParse (Comando, out NumeroMAC)) {//controlla se è un numero
if (NumeroMAC > 0 && NumeroMAC <= (MAC_Array.GetUpperBound (0) + 1)) {
Console.WriteLine ("Imposto il MAC Address " + Comando + " alle " + DateTime.Now.ToShortTimeString());
string[] Coppia = MAC_Array [NumeroMAC - 1].Split(',');
if (Coppia.GetUpperBound (0) == 1) {//controlla se ci sono sia SSID che MAC
Console.WriteLine ("SSID: " + Coppia [0] + " MAC: " + Coppia[1]);
proc.StartInfo.Arguments = "spoof wlan0 eth0 " + Coppia [0] + " " + Coppia[1];
proc.Start ();
proc.WaitForExit ();
} else {// se non c'è uno dei due
Console.WriteLine ("Riga " + (NumeroMAC).ToString() + " danneggiata");
}
} else {
Console.WriteLine ("MAC Address non esistente");
}
} else {//se non è un numero è un comando sconosciuto
Console.WriteLine ("Comando non riconosciuto");
}
break;
}
}
}
}
}
Codice: Seleziona tutto
#!/bin/bash
# 13/08/2013
#This is dicamarques edition of the script with mac changed to the ones from the list here https://docs.google.com/spreadsheet/lv?key=0AvvH5W4E2lIwdEFCUkxrM085ZGp0UkZlenp6SkJablE and easier wlan config
#
# wifi_zone_new
# A script that emulates a Nintendo Zone in a way that you can actually connect to
# other people all over the world.
#
# Initial version written by Somebunny (9. August 2013).
#
#
# documentation (sort of)
#
# You will need the following packages/programs:
# - rfkill
# - dnsmasq (will be killed if already running)
# - hostapd (will be killed if already running)
# You should not need any additional configuration work.
#
# This script MUST be run as root, or using sudo, reconfiguring network
# interfaces does not seem to work when run by non-root.
#
# Please adapt the following sections to your own computer:
# - variables "zone" and "world", found below
# - you can add hotsopts in "InitZone()", just copy what is there
#
# Usage: call the script with one extra parameter that describes the
# MAC address to use. I have prepared some options that work from
# the thread in the gbatemp forums.
#
# Shutdown: call the script with the parameter "stop".
#
#
# A first attempt to organise everything in a somewhat smarter way.
#
# First, some obligatory checks.
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root or with sudo."
echo "I don't like this either, but some calls here are really picky!"
exit 1
fi
# some global settings; you should only need to adapt them for your system once
# * this is the network interface used for your custom AP; must be wireless
zone=$2
# * this is the network interface used to access the internet; can be almost anything
world=$3
# some local variables; using default values so that something is there
ssid=$4
mac=$5
country=DE
name="HomePass"
#
# local function that sets up the local variables;
# crude but better than having to change the script every time
# NOTE: this part should be heavily modified so that it doesn't
# depend on a static config. Maybe something with an external
# file or something, so you don't have to share your relay point
# with the entire world if you don't want to.
#
InitZone() {
# kill all existing support tools
killall dnsmasq 2> /dev/null
killall hostapd 2> /dev/null
# flush routing entries
iptables --flush
# deconfigure network interface
/sbin/ifconfig $zone down
case $1 in
"stop")
# emergency exit - restore old network state
echo "Stopping Nintendo Zone hotspot"
/etc/init.d/network-manager restart # yeah... didn't find a better way to fix it...
exit
;;
"spoof")
#lavora
;;
"default")
#lavora
;;
esac
}
# networkmanager often leaves a lock on the wireless hardware, remove it
rfkill unblock wifi
# set up parameters
InitZone $1
# give our wifi device a static IP address in the correct range so hostapd can associate with it
/sbin/ifconfig $zone hw ether $mac
/sbin/ifconfig $zone 192.168.23.1 up
# start dnsmasq
dnsmasq -i $zone --dhcp-range=192.168.23.50,192.168.23.150,255.255.255.0,12h
# enable IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# set basic routes so that our associated devices can reach the web
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables --table nat --append POSTROUTING --out-interface $world -j MASQUERADE
iptables --append FORWARD --in-interface $zone -j ACCEPT
sysctl -w net.ipv4.ip_forward=1
# start hostapd, spawn a temporary file
TMPDIR=`mktemp -d`
tmpfile=$TMPDIR/nztmp
echo $tmpfile
trap "rm -rf $TMPDIR" EXIT
echo "interface=${zone}" >> $tmpfile
echo "driver=nl80211" >> $tmpfile
echo "channel=1" >> $tmpfile
echo "ssid=${ssid}" >> $tmpfile
echo "auth_algs=1" >> $tmpfile
echo "wpa=0" >> $tmpfile
echo "country_code=${country}" >> $tmpfile
# uncomment the following two lines if you want MAC filtering
echo "macaddr_acl=1" >> $tmpfile
echo "accept_mac_file=/etc/hostapd/mac_accept" >> $tmpfile
echo "Starting Nintendo Zone hotspot, using config ''${name}''"
echo "SSID: ${ssid}"
echo "Country: ${country}"
hostapd $tmpfile -B -d > /dev/null 2> /dev/null
rm -rf $TMPDIR
Codice: Seleziona tutto
attwifi,4E:53:50:4F:4F:40
attwifi,4E:53:50:4F:4F:41
attwifi,4E:53:50:4F:4F:42
attwifi,4E:53:50:4F:4F:43
attwifi,4E:53:50:4F:4F:44
attwifi,4E:53:50:4F:4F:45
attwifi,4E:53:50:4F:4F:46
attwifi,4E:53:50:4F:4F:47
attwifi,4E:53:50:4F:4F:48
attwifi,4E:53:50:4F:4F:49
attwifi,4E:53:50:4F:4F:4A
attwifi,4E:53:50:4F:4F:4B
attwifi,4E:53:50:4F:4F:4C
attwifi,4E:53:50:4F:4F:4D
attwifi,4E:53:50:4F:4F:4E
attwifi,4E:53:50:4F:4F:4F
NDS-Guest,00:25:9C:52:1C:6A
attwifi,00:0D:67:15:2D:82
attwifi,00:0D:67:15:D7:21
attwifi,00:0D:67:15:D5:44
attwifi,00:0D:67:15:D2:59
attwifi,00:0D:67:15:D6:FD
attwifi,00:0F:F7:00:2D:82
attwifi,50:3D:E5:75:50:62
attwifi,00:1A:A2:A2:17:23
attwifi,00:1F:CA:60:42:80
attwifi,00:0D:67:1A:46:E7
attwifi,00:3A:99:5B:D0:82
attwifi,00:1F:9E:D3:84:60
attwifi,00:0D:BD:AF:DA:4A
attwifi,00:1F:CA:60:3E:20
attwifi,00:90:FB:32:8C:A4
attwifi,00:21:D8:DE:AB:C0
attwifi,00:24:14:10:df:12
attwifi,00:14:6a:c5:69:52
attwifi,58:8D:9:1E:4C:32
attwifi,5c:0a:5b:2f:3e:61
serve il demone hostapd, dnsmasq e rfkill.
dovete anche creare un file /etc/hostapd/mac_accept con dentro i MAC address dei vostri 3DS. magari l'ho metterò nella directory dello script che è meglio.
collegate il vostro computer tramite la ethernet in internet e scollegate la WiFi.
tada, il nientendo, mentre è acceso in stand by inizierà a trovare gente da tutto il mondo, 6 per volta.
ogni 15 minuti circa inserite il numero del nuovo MAC address ed il gioco è fatto.
per uscire bisogna scrivere esci o exit o quit. aggiungerò anche stop
per ora il nome dell'interfaccia di rete e della wireless sono cablati nel programma, glieli farò leggere da un file di configurazione.
ho scritto il programma sopra per facilitare l'uso dello script sotto, trovato su gbatemp.
aveva solo 6 MAC cablati al suo interno e tutte le volte c'era da specificare le interfacce di rete. oltre che ricordarsi di fare lo stop alla fine.
visto che lo installerò sul NetBook di un'amica che non è pratica di shell ho fatto la versione semplice.
potete anche compilare il C# su windows ed eseguirlo su Linux tramite mono. io l'ho compilato su OSX e lo uso su linux.
l'unico neo è che è da eseguire come root, visto che avvia e stoppa demoni