33 static const char ja3_tx[] =
"suricata:ja3:tx";
59 luaL_getmetatable(L, ja3_tx);
60 lua_setmetatable(L, -2);
82 const uint8_t *buf = NULL;
84 if (!SCQuicTxGetJa3(txptr, STREAM_TOSERVER, &buf, &b_len)) {
88 uint8_t ja3_hash[SC_MD5_HEX_LEN + 1];
90 SCMd5HashBufferToHex(buf, b_len, (
char *)ja3_hash, SC_MD5_HEX_LEN + 1);
94 static int LuaJa3TxGetString(
lua_State *L)
112 const uint8_t *buf = NULL;
114 if (!SCQuicTxGetJa3(txptr, STREAM_TOSERVER, &buf, &b_len)) {
121 static int LuaJa3TxGetServerHash(
lua_State *L)
138 const uint8_t *buf = NULL;
140 if (!SCQuicTxGetJa3(txptr, STREAM_TOCLIENT, &buf, &b_len)) {
144 uint8_t ja3_hash[SC_MD5_HEX_LEN + 1];
146 SCMd5HashBufferToHex(buf, b_len, (
char *)ja3_hash, SC_MD5_HEX_LEN + 1);
150 static int LuaJa3TxGetServerString(
lua_State *L)
168 const uint8_t *buf = NULL;
170 if (!SCQuicTxGetJa3(txptr, STREAM_TOCLIENT, &buf, &b_len)) {
177 static const struct luaL_Reg txlib[] = {
179 {
"ja3_get_hash", LuaJa3TxGetHash },
180 {
"ja3_get_string", LuaJa3TxGetString },
181 {
"ja3s_get_hash", LuaJa3TxGetServerHash },
182 {
"ja3s_get_string", LuaJa3TxGetServerString },
194 static const struct luaL_Reg ja3lib[] = {
196 {
"get_tx", LuaJa3GetTx },
197 {
"enable_ja3", LuaJa3Enable },
204 luaL_newmetatable(L, ja3_tx);
205 lua_pushvalue(L, -1);
206 lua_setfield(L, -2,
"__index");
207 luaL_setfuncs(L, txlib, 0);
209 luaL_newlib(L, ja3lib);