SAP RFC

The following subsections show a graphical representation of the main protocol packets and how to generate them.

First we need to perform some setup to import the packet classes:

[1]:
from pysap.SAPRFC import *
from IPython.display import display

SAP RFC External packets

[2]:
for version in [2, 3]:
    for req_type in rfc_req_type_values:
        p = SAPRFC(version=version, req_type=req_type)
        print("Packet type: {} Version: {}".format(rfc_req_type_values[req_type], version))
        display(p.canvas_dump())
Packet type: GW_UNDEF_TYPE Version: 2
../_images/protocols_SAPRFC_4_1.png
Packet type: CHECK_GATEWAY Version: 2
../_images/protocols_SAPRFC_4_3.png
Packet type: GW_CONNECT_GWWP Version: 2
../_images/protocols_SAPRFC_4_5.png
Packet type: GW_NORMAL_CLIENT Version: 2
../_images/protocols_SAPRFC_4_7.png
Packet type: GW_REMOTE_GATEWAY Version: 2
../_images/protocols_SAPRFC_4_9.png
Packet type: STOP_GATEWAY Version: 2
../_images/protocols_SAPRFC_4_11.png
Packet type: GW_LOCAL_R3 Version: 2
../_images/protocols_SAPRFC_4_13.png
Packet type: GW_SEND_INTERNAL_ERROR Version: 2
../_images/protocols_SAPRFC_4_15.png
Packet type: GW_SEND_INFO Version: 2
../_images/protocols_SAPRFC_4_17.png
Packet type: GW_SEND_CMD Version: 2
../_images/protocols_SAPRFC_4_19.png
Packet type: GW_WORKPROCESS_DIED Version: 2
../_images/protocols_SAPRFC_4_21.png
Packet type: GW_REGISTER_TP Version: 2
../_images/protocols_SAPRFC_4_23.png
Packet type: GW_UNREGISTER_TP Version: 2
../_images/protocols_SAPRFC_4_25.png
Packet type: GW_CONNECT_DISP Version: 2
../_images/protocols_SAPRFC_4_27.png
Packet type: GW_GET_NO_REGISTER_TP Version: 2
../_images/protocols_SAPRFC_4_29.png
Packet type: GW_SAP_WP_CLIENT Version: 2
../_images/protocols_SAPRFC_4_31.png
Packet type: GW_CANCEL_REGISTER_TP Version: 2
../_images/protocols_SAPRFC_4_33.png
Packet type: GW_FROM_REMOTE_GATEWAY Version: 2
../_images/protocols_SAPRFC_4_35.png
Packet type: GW_CONTAINER_RECEIVED Version: 2
../_images/protocols_SAPRFC_4_37.png
Packet type: GW_UNDEF_TYPE Version: 3
../_images/protocols_SAPRFC_4_39.png
Packet type: CHECK_GATEWAY Version: 3
../_images/protocols_SAPRFC_4_41.png
Packet type: GW_CONNECT_GWWP Version: 3
../_images/protocols_SAPRFC_4_43.png
Packet type: GW_NORMAL_CLIENT Version: 3
../_images/protocols_SAPRFC_4_45.png
Packet type: GW_REMOTE_GATEWAY Version: 3
../_images/protocols_SAPRFC_4_47.png
Packet type: STOP_GATEWAY Version: 3
../_images/protocols_SAPRFC_4_49.png
Packet type: GW_LOCAL_R3 Version: 3
../_images/protocols_SAPRFC_4_51.png
Packet type: GW_SEND_INTERNAL_ERROR Version: 3
../_images/protocols_SAPRFC_4_53.png
Packet type: GW_SEND_INFO Version: 3
../_images/protocols_SAPRFC_4_55.png
Packet type: GW_SEND_CMD Version: 3
../_images/protocols_SAPRFC_4_57.png
Packet type: GW_WORKPROCESS_DIED Version: 3
../_images/protocols_SAPRFC_4_59.png
Packet type: GW_REGISTER_TP Version: 3
../_images/protocols_SAPRFC_4_61.png
Packet type: GW_UNREGISTER_TP Version: 3
../_images/protocols_SAPRFC_4_63.png
Packet type: GW_CONNECT_DISP Version: 3
../_images/protocols_SAPRFC_4_65.png
Packet type: GW_GET_NO_REGISTER_TP Version: 3
../_images/protocols_SAPRFC_4_67.png
Packet type: GW_SAP_WP_CLIENT Version: 3
../_images/protocols_SAPRFC_4_69.png
Packet type: GW_CANCEL_REGISTER_TP Version: 3
../_images/protocols_SAPRFC_4_71.png
Packet type: GW_FROM_REMOTE_GATEWAY Version: 3
../_images/protocols_SAPRFC_4_73.png
Packet type: GW_CONTAINER_RECEIVED Version: 3
../_images/protocols_SAPRFC_4_75.png

SAP RFC Gateway Monitor packets

[3]:
for command in rfc_monitor_cmd_values:
    p = SAPRFC(req_type=9, cmd=command)
    print(rfc_monitor_cmd_values[command])
    display(p.canvas_dump())
