Skip to content

Instantly share code, notes, and snippets.

@PyYoshi
Last active January 28, 2017 06:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PyYoshi/3069e9e014fe2708195cc4961e82bbc8 to your computer and use it in GitHub Desktop.
Save PyYoshi/3069e9e014fe2708195cc4961e82bbc8 to your computer and use it in GitHub Desktop.
KotoEncoderからダンプするやつ
package main
import (
"bufio"
"bytes"
"flag"
"fmt"
"io/ioutil"
"log"
"net"
"net/http"
)
var addr = flag.String("a", "127.0.0.1:8080", "取得するホストアドレス")
var size = flag.Int64("s", 500000, "取得するバイトサイズ")
var output = flag.String("o", "./dump.raw", "ダンプしたデータ保存先")
func main() {
flag.Parse()
conn, err := net.Dial("tcp", *addr)
if err != nil {
log.Fatal(err)
}
defer conn.Close()
_, err = fmt.Fprintf(conn, "GET / HTTP/1.0\r\nUser-Agent: NSPlayer/4.1.0.3856\r\nPragma: xClientGUID={c77e7400-738a-11d2-9add-0020af0a3278}\r\n\r\n")
if err != nil {
log.Fatal(err)
}
bReader := bufio.NewReader(conn)
var bBuf bytes.Buffer
// HTTPレスポンスデータを破棄するために実行
req := http.Request{}
_, err = http.ReadResponse(bReader, &req)
if err != nil {
log.Fatal(err)
}
// メモリへダンプ
for i := int64(0); i < *size; i++ {
b, err := bReader.ReadByte()
if err != nil {
log.Fatal(err)
}
_, err = bBuf.Write([]byte{b})
if err != nil {
log.Fatal(err)
}
}
err = ioutil.WriteFile(*output, bBuf.Bytes(), 0644)
if err != nil {
log.Fatal(err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment