strGBK

此博客展示了一段Java代码,定义了一个名为strGBK的类,其中包含一个isoTOgbk方法,用于将字符串从ISO - 8859 - 1编码转换为GBK编码,若输入为空则返回空字符串,同时处理了不支持编码的异常。

package zpxx;
import java.io.*;

public class strGBK
{
 public String isoTOgbk(String strMc)
 {
  if(strMc == null || strMc.length()==0)
  return "";
  try
  {
   strMc = new String(strMc.getBytes("ISO-8859-1"),"GBK");
  }
  catch(UnsupportedEncodingException usex)
  {
  }
  return strMc;
 }
}

#include <stdio.h> #include <WinSock2.h> #include <stdlib.h> #include <string.h> #include <iostream> #include <windows.h> #pragma comment(lib, "ws2_32.lib") // 定义最大响应大小 #define MAXSIZE 1024 #define SERVER_IP "118.126.117.125" #define PORT 8000 #define CONNECT_FAIL "connect server failed" #define ATTACK_SUCCESS "攻击成功" #define ATTACK_FAIL "攻击失败" #define ATTACK_RECORD_SUCCESS "[" // 模拟 hacker.h 接口(如果不存在,则自行定义) #ifndef HACKER_H #define HACKER_H int hk_404(char* id, char* response); int hk_restore(char* id, char* response); int hk_tamper(char* id, char* para, char* response); int hk_record(char* id, char* response); #endif // HACKER_H // UTF-8 转 GBK std::string UTF8ToGBK(const char* strUTF8) { if (!strUTF8 || strlen(strUTF8) == 0) return ""; int len = MultiByteToWideChar(CP_UTF8, 0, strUTF8, -1, NULL, 0); if (len <= 0) return ""; wchar_t* wszGBK = new wchar_t[len + 1]; memset(wszGBK, 0, (len + 1) * sizeof(wchar_t)); MultiByteToWideChar(CP_UTF8, 0, strUTF8, -1, wszGBK, len); len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL); char* szGBK = new char[len + 1]; memset(szGBK, 0, len + 1); WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, szGBK, len, NULL, NULL); std::string strTemp(szGBK); delete[] wszGBK; delete[] szGBK; return strTemp; } // GBK 转 UTF-8 void GBKToUTF8(std::string& strGBK) { if (strGBK.empty()) return; int len = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0); if (len <= 0) return; wchar_t* wszUtf8 = new wchar_t[len]; memset(wszUtf8, 0, len * sizeof(wchar_t)); MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, wszUtf8, len); len = WideCharToMultiByte(CP_UTF8, 0, wszUtf8, -1, NULL, 0, NULL, NULL); char* szUtf8 = new char[len + 1]; memset(szUtf8, 0, len + 1); WideCharToMultiByte(CP_UTF8, 0, wszUtf8, -1, szUtf8, len, NULL, NULL); strGBK = szUtf8; delete[] szUtf8; delete[] wszUtf8; } // 发送命令到服务器 int send_cmd(char* cmd, char* response) { int ret; // 添加 check 参数 strcat_s(cmd, 512, " check:13243879166"); WORD wVersionRequested = MAKEWORD(2, 2); // 使用更稳定的 2.2 版本 WSADATA wsaData; int err = WSAStartup(wVersionRequested, &wsaData); if (err != 0) { strcpy_s(response, MAXSIZE, "WSAStartup failed."); return -1; } if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { strcpy_s(response, MAXSIZE, "Unsupported Winsock version."); WSACleanup(); return -1; } SOCKET sockClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sockClient == INVALID_SOCKET) { strcpy_s(response, MAXSIZE, "Create socket failed."); WSACleanup(); return -1; } SOCKADDR_IN addrSrv; addrSrv.sin_family = AF_INET; addrSrv.sin_addr.s_addr = inet_addr(SERVER_IP); addrSrv.sin_port = htons(PORT); ret = connect(sockClient, (SOCKADDR*)&addrSrv, sizeof(addrSrv)); if (ret == SOCKET_ERROR) { strcpy_s(response, MAXSIZE, CONNECT_FAIL); closesocket(sockClient); WSACleanup(); return -1; } // 发送命令 ret = send(sockClient, cmd, static_cast<int>(strlen(cmd)) + 1, 0); if (ret == SOCKET_ERROR) { strcpy_s(response, MAXSIZE, "Send command failed."); closesocket(sockClient); WSACleanup(); return -1; } // 接收响应 ret = recv(sockClient, response, MAXSIZE - 1, 0); if (ret <= 0) { strcpy_s(response, MAXSIZE, "Receive response failed."); closesocket(sockClient); WSACleanup(); return -1; } else { response[ret] = '\0'; // 手动加结束符 } closesocket(sockClient); WSACleanup(); return 0; } // 各种攻击命令封装 int hk_404(char* id, char* response) { char buff[512] = { 0 }; sprintf_s(buff, "cmd:attack_404 para:null id:%s", id); return send_cmd(buff, response); } int hk_restore(char* id, char* response) { char buff[512] = { 0 }; sprintf_s(buff, "cmd:attack_restore para:null id:%s", id); return send_cmd(buff, response); } int hk_tamper(char* id, char* para, char* response) { char buff[512] = { 0 }; sprintf_s(buff, "cmd:attack_tamper para:%s id:%s", para, id); return send_cmd(buff, response); } int hk_record(char* id, char* response) { char buff[512] = { 0 }; sprintf_s(buff, "cmd:attack_record para:null id:%s", id); return send_cmd(buff, response); } // 检查返回是否成功 bool check_response(const char* response) { if (response == nullptr) return false; if (strncmp(response, ATTACK_SUCCESS, strlen(ATTACK_SUCCESS)) == 0 || strncmp(response, ATTACK_RECORD_SUCCESS, strlen(ATTACK_RECORD_SUCCESS)) == 0) { return true; } return false; } // 主函数示例测试 int main() { char response[MAXSIZE] = { 0 }; // 示例调用 std::cout << "开始测试连接..." << std::endl; if (hk_404((char*)"test123", response) == 0) { std::string result = UTF8ToGBK(response); // 假设服务端返回的是 UTF-8 std::wcout << L"结果: " << std::wstring(result.begin(), result.end()).c_str() << std::endl; if (check_response(response)) { std::cout << "攻击成功!" << std::endl; } else { std::cout << "攻击失败: " << result << std::endl; } } else { std::cout << "请求失败: " << response << std::endl; } system("pause"); return 0; } 再改一遍
最新发布
01-08
#include "pch.h" #include "DbgLog.h" #include <ctime> #include "shlwapi.h" #pragma comment(lib, "shlwapi") //char DbgLog::LogPath[MAX_PATH] = "Printer_log.txt"; ofstream logfile; //streambuf *outstream; DbgLog::DbgLog(){} DbgLog::~DbgLog(){} void DbgLog::StartLog(TCHAR *LogName) { /* if(OFFONPRINTF) { TCHAR LogPath[MAX_PATH] = { 0 }; GetModuleFileName(NULL, LogPath, sizeof(LogPath)); PathRemoveFileSpec(LogPath); PathAppend(LogPath, LogName); logfile.open(LogPath, ios::app | ios::out); //outstream = std::cout.rdbuf(logfile.rdbuf()); time_t t = time(0); char tmp[64] = ""; tm newtime; localtime_s(&newtime, &t); strftime(tmp, sizeof(tmp), "%Y/%m/%d %H:%M:%S", &newtime); logfile << "-------------------------------------" << tmp << "-------------------------------------" << endl; } */ if(OFFONPRINTF) { TCHAR LogPath[MAX_PATH] = { 0 }; TCHAR LogFileName[MAX_PATH] = { 0 }; GetModuleFileName(NULL, LogPath, sizeof(LogPath)); PathRemoveFileSpec(LogPath); PathAppend(LogPath, L"project"); CreateDirectory(LogPath, NULL); PathAppend(LogPath, L"log"); CreateDirectory(LogPath, NULL); PathAppend(LogPath, LogName); CreateDirectory(LogPath, NULL); SYSTEMTIME sys; GetLocalTime(&sys); wsprintf(LogFileName, L"%04d%02d%02d%02d%02d.txt", sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute); PathAppend(LogPath, LogFileName); logfile.open(LogPath, ios::app | ios::out); } } void DbgLog::EndLog() { if(OFFONPRINTF) { //std::cout.rdbuf(outstream); logfile.close(); } } void DbgLog::DbgPrint(CHAR* CppName, CHAR *FunName, INT CodeLine, CHAR* format, ...) { if(OFFONPRINTF) { char Buffer[1024] = {0}; va_list argp; va_start(argp, format); vsprintf_s(Buffer, format, argp); va_end(argp); logfile << TimeStrLog() << "[" << GetCurrentThreadId() << "][" << CppName << "][" << FunName << "][" << CodeLine << "] "; logfile << Buffer; logfile << flush; } } void DbgLog::DbgPrint(CHAR* CppName, CHAR *FunName, INT CodeLine, TCHAR* format, ...) { if (OFFONPRINTF) { TCHAR Buffer[1024] = { 0 }; CHAR cBuffer[2048] = { 0 }; va_list argp; va_start(argp, format); vswprintf_s(Buffer, format, argp); va_end(argp); wchar_to_char(cBuffer, Buffer, 2048); logfile << TimeStrLog() << "[" << GetCurrentThreadId() << "][" << CppName << "][" << FunName << "][" << CodeLine << "] "; logfile << cBuffer;// Buffer; logfile << flush; } } string DbgLog::TimeStrLog() { SYSTEMTIME sys; GetLocalTime(&sys); char TS[255] = ""; sprintf_s(TS, 255, "%04d-%02d-%02d %02d:%02d:%02d.%04d ", sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond, sys.wMilliseconds); return &TS[0]; } int DbgLog::wchar_to_char(char *strGBK, LPCWSTR FileName, int strlen) { int len = WideCharToMultiByte(CP_ACP, 0, FileName, -1, NULL, 0, NULL, NULL); if(len > strlen){ return -1; } WideCharToMultiByte(CP_ACP, 0, FileName, -1, strGBK, len, NULL, NULL); return len; }cpp文件也要改吧
12-20
/* * Copyright(C) 2016,Company 保留所有权利。( All rights reserved. ) * * 文件名称:DbgLog.h * 摘 要: * 当前版本:1.0 * 作 者: * 创建日期:2016年7月19 */ #ifndef _DBGPRINTF_H_ #define _DBGPRINTF_H_ #include <iostream> #include <fstream> #include <tchar.h> #include <string> #include <windows.h> using namespace std; #ifdef _DEBUG #define OFFONPRINTF 1 #else #define OFFONPRINTF 0 #endif #if OFFONPRINTF #define DBG_GET_FILE() __FILE__ #define DBG_GET_FUNCTION() __FUNCTION__ #define DGB_GET_LINE() __LINE__ #else #define DBG_GET_FILE() "" #define DBG_GET_FUNCTION() "" #define DGB_GET_LINE() 0 #endif #define GETFILENAME(x) ((strrchr(x, '\\' )) ? (strrchr(x, '\\') + 1) : (x)) #if OFFONPRINTF #define LOGPRINT(str, ...) \ DbgLog::DbgPrint( \ (char*)GETFILENAME(DBG_GET_FILE()), \ (char*)DBG_GET_FUNCTION(), \ DGB_GET_LINE(), \ (str), ##__VA_ARGS__) #else #define LOGPRINT(str, ...) #endif class DbgLog { public: DbgLog(); ~DbgLog(); /************************************************************************ * 函数名:StartLog * 功 能:开始打印 * 参 数:无 * 返回值:无 ************************************************************************/ static void StartLog(TCHAR *LogName); /************************************************************************ * 函数名:EndLog * 功 能:结束打印 * 参 数:无 * 返回值:无 ************************************************************************/ static void EndLog(); /************************************************************************ * 函数名:DbgPrint * 功 能:输出日志 * 参 数: * @format: * 返回值:无 ************************************************************************/ static void DbgPrint(CHAR* CppName, CHAR *FunName, INT CodeLine, CHAR* format, ...); static void DbgPrint(CHAR* CppName, CHAR *FunName, INT CodeLine, TCHAR* format, ...); protected: private: /************************************************************************ * 函数名:TimeStrLog * 功 能:获取日期 * 参 数: * 返回值:以字符串返回日期格式 ************************************************************************/ static string TimeStrLog(); /************************************************************************ * 函数名:wchar_to_char * 功 能: * 参 数: * 返回值: ************************************************************************/ static int wchar_to_char(char *strGBK, LPCWSTR FileName, int strlen); //ofstream logfile; //wofstream logfileW; //streambuf *outstream; //wstreambuf *outstreamW; static char LogPath[MAX_PATH]; }; #endif 给我增加一个LOGINFO想LOGPRINT一样,但是不一样的是LOGINFO可以release模式输出
12-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值