Skip to content

Instantly share code, notes, and snippets.

@jackyyf
Created July 27, 2017 05:28
Show Gist options
  • Select an option

  • Save jackyyf/0525cb9d4e10ec4ac4f4fa29868fc5e2 to your computer and use it in GitHub Desktop.

Select an option

Save jackyyf/0525cb9d4e10ec4ac4f4fa29868fc5e2 to your computer and use it in GitHub Desktop.

Revisions

  1. jackyyf created this gist Jul 27, 2017.
    27 changes: 27 additions & 0 deletions fuck_tcpsock.go
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,27 @@
    package main

    import (
    "reflect"
    "net"
    )

    func main() {
    addr, err := net.ResolveTCPAddr("tcp", "119.29.29.29:80")
    if err != nil {
    panic(err)
    }
    conn, err := net.DialTCP("tcp", nil, addr)
    if err != nil {
    panic(err)
    }

    // Let's go to the war zone.

    // (*(*TCPConn).conn.fd).sysfd
    v := reflect.ValueOf(*conn)
    c := v.FieldByName("conn")
    fdp := c.FieldByName("fd")
    fd := reflect.Indirect(fdp)
    sysfd := fd.FieldByName("sysfd")
    print(sysfd.Int())
    }