NOOP
../_images/protocols_SAPRFC_6_1.png
DELETE_CONN
../_images/protocols_SAPRFC_6_3.png
CANCEL_CONN
../_images/protocols_SAPRFC_6_5.png
RST_SINGLE_ERR_CNT
../_images/protocols_SAPRFC_6_7.png
RST_ALL_ERR_CNT
../_images/protocols_SAPRFC_6_9.png
INCREASE_TRACE
../_images/protocols_SAPRFC_6_11.png
DECREASE_TRACE
../_images/protocols_SAPRFC_6_13.png
READ_SEC_INFO
../_images/protocols_SAPRFC_6_15.png
REFRESH_SEC_INFO
../_images/protocols_SAPRFC_6_17.png
READ_GWSYS_TBL
../_images/protocols_SAPRFC_6_19.png
READ_CONN_TBL
../_images/protocols_SAPRFC_6_21.png
READ_PROC_TBL
../_images/protocols_SAPRFC_6_23.png
READ_CONN_ATTR
../_images/protocols_SAPRFC_6_25.png
READ_MEMORY
../_images/protocols_SAPRFC_6_27.png
READ_REQ_BLK
../_images/protocols_SAPRFC_6_29.png
ACT_STATISTIC
../_images/protocols_SAPRFC_6_31.png
DEACT_STATISTIC
../_images/protocols_SAPRFC_6_33.png
READ_STATISTIC
../_images/protocols_SAPRFC_6_35.png
RESET_STATISTIC
../_images/protocols_SAPRFC_6_37.png
READ_PARAMETER
../_images/protocols_SAPRFC_6_39.png
DUMP_NIBUFFER
../_images/protocols_SAPRFC_6_41.png
RESET_NIBUFFER
../_images/protocols_SAPRFC_6_43.png
ACT_EXTPGM_TRACE
../_images/protocols_SAPRFC_6_45.png
DEACT_EXTPGM_TRACE
../_images/protocols_SAPRFC_6_47.png
ACT_CONN_TRACE
../_images/protocols_SAPRFC_6_49.png
DEACT_CONN_TRACE
../_images/protocols_SAPRFC_6_51.png
RESET_TRACE
../_images/protocols_SAPRFC_6_53.png
SUICIDE
../_images/protocols_SAPRFC_6_55.png
READ_SEC_INFO2
../_images/protocols_SAPRFC_6_57.png
CANCEL_REG_TP
../_images/protocols_SAPRFC_6_59.png
DUMP
../_images/protocols_SAPRFC_6_61.png
READ_GWSYS_TBL2
../_images/protocols_SAPRFC_6_63.png
CHANGE_PARAMETER
../_images/protocols_SAPRFC_6_65.png
GET_CONN_PARTNER
../_images/protocols_SAPRFC_6_67.png
DELETE_CLIENT
../_images/protocols_SAPRFC_6_69.png
DELETE_REMGW
../_images/protocols_SAPRFC_6_71.png
DISCONNECT
../_images/protocols_SAPRFC_6_73.png
ENABLE_RESTART
../_images/protocols_SAPRFC_6_75.png
DISABLE_RESTART
../_images/protocols_SAPRFC_6_77.png
NI_TRACE
../_images/protocols_SAPRFC_6_79.png
CLI_INFO
../_images/protocols_SAPRFC_6_81.png
GW_INFO
../_images/protocols_SAPRFC_6_83.png
CONVID_INFO
../_images/protocols_SAPRFC_6_85.png
GET_NO_REG_TP
../_images/protocols_SAPRFC_6_87.png
CV_INFO
../_images/protocols_SAPRFC_6_89.png
SO_KEEPALIVE
../_images/protocols_SAPRFC_6_91.png
READ_CONN_TBL2
../_images/protocols_SAPRFC_6_93.png
READ_GWSYS_TBL3
../_images/protocols_SAPRFC_6_95.png
RELOAD_ACL
../_images/protocols_SAPRFC_6_97.png

RFC Extend Info packet

[4]:
p = SAPRFCEXTEND()
display(p.canvas_dump())
../_images/protocols_SAPRFC_8_0.png

RFC DT structure

[5]:
p = SAPRFCDTStruct()
display(p.canvas_dump())
../_images/protocols_SAPRFC_10_0.png

CPIC Suffix structure

[6]:
p = SAPCPICSUFFIX()
display(p.canvas_dump())
../_images/protocols_SAPRFC_12_0.png
[7]:
p.suff_unk9 = "\x00\x01"
display(p.canvas_dump())
../_images/protocols_SAPRFC_13_0.png

CPIC PARAM structures

[8]:
for cls in [SAPCPICPARAM, SAPCPICPARAM2]:
    p = cls()
    p.ip = p.mask = "0.0.0.0"
    display(p.canvas_dump())
../_images/protocols_SAPRFC_15_0.png
../_images/protocols_SAPRFC_15_1.png

SAP RFC TH structure

[9]:
p = SAPRFCTHStruct()
display(p.canvas_dump())
../_images/protocols_SAPRFC_17_0.png

SAP RFC XPG structure

[10]:
p = SAPRFXPG()
display(p.canvas_dump())
../_images/protocols_SAPRFC_19_0.png

SAP Started RFCPING packets

[11]:
p = SAPRFCPING()
display(p.canvas_dump())
../_images/protocols_SAPRFC_21_0.png

SAP CPIC Packet

[12]:
for cls in [SAPCPIC, SAPCPIC2]:
    p = cls()
    display(p.canvas_dump())
../_images/protocols_SAPRFC_23_0.png
../_images/protocols_SAPRFC_23_1.png