Aller au contenu

Messages recommandés

Posté(e)
Bonjour,
 
J'essaie de trouver comment encoder dynamiquement une un nombre en OCTET STRING ASN.1. La valeur STRING: "57" devient donc OCTET STRING "30 04 02 35 37"
On voit bien la structure avec un décodeur en ligne : http://lapo.it/asn1js/#04023537
 
Des idées ?
-- Mib type codes
------------------------------------------------------------------------------
TYPE_OTHER       =  0
TYPE_OBJID       =  1
TYPE_OCTETSTR    =  2
TYPE_INTEGER     =  3


-- print any variable content
function printr(v,l,k) local d=function(t)fibaro:debug(t);end if(not l)then l=0;end local s=string.rep(string.char(0xC2,0xA0),(l*3)); local n="";if(k)then n=k.." = ";end if(v and type(v))then if(type(v)=="table")then d(s..n.."{");local i,j;for i,j in pairs(v)do printr(j,(l+1),tostring(i));end d(s.."}");elseif(type(v)=="function")then d(s..n..tostring(v).."() {");d(s.."}");elseif(type(v)=="userdata")then d(s..n..tostring(v).."() {");d(s.."}");elseif(type(v)=="string")then if(#v>50)then d(s..n.."String["..#v.."] = \""..string.sub(v,1,80).."\"...");else if(k)then v="\""..v.."\"";end d(s..n..tostring(v));end elseif(type(v)=="number")then d(s..n..tostring(v));else d(s..n..tostring(v).."["..type(v).."]");end else d(s..n.."{nil}");end end

-- Value (OctetString): 3537 (3)5(3)7 ==> ID = 57


-- request:  snmpset -v1 -c public 192.168.1.248 1.3.6.1.4.1.8711.101.13.1.3.28.0 s 57 
-- response:  iso.3.6.1.4.1.8711.101.13.1.3.28.0 = STRING: "57" 
-- cela va changer la chaine de votre décodeur sur la 8.
-- 303002010004067075626c6963a323020430e1442102010002010030153013060d2b06010401c407650d01031c000402 3537 = (57)


local STRING_CMD_0 = '0x' .. TYPE_INTEGER .. '5';
local STRING_CMD_1 = '0x' .. TYPE_INTEGER .. '0';
fibaro:debug("STRING_CMD: " .. STRING_CMD_0 .. ", " .. STRING_CMD_1);

PACKET_COMMAND = string.char(STRING_CMD_0, STRING_CMD_1);

printr(PACKET_COMMAND)
 

 

×
×
  • Créer...