-
-
[Stream] desenvolvimento de fishing bot
Boa tarde galerinha!! Um tempo atras desenvolvi um bot para pescar em um ot pokemon, e vou re-escrever o código streamando agora e gravar para o youtube, se alguém quiser vir assistir e tirar dúvidas durante o desenvolvimento estarei lá para ajudar! https://www.livecoding.tv/balf/
-
-
-
[C] Checar acesso com criptografia simples
Mas é claro, qual seria o significado de criar uma criptografia "simples" para uso em empresas, bancos, etc... É obvio que eu não consigo descriptografar tais citadas, mas elas não deixam de ser vias de mão única, quem inventou consegue voltar então logo não é impossível nem é uma via de mão única . Sendo simples (no meu exemplo, somando 2 números na asc) ou não, não deixa de ser uma criptografia, o post é apenas um código simples que utiliza algumas funções bem comuns na linguagem além de um exemplo bem simples, como já citado, de criptografia. E não existe criptografia de mão única, se você cria um algoritmo que modifica o texto "macabramente" ou de forma simples, existe como realizar a engenharia reversa. Quanto a RSA em qualquer página que você ler sobre, estará citado que ninguém conseguiu quebrar a criptografia ainda, mas não diz que é impossível, então não é uma via de mão única. Entendam, eu não estou dizendo que não existem criptografias seguras só estou falando que nenhuma é "inquebravel".
-
[C] Checar acesso com criptografia simples
O que eu quis dizer é que não existe encriptação de mão única amigo, até porque para encriptar você precisa realizar uma operação sobre o dado, para descriptografar é só realizar a operação reversa.
-
[C] Checar acesso com criptografia simples
Amigo, criptografia é você codificar um texto, o texto é codificado baseado em uma função. Quem cria a criptografia consegue sim descriptografar, quem possui a "chave" que foi utilizada para criptografar consegue retornar ao texto original, é claro que criar uma criptografia e liberar a "chave" dela pela internet perde todo sentido de criar uma criptografia, o método acima citado é apenas um exemplo de uma bem simples que eu mesmo inventei como exemplo, se eu quisesse multiplicar o o código referente a cada digito por um número primo gigante dificilmente alguem decifraria sem conhecimentos no assunto, mas não deixa de ser criptografia por ser simples, seja simples ou complexa ainda é criptografia.
-
-
[C] Checar acesso com criptografia simples
Estava testando algumas funções e fiz esse código aqui, ele é bem simples mas ajuda a entender uma criptografia bem simples, leitura e escrita em arquivos, a utilização do switch e funções. Este programa lê uma senha informada pelo usuario e compara com a senha salva em "data.txt", nota-se que ela estará criptografada lá com o carácter equivalente a 2 acima do informado pelo usuario na tabela asc, exemplo: B vai ser salvo como D no arquivo, 1 como 3, e por ai vai. Após um login com sucesso ele fornece a opção de alterar a senha com o switch e termina o programa. #include <stdio.h> #include <string.h> void Cript(char p[20]); //Criptografa nova senha e salva no arquivo data.txt void DCript(char p[20]); //Descriptografa senha salva no arquivo int CheckPass(char p[20]); //Compara se a senha informada e a do arquivo são iguais int main() { int check = 1; char pass[20], c; while(check != 0) { printf("Password: "); scanf("%s", pass); getchar(); check = CheckPass(pass); } printf("Acess allowed!\n"); printf("a) Change password\n"); scanf("%c", &c); getchar(); switch(c) { case 'a': { printf("Enter the new password: "); scanf("%s", pass); Cript(pass); } break; } return 0; } void Cript(char p[20]) { int i; FILE *pf; for(i=0; p[i] != '\0'; i++) p[i] = p[i]+2; pf = fopen("data.txt", "w"); if(pf != NULL) { fprintf(pf, "%s", p); } fclose(pf); printf("Password changed!\n"); } void DCript(char p[20]) { int i; for(i=0; p[i] != '\0'; i++) p[i] = p[i]-2; } int CheckPass(char p[20]) { char pcripted[20]=""; FILE *pFile; pFile = fopen("data.txt", "r"); if (pFile != NULL) { fscanf(pFile, "%s", pcripted); } fclose(pFile); DCript(pcripted); if(pcripted[0] == '\0') //Caso não haja nenhuma senha no arquivo, qualquer valor entrado será valido para o acesso return 0; return strcmp(pcripted, p); //Quando as duas strings forem iguais retornará 0 }
-
-
[Teste Programação] Coordenadas de um Ponto
Resolvi em c++
-
[Teste Programação] Lanche
Amigo, sua resposta está correta mas estes testes de programação são testados com um arquivo de entrada e um de saida, e todo printf é considerado saida, logo quando você interage com o "usuario" pedindo dados, ele fornecerá esse printf como saida também, e em uma maratona de programação sua resposta daria errado, nesses testes o correto é só interagir com o "usuario" o que for solicitado. Quanto ao tópico fiz uma resposta sem o switch para variar um pouco das demais. #include <stdio.h> int main() { int cod, quantidade; float codigo[5] = {4.00, 4.50, 5.00, 2.00, 1.50}, total = 0.0; scanf("%d %d", &cod, &quantidade); total = total+(codigo[cod-1]*quantidade); printf("Total a ser pago: R$%.2f\n", total); return 0; }
-
-
[Teste Programação] Triângulo
Resolvi em c++ também. #include <iostream> using namespace std; int main(){ float A, B, C; cin >> A >> B >> C; if((A+B) > C && (A+C) > B && (B+C) > A) cout << "Perimetro: " << A+B+C << endl; else cout << "Area: " << ((A+B)*C)/2; return 0; }
-
-
Valor da memoria diferente do esperado
Tenta isso ReadProcessMemory(phandle, (void*)addr,&value,sizeof(value),0); cout << "Valor: " << value << endl; Muito bom saber que tem gente interessada em programar e espalhar o conhecimento no fórum!
-
Valor da memoria diferente do esperado
Amigo você não postou a função ReadProcessMemory, o erro deve estar nela, talvez esses links ajudem a resolver seu problema. http://www.tibiaking.com/forum/topic/62981-c-ler-address-do-pxg/ http://www.tibiaking.com/forum/topic/61008-c-lendo-mem%C3%B3ria/
-
[C++] Ler address do pxg
Já havia feito isso em pascal, agora que estou programando em c++ refiz o código, utilizei como estudo este link. Código: #include <windows.h> #include <iostream> #include <TlHelp32.h> using namespace std; void RM(uintptr_t *result, uintptr_t address); //Função para obter o valor do endereço base void RD(double *result, uintptr_t offset, uintptr_t base); //Função para obter os valores int main(){ //Variaveis uintptr_t baseaddress, offset, addr; double PlayerHP, PokemonHP, PlayerLevel, PlayerExp, PlayerMaxHP; addr = 0x006C53C0; //Endereço base RM(&baseaddress, addr); //Obtem o valor do endereço base para a soma RD(&PlayerHP, 0x348, baseaddress); //Define a HP do player RD(&PlayerMaxHP, 0x350, baseaddress); //Define a HP máxima do player RD(&PokemonHP, 0x380, baseaddress); //Define a HP do pokemon RD(&PlayerLevel, 0x370, baseaddress); //Define o Level do player RD(&PlayerExp, 0x368, baseaddress); //Define a exp atual do player //Escreve na tela os valores cout << "Player HP: " << PlayerHP << "/" << PlayerMaxHP << "\n"; cout << "Player Exp: " << PlayerExp << "\n"; cout << "Player Level: " << PlayerLevel << "\n"; cout << "Pokemon HP: " << PokemonHP << "\n"; system("pause"); return 0; } void RM(uintptr_t *result, uintptr_t address){ int y; HWND h = NULL; DWORD pid; cout << "Searching PXG Client..." << "\n"; while (h == NULL) { h = FindWindow(NULL, "PXG Client"); Sleep(1000); } cout << "PXG Client found!" << "\n"; GetWindowThreadProcessId(h, &pid); HANDLE proc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); ReadProcessMemory(proc, (LPCVOID)address, &y, 8, NULL); *result = y; } void RD(double *result, uintptr_t offset, uintptr_t base){ uintptr_t address = base + offset; double y; HWND h = NULL; DWORD pid; while (h == NULL) { h = FindWindow(NULL, "PXG Client"); Sleep(100); } GetWindowThreadProcessId(h, &pid); HANDLE proc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); ReadProcessMemory(proc, (LPCVOID)address, &y, 8, NULL); *result = y; } Qualquer dúvida só deixar nos comentarios. Fonte: Link
-
-
-
[c++] Simulando clique do mouse
Para quem gosta do desenvolvimento de ferramentas que simulam gestos humanos este é um bom exemplo, bem iniciante mas mostra como funciona a simulação do mouse utilizando c++ com a API do windows, abaixo o código comentado: Fonte: Link O código está em .txt no anexo porque não é possível fazer o upload do arquivo em .cpp. clique.txt
-
Memory Addresses
É difícil achar esses temas específicos, acho que é mais fácil ver um tutorial em ingles de como usar o cheat engine e descobrir sózinho, o cheat engine é bem simples de usar.
-
Memory Addresses
Os endereços agora são mascarados, em outras palavras são dinâmicos alteram-se cada vez que o cliente é aberto e eles são acessados através de um endereço base + offset, esse endereço base é estático, se você conseguir ele e o ponteiro para o valor que quer encontrar conseguirá achar os address.
-
-
Obter endereço de memória base Tibia Global
Amigo eu achei aquele endereço usando o cheat engine, coloquei o endereço da minha health atual, perdi um pouco de vida e pesquisei novamente, achei o endereço do health com o cliente aberto naquele momento, então usei a função do cheat engine que mostra o endereço que levava aquele endereço e achei o endereço base, que quando procurei outras coisas como vida do pokemon, experiência, etc... Ao efetuar o mesmo processo descobri que era a mesma base só mudava o número somado em hexadecimal para obter o endereço. O truque é abrir o cheat engine e ir fuçando, ver algumas video aulas também ajudam. Quanto ao conteúdo só tenho o que está em meu blog, tudo que tinha em meu computador sobre delphi (linguagem a qual programava antes) eu apaguei, e estou começando do 0 em outras linguagens, boa sorte com seus estudos!