Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
drone_test
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Wen Wei Li
drone_test
Commits
d69a6c3f
Commit
d69a6c3f
authored
Aug 24, 2023
by
Wen Wei Li
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add test python
parent
a2c37a88
Pipeline
#4764
failed with stage
Changes
3
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
422 additions
and
1 deletion
+422
-1
.drone.yml
.drone.yml
+10
-1
src/parser.py
src/parser.py
+377
-0
src/protocolIE_ID.py
src/protocolIE_ID.py
+35
-0
No files found.
.drone.yml
View file @
d69a6c3f
...
...
@@ -5,7 +5,7 @@ name: sec_test
steps
:
-
name
:
s
ecurity
_scan
-
name
:
s
ast
_scan
image
:
prlab/drone_plugin
volumes
:
-
name
:
cache
...
...
@@ -15,6 +15,15 @@ steps:
-
echo $(python3 /plugin/main.py)
-
python3 /usr/local/src/scan --src ./src -o /home/reports
-
name
:
code-analysis
image
:
aosapps/drone-sonar-plugin
settings
:
sonar_host
:
from_secret
:
sonar_host
sonar_token
:
from_secret
:
sonar_token
-
name
:
scp
image
:
appleboy/drone-scp
volumes
:
...
...
src/parser.py
0 → 100644
View file @
d69a6c3f
import
json
from
protocolIE_ID
import
ProtocolIE_ID
def
parse_e2ap_pdu
(
byte_code
):
parsed_pdu
=
{}
procedure_code
=
int
.
from_bytes
(
byte_code
[
0
:
2
],
byteorder
=
'big'
)
pdu_length
=
int
.
from_bytes
(
byte_code
[
2
:
4
],
byteorder
=
'big'
)
pdu_data
=
byte_code
[
4
:
4
+
pdu_length
]
initiating_message_offset
=
0
#procedure_code = int.from_bytes(pdu_data[initiating_message_offset: initiating_message_offset + 1], byteorder='big')
criticality
=
int
.
from_bytes
(
pdu_data
[
initiating_message_offset
:
initiating_message_offset
+
1
],
byteorder
=
'big'
)
parsed_pdu
[
"InitiatingMessage"
]
=
{
"procedureCode"
:
procedure_code
,
"criticality"
:
criticality
,
"value"
:
{
"protocolIEs"
:{
"ProtocolIE-Container"
:[]
}
}
}
ric_indication_offset
=
initiating_message_offset
+
1
protocol_ie_container_length
=
int
.
from_bytes
(
pdu_data
[
ric_indication_offset
:
ric_indication_offset
+
2
],
byteorder
=
'big'
)
ric_indication_ie_data
=
pdu_data
[
ric_indication_offset
+
2
:]
offset
=
0
idx
=
0
while
offset
<
len
(
ric_indication_ie_data
):
ie_id
=
int
.
from_bytes
(
ric_indication_ie_data
[
offset
:
offset
+
2
],
byteorder
=
'big'
)
ie_length
=
int
.
from_bytes
(
ric_indication_ie_data
[
offset
+
2
:
offset
+
4
],
byteorder
=
'big'
)
ie_value
=
ric_indication_ie_data
[
offset
+
4
:
offset
+
4
+
ie_length
]
if
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_Cause
:
value
=
ie_value
[:
ie_length
]
# need to find some example to extract the field
ric_indication_ies
=
{
"Cause"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
# TODO
# check the data field of this IE_ID
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_CriticalityDiagnostics
:
ie_criticality
=
int
.
from_bytes
(
ie_value
[:
1
],
byteorder
=
'little'
)
msg_length
=
ie_value
[
5
]
msg
=
ie_value
[
6
:
6
+
msg_length
]
ric_requestor_id
=
int
.
from_bytes
(
msg
[
msg_length
-
4
:
msg_length
-
2
],
byteorder
=
'little'
)
ric_instance_id
=
int
.
from_bytes
(
msg
[
msg_length
-
2
:],
byteorder
=
'little'
)
value
=
ie_value
[
11
:
ie_length
]
ric_indication_ies
=
{
"CriticalityDiagnostics"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
{
"RICRequestID"
:{
"RICRequestorID"
:
ric_requestor_id
,
"RICInstanceID"
:
ric_instance_id
},
"Unknown Field"
:
value
.
hex
()
.
upper
()
}
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_GlobalE2node_ID
:
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"GlobalE2node_ID"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_GlobalRIC_ID
:
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"GlobalRIC_ID"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
#ProtocolIE_ID_id_RANfunctionID : 5 -> RAN function
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RANfunctionID
:
ric_criticality
=
int
.
from_bytes
(
ie_value
[:
1
],
byteorder
=
'big'
)
value
=
int
.
from_bytes
(
ie_value
[
1
:],
byteorder
=
'big'
)
ric_indication_ies
=
{
"RANFunctionID"
:
{
"id"
:
ie_id
,
"criticality"
:
ric_criticality
,
"value"
:
value
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RANfunctionID_Item
:
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"RANFunctionID_Item"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RANfunctionIEcause_Item
:
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"RANFunctionIEcause_Item"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RANfunction_Item
:
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"RANFunction_Item"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RANfunctionsAccepted
:
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"RANFunctionAccepted"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RANfunctionsAdded
:
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"RANFunctionAdded"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RANfunctionsDeleted
:
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"RANFunctionDeleted"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RANfunctionsModified
:
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"RANFunctionModified"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RANfunctionsRejected
:
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"RANFunctionRejected"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RICaction_Admitted_Item
:
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"RICAction_Admitted_Item"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
# ProtocolIE_ID_id_RICactionID : 15
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RICactionID
:
value
=
int
.
from_bytes
(
ie_value
[:
ie_length
],
byteorder
=
'big'
)
ric_indication_ies
=
{
"RICactionID"
:{
"id"
:
ie_id
,
"criticality"
:
ric_criticality
,
"value"
:
value
}
}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RICaction_NotAdmitted_Item
:
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"RICAction_NotAdmitted_Item"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RICactions_Admitted
:
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"RICActions_Admitted"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
# 18
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RICactions_NotAdmitted
:
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"RICActions_NotAdmitted"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RICaction_ToBeSetup_Item
:
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"RICAction_ToBeSetup_Item"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
# 20
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RICcallProcessID
:
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"RICCallProcessID"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
# 21
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RICcontrolAckRequest
:
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"RICControlAckRequest"
:
{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
# 25
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RICindicationHeader
:
length
=
int
.
from_bytes
(
ie_value
[:
1
],
byteorder
=
'big'
)
value
=
ie_value
[
1
:
ie_length
]
ric_indication_ies
=
{
"RICIndicationHeader"
:{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
value
.
hex
()
.
upper
()
}
}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
# 26
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RICindicationMessage
:
length
=
int
.
from_bytes
(
ie_value
[:
1
],
byteorder
=
'big'
)
value
=
ie_value
[
1
:
ie_length
]
if
len
(
value
)
!=
length
:
return
"{'status':'error','msg':'length is not valid' }"
ric_indication_ies
=
{
"RICIndicationMessage"
:{
"id"
:
ie_id
,
"criticality"
:
0
,
"value"
:
str
(
value
)
}
}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
# 27
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RICindicationSN
:
value
=
int
.
from_bytes
(
ie_value
[:
ie_length
],
byteorder
=
'big'
)
ric_indication_ies
=
{
"RICindicationSN"
:{
"id"
:
ie_id
,
"criticality"
:
ric_criticality
,
"value"
:
value
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
# 28
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RICindicationType
:
value
=
int
.
from_bytes
(
ie_value
[:
ie_length
],
byteorder
=
'big'
)
ric_indication_ies
=
{
"RICindicationType"
:{
"id"
:
ie_id
,
"criticality"
:
ric_criticality
,
"value"
:
value
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
# 29
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RICrequestID
:
ric_criticality
=
int
.
from_bytes
(
ie_value
[:
1
],
byteorder
=
'little'
)
ric_requestor_id
=
int
.
from_bytes
(
ie_value
[
2
:],
byteorder
=
'little'
)
ric_instance_id
=
int
.
from_bytes
(
ie_value
[:
2
],
byteorder
=
'little'
)
ric_indication_ies
=
{
"RICRequestID"
:
{
"id"
:
ie_id
,
"criticality"
:
ric_criticality
,
"value"
:
{
"RICrequestID"
:{
"ricRequestorID"
:
ric_requestor_id
,
"ricInstanceID"
:
ric_instance_id
}
}
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
idx
+=
1
# 30
elif
ie_id
==
ProtocolIE_ID
.
ProtocolIE_ID_id_RICsubscriptionDetails
:
ric_criticality
=
0
value
=
ie_value
[:
ie_length
]
ric_indication_ies
=
{
"RICsubscriptionDetails"
:{
"id"
:
ie_id
,
"criticality"
:
ric_criticality
,
"value"
:
value
.
hex
()
.
upper
()
}}
parsed_pdu
[
"InitiatingMessage"
][
"value"
][
"protocolIEs"
][
"ProtocolIE-Container"
]
.
append
(
ric_indication_ies
)
else
:
print
(
"This ie_id : {} decoder is not implemented"
.
format
(
ie_id
))
print
(
"Value : "
)
print
(
ie_value
)
offset
+=
4
+
ie_length
return
parsed_pdu
if
__name__
==
"__main__"
:
# testing data
byte_code
=
b
'
\x00\x05\x00
R
\x00\x00\x06\x00\x1d\x00\x05\x00\x00\x18\x00\x00\x00\x05\x00\x02\x00\x00\x00\x0f\x00\x01\x01\x00\x1c\x00\x01\x00\x00\x19\x00\x04\x03\x13\xf1\x84\x00\x1a\x00
*)0,1,2,3,4,5
\n
1,6,7,8,9,10
\n
2,11,12,13,14,15'
byte_code
=
b
'
\x01\x00\x0e\x00\x00\x01\x00\x04\x00\x07\x00\x13\x10\x14\xaa\xcc\xe0
'
byte_code
=
b
'
\x00\x01\x00\x10\x00\x00\x01\x00\x03\x00\t\x00\x13\xf1\x84
P
\x00\x03\x04\x01
'
parsed_pdu
=
parse_e2ap_pdu
(
byte_code
)
print
(
json
.
dumps
(
parsed_pdu
))
src/protocolIE_ID.py
0 → 100644
View file @
d69a6c3f
class
ProtocolIE_ID
:
ProtocolIE_ID_id_Cause
=
1
ProtocolIE_ID_id_CriticalityDiagnostics
=
2
ProtocolIE_ID_id_GlobalE2node_ID
=
3
ProtocolIE_ID_id_GlobalRIC_ID
=
4
ProtocolIE_ID_id_RANfunctionID
=
5
ProtocolIE_ID_id_RANfunctionID_Item
=
6
ProtocolIE_ID_id_RANfunctionIEcause_Item
=
7
ProtocolIE_ID_id_RANfunction_Item
=
8
ProtocolIE_ID_id_RANfunctionsAccepted
=
9
ProtocolIE_ID_id_RANfunctionsAdded
=
10
ProtocolIE_ID_id_RANfunctionsDeleted
=
11
ProtocolIE_ID_id_RANfunctionsModified
=
12
ProtocolIE_ID_id_RANfunctionsRejected
=
13
ProtocolIE_ID_id_RICaction_Admitted_Item
=
14
ProtocolIE_ID_id_RICactionID
=
15
ProtocolIE_ID_id_RICaction_NotAdmitted_Item
=
16
ProtocolIE_ID_id_RICactions_Admitted
=
17
ProtocolIE_ID_id_RICactions_NotAdmitted
=
18
ProtocolIE_ID_id_RICaction_ToBeSetup_Item
=
19
ProtocolIE_ID_id_RICcallProcessID
=
20
ProtocolIE_ID_id_RICcontrolAckRequest
=
21
ProtocolIE_ID_id_RICcontrolHeader
=
22
ProtocolIE_ID_id_RICcontrolMessage
=
23
ProtocolIE_ID_id_RICcontrolStatus
=
24
ProtocolIE_ID_id_RICindicationHeader
=
25
ProtocolIE_ID_id_RICindicationMessage
=
26
ProtocolIE_ID_id_RICindicationSN
=
27
ProtocolIE_ID_id_RICindicationType
=
28
ProtocolIE_ID_id_RICrequestID
=
29
ProtocolIE_ID_id_RICsubscriptionDetails
=
30
ProtocolIE_ID_id_TimeToWait
=
31
ProtocolIE_ID_id_RICcontrolOutcome
=
32
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment