function capture( iface)
local hashes = { } , bytes, m, xx, essid_length, essid
while 1 do
bytes = { }
for line in io . popen( "exec tcpdump -s0 -lnxi " .. iface .. " subtype probe-req" ) : lines( ) do
m = string . match( line, "^%s*0x%w+:%s+(.+)" )
if m then
--print(m)
for xx in string . gmatch( m, "%w%w" ) do
table.insert ( bytes, xx)
end
elseif bytes[ 1 ] ~= nil then
table.remove ( bytes, 1 )
if bytes[ 1 ] ~= nil then
essid_length = tonumber ( table.remove ( bytes, 1 ) , 16 )
essid = ""
for _, b in ipairs ( bytes) do
essid_length = essid_length - 1
if essid_length < 0 then
break
end
essid = essid .. string.char ( "0x" .. b)
end
end
if hashes[ essid] == nil then
hashes[ essid] = 1
if string.len ( essid) > 0 then
print ( essid)
end
end
bytes = { }
end
end
os.execute ( "sleep 2" )
end
end
iface = "wlan0"
if arg[ 1 ] ~= nil then iface = arg[ 1 ] end
capture( iface)
ZnVuY3Rpb24gY2FwdHVyZShpZmFjZSkKICAgIGxvY2FsIGhhc2hlcyA9IHt9LCBieXRlcywgbSwgeHgsIGVzc2lkX2xlbmd0aCwgZXNzaWQKICAgIHdoaWxlIDEgZG8KICAgICAgICBieXRlcyA9IHt9CiAgICAgICAgZm9yIGxpbmUgaW4gaW8ucG9wZW4oImV4ZWMgdGNwZHVtcCAtczAgLWxueGkgIiAuLiBpZmFjZSAuLiAiIHN1YnR5cGUgcHJvYmUtcmVxIik6bGluZXMoKSBkbwogICAgICAgICAgICBtID0gc3RyaW5nLm1hdGNoKGxpbmUsICJeJXMqMHgldys6JXMrKC4rKSIpCiAgICAgICAgICAgIGlmIG0gdGhlbgogICAgICAgICAgICAgICAgLS1wcmludChtKQogICAgICAgICAgICAgICAgZm9yIHh4IGluIHN0cmluZy5nbWF0Y2gobSwgIiV3JXciKSBkbwogICAgICAgICAgICAgICAgICAgIHRhYmxlLmluc2VydChieXRlcywgeHgpCiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgZWxzZWlmIGJ5dGVzWzFdIH49IG5pbCB0aGVuCiAgICAgICAgICAgICAgICB0YWJsZS5yZW1vdmUoYnl0ZXMsIDEpCiAgICAgICAgICAgICAgICBpZiBieXRlc1sxXSB+PSBuaWwgdGhlbgogICAgICAgICAgICAgICAgICAgIGVzc2lkX2xlbmd0aCA9IHRvbnVtYmVyKHRhYmxlLnJlbW92ZShieXRlcywgMSksIDE2KQogICAgICAgICAgICAgICAgICAgIGVzc2lkID0gIiIKICAgICAgICAgICAgICAgICAgICBmb3IgXywgYiBpbiBpcGFpcnMoYnl0ZXMpIGRvCiAgICAgICAgICAgICAgICAgICAgICAgIGVzc2lkX2xlbmd0aCA9IGVzc2lkX2xlbmd0aCAtIDEKICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXNzaWRfbGVuZ3RoIDwgMCB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgZXNzaWQgPSBlc3NpZCAuLiBzdHJpbmcuY2hhcigiMHgiIC4uIGIpCiAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgIGlmIGhhc2hlc1tlc3NpZF0gPT0gbmlsIHRoZW4KICAgICAgICAgICAgICAgICAgICBoYXNoZXNbZXNzaWRdID0gMQogICAgICAgICAgICAgICAgICAgIGlmIHN0cmluZy5sZW4oZXNzaWQpID4gMCB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KGVzc2lkKQogICAgICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICBieXRlcyA9IHt9CiAgICAgICAgICAgIGVuZAogICAgICAgIGVuZAogICAgICAgIG9zLmV4ZWN1dGUoInNsZWVwIDIiKQogICAgZW5kCmVuZAoKaWZhY2UgPSAid2xhbjAiCmlmIGFyZ1sxXSB+PSBuaWwgdGhlbiBpZmFjZSA9IGFyZ1sxXSBlbmQKY2FwdHVyZShpZmFjZSkK