Os Melhores
Conteúdo popular
Mostrando conteúdo com a maior reputação em 01/26/25 in todas as áreas
-
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.py5 pontos
-
Download: [Conteúdo Oculto] Para abrir o jogo sem precisar do launcher: elementclient.zip Post original (ragezone) Vídeo meu falando sobre:2 pontos
-
"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
-
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.rar2 pontos
-
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.rar2 pontos
-
PWSERVER 1.5.5 COM ESTIO, ATALHOS, SCRIPT.LUA E AFINS. LINK QUEBRADO!1 ponto
-
1 ponto
-
1 ponto
-
1 ponto
-
1 ponto
-
video da instalação do .ova para servidor de pw 155 no ubuntu.. vai com script lua e sistema de logs.1 ponto
-
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.rar1 ponto
-
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 Aqui1 ponto
-
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 Cliente1 ponto
-
1 ponto
-
1 ponto
-
Npcgen Data editor by Luka O Editor de NPCGen teve uma atualização Adicionado Offsets para 1.7.2 x64 e 1.7.6 x64 Agora o editor tem suporte a API do RAE, para funcionar corretamente, deve estar com o Rody Angelica Editor aberto com o elements carregado. NetFramework 4.8.1 Adicionado o projeto HelperProcess, devido a API do RAE somente estar disponível em x86, para que consiga pegar coordenadas de endereços x64 do elementclient. Compile em x86 para funcionar corretamente com a RAE API. Source Code: [Conteúdo Oculto] Screenshots: codigo fonte: [Conteúdo Oculto] binarios: [Conteúdo Oculto]/releases NpcGen v174 by Luka updated by Haly.rar NpcGen.v176.updated.by.Haly.rar1 ponto
-
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.zip1 ponto
-
Se seu RAE Editor de Elements não abre por nada, utilize este link: RAE_2023.zip1 ponto
-
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
-
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
-
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.rar1 ponto
-
1 ponto
-
1 ponto
-
1 ponto
-
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
-
1 ponto
-
1 ponto
-
1 ponto
-
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
-
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
-
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 stop1 ponto
-
Simplismente sensasional, compartilhei no meu site e dei os créditos devidos parabéns: link: [Conteúdo Oculto]1 ponto
-
da uma conferida no readme, agora só não compila quem não tiver vontade1 ponto
-
adicionado link para repositorio correto da source do pwadmin em qt c++: [Conteúdo Oculto]1 ponto
-
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 Aqui1 ponto
-
Ferramenta desenvolvida por Joslian publicada gratuitamente, utilizada para gerar tw em vários dias da semana. universalmanagerd.rar1 ponto
-
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.rar1 ponto
-
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
-
1 ponto
-
Valor para versão Mensal R$: 45,00. Cupom para desconto: FromKabal Valor para versão Anual R$: 390,00. Valor para versão Permanente R$: 690,00. Para estrangeiros versão Permanente R$: 745,00.1 ponto
-
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.7z1 ponto
-
1 ponto
-
1 ponto
-
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.pdf1 ponto
-
1 ponto
-
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 servidor1 ponto
-
1 ponto
-
[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