Newsgroup: it.tlc.gestori.fastweb
Titolo: EMULATORE VIDEOSTATION

              *
 *                                                              *
 *               *** DEVEL/UNTESTED/UNSTABLE ***                *
 *                                                              *
 ******************************************** fastboys, 2002 ***/
#define VIDEOSTATION_AUTHCODE
"WebDVD=STBsn=KR0000000000&MAC=00:00:00:00:00:00&IP=0.0.0.0&HR=HR0000000000000"
#define MULTI_HEADERS_FILE "/usr/local/etc/multicast"
#define EXEC_MULTI execl("/usr/local/bin/MultoKrast", "MultoKrast", host,
cport, NULL)
#ifdef FASTREAM_DEBUG
        #define debug(x...) fprintf(stderr, x)
#else
        #define debug(x...)
#endif
#define HTTP_PROTO "http://"
#define HTTP_PORT 80
#define HEADER_AGENT "User-Agent: Mozilla/4.78 [en] (X11; U;
Linux.2.4.12.i586; Nav)\n"
#define HEADER_AGENT_KEYLEN 12
#define HEADER_KEEPALIVE "Connection: Keep-Alive"
#define HEADER_COOKIE "Cookie: " VIDEOSTATION_AUTHCODE
#define HEADER_COOKIE_KEYLEN 8
#include <stdio.h>
#include <netdb.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main(void);
void multicast_headers(void);
int resolv4(char *hostname, struct sockaddr_in *saddr);
int main()
{
        char firstline[1024], newline[1024], *host = (char *)NULL, *path =
(char *)NULL, cport[6];
        short unsigned int port;
        int sock;
        struct sockaddr_in saddr;
        fgets(firstline, sizeof(firstline), stdin);
        if(strchr(firstline, ' ') == (char *)NULL) {
                debug("Only http proxy support.\n");
                exit(-1);
        }
        host = (char *)((int)strchr(firstline, ' ') + 1);
        if(strncasecmp(host, HTTP_PROTO, strlen(HTTP_PROTO))) {
                debug("Only http proxy support.\n");
                exit(-1);
        }
        host = strtok((char *)((int)host + strlen(HTTP_PROTO)), "/");
        if(strchr(host, ':') == (char *)NULL) {
                port = (u_short)HTTP_PORT;
        } else {
                port = (u_short)atoi((char *)((int)strchr(host, ':') + 1));
        }
        path = (char *)((int)host + strlen(host) + 1);
        host = strtok(host, ":");
        snprintf(newline, sizeof(newline), "%s /%s", strtok(firstline, "
"), path);
        saddr.sin_family = AF_INET;
        saddr.sin_port = htons(port);
        if(resolv4(host, &saddr)) {
                debug("Unable to resolve %s\n", host);
                exit(-1);
        }
        if(IN_MULTICAST(ntohl(saddr.sin_addr.s_addr))) {
                debug("Multicast proxy request detected.\n");
                multicast_headers();
                sleep(1);
                snprintf(cport, sizeof(cport), "%d", port);
                EXEC_MULTI;
                exit(0);
        }
        debug("Unicast proxy request detected.\n");
        if((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
                debug("socket()\n");
                exit(-1);
        }
        if(connect(sock, (struct sockaddr *)&saddr, sizeof(saddr)) < 0) {
                debug("connect()\n");
                close(sock);
                exit(-1);
        }
        if(send(sock, newline, strlen(newline), 0) < 0) {
                debug("write()\n");
                close(sock);
                exit(-1);
        }
        port = 1;
        while(fgets(firstline, sizeof(firstline), stdin) != (char *)NULL) {
                if(!strncasecmp(firstline, HEADER_AGENT,
HEADER_AGENT_KEYLEN)) {
                        strncpy(firstline, HEADER_AGENT,
sizeof(firstline));
                } else if(!strncasecmp(firstline, HEADER_KEEPALIVE,
strlen(HEADER_KEEPALIVE))) {
                        continue;
                } else if(!strncasecmp(firstline, HEADER_COOKIE,
HEADER_COOKIE_KEYLEN)) {
                        send(sock, HEADER_COOKIE, strlen(HEADER_COOKIE),
0);
                        send(sock, ";", strlen(";"), 0);
                        send(sock, strstr(firstline, " "),
strlen(strstr(firstline, " ")), 0);
                        port = 0;
                        continue;
                }
                if(!strcmp(firstline, "\r\n")) {
                        if(port) {
                                send(sock, HEADER_COOKIE,
strlen(HEADER_COOKIE), 0);
                                send(sock, "\n", strlen("\n"), 0);
                        }
                        send(sock, firstline, strlen(firstline), 0);
                        break;
                }
                send(sock, firstline, strlen(firstline), 0);
        }
        while((port = read(sock, firstline, sizeof(firstline))) > 0) {
                write(STDOUT_FILENO, firstline, port);
        }
        close(sock);
        exit(0);
}
void multicast_headers()
{
        FILE *headers = (FILE *)NULL;
        char headerline[1024];
        if((headers = fopen(MULTI_HEADERS_FILE, "r")) == (FILE *)NULL) {
                debug("Error opening "  MULTI_HEADERS_FILE ".\n");
        }
        while(fgets(headerline, sizeof(headerline), headers) != (char
*)NULL) {
                fprintf(stdout, "%s", headerline);
                fflush(stdout);
        }
        fclose(headers);
        fprintf(stdout, "\n");
        fflush(stdout);
        return;
}
int resolv4(char *hostname, struct sockaddr_in *saddr)
{
        struct hostent *host_data;
        if((saddr->sin_addr.s_addr = inet_addr(hostname)) != -1) {
                return(0);
        }
        if((host_data = gethostbyname(hostname)) == (struct hostent
*)NULL) {
                return(-1);
        }
        memcpy(&saddr->sin_addr.s_addr, host_data->h_addr_list[0],
host_data->h_length);
        return(0);
}
/* EOF */
videos.patch: un po' la chicca della collezione, applicatela all'A-team
(trovate il codice nel round 1) e potrete facilmente aggiungere
l'autenticazione automatica alla vostra videostation, in modo da abilitare
attraverso codici la vostra videostation sgarrupata! Teoricamente dovrebbe
servirvi solamente come strumento di studio iniziale, la cosa migliore e`
in
qualche modo arrivare a trovare almeno un ip multicast su cui viene
trasmesso
il flusso MPEG, dopodiche` fate voi, gli ip sono tutti amici e contigui,
fate
poi prima a farvi un bello scan (ad esempio usando le potenzialita` di
MultoKrast come multicast network scanner (e un po' di sano bash
scripting).
Createvi una vostra bella *pagina telecomando*, dalla quale potete
scegliere
direttamente il programma, e poi usate mplayer o le funzionalita` di
navigazione sul web della vostra videostation per accedervi e poter
scegliere
il programma che piu` vi aggrada (eheh non so come mai sento che sarete
tutti
li` ad aspettare dopo le 23 Hot Club, beh se durante il giorno trovate la
programmazione Palco, tornate su quei canali la sera :D)
Giusto un paio di note tecniche: per quanto riguarda la versione delle
Libnet,
bisogna usare la 1.0.2a in quanto le versioni precedenti e successive
presentano modifiche strutturali molto evidenti, e non permettono di
eseguire
alcune operazioni ritenute oltremodo importanti.
<-| fastream/videos.patch |->
--- A-team.c	2002-03-22 00:00:00.000000000 +0100
+++ A-team.c.patched	2002-09-02 09:59:28.000000000 +0200
@@ -5,7 +5,15 @@
 *                     / _ \ _____| __/ _ \/ _` | '_ ` _ \                
     *
 *                    / ___ \_____| ||  __/ (_| | | | | | |               
     *
 *                   /_/   \_\     \__\___|\__,_|_| |_| |_|               
     *
-*                                                                        
     *
+*                                     _                                  
     *
+*                                   _| |_                                
     *
+*                                  |_   _|                               
     *
+*                 _     __           |_|                __       __      
     *
+*          _   __(_)___/ /__  ____  _____  ____  ____ _/ /______/ /_     
     *
+*         | | / / / __  / _ \/ __ \/ ___/ / __ \/ __ `/ __/ ___/ __ \    
     *
+*         | |/ / / /_/ /  __/ /_/ (__  ) / /_/ / /_/ / /_/ /__/ / / /    
     *
+*         |___/_/\__,_/\___/\____/____(_) .___/\__,_/\__/\___/_/ /_/     
     *
+*                                      /_/                               
     *
 *                                                                        
     *
 *        based on HEAT - Half Ethernet Address Translation tecnology     
     *
 *                   tHE rECIdjVO - 
reci...@pkcrew.org
 
     *
@@ -13,7 +21,7 @@
 *                                                                        
     *
 *      Libraries needed:                                                 
     *
 *      - libpcap - 
http://www.tcpdump.org/
 
     *
-*      - Libnet  - 
http://libnet.sourceforge.net/
 
     *
+*      - Libnet  - 
http://www.packetfactory.net/libnet/
 (1.0.2a)         
     *
 *                                                                        
     *
 *   compile with:                                                        
     *
 *   # cc -o A-team A-team.c `libnet-config --defines --libs` -lpcap
-pthread   *
@@ -21,7 +29,10 @@
 *                                                                        
     *
 *******************************************************************************/
 
-#define PROGNAME "A-team"
+#define CODE1 "000000000000"
+#define CODE2 "00:00:00:00:00:00"
+#define CODE4 "000000000000000"
+
 #define ERRBUF_SIZE ((PCAP_ERRBUF_SIZE > LIBNET_ERRBUF_SIZE) ?
PCAP_ERRBUF_SIZE : LIBNET_ERRBUF_SIZE)
 #define READ_TIMEOUT 1000
 #define STACK_TIMEOUT 2
@@ -32,6 +43,15 @@
 #define LOOP -1
 #define debugf(x...); if(debug) { printf(x); fflush(stdout); }
 
+#define RUNPATCH 0
+#define TOK1 "WebDVD=STBsn="
+#define TOK2 "&MAC="
+#define TOK3 "&IP="
+#define TOK4 "&HR="
+#define LEN1 0x0c
+#define LEN2 0x11
+#define LEN4 0x0f
+
 #include <pcap.h>
 #include <libnet.h>
 #include <pthread.h>
@@ -58,7 +78,8 @@
 struct ether_addr *ext_hw_addr = (struct ether_addr *)NULL;
 struct interface internal, external;
 char debug = DEBUG;
-
+char runpatch = RUNPATCH;
+unsigned char *video_hw_addr = (unsigned char *)NULL;
 extern char pcap_version[];
 
 int main(int argc, char *argv[]);
@@ -69,6 +90,7 @@
 void heat(char *id, struct pcap_pkthdr *pcap_h, u_char *out_packet);
 void push(char *packet, int len, int id, struct timeval *tv);
 int pop(char *packet, int len, int id);
+unsigned char *replace(unsigned char *buf, int len);
 
 int main(int argc, char* argv[]) {
         /* Set id flags */
@@ -77,8 +99,7 @@
 
         /* Blank record structures */
         bzero(int_recs, sizeof(struct stack_packet) * STACKLEN);
-        bzero(int_recs, sizeof(struct stack_packet) * STACKLEN);
-
+        bzero(ext_recs, sizeof(struct stack_packet) * STACKLEN);
         /* Get command line params */
         getparms(argc, argv);
 
@@ -86,6 +107,8 @@
         initialize(&internal);
         initialize(&external);
 
+        debugf(" * videos.patch detected.. turned %s\n", ((runpatch) ?
"ON" : "OFF"));
+
         /* Fork && go! */
         if(!debug) {
                 /* Go in the daemon land */
@@ -95,7 +118,7 @@
                 setsid();
         }
 
-        debugf("Logging traffic ( . -> from external to internal | o ->
from internal to external)\n");
+        debugf("Logging traffic ( . -> from external to internal | o ->
from internal to external | * -> videospatched packet)\n");
         pthread_create(&external.pthread, NULL, threadloop, (void
*)&external);
         threadloop((void *)&internal);
 
@@ -107,7 +130,7 @@
         char optc;
 
         /* Parse command line params */
-        while((optc = getopt(argc, argv, "i:e:dh")) != EOF) {
+        while((optc = getopt(argc, argv, "i:e:a:dvh")) != EOF) {
                 switch(optc) {
                         case 'i':
 
internal.name
 = optarg;
@@ -115,9 +138,20 @@
                         case 'e':
 
external.name
 = optarg;
                                 break;
+                        case 'a':
+                                video_hw_addr = (unsigned char
*)malloc(ETHER_ADDR_LEN * sizeof(unsigned char));
+                                if(sscanf(optarg, "%x:%x:%x:%x:%x:%x",
&video_hw_addr[0], &video_hw_addr[1], &video_hw_addr[2],
+                                                        
&video_hw_addr[3], &video_hw_addr[4], &video_hw_addr[5]) == 6) {
+                                        break;
+                                }
+                                usage(argv[0]);
+                                exit(0);
                         case 'd':
                                 debug = 1;
-                                 debugf("Set verbose mode ON\n");
+                                debugf("Set verbose mode ON\n");
+                                break;
+                        case 'v':
+                                runpatch = 1;
                                 break;
                         case 'h':
                                 usage(argv[0]);
@@ -132,6 +166,12 @@
         }
         debugf("Set internal interface to: %s\n", 
internal.name
);
         debugf("Set external interface to: %s\n", 
external.name
);
+        if(video_hw_addr == (unsigned char *)NULL) {
+                debugf("No video hardware address detected, applying to
all traffic.\n");
+        } else {
+                debugf("Set video hardware address to:
[%02x:%02x:%02x:%02x:%02x:%02x]\n", video_hw_addr[0], video_hw_addr[1],
+                                                        video_hw_addr[2],
video_hw_addr[3], video_hw_addr[4], video_hw_addr[5]);
+        }
 
         return;
 }
@@ -139,7 +179,7 @@
 void usage(char *progname)
 {
         /* Program usage */
-        fprintf(stderr, "usage:\t%s -i internal_interface -e
external_interface [-d]\n\t%s -h\n\n", progname, progname);
+        fprintf(stderr, "usage:\t%s -i internal_interface -e
external_interface [-d] [-v] [-a video_hw_addr]\n\t%s -h\n\n", progname,
progname);
         return;
 }
 
@@ -203,13 +243,16 @@
 
 void heat(char *id, struct pcap_pkthdr *pcap_h, u_char *out_packet) {
         struct interface *iface;
-        
+        u_char *payload;
+        u_char packetcp[SNAPLEN];
+        struct libnet_ip_hdr *iphdr;
+        struct libnet_tcp_hdr *tcphdr;
+
         /* Check where the packet is coming from */
         if((int)id) {
                 /* From external interface to internal interface */
                 iface = &internal;
 
-                /* Check for duplicates */
                 pthread_mutex_lock(&ext_packet_mutex);
                 if (pop(out_packet, pcap_h->len, (int)id)){
                         /* packet is duplicate */
@@ -217,8 +260,9 @@
                         return;
                 }
                 push(out_packet, pcap_h->len, (int)id, (struct timeval
*)&pcap_h->ts);
-                pthread_mutex_unlock(&ext_packet_mutex);
 
+                /* Check for duplicates */
+                pthread_mutex_unlock(&ext_packet_mutex);
         } else {
                 /* From internal interface to external interface */
                 iface = &external;
@@ -230,10 +274,28 @@
                         pthread_mutex_unlock(&int_packet_mutex);
                         return;
                 }
+
+                if(runpatch) {
+                        if((video_hw_addr == (unsigned char *)NULL) ||
!memcmp(((struct libnet_ethernet_hdr *)out_packet)->ether_shost,
video_hw_addr, ETHER_ADDR_LEN)) {
+                                iphdr = (struct libnet_ip_hdr
*)(out_packet + LIBNET_ETH_H);
+                                if(iphdr->ip_p == IPPROTO_TCP) {
+                                        memcpy(packetcp, out_packet,
pcap_h->len);
+                                        tcphdr = (struct libnet_tcp_hdr
*)((int)packetcp + LIBNET_ETH_H + LIBNET_IP_H);
+                                        payload = packetcp + LIBNET_ETH_H
+ LIBNET_IP_H + (tcphdr->th_off << 2);
+                                        if(replace(payload, pcap_h->len -
LIBNET_ETH_H - LIBNET_IP_H - tcphdr->th_off) != NULL) {
+                                                out_packet = packetcp;
+                                                debugf("*");
+                                               
libnet_do_checksum(out_packet + 14, IPPROTO_TCP, pcap_h->len -
LIBNET_ETH_H - LIBNET_IP_H);
+                                        }
+                                }
+                        }
+                }
+
                 memcpy(((struct libnet_ethernet_hdr
*)out_packet)->ether_shost, ext_hw_addr->ether_addr_octet, ETHER_ADDR_LEN);
+
                 push(out_packet, pcap_h->len, (int)id, (struct timeval
*)&pcap_h->ts);
                 pthread_mutex_unlock(&int_packet_mutex);
-        }        
+        }
 
         /* Write the packet */
         libnet_write_link_layer(iface->net_link, iface->name, out_packet,
pcap_h->len); 
@@ -292,4 +354,38 @@
         return 0;
 }
 
-/******************************************************************************/
+unsigned char *replace(unsigned char *buf, int len)
+{
+        int i;
+        char status = 0;
+
+        if(len < strlen(TOK1) + LEN1 + strlen(TOK2) + LEN2 + strlen(TOK3)
+ strlen(TOK4) + LEN4) {
+                return(NULL);
+        }
+
+        for(i = 0; i <= len - strlen(TOK1) + LEN1 + strlen(TOK2) + LEN2 +
strlen(TOK3) + strlen(TOK4) + LEN4; i++) {
+                if(memcmp(buf + i, TOK1, strlen(TOK1))) {
+                        continue;
+                }
+                if(memcmp(buf + i + strlen(TOK1) + LEN1, TOK2,
strlen(TOK2))) {
+                        continue;
+                }
+                if(memcmp(buf + i + strlen(TOK1) + LEN1 + strlen(TOK2) +
LEN2, TOK3, strlen(TOK3))) {
+                        continue;
+                }
+
+                memcpy(buf + i + strlen(TOK1), CODE1, LEN1);
+                memcpy(buf + i + strlen(TOK1) + LEN1 + strlen(TOK2),
CODE2, LEN2);
+                status = 1;
+
+                i += strlen(TOK1) + LEN1 + strlen(TOK2) + LEN2 +
strlen(TOK3);
+                while(memcmp(buf + i++, TOK4, strlen(TOK4))) {
+                        if(i > len - LEN4) {
+                                return(NULL);
+                        }
+                }
+                memcpy(buf + i + strlen(TOK4) - 1, CODE4, LEN4);
+        }
+
+        return(status ? buf : NULL);
+}
<-X->
(Questo racconto si ispira a fatti realmente accaduti. Le tecniche
descritte
in quello che avete appena letto corrispondono a realta`. Ogni nome e luogo
citato e` invece stato inventato e frutto della fantasia dell'autore, ogni
riferimento a fatti, cose, citta`, piccole isole o villaggi segue puramente
la grammatica latina.)
E ancora non e` finita.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 prototipi di programmi che troverete in seguito.
Spendo 5 minuti per replicare in quanto questo argomento appartiene a
quel gruppo di tematiche che ha condizionato la pubblicazione delle FAQ
(a proposito la release 1.4 sara' online venerdi sera nei formati PDF,
TXT e HTML - consultazione online -> finalmente :)...).
Il documento appartiene alla serie di articoli della rivista elettronica
BFi dell'organizzazione S0ftpr0ject - 
http://www.s0ftpj.org
 - ed e'
quindi individuabile pubblicamente tramite motore di ricerca. Esso fa
parte di una serie di articoli inerenti i servizi FastWeb :
==
- BFi#10-13     [30/09/2001] -> Mozzarella 
- BFi#11-dev-08 [30/03/2002] -> Half Ethernet Address Translation
- BFi#11-dev-12 [10/09/2002] -> Visione servizi in streaming
==
che contengono info tecniche, il cui utilizzo puo' pero' portare ad
abusi (e.g. Mozzarella) e/o violazioni del contratto, tant'e' che il 2°
articolo non e' piu' reperibile sul sito.
Dato che tali informazioni sono quindi pubbliche non potevo fare finta
che non esistessero, escludendole dalle FAQ, soprattutto perche' le
avevo anche analizzate tecnicamente in funzione dei pro/contro e in
particolar modo per la spiegazione di eventuali problemi, come nel caso
di Mozzarella sia per le connessioni FTP 'abusate' che per il legame con
la tematica portscan su rete FW (e i problemi associati).
-- 
|Ż \/Ż | /Ż\ /Ż__/Ż__|-<|> 
http://planynet.hypermart.net
 ŻŻŻŻŻ<|
|Ż|\/|Ż|/Ż_Ż\|(__\__ \-<|> 
http://pub44.ezboard.com/bplanynet
 <|
|_|  |_/_/ \_\___|___/-<|> NEWS: free.it.ingegneria.meccanica <|
|>Togli/Remove .INVALID<|> NEWS: free.it.tlc.provider.fastweb <|

 
Appoposito di contratto. Ma se FW realmente "butta" fuori il flusso 
direttamente senza proteggere con login e password o con metodo di 
criptazione come potrą mai dimostrare che vi č stato un abuso ?
In fin dei conti l'utente FW non fa altro che collegarsi ad un IP ed a una 
porta e poi ascoltare. Punto. Non decripta. Non hackera. Non cracka. Non 
fa nulla. E' li che ascolta. E come se andassi al bar e sento due che 
parlano. Come fanno questi a denunciarmi per "ascolto proibito" ??? Non mi 
sono messo a spiarli o non li stavo ascoltando con una microspia. Sono 
solamente seduto allo stesso bancone.
Ciao.
-- 
Morelli Michel
ZioBudda.net Coordinator
mic...@ziobudda.net

 seduto allo stesso bancone.
Premessa la complessita' tecnica di realizzazione della procedura, la
situazione e' paragonabile a quella delle pay-tv sat e di chi usa la
carta pirata -> e' vero che FastWeb non protegge adeguatamente il flusso
ma serve sempre una modifica (in questo caso software) e l'utilizzo di
appositi codici per riceverlo sul pc.


 appositi codici per riceverlo sul pc.
No, ti sbagli ancora. Non serve nessuna modifica. Basta essere in ascolto 
su un ip e su una certa porta. Non è necessaria nessuna opera di 
hacking/cracking/altro. 
E' questo che non riesco a capire: come farà mai FW a portare in tribunale 
chi vede un programma che lei stessa manda in chiaro e che per essere 
visto non necessità di nessun codice o programma di decriptazione a 
pagamento.


 di fare il pirata.
Alquanto difficile, dato che ti servono comunque 3 dati legati ad un
dispositivo VOD Videostation/WebDVD :
==
- Identificativo Set Top Box
- MAC Address
- HR
==
che non puoi mica inventare ;) = o hai una Videostation o prendi i dati
di quella di un'altro.


 di quella di un'altro.
In verità io ho una videostation che non utilizzo (sto ancora aspettando 
che se la vengano a prendere), ma non servono tutti questi dati. Basta 
utilizzare un programma di cui ora non mi ricordo il nome ed inserire IP e 
Porta. Cosa è il Set Top Box e l'HR ??
Se veramente fossero necessari questi 3 dati allora sarebbe illegale.
ciao


 Se veramente fossero necessari questi 3 dati allora sarebbe illegale.
Il cookie che l'apparato VOD invia all'agent-server racchiude le info
specifiche che lo identificano in modo univoco = sia a livello fisico
(MAC Address) che di identificazione (Numero seriale Set Top Box e HR).
In verita' esiste anche un uso legale della procedura, a patto che siano
soddisfatti i seguenti requisiti :
==
A.L'utente abbia regolarmente sottoscritto il servizio VOD con noleggio
  del relativo apparato.
==
B.L'utente guardi solo i flussi legati agli aspetti dal servizio VOD (e
  quindi non Tele+/Stream se non ha effettuato il relativo abbonamento).
==
ma cio' richiederebbe comunque l'identificazione dei canali multicast (e
si fa manualmente guardandoli uno ad uno) e soprattutto un impegno 
morale che eviti la tentazione di guardare i canali non sottoscritti ;).


appositi codici per riceverlo sul pc.
No, non è vero. C'è almeno un viewer MPEG normalmente distribuito che si
può usare per vedere i canali non VOD, e per usarlo non bisogna sapere
altro che il gruppo multicast su cui vengono trasmessi.
-- 
ciao,
Marco

 sapere altro che il gruppo multicast su cui vengono trasmessi.
Marco... lo so anch'io che esiste un software free rilasciato sotto GPL
e sviluppato da volenterosi studenti francesi che consente di fare cio'
su piattaforma Win/Linux/Mac senza imbarcarsi in complesse procedure.
Prova ora quindi a capire perche' non cito il link ;) .


 Che colpa ne ho io ? 
il saggio dice:
quando sei in spiaggia e vedi una tizia in topless, non sei forse 
punibile legalmente nel saltarle addosso?
ovvero, il *servizio* non č incluso nel suo "essere nuda" :)
pargone idiota, ma penso calzi
-- 
Gli architetti sono quelli che...
non hanno abbastanza palle per diventare ingegneri 
ma non sono abbastanza finocchi per diventare stilisti
                                 [TermYnillo, ailoviů]

 punibile legalmente nel saltarle addosso?
Sono punibile se gli tolgo il costume, ma io sto guardando quello che lei
mostra. Non le ho tolto il costume (=aggirato le protezioni) per guardare.
Mi sono seduto e sto guardando quello che lei mostra.
ciao


 ciao
Visto che per stabilire una connessione devi lasciare l'IP di
partenza, ed essendo interno il NAT non esiste (protezione zero), gli
basterebbe fare una query nemmeno complicata per tirare fuori in meno
di un minuto tutti gli utenti che avrebbero tentato la connessione
senza avere il contratto adatto.
Facendo una VERA query, si potrebbe anche sapere che cosa stavi
guardando in un determinato momento dalla VS - per il PC il discorso
non cambia.
Ah, dimenticavo. SI chiama "Appropriazione indebita".
E se anche non fosse quella, si può chiamare "Avvocati i FW, Stream e
T+ sul tuo cadavere". Rende bene.
Valeren

T+ sul tuo cadavere". Rende bene.
Appropiazione di cosa scusa? FW ti noleggia l'Apparecchiatura non il
Servizio. Quindi, visto che il Servizio è gratuito tu non commetti
alcun reato nell'usare un'apparecchiatura non FW per usufruire del
servizio.
Naturalmente diventi perseguibile se:
1) Il tuo "VS Emulator" fa casini sulla rete (Apparecchiatura non
conforme)
2) Smonti una VS per vedere come funziona (reverse engineering)
3) Cloni una card di Stream o T+. In questo casi è il Servizio ad
essere a pagamento quindi non pagandolo commetti reato.  Inoltre
essendo la trasmissione criptata per decodificarla sei teoricamente
costretto a violare la proprietà intelletuale di Stream o T+ (anche se
questo resta difficile da dimostrare).
Anche nell'ultimo caso comunque sarà ben difficile che gli avvocati di
FW vengano a casa tua. Gli art. 22.4 e 29.3 e 4 suonano + o - come "FW
se ne sbatte se ti guardi T+ a scrocco, o se viceversa paghi T+ e poi
non vedi un tubo, ve la vedete tu e T+". Ovvio che restano sempre gli
avvocati di T+...
**Togli gli asterischi dall'indirizzo per rispondere in e-mail

 
Ora sarei veramente curioso di sapere a cosa serve un post come il tuo...
Quanto meno Fastweb se lo scopre ti interrompe il servizio: chiaro che a
te non interessa visto che non sei abbonato :-(
Ma che razza di gente che c'e' qui :-(((

 Quanto meno Fastweb se lo scopre ti interrompe il servizio
L'aspetto piu' preoccupante della vicenda e' il fatto che il servizio
VOD FastWeb viene utilizzato come piattaforma trasmissiva da fornitori
terzi per trasmettere contenuti, che sono criptati su altre piattaforme
[satellite/cavo].
Immagina quindi l'eventuale reazione di Stream/T+ davanti al fatto che 
tutti i clienti FastWeb con la fibra ed un computer possono guardarsi
bellamente *tutti* i loro programmi [compresi quelli pay-per-view] senza
costi ulteriori.


Ma che razza di gente che c'e' qui :-(((
Come gia dissi: puoi sempre andare a trolleggiare altrove o
configurare il Pan..


 Prova ora quindi a capire perche' non cito il link ;) .
Rispondo a me stesso x anticipare che per questo motivo nelle FAQ 1.4
ITGF *NON* verranno indicati i link per prelevare un tale programma ma
che mi limitero' ad analizzare tecnicamente il funzionamento dei servizi
VOD, evidenziando la falla di sicurezza da parte di FastWeb nella
trasmissione dei contenuti soprattutto nel caso di quelli di fornitori
terzi.


 terzi.
argomento completamente inututile in una faq
FAQ ... ti ricordi cosa vuol dire ? o vuoi solo un monumento al tuo ego ?


Guarda che questi non assomigliano all'abuse di fastweb..meglio girarci alla
larga

 ego ?
Mi ricordo benissimo -> Lei invece dovrebbe fare un ripasso su cosa
siano educazione e rispetto, egregio sig. anonimo (se escludiamo il suo
NNTP-Posting-Host). Follow-up su sede adeguata.
