Jump to content
Notícia
  • Adquira já o seu VIP!

Search the Community

Showing results for tags 'login'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Anunciantes
    • Advertise here
    • silvaBR Cheats
    • Velozhost
  • ################## WEB CHEATS ##################
  • Anúncios/Eventos
    • Regras
    • Anúncios
    • Eventos do fórum
  • Feedback & Suporte
    • Tutoriais WC
    • Suporte
    • Sugestões
    • Denúncias e Reclamações
    • Depósito
  • Shooter Zone
    • Counter Strike
    • Valorant
    • Rainbow Six Siege
    • Outros Shooters em Geral
    • Shooter Zone - Lixão
  • Battle Royale
    • COD Warzone
    • Free Fire
    • PUBG - Playerunknown's Battlegrounds
    • Fortnite
    • Outros Jogos Battle Royale
  • MMO Zone
  • Outros Games Zone
  • Design Zone
  • Info Zone
  • ################## WEB CHEATS ##################
  • Entretenimento & Diversão
  • MarketPlace
  • Old WC's Bate Papo
  • 【FREE FIRE】▄︻┻┳═一's Fórum do Clube
  • Anticomunismo's Tópicos
  • Tópicos Importantes !'s Tópicos

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Discord


Idade

 
or  

Found 3 results

  1. Boa tarde galera, gostaria de saber se tem como alterar a cutscene do login do wyd, e qual o procedimento para realizar isto, queria retirar a cutscene e colocar uma imagem no lugar. se alguem puder me ajudar ficaria muito grato
  2. ADICIONE 1 BUTTON E 2 TEXTBOX ! APÓS ISSO DÊ 2 CLIQUES NA FORM E APAGUE TUDO E COLE O CODIGO ABAIXO: PS: Na variavel "MySite" Coloque a URL de login do seu site {Forumeiros} EX: [Hidden Content] SOURCE: [Hidden Content] Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click If TextBox1.Text = Nothing Then Me.Text = "Informe um usuário" Exit Sub End If If TextBox2.Text = Nothing Then Me.Text = "Informe uma senha" Exit Sub End If Dim T As New Threading.Thread(AddressOf Login) T.Start() End Sub Private Codigo_Font As String Private MySite As String = "[Hidden Content]" Public Sub Login() Using Web As New Net.WebClient Dim T As New Specialized.NameValueCollection T.Add("username", TextBox1.Text) T.Add("password", TextBox2.Text) T.Add("autologin", "off") T.Add("redirect", "") T.Add("query", "") T.Add("login", "Conectar-se") Dim Web_Bytes As Byte() = Web.UploadValues(MySite, "POST", T) Dim Web_HTML As String = (New System.Text.UTF8Encoding).GetString(Web_Bytes) Codigo_Font = Web_HTML End Using If Codigo_Font.Contains("Você especificou um nome de Usuário ou Senha inválida, incorreta ou inativa") Then MsgBox("Usuário ou Senha incorreto", MsgBoxStyle.Exclamation) Else MsgBox("Logado com sucesso", MsgBoxStyle.Information) End If End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Control.CheckForIllegalCrossThreadCalls = False End Sub End Class
  3. Nesse tópico, irei explicar como autenticar de forma eficaz os usuários de um fórum que utiliza plataforma VBulletin. Já vi esse tipo de tutorial em vários fóruns, normalmente explicando como criar um loader ou algo do tipo. Nesses tutoriais, boa parte dos autores usam uma solução ruim, que seria: Fazer a requisição HTTP com o nome de usuário e senha; Varrer o código HTML após a requisição e procurar pelo texto "Bem-vindo(a),". Bonito, parece correto. Afinal, somente um usuário logado verá o texto "Bem-vindo(a), Fulano" no menu superior. Essa é a principal solução que esses caras usam para autenticar alguém: procurar por algo que somente um usuário autenticado conseguiria acessar/visualizar. Mas vamos supor algumas situações: E se o fórum permitir que o usuário use uma linguagem que não seja Português? Mesmo que o usuário coloque as credenciais corretas, o login irá falhar sempre. A não ser que, em algum trecho do seu código você busque por "Bem-vindo(a)," e "Welcome," mas (na minha opinião) é inviável varrer o HTML duas vezes, não acha? Dependendo do fórum, o código fonte pode ultrapassar fácil as 7 mil linhas. E se o fórum redirecionar o usuário para a homepage e lá existir um novo tópico com título "Bem-vindo(a),". Mesmo que o usuário coloque as credenciais incorretas, o login terá sucesso. Se for uma aplicação que libera recursos somente para usuários que possuem conta, seria prejuízo, certo?! Se você procurar, existem vários tutorias ensinando isso, em vários fóruns de cheats por aí. E, é capaz que muitos loaders por aí utilizem essa forma de "autenticação". Vamos melhorar isso, lendo os cookies da requisição. (o que são cookies?) Embora esse tutorial use Java, você pode adaptar essa solução para qualquer linguagem. Não tem muito segredo quanto a realizar requisições por meio de protocolo HTTP, use o Google :) Analisando os cookies do fórum Ao acessar o fórum pela primeira vez ou no caso do fórum, sem estar logado, alguns cookies podem ser criados para manter as ações realizadas por você: Acessando o fórum sem estar logado. Essa é uma das formas de guardar dados no client, afinal o HTTP é um protocolo sem estado. Em computação, um protocolo stateless é um tipo de comunicação que considera cada requisição como uma transação independente, isto é, que não está relacionada a qualquer requisição anterior. Quando você abre qualquer site, uma requisição é feita por você (client), processada e retornada pelo servidor. Após isso, seria como se o servidor tivesse uma perda de memória e esquecesse quem é você e o que ele te enviou. Por isso que existem sessões, do contrário você teria que logar novamente toda vez que fosse comentar em um tópico. Quando você faz login no VBulletin, alguns cookies de sessão e hash são criados, estes sim somente um usuário autenticado pode ter: Acessando o fórum após o login com sucesso. Eu não sei ao certo como funciona o VBulletin, às vezes é criado um cookie com nome "bb_sessionhash" mesmo acessando o fórum sem possuir uma conta, outras vezes o cookie não é criado (esse tutorial é um exemplo, ver a primeira imagem), então não recomendo usá-lo para o nosso objetivo. Opte pelo cookie com nome "bb_password", pois este sim é criado somente após o usuário estar autenticado. Obtendo parâmetros de requisição Precisamos checar quais parâmetros devem ser enviados e qual o tipo de requisição esperada, para isso use uma extensão como a HTTP Live Readers: (Firefox) (Chrome). Eu vou adiantar as coisas, mas baixe a extensão e veja funcionando na prática. O VBulletin espera por uma requisição POST contendo os seguintes parâmetros: vb_login_username: contendo o nome de usuário cookieuser: com o valor "1" (que provavelmente deve tornar-se em um booleano quando processado) vb_login_md5password: como o nome sugere, a senha do usuário hasheada com algoritmo MD5 do: com valor "login" que aponta para qual ação estamos realizando. Existem outros, mas para o login bastam esses parâmetros. O que faremos a seguir é: enviar uma requisição GET para recuperar os cookies. Em seguida, enviaremos uma segunda requisição (esta como POST) contendo os cookies da primeira e os parâmetros. Posteriormente verificaremos se o cookie "bb_password" existe. Código Vamos trabalhar com objetos. Primeiro, crie uma classe para manipularmos o nome de usuário (ou email) e senha do usuário, somente para não precisarmos trabalhar com string a todo momento. Como não utilizaremos a senha em texto puro, podemos gerar o hash logo que o usuário for instanciado: import java.math.BigInteger; import java.security.MessageDigest; public final class User { private final String username; private final String password; public User(String username, String password) { this.username = username; this.password = hashPassword(password); } public String getUsername() { return username; } public String getPassword() { return password; } private String hashPassword(String password){ try { MessageDigest digest = MessageDigest.getInstance("MD5"); digest.update(password.getBytes(), 0, password.length()); return new BigInteger(1, digest.digest()).toString(16); } catch(Exception err){} return null; } } Criaremos agora uma classe para realizarmos a ação de login. Precisamos manter uma lista de cookies, um objeto de conexão HTTP e a URL para qual iremos despachar as requisições. Aproveitamos para criar um método que recebe a URL, já que esse atributo será definido como privado: import java.net.*; import java.util.List; public class VBulletin { private List<String> cookies; private HttpURLConnection connection; private URL loginUrl; public VBulletin connect(URL url){ this.loginUrl = url; return this; } } Estou retornando o próprio objeto (return this) para fazer encadeamento (method chaining) mais tarde. Temos que criar um método para gerar a URL com os parâmetros de requisição. Estes são separados pelo caractere "&" e as atribuições de valores são feitas com o caractere "=". Usaremos um usuário (classe User) para montar essa requisição: private String setRequestParameters(User user) throws UnsupportedEncodingException { return new StringBuilder() .append("vb_login_username=") .append(URLEncoder.encode(user.getUsername(), StandardCharsets.UTF_8.displayName())) .append("&cookieuser=1") .append("&vb_login_md5password=") .append(user.getPassword()) .append("&do=login") .toString(); } OK. Precisamos criar um método para fazer uma requisição para a URL especificada no atributo "loginUrl" e armazenar a lista de cookies na nossa lista "cookies". private void retrieveCookies(){ try { // criamos a conexão connection = (HttpURLConnection) loginUrl.openConnection(); connection.setRequestMethod("GET"); connection.setUseCaches(false); connection.setRequestProperty("User-Agent", "Mozilla/5.0"); // Definimos os cookies (se houver) if (cookies != null) this.cookies.stream().forEach((cookie) -> { connection.addRequestProperty("Cookie", cookie.split(";", 1)[0]); }); // Se a resposta tiver código 200, alteramos o conteúdo da lista de cookies p/ // so que foram obtidos na última requisição. if(connection.getResponseCode() == HttpURLConnection.HTTP_OK){ this.cookies = connection.getHeaderFields().get("Set-Cookie"); this.loginUrl = new URL(loginUrl.toString().concat("login.php?do=login")); // substituímos a URL para o recurso de login do vBulletin } } catch (IOException ex){} } Precisamos agora criar o método que fará a requisição para o recurso de login e verificará se o cookie "bb_password" foi criado. Se for, podemos retornar "true" indicando que o usuário é um membro do fórum: public boolean hasAccount(User user){ try { // Obtemos os cookies por GET retrieveCookies(); // Montamos a segunda requisição (POST) connection = (HttpURLConnection) loginUrl.openConnection(); connection.setRequestProperty("User-Agent", "Mozilla/5.0"); connection.setRequestProperty("Connection", "keep-alive"); connection.setRequestMethod("POST"); this.cookies.stream().forEach((cookie) -> { connection.addRequestProperty("Cookie", cookie.split(";", 1)[0]); }); // Definimos os parâmetros da requisição String parameters = setRequestParameters(user); connection.setRequestProperty("Content-Length", Integer.toString(parameters.length())); connection.setDoOutput(true); connection.setDoInput(true); // Submetemos a requisição try ( DataOutputStream wr = new DataOutputStream(connection.getOutputStream())) { wr.writeBytes(parameters); wr.flush(); } // Se a resposta tiver código 200, alteramos a lista de cookies if(connection.getResponseCode() == HttpURLConnection.HTTP_OK) this.cookies = connection.getHeaderFields().get("Set-Cookie"); } catch(Exception err){} // Verificamos se em toda a lista de cookies existe algum com nome "bb_password" return cookies.stream().map((cookie) -> cookie.split("=")[0]).anyMatch((name) -> (name.equals("bb_password"))); } Nossa classe ficará assim: import java.io.*; import java.net.*; import java.nio.charset.StandardCharsets; import java.util.List; public class VBulletin { private List<String> cookies; private HttpURLConnection connection; private URL loginUrl; public VBulletin connect(URL url){ this.loginUrl = url; return this; } public boolean hasAccount(User user){ try { retrieveCookies(); connection = (HttpURLConnection) loginUrl.openConnection(); connection.setRequestProperty("User-Agent", "Mozilla/5.0"); connection.setRequestProperty("Connection", "keep-alive"); connection.setRequestMethod("POST"); this.cookies.stream().forEach((cookie) -> { connection.addRequestProperty("Cookie", cookie.split(";", 1)[0]); }); String parameters = setRequestParameters(user); connection.setRequestProperty("Content-Length", Integer.toString(parameters.length())); connection.setDoOutput(true); connection.setDoInput(true); try (DataOutputStream wr = new DataOutputStream(connection.getOutputStream())) { wr.writeBytes(parameters); wr.flush(); } if(connection.getResponseCode() == HttpURLConnection.HTTP_OK) this.cookies = connection.getHeaderFields().get("Set-Cookie"); } catch(Exception err){} return cookies.stream().map((cookie) -> cookie.split("=")[0]).anyMatch((name) -> (name.equals("bb_password"))); } private void retrieveCookies(){ try { connection = (HttpURLConnection) loginUrl.openConnection(); connection.setRequestMethod("GET"); connection.setUseCaches(false); connection.setRequestProperty("User-Agent", "Mozilla/5.0"); if (cookies != null) this.cookies.stream().forEach((cookie) -> { connection.addRequestProperty("Cookie", cookie.split(";", 1)[0]); }); if(connection.getResponseCode() == HttpURLConnection.HTTP_OK){ this.cookies = connection.getHeaderFields().get("Set-Cookie"); this.loginUrl = new URL(loginUrl.toString().concat("login.php?do=login")); } } catch (IOException ex){} } private String setRequestParameters(User user) throws UnsupportedEncodingException { return new StringBuilder().append("vb_login_username=") .append(URLEncoder.encode(user.getUsername(), StandardCharsets.UTF_8.displayName())) .append("&cookieuser=1") .append("&vb_login_md5password=") .append(user.getPassword()) .append("&do=login").toString(); } } Testando e autenticando um usuário Tendo a classe VBulletin, podemos verificar se um usuário é membro assim: import java.net.MalformedURLException; import java.net.URL; public class Main { public static void main(String...args) throws MalformedURLException { // Criamos um usuário contendo nick (ou email) e senha User user = new User("renan", "senha123"); // Definimos a URL do fórum URL url = new URL("[Hidden Content]"); // Chamamos o método que autentica o usuário boolean isMember = new VBulletin().connect(url).hasAccount(user); if(isMember) System.out.println("O usuário é membro do fórum, IRRÁ! :)"); } } Espero que esse post ajude quem estiver interessado em implementar um meio de interagir com o fórum. Lembrando que, tendo os cookies armazenados (como fizemos) e enviando eles a cada requisição, é possível fazer qualquer ação que um usuário faria pelo navegador: postar um tópico, enviar mensagem particular, agradecer tópicos, reportar postagens, etc. Esse método resolve os dois problemas apontados no começo do tópico, o login será validado corretamente. Ou, você pode continuar apostando nos "Bem-vindo(a)," que ensinam por aí. :)
×
×
  • Create New...