Risponderò appropriato per un genitore: ala "Controllo genitori"
Si può iniziare con un server proxy quando i bambini sono meno di circa 10 anni. Dopodiché, scopriranno come aggirare il proxy (o eseguire le proprie applicazioni client che ignorano il proxy). Nei primi anni dell'adolescenza, puoi usare le prese crude. Digita questo programma in Visual Studio (C#).
class Program
{
static void Main(string[] args)
{
try
{
byte[] input = BitConverter.GetBytes(1);
byte[] buffer = new byte[4096];
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
s.Bind(new IPEndPoint(IPAddress.Parse("192.168.1.91"), 0));
s.IOControl(IOControlCode.ReceiveAll, input, null);
int bytes = 0;
do
{
bytes = s.Receive(buffer);
if (bytes > 0)
{
Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, bytes));
}
} while (bytes > 0);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
Si noti che questo è solo un “frammento”, privo di una progettazione adeguata e il controllo degli errori. [Si prega di non utilizzare 'così com'è' - si è richiesto solo un vantaggio iniziale] Modificare l'indirizzo IP sulla macchina. Eseguire il programma come amministratore (utilizzare "runas" sulla riga di comando o fare clic con il tasto destro del mouse su "Esegui come amministratore"). Solo gli amministratori possono creare e utilizzare socket grezzi nelle moderne versioni di Windows. Siediti e guarda lo spettacolo.
Tutto il traffico di rete viene consegnato al tuo codice (visualizzato sullo schermo, che non sembra bello, con questo programma).
Il passaggio successivo consiste nel creare alcuni filtri di protocollo. Scopri i vari protocolli delle applicazioni Internet (supponendo che tu non lo sappia già), modifica il programma per esaminare i pacchetti. Cerca il protocollo HTTP e salva i dati appropriati (come le richieste GET).
Personalmente ho i filtri di configurazione per AIM (AOL Instant Messenger), HTTP, MSN Messenger (Windows Live Messenger), POP e SMTP. Oggi, HTTP ottiene quasi tutto, dal momento che i bambini preferiscono il muro di Facebook a AIM al giorno d'oggi.
Mentre i bambini raggiungono l'adolescenza da inizio a metà anno, vorrai fare un salto indietro nel monitoraggio. Alcuni dicono che questo è per consentire ai bambini di "crescere", ma il vero motivo è che "non si vuole sapere". Ho fatto il back-up per raccogliere solo gli URL delle richieste get e il nome utente/password (per le situazioni di emergenza) che sono in chiaro (pop, basic auth, ecc.).
Non so cosa succede in tarda adolescenza; Non riesco a immaginare che le cose peggiorino di molto, ma mi è stato detto che "Non ho ancora visto nulla".
Come qualcuno ha detto in precedenza, questo funziona solo quando viene eseguito sul computer di destinazione (eseguo una copia su tutte le macchine della casa). Altrimenti, per un semplice monitoraggio, controlla il tuo router - il mio ha alcune caratteristiche di registrazione.
Il mio commento finale è che questa applicazione deve essere scritta direttamente in C/C++ rispetto all'API Win32 e installata come servizio in esecuzione con diritti amministrativi sulla macchina. Non penso che questo tipo di codice sia appropriato per il C# gestito. È possibile collegare un'interfaccia utente in C# per il monitoraggio e il controllo. È necessario progettare il codice in modo tale da non avere effetti evidenti sul sistema.
Non si dovrebbe usare 'Console.WriteLine (ex);' - non ha senso. O ex.Message (o qualcosa del genere) o non utilizzare affatto il blocco try-catch. Il messaggio dell'eccezione verrà scritto automaticamente sull'output. – abatishchev
Creare un ssh-tunnel sicuro con Proxifier Portable e Putty su un proxy esterno e tutto il lavoro è stato inutile: P Nondimeno +1 come ho trovato questa risposta molto interessante e questo sarà un buon inizio per un mio nuovo progetto. –
Grazie mille per questo post. Per favore possiamo ottenere più indicazioni sulla creazione di alcuni filtri di protocollo. Cosa dovrei cercare? Sto cercando di google "filtro del protocollo http C#", ma non sono abbastanza sicuro di cosa fare su tutti i caratteri casuali che questo codice sta scrivendo alla console. – Harry