Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Codice Java "Fraudolento"?

    Buongiorno a tutti. Oggi stavo frequentando la pagina di Sky, quando mi avvedo di un concorso per vincere i biglietti della Finale di Champions. Provo a farlo, ovviamente non ci riesco. Grazie ad un bug, ho potuto ripetere il concorso. Tuttavia, mi sorge la curiosità di vedere il codice sorgente. In riferimento al gioco, il codice sorgente (Java) è il seguente (lo metto sotto spoiler).

    [SPOILER]
    codice:
    var play	= {	idgame 		: 0,
    	email		: '',
    	tentativi 	: 0,
    	scelte		: 2,
    	rimasti		: 0,
    	prefisso	:baseurl,
    	classImg	: 0,
    	giocata		: false,
    	button		: false,
    	control		: 0,
    	dischi		: 1,
    	premio 		: '',
    	init			: function(){
    		if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
    			play.isMobile = true;
    		}else{
    			play.isMobile = false;
    		}
    
    
    		play.giocateRimaste();
    		play.run();
    	
    	},
    	run		: function(){
    		$('.wallContainer img').click(function(e) {
    			if (!$(e.target).hasClass('selected')){
    				$('.wallContainer img').off();
    				var index = $(this).attr('rel');
    				var img = new Image();
    				var position = $(this).parent().parent().position();
    				var posTop = position.top;
    				var posLeft = position.left;
    
    
    
    
    				if(play.tentativi > 0){ 
    					play.tentativi--;
    					if(play.tentativi < 10) {
    						$('#tentativi .tentativi').html('0' + play.tentativi);	
    					} else {
    						$('#tentativi .tentativi').html(play.tentativi);
    					}
    
    
    					$(this).addClass('selected');
    					$(this).parent().addClass('flipbox').addClass('flip'+index);
    					//setTimeout(function(){ tira(posTop,posLeft); }, 1000);
    					play.instantWin();
    				}
    				else{
    					console.log('tentativi finiti');
    				}
    			}
    		});
    	},
    	instantWin		: function(){
    		$.ajax({
    			type: 'POST',
    			url: play.prefisso+'index.php/pages/concorsoInstantWin/',
    			dataType:'json',
    			data: {},
    			beforeSend:function(){
    				popup.calls.loadExternalPopup({'pagina':'popup-loader'});
    			},
    			success:function(data){
    
    
    				popup.removePopup();
    				play.premio = "perso";
    
    
    				if (data.result > 0){
    					//console.log(data.result);
    					//HAI VINTO
    					/*
    					if ((data.result >= 2034) && (data.result <= 2035)){
    						if (isPari(data.result)){
    							play.premio = "base";
    						}
    						else{
    							play.premio = "top";
    						}
    					}
    					*/
    					play.premio = "top";
    
    
                        $(this).attr('src', play.prefisso+'img/play/hover.png');
    
    
    					$('.wallContainer img.selected').each(function(i) {
    						
    						var rel = $(this).attr('rel');
    						i++;
    						
    							/* $(this).animate({opacity: 1}, 1500*i, function(){$(this).attr("src", play.prefisso+'/img/regalo-vinto.png')});
    							setTimeout(function(){popup.calls.loadExternalPopup({'pagina':'popup-vinto'});},2000*i); */
    							
    							//alert('a');
    
    
    							var imgPerso = new Image();
    							var position = $(this).position();
    							var posTop = position.top;
    							var posLeft = position.left;
    								
    								$(this).animate({opacity: 1}, 1500*i, function(){
    									$('.hov'+rel).css('opacity','0');
    									
    									$(".flip"+rel).flippy({
    										//color_target: "rgba(0,0,0,0)",
    									    duration: "750",
    									    verso: '<img src="'+play.prefisso+'img/play/'+play.premio+'.png" class="lost">',
    									    direction: 'left',
    									    depth : 2,
    									    onStart: function(){
    									    	
    											$('.flipbox').css('background-color','transparent');
    										}
    
    
    									});
    
    
    								
    									
    									if(!Modernizr.rgba) {
    										$(imgPerso).attr('src', play.prefisso+'img/play/'+play.premio+'.png').appendTo($('#wall')).addClass('perso'+rel).addClass('perso').fadeIn();
    										$('.perso'+rel).css({
    											top: posTop,
    											left: posLeft-4
    										}); 
    									} else {
    										//nothing
    									}
    								});
    								setTimeout(function(){popup.calls.loadExternalPopup({'pagina':'popup-vinto'});},5000*i);
    
    
    					});
    				}
    				else
    				{
    					//HAIPERSO	
    					var total = $('.wallContainer img.selected').length;	
    					$('.wallContainer img.selected').each(function(i) {
    						var rel = $(this).attr('rel');
    								
    								var imgPerso = new Image();
    								var position = $(this).position();
    								var posTop = position.top;
    								var posLeft = position.left;
    								
    								imghaiperso = "perso.png";
    
    
    								$(this).animate({opacity: 1}, 1500*i, function(){
    									$('.hov'+rel).css('opacity','0');
    									$(".flip"+rel).flippy({
    										//color_target: "rgba(0,0,0,0)",
    									    duration: "750",
    									    verso: '<img src="'+play.prefisso+'img/play/'+imghaiperso+'" class="lost">',
    									    direction: 'left',
    									    depth : 2,
    									    onStart: function(){
    											$('.flipbox').css('background-color','transparent');
    										}
    
    
    									});
    									if(!Modernizr.rgba) {
    										$(imgPerso).attr('src', play.prefisso+'img/play/'+imghaiperso).appendTo($('#wall')).addClass('perso'+rel).addClass('perso').fadeIn();
    										$('.perso'+rel).css({
    											top: posTop,
    											left: posLeft-4
    										}); 
    									} else {
    										//nothing
    									}
    								});
    								
    								if(Number(play.tentativi) > 0){
    									//setTimeout(function(){popup.calls.loadExternalPopup({'pagina':'popup-perso'});},5000*i);
    									//$('.wallContainer img').off(false);
    									play.run();
    								} 
    								else
    								{
    									setTimeout(function(){popup.calls.loadExternalPopup({'pagina':'popup-perso'});},5000*i);
    								}
    
    
    					})
    						
    				}
    					
    
    
    			},
    			error:function(data){
    				//alert('Instantwin return error');
    				var gameerror= data.error;
    				location.href = play.prefisso+'index.php/pages/concorsoerror/giocato/';
    			}
    		});
    	},
    	richiediCodice		: function(){
    
    
    	_gaq.push(['qmi._trackEvent', 'sony', 'Genera Codice', '']);
    		$.ajax({
    			type: 'POST',
    			url: play.prefisso+'index.php/pages/saveabbonamento/',
    			dataType:'json',
    			data: {},
    			beforeSend:function(){
    			},
    			success:function(data){
    
    
    				if (data.result > 0){
    					//HAI VINTO
    					popup.calls.loadExternalPopup({'pagina':'popup-generale'});
    				}
    				else
    				{
    					//HAIPERSO	
    					popup.calls.loadExternalPopup({'pagina':'popup-generale'});					
    				}
    			},
    			error:function(data){
    				var gameerror= data.error;
    				location.href = play.prefisso+'index.php/pages/concorsoerror/giocato/';
    			}
    		});
    	},
    	giocateRimaste	 : function(){
    		$.ajax({
    			type: 'POST',
    			url: play.prefisso+'index.php/pages/getGiocateRimaste/',
    			dataType:'json',
    			beforeSend:function(){},
    			success:function(data){
    
    
    				if(data.result){
    					play.tentativi = Number(data.result.rimaste);
    
    
    					
    					if(Number(play.tentativi) > 0){
    						//DO NOTHING		
    					}
    					else
    					{
    						location.href = play.prefisso+'index.php/pages/concorsoerror/giocato/';
    					}
    					
    					
    					if(play.tentativi < 10) {
    						$('#tentativi .tentativi').html('0'+play.tentativi);
    					} else {
    						$('#tentativi .tentativi').html(play.tentativi);
    					}
    
    
    					
    					play.giocata = false;
    				}
    
    
    			},
    			error:function(e){
    				console.log("error: "+e);
    			}
    		});
    	},
    	rifiutaPremio	: function(){
    		$.ajax({
    			type: 'POST',
    			url: play.prefisso+'index.php/pages/cancellaVittoria/',
    			dataType:'json',
    			beforeSend:function(){
    			},
    			success:function(data){
    				if(data.result){
    					window.location.href = play.prefisso;
    				}
    				if(data.error){
    					popup.calls.loadExternalPopup({'pagina':'popup-registrazione-errore','text':data.error});
    				}
    			},
    			error:function(){
    			}
    		});
    	},
    	accettaPremio	: function(){ 
    		
            if ($('#idgamePopup').length > 0){
                play.idgame = $('#idgamePopup').val();	
            }
    		//if( (utils.form.isEmail($('#popup input[name="email"]')) && play.idgame != 0)){
    		if( (utils.form.isEmail($('#popup input[name="email"]')) && play.idgame != 0) && ( $('#popup input[name="email"]').val() == $('#popup input[name="confermaemail"]').val()) ){
    
    
    			$('#popup input[name="email"]').removeClass('error');	
    			$('#popup input[name="confermaemail"]').removeClass('error');	
    			play.email = $('#popup input[name="email"]').val();
    			$.ajax({
    				type: 'POST',
    				url: play.prefisso+'index.php/pages/invioMailVittoria/',
    				dataType:'json',
    				data:'email='+play.email+'&idwin='+play.idgame,
    				beforeSend:function(){
    				},
    				success:function(data){
    					
    					if (data.result != 'ko'){
    						popup.removePopup();
    	                    location.href = play.prefisso+"index.php/pages/concorsoform/"+data.result;
    						//popup.calls.loadExternalPopup({'pagina':'popup-accetto'});
    					}
    				},
    				error:function(){
    				}
    			});
    		}else{
    			$('#popup input[name="email"]').addClass('error');
    			$('#popup input[name="confermaemail"]').addClass('error');	
    		}		
    	}
    }
    
    
    
    
    function isPari(val){
         return (val%2 == 0);
    }
    
    
    function tira(top,left){
    	$('#pallone').show();
    	$('#pallone').animate({
          	width: '0%',
          	top: top,
          	left: left,
          	marginTop:'50px',
          	marginLeft:'63px'
      	},
          3000, function() {
          $('#pallone').hide().css({
          	width:'1200px',
          	top:'50%',
          	left:'50%',
          	marginTop:'-600px',
          	marginLeft:'-600px'
          });
          //popup.calls.loadExternalPopup({'pagina':'popup-loader'});
        });
    }
    [/SPOILER]

    Prendendo visione del codice, è possibile vincere a questo gioco? oppure è "programmato" per non far vincere? In tal caso, non si tratterebbe di frode?

  2. #2
    Utente di HTML.it L'avatar di mat20000
    Registrato dal
    May 2015
    residenza
    Moylgrove
    Messaggi
    31
    Sicuro fossi ancora sulla pagina di sky? magari hai subito un redirect e non te ne sei manco accorto... mandaci il link della pagina per vedere se sta ancora li.

  3. #3
    La pagina è http://soloperte.sky.it/juvebarcellona/index.php/pages/. Visitata con Safari. Nessun redirect Il sorgente è di quella pagina.

  4. #4
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,521
    Quote Originariamente inviata da Steinerized Visualizza il messaggio
    Prendendo visione del codice, è possibile vincere a questo gioco?...

    Ciao. Si e no. Nel senso che il codice lato cliente esegue solo ciò che il server li dice di fare.
    Nella funzione instantWin c'è una chiamata ajax, se questa ha successo recupera un dato (data) dal server che restituisce un numero, se questo è maggiore di zero hai vinto il premio "top". Ciò avviene valorizzando "play.premio=top", infatti nella funzione in basso (sia nella condizione per la vincita che per la sconfitta) trovi questo codice:
    codice:
    ...
    .attr('src', play.prefisso+'img/play/'+play.premio+'.png') ...
    Che presumibilmente mostra una immagine che indica la vincita o la sconfitta presa da tale valore (top.png o perso.png). Nel caso invece data >0 è falso rimane il primo valore impostato, ovvero : play.premio = "perso"; (impostato prima di entrare nell' if data>0).
    Da notare la grande incertezza nel decidere cosa fare da parte del programmatore (o chi decide per lui) se attribuire anche un premio "base" (che non potrà mai essere attribuito) oppure lasciare solo il premio "top". Infatti se interpreti il primo codice commentato lo noti subito.
    Ora il punto è: il server restituirà mai un numero maggiore di uno? non ci è dato saperlo dal codice lato client... però in genere questi "premi" sono semplicemente promozioni (in cui se accetti ci guadagnano) per invogliarti ad acquistare un qualcosa (servizio o chissa che) quindi difficilmente penso che barino.
    La cosa più semplice da pensare è che comunque sia davvero parzialmente random la vittoria, in quanto comunque devono dare la sensazione che hai veramente vinto qualcosa, e se vincono tutti allora nessuno più ci crede e sono meno incentivati ad acquistare. Però allo stesso tempo ti danno un numero di tentativi statisticamente abbastanza grande da poter vincere a furia di tentare. Comunque dubito vinca subito un premio reale, magari vinci la possibilità di partecipare all'estrazione. Se invece si dovesse vincere un premio diretto allora è possibile che sia davvero random la vittoria, anzi probabilmente con percentuali molto basse!
    Ora io ho solo letto in qualche minuto il codice qui sul forum (non ho nemmeno visto il codice sulla pagina reale), quindi potrei anche sbagliarmi, ma penso di poter rispondere tranquillamente alla tua domanda, perlomeno nella parte che ho citato.



    EDIT:
    ho dato uno sguardo alla pagina, si vince direttamente il premio e il numero di tentativi deve essere stabilito in base agli anni in cui sei abbonato a Sky: più sono e più tentativi hai.
    Ultima modifica di U235; 23-05-2015 a 02:40

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.