v0.1 - initial commit
This commit is contained in:
+60
@@ -0,0 +1,60 @@
|
||||
package winpwn
|
||||
|
||||
import "time"
|
||||
|
||||
// Arch identifies the target architecture, the winpwn analogue of pwntools'
|
||||
// context.arch. Windows has no big-endian target, so unlike pwntools this
|
||||
// only ever changes pointer width (P32 vs P64 callers), never byte order --
|
||||
// P16/P32/P64 stay little-endian-only by design (see packing.go).
|
||||
type Arch int
|
||||
|
||||
const (
|
||||
ArchX86 Arch = iota
|
||||
ArchX64
|
||||
)
|
||||
|
||||
func (a Arch) String() string {
|
||||
if a == ArchX86 {
|
||||
return "x86"
|
||||
}
|
||||
return "x64"
|
||||
}
|
||||
|
||||
// LogLevel gates which Log* calls in log.go actually print, the winpwn
|
||||
// analogue of pwntools' context.log_level.
|
||||
type LogLevel int
|
||||
|
||||
const (
|
||||
LogLevelDebug LogLevel = iota
|
||||
LogLevelInfo
|
||||
LogLevelWarn
|
||||
LogLevelError
|
||||
LogLevelSilent
|
||||
)
|
||||
|
||||
// Ctx is the global, mutable settings object every winpwn entry point reads
|
||||
// defaults from -- the analogue of pwntools' single shared pwnlib.context
|
||||
// object. Mutate the package-level Context variable directly, the same way
|
||||
// scripts do `context.arch = 'amd64'` in pwntools.
|
||||
type Ctx struct {
|
||||
Arch Arch
|
||||
LogLevel LogLevel
|
||||
|
||||
// Timeout is the default per-call deadline for Tube.Recv*/Send*
|
||||
// (zero means block forever, matching pwntools' Timeout.forever).
|
||||
// Override per tube with (*Tube).SetTimeout.
|
||||
Timeout time.Duration
|
||||
|
||||
// Newline is what SendLine appends and RecvLine splits on.
|
||||
Newline []byte
|
||||
}
|
||||
|
||||
// Context is the single global settings instance. There is deliberately no
|
||||
// constructor/getter ceremony around it -- read or write its fields directly,
|
||||
// exactly like pwntools' module-level `context`.
|
||||
var Context = &Ctx{
|
||||
Arch: ArchX64,
|
||||
LogLevel: LogLevelInfo,
|
||||
Timeout: 0,
|
||||
Newline: []byte("\n"),
|
||||
}
|
||||
Reference in New Issue
Block a user