You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
3.1 KiB
C#
139 lines
3.1 KiB
C#
using System;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Text;
|
|
|
|
namespace DotNetCTFDumper.Utils
|
|
{
|
|
public class ByteReader : BinaryReader
|
|
{
|
|
public ByteReader(Stream input) : base(input)
|
|
{
|
|
}
|
|
|
|
public ByteReader(Stream input, Encoding encoding) : base(input, encoding)
|
|
{
|
|
}
|
|
|
|
public ByteReader(Stream input, Encoding encoding, bool leaveOpen) : base(input, encoding, leaveOpen)
|
|
{
|
|
}
|
|
|
|
public ByteReader(byte[] data) : base(new MemoryStream(data))
|
|
{
|
|
}
|
|
|
|
public ByteReader(string path, FileMode fileMode) : base(new FileStream(path, fileMode))
|
|
{
|
|
}
|
|
|
|
public void Seek(Int64 offset, SeekOrigin seekOrigin = SeekOrigin.Begin)
|
|
{
|
|
BaseStream.Seek(offset, seekOrigin);
|
|
}
|
|
|
|
public void Skip(Int64 count)
|
|
{
|
|
BaseStream.Seek(count, SeekOrigin.Current);
|
|
}
|
|
public byte[] ReadFourCc()
|
|
{
|
|
return Encoding.UTF8.GetBytes(ReadAscii(4));
|
|
}
|
|
|
|
public Int64 Tell()
|
|
{
|
|
return BaseStream.Position;
|
|
}
|
|
|
|
public Int64 Size()
|
|
{
|
|
return BaseStream.Length;
|
|
}
|
|
|
|
public bool Check(int size)
|
|
{
|
|
return Size() - Tell() >= size;
|
|
}
|
|
|
|
public bool Eof()
|
|
{
|
|
return BaseStream.Position < BaseStream.Length;
|
|
}
|
|
|
|
public UInt16 PeekUInt16()
|
|
{
|
|
UInt16 value = ReadUInt16();
|
|
Seek(-2, SeekOrigin.Current);
|
|
return value;
|
|
}
|
|
|
|
public Int16 PeekInt16()
|
|
{
|
|
Int16 value = ReadInt16();
|
|
Seek(-2, SeekOrigin.Current);
|
|
return value;
|
|
}
|
|
|
|
|
|
public string ReadAscii(int length = -1)
|
|
{
|
|
string str = "";
|
|
if (length >= 0)
|
|
{
|
|
for (int i = 0; i < length; i++)
|
|
{
|
|
str += Convert.ToChar(ReadByte());
|
|
}
|
|
}
|
|
else
|
|
{
|
|
byte b = ReadByte();
|
|
while (b != 0)
|
|
{
|
|
str += Convert.ToChar(b);
|
|
b = ReadByte();
|
|
}
|
|
}
|
|
|
|
return str;
|
|
}
|
|
|
|
|
|
|
|
public string ReadWideString(int length = -1)
|
|
{
|
|
String str = "";
|
|
if (length >= 0)
|
|
{
|
|
for (int i = 0; i < length; i++)
|
|
{
|
|
str += Convert.ToChar(ReadUInt16());
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var b = ReadUInt16();
|
|
while (b != 0)
|
|
{
|
|
str += Convert.ToChar(b);
|
|
b = ReadUInt16();
|
|
}
|
|
}
|
|
|
|
return str;
|
|
}
|
|
public Color ReadColor()
|
|
{
|
|
|
|
var r = ReadByte();
|
|
var g = ReadByte();
|
|
var b = ReadByte();
|
|
var a = ReadByte();
|
|
|
|
return Color.FromArgb(a,r, g, b);
|
|
|
|
}
|
|
|
|
}
|
|
} |