Ir para conteúdo
Facebook Whatsapp Twitter Youtube

Os Melhores

Conteúdo popular

Mostrando conteúdo com a maior reputação em 01/26/25 em Posts

  1. Boa tarde, estou limpando meu computador e vou anexar algumas coisas interessantes que fui fazendo ao longo dos anos para facilitar meu trabalho de desenvolvimento. Essa ferramenta eu usei na minha versão 1.5.5 para trabalhar com mapas. Complementando o tutorial: Além de você conseguir o tamanho correto dos mapas base_region e local_region, você conseguirá unificar os minimaps para usar em ferramentas como: editor de region, precinct, path, npcgen e afins. A ferramenta transforma isso: Em isso: A ferramenta é em python, e não fiz uma interface, você precisa ter o python instalado em seu PC (só dar um google). E instalar a lib pillow: Use alguma dessas opções: Depois basta configurar: Na própria imagem tem as descrilções. Se você perceber cada minimapa (surfaces/minimaps) tem 256x256 pixels, Para saber o tamanho do mapa, você precisará multiplicar 256 pela quantidade de imagens até a borda do mapa, isso você poderá fazer visualmente com base na imagem do ingame. No meu caso no a106 foram 8 horizontal, e 8 na vertical, então ficou 8x256² = 2048x2048, mas se for 512x512 você coloca ali, se for 1024x1024.. assim por diante. Salve e dê o comando usando CMD do windows: ou Pronto, sua imagem estará pronta, dai você conseguirá usar nos programas que informei acima. Basta você configurar como o exemplo que dei acima no arquivo de configuração xml. Nota que o meu mapa está -2000, porque mapas acima de 1024 eu costumo usar 1000, 2000 e afins, para tirar um pouco a borda do mapa. Mas você pode sim usar -2048, porque é o limite do mapa. Baixar a ferramenta: unify.py
    5 pontos
  2. Download: [Conteúdo Oculto] Para abrir o jogo sem precisar do launcher: elementclient.zip Post original (ragezone) Vídeo meu falando sobre:
    2 pontos
  3. "Fala, gurizada! Tudo certo? 😄tradutor.exetradutor.exe Quero compartilhar minha contribuição com a comunidade! Sabemos que o Google Tradutor e outros sistemas possuem limites de caracteres para traduzir determinados arquivos, o que pode ser bem frustrante em algumas situações. Pensando nisso, desenvolvi um sisteminha básico em Python que resolve esse problema. Com ele, você pode abrir arquivos de texto em qualquer idioma, e o programa traduzirá todo o conteúdo, sem restrições de tamanho. É super útil, não apenas para Perfect World, mas também para outras finalidades, como decifrar longas linhas de erros em logs, entre outras aplicações. Espero que seja útil para vocês!" Este sistema traduz arquivos de texto no formato .txt ( EM BREVE DISPONIBILIZAREI UMA ATUALIZAÇÃO PARA ARQUIVOS EM OUTROS FORMATOS) Sistema atualizado, com suporte de leitura em outros formatos. HTML, .LOG, e outros. LINK:[Conteúdo Oculto]
    2 pontos
  4. Eu coloquei no meu servidor de pw pq só tinha visto em um servidor no ano passado, o servidor fechou e nenhum outro servidor estava utilizando, mas já que vai lançar um servidor que aparentemente gostou do estilo, vou deixar livre aqui para que mais pessoas possam utilizar. Créditos iniciais ao @scrol pq peguei do servidor que ele tinha no ano passado. O uso é intuitivo, o que ta dentro de interfaces tu coloca na interfaces.pck, o que ta dentro de surfaces tu coloca em surfaces.pck fashion.rar
    2 pontos
  5. somente trocar os arquivos server e client, lembrando que o dds vc encontra na surface não tem segredo, postei isso pq não vi isso aqui e quero agregar algo ao grupo é isso padawns ! nw 2 nações 1.5.5.rar
    2 pontos
  6. PWSERVER 1.5.5 COM ESTIO, ATALHOS, SCRIPT.LUA E AFINS. LINK QUEBRADO!
    1 ponto
  7. Video Projeto 1.5.5 Classic.rar
    1 ponto
  8. Ascensão Sombria.psd Bônus de Pré-Registro.psd
    1 ponto
  9. Abre arquivos .pck até a versão 1.5.5 Créditos : by Jolan PCK_Module_BY_BETO.rar
    1 ponto
  10. Estou divulgando aqui publicamente meus projetos , Links: Qualquer erro ou duvida na compilação, manda mensagem (não ensino do 0, pelo menos tenha base de conhecimento no que irá mexer) Se quiserem me chamar para algum projeto, estou à disposição… Em anexo, imagens do pwAdmin em QT C++,
    1 ponto
  11. Fala guys, esses plugins estão perdidos por ai, muito difícil achar até em outros fóruns vou postar pra vocês :D Angelica2_Plugins_3ds_Max.rar
    1 ponto
  12. Essa home está 100% pode baixar e usar no seu servidor oficial ou teste! Arquivos incluso: Libs Home Sistema de lojinha off Botões no inventário Proteção OG Pwadmin Para utilizar tudo isso basta baixa o cliente full do meu servidor no site: [Conteúdo Oculto] Segue vídeo tutorial de como configura os arquivos em linux centos 7 no meu canal: Tutorial: Link para download: Clique Aqui
    1 ponto
  13. Bom galera, estou compartilhando os files que nosso querido @miguelzera disponibilizou um tempo atrás. Arquivo 1 – script de instalação CentOS7 Arquivo 2 – PWServer, Cliente [email protected], libs e SQL Arquivo 3 – Tutorial CPW Arquivo 4 – Tutorial iptables Vídeo instalando pacotes centOS7 Créditos @miguelzera Assim que tiver tempo posto um vídeo. Imagem do vbox pronta, só importar para seu vbox. Acesso ao phpmyadmin – [Conteúdo Oculto] Senhas 123456789 Contem registro básico [Conteúdo Oculto] Download ova Download Cliente
    1 ponto
  14. créditos por disponibilidade > @Suki Visual loja de moda Créditos @Thadeux gshop visual modificado.7z
    1 ponto
  15. 1 ponto
  16. Salve, hoje venho compartilhar este projeto feito em nodejs com os entusiastas da programação O projeto ainda estava no começo, mas a base e muitas funções já estão pronta, tais como; Login Cadastro (com ou sem confirmação no e-mail) Recuperar conta Reenviar e-mail de ativação Template dos e-mails Dashboard cru Página de doação (parei aqui) Para rodar o painel é bastante simples; Instale o node NodeJS >=20.00 - [Conteúdo Oculto] Crie um banco de dados e importe o config/tables.sql para o mesmo Configure o config/settings.js com as informações dos bancos de dados, url do cors, porta do aplicação, hash etc Pronto agora é só instalar as dependências e iniciar a aplicação npm install npm start Se você fez tudo certo você deve ver uma mensagem de sucesso no terminal informando que a aplicação foi iniciado na porta definida Download: node-js.zip
    1 ponto
  17. Se seu RAE Editor de Elements não abre por nada, utilize este link: RAE_2023.zip
    1 ponto
  18. Feito via dll PWApi x64. Por algum motivo o ‘CECIvtrItem::CreateItem’ não reconhece ID de flecha como item, então acaba ficando como “Item Errado”, fora isso, todos os item são exibidos com descrição normalmente.
    1 ponto
  19. Olá bom dia a todos, Eu pedi autorização ao Segment para trazer essa ferramenta pra vocês, principalmente para quem está utilizando a versão 1.5.5 que foi construída por ele. Recomendado para quem tem o mínimo possível de conhecimento com programação, pois, qualquer alteração indevida, ela pode não funcionar mais, então, antes de qualquer alteração salve sempre um backup da ultima versão funcional. E principalmente utilize para gerar ainda mais conhecimento, pois esse é o intuito do fórum. Eu não tenho créditos nenhum por essa ferramenta, pois quando foi construída eu não conhecia o Segment ainda. Todos os créditos são absolutamente para ele, inclusive por deixar compartilhar isso com vocês. Tlgram: @segment32 (Ele aluga a versão 1.6.2, se quiser uma versão mais atual) Eu tenho muita coisa ainda, mas vamos com calma =) Com essa ferramenta e muita vontade, você consegue melhorar e muito seu servidor de Perfect World. Então, façam bom uso da ferramenta. Talvez em breve eu traga o código de algumas deamons para ampliar ainda mais. Só queria pedir para que não compartilhassem essa ferramenta fora do fórum suportegm, pois foi autorizado a trazer pra vocês no Brasil, pra que eu possa continuar trazendo conteúdos (não só dele, mas meu também,). Façam bom uso: 155dl source.rar
    1 ponto
  20. import Foundation import Security // 生成RSA密钥对 func generateRSAKeyPair() throws -> SecKey { let parameters: [String: Any] = [ kSecAttrKeyType as String: kSecAttrKeyTypeRSA, kSecAttrKeySizeInBits as String: 2048 ] var error: Unmanaged<CFError>? guard let privateKey = SecKeyCreateRandomKey(parameters as CFDictionary, &error) else { throw error!.takeRetainedValue() as Error } return privateKey } // 使用公钥RSA加密文件 func encryptFile(withPublicKey publicKey: SecKey, inputFile: URL, outputFile: URL) throws { let inputData = try Data(contentsOf: inputFile) let encryptedData = SecKeyCreateEncryptedData(publicKey, .rsaEncryptionOAEPSHA512, inputData as CFData, nil)! try encryptedData.write(to: outputFile) } // 使用私钥RSA解密文件 func decryptFile(withPrivateKey privateKey: SecKey, inputFile: URL, outputFile: URL) throws { let encryptedData = try Data(contentsOf: inputFile) let decryptedData = SecKeyCreateDecryptedData(privateKey, .rsaEncryptionOAEPSHA512, encryptedData as CFData, nil)! try decryptedData.write(to: outputFile) } // 生成RSA密钥对 let privateKey = try generateRSAKeyPair() let publicKey = SecKeyCopyPublicKey(privateKey)! // 指定输入和输出文件路径 let inputURL = URL(fileURLWithPath: "elements.data") let encryptedOutputURL = URL(fileURLWithPath: "encrypted_elements.data") let decryptedOutputURL = URL(fileURLWithPath: "decrypted_elements.data") // 使用公钥RSA加密文件 do { try encryptFile(withPublicKey: publicKey, inputFile: inputURL, outputFile: encryptedOutputURL) print("文件已成功加密!") } catch { print("加密文件时发生错误:\(error.localizedDescription)") } // 使用私钥RSA解密文件 do { try decryptFile(withPrivateKey: privateKey, inputFile: encryptedOutputURL, outputFile: decryptedOutputURL) print("文件已成功解密!") } catch { print("解密文件时发生错误:\(error.localizedDescription)") }
    1 ponto
  21. WinPCK v1.33.0.3 – Atualizado ChangeLog: Leitura de arquivos .cup, o WinPCK fará a decodificação do cup. Instalação no registro do Windows com .cup Leitura de arquivos .pck com .pkx maiores que 2GB Leitura de arquivos .pck com .pkx1 Tradução para o inglês Atualizado para C++20 Atualizado para o Visual Studio 2022 Codigo Fonte: [Conteúdo Oculto] Binarios: [Conteúdo Oculto]/releases v1.33.0.3 - Release.rar v1.33.0.3 - Release-static.rar
    1 ponto
  22. encontrei em algum lugar, ele também tem npcgen. a86.zip
    1 ponto
  23. Domain Data Client Editor.rar Domain Data Server Editor.rar Domain Editor.rar
    1 ponto
  24. Estou deixando todos os instaladores num unico link, é só escolher qual você precisa e baixar. Conforme eu encontrar mais instaladores eu adiciono na pasta. Todos os clients tem um print da tela inicial, em alguns deles tem o nome da expansão. ADM por favor fechar meus tópicos dos outros instaladores eu agradeço. Diferenças: Client aberto = você não tem como saber se tem arquivos editados. Instalador = client original [Conteúdo Oculto] Se alguém tiver algum instalador que não esteja listado, por favor me envie no privado que eu espelho ele aqui.
    1 ponto
  25. Este drive contém clientes limpos de várias versões [Conteúdo Oculto] Créditos: @Piero
    1 ponto
  26. Mapa do mundo principal do PW em PSD editável world.psd
    1 ponto
  27. As vezes preciso e muita das vezes me pedem, segue uma database limpa pw.sql.zip
    1 ponto
  28. Olá a todos, estou buscando trazer tutoriais de coisas mais complexas, para que desenvolvedores que estão começando a pouco tempo, possa crescer ainda mais seu conhecimento. Vim trazer algo que poucos tem conhecimento e também tiveram curiosidade de saber, sobre mapas e sobre fixação de mapas. Quando eu construi o New History em 2018, eu customizei ele ao máximo e com isso eu aprendi bastante a trabalhar com mapas e me foi despertado muita curiosidade sobre. Hoje trabalhando com as novas versões, eu tive que adicionar na minha build mais de 25 mapas e vim ensinar vocês como adicionar novos mapas no servidor da forma correta (gs.conf). Lembrando, que todo o sistema de exportação e downgrade não precisa ser ensinado, pois há uma ferramenta perfeita para esse trabalho do Steve Langley (Skype: narrowengineer), o AngelicaMapEditor. Só deixando um adendo, a ferramenta não gera npcgen.data, path.sev e arquivos de configuração dos mapas (Sem esses, os mapas não ligam), então recomendo antes de tudo, clonar um existente (Limpo) e adicionar os novos arquivos exportados. Agora vamos para o que interessa! Vou usar como exemplo o mapa:a101 (is101). Você precisará abrir o arquivo instance.txt (element/configs.pck/instance.txt) e gs.conf (PWServer/gamed/gs.conf) Estando com os dois abertos, você irá pesquisar no instance.txt: "a101" Estará mais ou menos assim: ////////////////////////////////////////////////////////////// "北陆-蜃渊雪国遗址" { 91 "a101" // path "loading/a101" // loading background 2,2 // row, column 0 "r0_0-c1_1-l0.cfg" {} 0 } ////////////////////////////////////////////////////////////// Somente disso que precisaremos. Informações que iremos precisar para o servidor: 91 = ID do mapa (tag) “a101” = nome do mapa 2,2 = Row / Colum Sempre bom lembrar que esses valores podem alterar dependendo de qual mapa você irá utilizar, então não se apegue a isso. Agora vamos para o gs.conf Ensinamento básico, se você reparar: São 2 tipos de mapas: world_servers e instance_servers. O que você precisa definir primeiro é isso, se será um mapa aberto (world_servers), ou se será uma dungeon ( quando desmonta o grupo todo mundo é expulso e ela reseta) instance_servers. Bem, escolhendo isso, você irá definir como vamos solicitar esse mapa depois do último mapa definido em world_servers ou instance_servers, ficando assim: world_servers = gs01;/*imagine vários mapas definidos*/;is101; Então você percebeu que vamos chamar nosso mapa de is101, mas você pode colocar qualquer nome (nessa etapa e nas demais definições), exemplos: zd411, ab587, z57… Como você é inteligente e já percebeu, eu defini meu mapa como um mapa aberto, ou seja, um world_server. Agora você vai terminar de configurar seu mapa, no final do arquivo gs.conf. Estarei explicando logo após o código. ;----------------------------------------------------------------------------------------------------- [World_is101] ;-------- Se o seu mapa é um world_servers World_Nome, caso contrário Instance_Nome ----- index = 126 tag = 91 base_path = a101/ limit = allow-root; grid = {80,80,25,-1000.0,-1000.0} base_region = {-1024.0,-1024.0} , {1024,1024.0} local_region = {-1024.0,-1024.0} , {1024,1024.0} cid = 0,2,13 [Terrain_is101] ;-------- Mude o Nome ----- szMapPath = map nAreaWidth = 512 nAreaHeight = 512 nNumAreas = 4 ;----- Normalmente é uma soma de Cols + Rows (Salvo exceções) nNumCols = 2 ;----- Numero de Columns no instance.txt nNumRows = 2 ;----- Numero de Rows no instance.txt vGridSize = 2.0f vHeightMin = 0.0f vHeightMax = 800.0f [MsgReceiverTCP_is101] ;-------- Mude o Nome ----- type = tcp listen_addr = INSTANCE101:12009 ;-------- Caso seja localhost, declare, mas lembre sempre de alterar a porta por exemplo 12010,12011.. ----- so_sndbuf = 16384 so_rcvbuf = 16384 tcp_nodelay = 1 listen_backlog = 10 [MsgReceiverUNIX_is101] ;-------- Mude o Nome ----- type = unix listen_addr = /tmp/gssock_is101 ;-------- Mude o Nome ----- so_sndbuf = 16384 so_rcvbuf = 16384 listen_backlog = 10 ;----------------------------------------------------------------------------------------------------- Bem, essa é a configuração do mapa a101. Tudo dependerá do tamanho do row e da column que pegamos na instance.txt Primeiro de tudo, você terá que adicionar um Index, lembrando, esse valor não pode ser igual outro mapa existente (dará conflito e os dois serão desligados), então use um valor depois do último mapa configurado, lembre-se também, que esse valor não pode passar de 128 (na 1.5.5), caso contrário, os monstros e npcs afundam no mapa. ( Usei 126). você terá que adicionar o id (Tag) para o ID do mapa no instance.txt, se o ID tiver errado (diferente do client), você toma disconnect ao tentar acessar o mapa. ( Usei 91). base_path é o caminho onde está o seu mapa, nesse caso, você altera apenas o nome ( Usei a101/ ). limit são variáveis de liberações do mapa, segue os exemplos em um fórum externo: [Conteúdo Oculto] Grid ( Como definir o valor ): O valor de Grid dependerá do seu Row / Column. Exemplos: Se o mapa for 2 / 2: 80,80,25,-1000,-1000 Se o mapa for 3 / 3 120,120,25,-1500,-1500 Se o mapa for 4 / 4: 160,160,25,-2000.-2000 Os exemplos acima são bem explicativos, caso não entendeu, basicamente: Você vai multiplicar o valor de grid x 25, ele dará o resultado total, ou seja: 80 x 25 = 2000. 2000 / 2 = 1000, então nesse caso: -1000, -1000. 120 x 25 = 3000. 3000 / 2 = 1500, então nesse caso: -1500, -1500. Assim por diante. base_region e local_region, você consegue esse valor através do AngelicaMapEditor. Os demais valores importantes de serem configurados eu deixei comentário no exemplo acima. Em caso de dúvidas fique à vontade em perguntar.
    1 ponto
  29. Bom uso a todos! Version: Python 3.13 Install: python3 -m pip install scapy #Notes Update Rate Limiting 03-01-25 Traffic Anomaly Detection 03-01-25 Packet Filtering 03-01-25 Add SSH monitoring 28-12-24 Config.txt # Configurações gerais de monitoramento e proteção # Defina as portas para monitoramento (exemplo: HTTP, SSH) PORTS_TO_MONITOR=80,7777,2106 # Se o bloqueio por HWID deve ser ativado BLOCK_HWID=true # Limites de pacotes MAX_PACKET_SIZE=1024 MAX_CONNECTIONS=100 CONNECTION_TIME_WINDOW=10 # Em segundos # Limitações de pacotes TCP e UDP MAX_TCP_PACKETS=500 MAX_UDP_PACKETS=300 # Configurações para proteção SSH SSH_PORT=22 SSH_BLOCK_THRESHOLD=5 # Número de tentativas antes de bloquear SSH_BLOCK_DURATION=3600 # Duração do bloqueio (em segundos) SSH_LOCKDOWN_THRESHOLD=10 # Número de tentativas excessivas antes de lockdown SSH_LOCKDOWN_DURATION=86400 # Duração do lockdown (1 dia) SSH_IP_ATTEMPTS_WINDOW=60 # Janela de tempo (em segundos) para tentativas de login SSH # Limitação de taxa de pacotes para evitar DDoS RATE_LIMIT_THRESHOLD=1000 # Limite de pacotes por IP DDoS_DETECTION_WINDOW=10 # Janela de tempo para detectar DDoS DDoS_CONNECTION_THRESHOLD=500 # Limite de conexões simultâneas que aciona a detecção de DDoS main.py import os import time import hashlib import uuid import platform import json import re from scapy.all import sniff, TCP, UDP, IP from collections import defaultdict from threading import Thread # Словари для хранения данных трафика и блокировок traffic_data = defaultdict(lambda: {"timestamps": [], "tcp_count": 0, "udp_count": 0, "packet_count": 0}) blocked_hwids = set() # Множество заблокированных HWID blocked_ips = defaultdict(lambda: {"block_time": None, "attempts": 0, "block_duration": 0}) # Блокировка IP # Стандартные настройки config = { "MAX_PACKET_SIZE": 1024, "MAX_CONNECTIONS": 100, "CONNECTION_TIME_WINDOW": 10, "PORTS_TO_MONITOR": [80, 7777, 2106], "MAX_TCP_PACKETS": 500, "MAX_UDP_PACKETS": 300, "BLOCK_HWID": True, "SSH_PORT": 22, "SSH_BLOCK_THRESHOLD": 5, # Порог для неудачных попыток входа SSH "SSH_BLOCK_DURATION": 3600, # Длительность блокировки SSH "SSH_LOCKDOWN_THRESHOLD": 10, # Количество чрезмерных попыток перед блокировкой "SSH_LOCKDOWN_DURATION": 86400, # Длительность блокировки (1 день) "SSH_IP_ATTEMPTS_WINDOW": 60, # Временное окно для попыток входа SSH "RATE_LIMIT_THRESHOLD": 1000, # Порог пакетов на IP "DDoS_DETECTION_WINDOW": 10, # Временное окно для обнаружения DDoS "DDoS_CONNECTION_THRESHOLD": 500 # Порог одновременных подключений } LOG_FILE = "logs.json" # Функция для загрузки конфигурации из файла def load_config(): global config if not os.path.exists("config.txt"): print("[INFO] Файл config.txt не найден. Используются настройки по умолчанию.") return with open("config.txt", "r") as file: for line in file: line = line.strip() if not line or line.startswith("#"): continue key, value = line.split("=") key = key.strip() value = value.split("#")[0].strip() if key in ["PORTS_TO_MONITOR"]: config[key] = list(map(int, value.split(","))) elif key in ["BLOCK_HWID"]: config[key] = value.lower() == "true" elif key in ["SSH_PORT", "SSH_BLOCK_THRESHOLD", "SSH_BLOCK_DURATION", "MAX_PACKET_SIZE", "MAX_CONNECTIONS", "CONNECTION_TIME_WINDOW", "MAX_TCP_PACKETS", "MAX_UDP_PACKETS", "RATE_LIMIT_THRESHOLD", "DDoS_DETECTION_WINDOW", "DDoS_CONNECTION_THRESHOLD", "SSH_LOCKDOWN_THRESHOLD", "SSH_LOCKDOWN_DURATION", "SSH_IP_ATTEMPTS_WINDOW"]: config[key] = int(value) else: config[key] = value # Функция для записи статистики def log_statistics(ip, hwid, reason, data): log_entry = { "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), "ip": ip, "hwid": hwid, "reason": reason, "tcp_count": data["tcp_count"], "udp_count": data["udp_count"] } try: with open(LOG_FILE, "r+") as f: logs = json.load(f) logs.append(log_entry) f.seek(0) json.dump(logs, f, indent=4) except Exception as e: print(f"[ERROR] Ошибка при сохранении в лог: {e}") # Функция для генерации уникального HWID def get_hwid(): mac_address = get_mac_address() system_uuid = get_system_uuid() unique_string = f"{mac_address}-{system_uuid}-{platform.system()}" return hashlib.sha256(unique_string.encode()).hexdigest() # Функция для получения MAC-адреса def get_mac_address(): try: mac = uuid.getnode() mac_address = ':'.join(("%012X" % mac)[i:i + 2] for i in range(0, 12, 2)) return mac_address except Exception: return "UNKNOWN_MAC" # Функция для получения UUID системы def get_system_uuid(): try: if platform.system() == "Linux": with open('/sys/class/dmi/id/product_uuid', 'r') as f: return f.read().strip() elif platform.system() == "Windows": import subprocess result = subprocess.check_output('wmic csproduct get uuid', shell=True).decode() return result.split('\n')[1].strip() return platform.node() except Exception: return "UNKNOWN_UUID" # Функция для мониторинга пакетов def monitor_packet(packet): if packet.haslayer(IP): src_ip = packet[IP].src current_time = time.time() hwid = get_hwid() # Инициализация данных трафика data = traffic_data[src_ip] if current_time not in data["timestamps"]: data["timestamps"].append(current_time) # Удаление меток времени, выходящих за пределы окна data["timestamps"] = [ ts for ts in data["timestamps"] if current_time - ts <= config["CONNECTION_TIME_WINDOW"] ] # Ограничение скорости: подсчет пакетов, полученных от IP data["packet_count"] += 1 # Обнаружение DDoS: ограничение пакетов на IP за определенный период времени if data["packet_count"] > config["RATE_LIMIT_THRESHOLD"]: print(f"[ALERT] IP {src_ip} отправляет слишком много пакетов. Возможная атака DDoS!") blocked_hwids.add(hwid) log_statistics(src_ip, hwid, "Превышен лимит пакетов", data) # Блокировка по TCP/UDP пакетам if packet.haslayer(TCP): data["tcp_count"] += 1 elif packet.haslayer(UDP): data["udp_count"] += 1 if data["tcp_count"] > config["MAX_TCP_PACKETS"]: blocked_hwids.add(hwid) log_statistics(src_ip, hwid, "Избыточное количество TCP пакетов", data) print(f"[ALERT] Избыточное количество TCP пакетов: {src_ip}") elif data["udp_count"] > config["MAX_UDP_PACKETS"]: blocked_hwids.add(hwid) log_statistics(src_ip, hwid, "Избыточное количество UDP пакетов", data) print(f"[ALERT] Избыточное количество UDP пакетов: {src_ip}") elif len(data["timestamps"]) > config["MAX_CONNECTIONS"]: blocked_hwids.add(hwid) log_statistics(src_ip, hwid, "Избыточное количество соединений", data) print(f"[ALERT] Избыточное количество соединений: {src_ip}") # Функция для мониторинга трафика SSH def monitor_ssh_traffic(): print("[INFO] Мониторинг трафика SSH...") try: sniff(filter=f"tcp port {config['SSH_PORT']}", prn=process_ssh_packet, store=False) except KeyboardInterrupt: print("[INFO] Мониторинг SSH прерван.") except Exception as e: print(f"[ERROR] Ошибка мониторинга SSH: {e}") # Функция для обработки пакетов SSH def process_ssh_packet(packet): if packet.haslayer(IP) and packet.haslayer(TCP): src_ip = packet[IP].src handle_ssh_attempt(src_ip) # Функция для обработки попыток входа SSH def handle_ssh_attempt(ip): current_time = time.time() data = blocked_ips[ip] # Если IP был заблокирован на более длительный период if data["block_time"] and current_time - data["block_time"] < data["block_duration"]: return # Увеличиваем счетчик попыток входа SSH data["attempts"] += 1 if data["attempts"] > config["SSH_BLOCK_THRESHOLD"]: block_ip(ip) data["block_time"] = current_time data["block_duration"] = config["SSH_BLOCK_DURATION"] # Длительность блокировки if data["attempts"] > config["SSH_LOCKDOWN_THRESHOLD"]: lockdown_ip(ip) data["block_time"] = current_time data["block_duration"] = config["SSH_LOCKDOWN_DURATION"] # Длительность блокировки # Функция для блокировки IP def block_ip(ip): print(f"[INFO] IP {ip} заблокирован за слишком много попыток входа SSH.") # Функция для применения блокировки для IP def lockdown_ip(ip): print(f"[INFO] IP {ip} попал в блокировку за слишком много попыток входа SSH.") # Функция для разблокировки IP после истечения срока блокировки def unblock_expired_ips(): current_time = time.time() for ip in list(blocked_ips.keys()): if current_time - blocked_ips[ip]["block_time"] > config["SSH_BLOCK_DURATION"]: print(f"[INFO] IP {ip} разблокирован.") del blocked_ips[ip] # Функция для начала мониторинга def start_monitoring(): print(f"[INFO] Мониторинг портов: {config['PORTS_TO_MONITOR']}") try: ports_filter = " or ".join([f"tcp port {port} or udp port {port}" for port in config["PORTS_TO_MONITOR"]]) sniff(filter=ports_filter, prn=monitor_packet, store=False) except KeyboardInterrupt: print("[INFO] Мониторинг прерван.") except Exception as e: print(f"[ERROR] Ошибка мониторинга: {e}") if __name__ == "__main__": load_config() # Запуск мониторинга SSH в отдельном потоке ssh_thread = Thread(target=monitor_ssh_traffic, daemon=True) ssh_thread.start() start_monitoring()
    1 ponto
  30. Abrir o editor AngelicaMapEditor. Obter as coordenadas iniciais (X.Y.Z) no modelo 3D. Mover o modelo 3D para uma nova posição e, em seguida, obter as novas coordenadas (X.Y.Z). Clicar em "Calcular" para gerar os seguintes resultados: Direção do Vetor: DirX = 1.0000 DirY = 0.0000 DirZ = 0.0000 Vetor Up: UpX = 0.0000 UpY = 1.0000 UpZ = 0.0000 Fix de seleção.rar
    1 ponto
  31. Bom creio que todos já sabem da os comandos, porém vou postar assim mesmo, já vir que tem até scripts ai que faz todo preparo da maquina para instalação de PWserv, porém eu sou a moda antiga ainda gosto de aplicar manualmente. ========================================================== Esses comandos serve para maquinas da OVH e CentoS Google: Nos quais você não tem acesso ao root e sim ao usuário fornecido. Com esses comando você vai consegue acessa ROOT. sudo passwd root su root yum install nano Hora: timedatectl set-timezone America/Sao_Paulo ========================================================== Preparando a maquina yum update sudo yum install httpd sudo service httpd start yum -y install mariadb-server mariadb systemctl start mariadb systemctl enable mariadb yum install unzip sudo mysql_secure_installation (Esse vai pedir senha, você só aperta enter, que vai ter a opção de escolher senha nova) sudo yum install php php-mysql sudo chkconfig httpd on sudo yum install epel-release sudo yum install phpmyadmin yum install nano sudo nano /etc/httpd/conf.d/phpMyAdmin.conf (aqui onde tiver 127.0.0.1, você coloca o ip do seu pc) service httpd restart yum install -y java-1.6.0-openjdk.x86_64 sudo yum install java-1.7.0-openjdk yum install libstdc++.i686 libstdc++-devel.i686 ln -s /usr/lib/libstdc++.so.6.0.19 /usr/lib/libstdc++-libc6.1-1.so.2 yum install libxml2.so.2 yum install libstdc++.so.5 yum install libgtk2.0-0:i386 libpangox-1.0-0:i386 libpangoxft-1.0-0:i386 libidn11:i386 gstreamer0.10-pulseaudio:i386 gstreamer0.10-plugins-base:i386 gstreamer0.10-plugins-good:i386 Tutorial para instalação do winrar yum install wget cd /usr/local/src wget [Conteúdo Oculto] tar zxvf rarlinux-x64-5.2.1.tar.gz cp rar/unrar /usr/local/bin Comando para Desativa firewalld sudo systemctl disable firewalld systemctl stop firewalld systemctl status firewalld desativa selinux service iptables stop
    1 ponto
  32. Simplismente sensasional, compartilhei no meu site e dei os créditos devidos parabéns: link: [Conteúdo Oculto]
    1 ponto
  33. da uma conferida no readme, agora só não compila quem não tiver vontade
    1 ponto
  34. adicionado link para repositorio correto da source do pwadmin em qt c++: [Conteúdo Oculto]
    1 ponto
  35. Nesse vídeo eu ensino como instalar um servidor privado de Perfect World em uma maquina linux VPS sistema centos 7 Todos os arquivos usado na aula para baixar CLIQUE AQUI
    1 ponto
  36. Esse vídeo vai lhe ensina como criar um novo npc, onde colocar, criar missão e adicionar requisitos como matar mobs e boos, e adicionar uma premiação. Download da missão diária: Clique Aqui
    1 ponto
  37. Extrator de PCK foi postado na ragezone por Luka o criador da ferramenta é Jolan que deu consentimento, muito boa essa ferramenta já usei bastante. PCK Module.rar
    1 ponto
  38. Ferramenta desenvolvida por Joslian publicada gratuitamente, utilizada para gerar tw em vários dias da semana. universalmanagerd.rar
    1 ponto
  39. Nova atualização v176.1 - Corrigido Leitura do ElementClient X86 - Agora, se você abrir o editor, com o Rae Aberto, o carregamento do elements.data não será necessário. Source Code: [Conteúdo Oculto] NpcGen.v176.1.updated.by.Haly.rar
    1 ponto
  40. Hoje vou ensinar de forma bem simples de como trabalhar com o SDK 3.0.5 do Mercado Pago Requisitos → php >= 8.2 composer 1 – com o composer já instalado, abra o terminal e navegue até a pasta do seu projeto e baixe o sdk: composer require "mercadopago/dx-php:3.0.5" após o download irá criar uma pasta chamada vendor que usaremos no passo a seguir 2 – crie um arquivo na raiz do projeto chamado pix.php e cole o seguinte conteudo: pix.php <?php $access_token = '??????'; $notification_url = '[Conteúdo Oculto]'; $external_reference = 123; $description = 'Doação de R$5,00'; $donate_value = 5; require_once 'vendor/autoload.php'; use MercadoPago\Client\Payment\PaymentClient; use MercadoPago\Exceptions\MPApiException; use MercadoPago\MercadoPagoConfig; MercadoPagoConfig::setAccessToken($access_token); $client = new PaymentClient(); $request = [ "transaction_amount" => $donate_value, "description" => $description, "external_reference" => $external_reference, "notification_url" => $notification_url, "payment_method_id" => "pix", "payer" => [ "email" => "[email protected]", ] ]; $payment = $client->create($request); ?> Explicação: $access_token = O token que o mercado pago gerou ao criar seu App $notification_url = Url de notificação, quando o status do pagamento for alterado será enviando uma notificação para esta URL $external_reference = Uma referencia externa ÚNICA para indetificar o pedido futuramente $description = Descrição do pedido $donate_value = Valor do pedido Para visualizar oque o retorno do mercado pago de forma detalhada você pode usar o var_dump, exemplo: ... $payment = $client->create($request); echo '<pre>'; var_dump($payment); echo '</pre>'; Se der tudo certo você já verá os dados do pix Por exemplo, para exibir a imagem do QRCode: ... $payment = $client->create($request); /* echo '<pre>'; var_dump($payment); echo '</pre>'; */ echo '<img src="data:image/png;base64,'.$payment->point_of_interaction->transaction_data->qr_code_base64.'" />'; Você pode fazer o mesmo para o boleto, exemplo invez de usar "payment_method_id" => "pix", use "payment_method_id" => "bolbradesco", e para pega a URL do boleto echo $payment->transaction_details->external_resource_url; Agora vamos criar o arquivo “mercado-pago.php” que será responsável por receber as notificações do nosso pedido e atualizar o mesmo O mercado pago envia o dados do pedido para o mercado-pago.php capture o ID e use a função get() da classe PaymentClient para obter os dados do pedido atualizado mercado-pago.php <?php $access_token = '??????'; require_once 'vendor/autoload.php'; use MercadoPago\Client\Payment\PaymentClient; use MercadoPago\MercadoPagoConfig; MercadoPagoConfig::setAccessToken($access_token); $client = new PaymentClient(); $mercado_pago = json_decode(file_get_contents('php://input')); if(isset($mercado_pago->data->id)){ $client = new PaymentClient(); $payment = $client->get($mercado_pago->data->id); $status = $payment->status; $external_reference = $payment->external_reference; } Use o var_dump para visualizar os dados detalhadamente, mas com o exemplo acima eu já deixei o status e o external_reference Como isso você ja pode verifica se o pedido foi pago e entregar o Gold para o jogador hehe if($status == 'approved'){ //envia o gold para a conta } Github: [Conteúdo Oculto] Documentação: [Conteúdo Oculto]
    1 ponto
  41. 1 ponto
  42. Abre todas as versões, eu recompilei e traduzi essa é a ultima versão disponível, funciona em multiplos jogos Angelica. Testado em : PW , FW , SSO. criado por : [Conteúdo Oculto] Release.7z
    1 ponto
  43. 1 ponto
  44. 1 ponto
  45. Removido da tela de criação de Personagem a Raça Sombrio Necessário remover no server também. elementclient.exe --------------------------------------------------------------------------------------------- PS: te ajudei? então manda aquele pix do coração para incentivar meus posts. PIX: [email protected] --------------------------------------------------------------------------------------------- Precisa de ajuda em particular? Entra em contato comigo tenho otimos preços.
    1 ponto
  46. Há algum tempo eu venho estudando sobre os octets do PW (hex strings) para adicionar os detalhes dos itens no visualizador de inventário do meu painel. Inclusive eu achei esses 2 pdfs que estão anexados nesse post perdidos por aí (Além de outros projetos relacionados), o que me ajudou bastante no começo. E apartir disso eu construi esse projeto em php chamado PWHexParser que recebe um octet de um item, o tipo do item e retorna um json como resultado, exemplos: Lendo octets de uma roupa: <?php require __DIR__ . '/../vendor/autoload.php'; $decoder = new App\Decoder(); $decoder->setItemType('Fashion'); // Weapon, Armor, Charm, Jewelry, Flight, Card... $decoder->sethexString('1e00000092470100010a620072007500630065000000'); //Mandarin Silk Gown $result = $decoder->decodeHexString(); header('Content-Type: application/json'); echo json_encode($result, JSON_PRETTY_PRINT); Resultado: { "level_req": 30, "color": 18322, "gender": 1, "creator_type": 1, "name_length": 5, "name": "bruce", "color_mask": 0 } Adivinhando o tipo do item (arma nesse caso): <?php require __DIR__ . '/../vendor/autoload.php'; $mask = 1; // Weapon $decoder = new App\Decoder(); $decoder->guessItemType($mask); $decoder->sethexString('5a00ff001001000031000000b4610000786900002c00040a4200720075006300650000000000090000000b00000000000000930200009b0500000000000000000000180000000000604000000000010000000000000003000000114500009200000001000000f02300004d000000cf2500000e000000'); $result = $decoder->decodeHexString(); header('Content-Type: application/json'); echo json_encode($result, JSON_PRETTY_PRINT); Resultado: { "level": 90, "class": 255, "strength": 272, "vitality": 0, "dexterity": 49, "magic": 0, "min_durability": 250, "max_durability": 270, "item_type": 44, "item_flag": 4, "name_length": 10, "name": "Bruce", "ranged_type": 0, "weapon_type": 9, "weapon_grade": 11, "ammunition_type": 0, "min_physical_damage": 659, "max_physical_damage": 1435, "min_magic_damage": 0, "max_magic_damage": 0, "attack_rate": 0.83, "attack_range": 3.5, "minimum_range": 0, "sockets_count": 1, "sockets": [ 0 ], "addons_count": 3, "addons": { "special_addons": [ { "id": 1297, "value": 146, "level": 1 } ], "normal_addons": [ { "id": 1008, "value": 77 }, { "id": 1487, "value": 14 } ], "refine_addons": [ ], "socket_addons": [ ] } } O projeto está disponível no Github e também é possível instalar via composer: Ele não está 100% finalizado ainda, mas já da pra utilizar em algum projeto de seu interesse. :) Hex Data Guide v2T2.pdf Hex Code Guide By Drakaer.pdf
    1 ponto
  47. authd-base64.zip Configura usuário e senha mysql em authd/table.xml Comando para ligar: cd pwserver/authd/; ./authd start >pwserver/logs/authd.log & Caso fica dando erro de Connection Failed pegue o conteudo de authd/authd_old.conf e coloque em authd/authd.conf ou pega o authd.conf de alguma auth que já esteja funcionando em seu servidor
    1 ponto
  48. Instalador do cliente beta level up. [Conteúdo Oculto]
    1 ponto
  49. [Repost] Estava desenvolvendo este Painel do Jogador, para um PW que iria lançar, mas acabou não dando certo, então quem tive interesse entra em contato. [VENDA ÚNICA PARA UMA PESSOA/SERVIDOR] Este é um dos painel mais completo que fiz, ainda está em construção, mas as funções principais já está pronto Você escolhe entre entregar gold ou item na parte doações Suporte os gateway Pix Boleto PicPay Mercado Pago PagSeguro Paypal Entrega de Gold ou Item de forma automática e instantânea (com/sem aviso dentro do jogo) Junto ao sistema de doação, possui um sistema de presentes, onde o jogador pode enviar o gold/item para um amigo Tem um painel do administrador completo, com todas as funções de um PWAdmin & Iweb (Você pode gerenciar seu servidor de qualquer lugar ou dispositivo)
    1 ponto

Suporte GM

Comunidade de Perfect World do Brasil

Copyright © 2023-2024 SuporteGM Powered by Invision Community
Поддержка Invision Community в России

Links

×
×
  • Criar Novo...