2011-10-31 8 views
1

나는 루아를 처음 사용하고 있으며, Wireshark를위한 커스텀 해부기구를 만들고 있습니다. 내 상황은 다음과 같습니다.루아에서 Wireshark 해부기구 - userdata

wireshark 데이터는 4321 8765 CBA9와 같은 16 진수로 구성됩니다. 내가 해부하고 싶은 것은 (해부 된 후에) : CBA9 8765 4321.

내가 지금까지해온 것은 루아에서이 숫자들을 개별적으로 가져 와서 문자열로 변환하는 작은 함수를 만드는 것이다. 올바른 순서로 배치합니다. ... : 전화 나쁜 자체에 '추가'(예상 유저 데이터 문자열을 가지고)

function ReverseOrder3Numbers(hex_1, hex_2, hex_3) 
local hex_1_int = hex_1:uint() 
local hex_2_int = hex_2:uint() 
local hex_3_int = hex_3:uint() 

word1 = string.format("%04X", hex_1_int)  
word2 = string.format("%04X", hex_2_int) 
word3 = string.format("%04X", hex_3_int) 

combined_string = "0x" .. word3 .. word2 .. word1 

output = combined_string 
return output 

end 

그러나, 한 번 나는 루아 오류를 말하는 오류가 발생, 트리에이 무리를 추가로 이동합니다.

어떻게이 문제를 해결할 수 있습니까? 나는 완전히 다른 접근이 필요합니까? 나는 복잡한 무엇이든지 찾고 있습니다. 내가해야 할 일은 내가 설명한 것 뿐이다. 어떤 도움을 주시면 감사하겠습니다.

답변

3

ReverseOrder3Numbers (실제로는 누락 된 local 한정자 제외)은 아무런 문제가 없습니다. add을 호출하는 코드를 포함하도록 질문을 업데이트해야합니다.

tree:add(...) 대신 tree.add(...)을 실수로 사용했을 수 있습니다 (tree 다음에 콜론이 있음).

0

전화 tree:add()은 첫 번째 암시 적 인수로 '트리'자체에 대한 직접 링크를 '트리'개체에 보냅니다. 아무리 많은 의논을해도이 부름에 아무런 부탁을 할 필요가 없습니다. 'add'메소드가 자체 링크를 지원하지 않는 경우 tree.add() sintax를 사용하십시오. 이 경우 'self'는 'add'메소드의 'tree'객체에 연결되어야합니다.

0

ReverseOrder3Numbers에 전달한 내용이 명확하지 않습니다. 그러나 당신이 uint 방법을 사용하여이 파라 메터에 접근했기 때문에 매개 변수가 tvb:range(x,y)이라고 가정합니다. 당신이 사용해야 트리에 추가되는 데이터의 엔디안을 변경하려면

function ReverseOrder3Numbers(hex_1, hex_2, hex_3) 
local hex_1_int = hex_1:le_uint() 
local hex_2_int = hex_2:le_uint() 
local hex_3_int = hex_3:le_uint() 
... 
end 

: 당신이 개별 값 안에있는 숫자의 순서를 변경하려면, 당신은 엔디안 인식 방법을 사용할 수 있습니다 엔디안 인식 버전 add 메서드입니다. le가 하나의 경우 접미사와 다른 접두사 이유

tree:le_add(f_MyProtoField, tvb:range(x,y), ReverseOrder3Numbers(...)) 

나는 이유를 알지 못한다.