mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 11:37:35 +00:00
4d25f8c3c9
This change also fixes bugs in enoprotoopt reporting with setsockopt and getsockopt error returns.
65 lines
1.8 KiB
Lua
65 lines
1.8 KiB
Lua
-- fingerprinting example
|
|
|
|
Write[[<!doctype html>
|
|
|
|
<title>redbean binary trees</title>
|
|
|
|
<style>
|
|
body { padding: 1em; }
|
|
h1 a { color: inherit; text-decoration: none; }
|
|
h1 img { border: none; vertical-align: middle; }
|
|
input { margin: 1em; padding: .5em; }
|
|
p { word-break: break-word; max-width: 650px; }
|
|
dt { font-family: monospace; }
|
|
dd { margin-top: 1em; margin-bottom: 1em; }
|
|
.hdr { text-indent: -1em; padding-left: 1em; }
|
|
</style>
|
|
|
|
<h1>
|
|
<a href="/"><img src="/redbean.png"></a>
|
|
<a href="finger.lua">redbean finger demo</a>
|
|
</h1>
|
|
|
|
]]
|
|
|
|
Write[[
|
|
<h2>Your TCP SYN Packet</h2>
|
|
]]
|
|
-- See .init.lua hooks which set SYN and SYNERR globals.
|
|
if syn then
|
|
if syn ~= '' then
|
|
Write('<dl>\r\n')
|
|
Write('<dt>syn = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_SAVED_SYN)\r\n')
|
|
Write('<dd>')
|
|
Write(EscapeHtml(EncodeLua(syn)))
|
|
Write('\r\n')
|
|
Write('<dt>finger.FingerSyn(syn)\r\n')
|
|
Write('<dd>')
|
|
Write(EscapeHtml(EncodeLua(finger.FingerSyn(syn))))
|
|
Write('\r\n')
|
|
Write('<dt>finger.DescribeSyn(syn)\r\n')
|
|
Write('<dd>')
|
|
Write(EscapeHtml(EncodeLua(finger.DescribeSyn(syn))))
|
|
Write('\r\n')
|
|
Write('<dt>finger.GetSynFingerOs(finger.FingerSyn(syn))\r\n')
|
|
Write('<dd>')
|
|
Write(EscapeHtml(EncodeLua(finger.GetSynFingerOs(finger.FingerSyn(syn)))))
|
|
Write('\r\n')
|
|
Write('</dl>\r\n')
|
|
else
|
|
Write([[
|
|
<p>
|
|
your operating system returned an empty string as the syn
|
|
packet! did you remember to use setsockopt(TCP_SAVE_SYN)?
|
|
did you call getsockopt(TCP_SAVED_SYN) more than once?
|
|
</p>
|
|
]])
|
|
end
|
|
else
|
|
Write([[
|
|
<p>
|
|
your operating system most likely doesn't support TCP_SAVED_SYN
|
|
because getsockopt() returned %s.
|
|
</p>
|
|
]] % {EscapeHtml(tostring(synerr))})
|
|
end
|