-- fingerprinting example
Write[[
redbean binary trees
]]
Write[[
Your TCP SYN Packet
]]
-- See .init.lua hooks which set SYN and SYNERR globals.
if syn then
if syn ~= '' then
Write('\r\n')
Write('- syn = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_SAVED_SYN)\r\n')
Write('
- ')
Write(EscapeHtml(EncodeLua(syn)))
Write('\r\n')
Write('
- finger.FingerSyn(syn)\r\n')
Write('
- ')
Write(EscapeHtml(EncodeLua(finger.FingerSyn(syn))))
Write('\r\n')
Write('
- finger.DescribeSyn(syn)\r\n')
Write('
- ')
Write(EscapeHtml(EncodeLua(finger.DescribeSyn(syn))))
Write('\r\n')
Write('
- finger.GetSynFingerOs(finger.FingerSyn(syn))\r\n')
Write('
- ')
Write(EscapeHtml(EncodeLua(finger.GetSynFingerOs(finger.FingerSyn(syn)))))
Write('\r\n')
Write('
\r\n')
else
Write([[
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?
]])
end
else
Write([[
your operating system most likely doesn't support TCP_SAVED_SYN
because getsockopt() returned %s.
]] % {EscapeHtml(tostring(synerr))})
end