Skip to content

Conversation

@tmart234
Copy link

Summary

DICOM communications is used in medical imaging systems. This PR adds Scapy layers for the DICOM Upper Layer Protocol (DICOM PS3.8).

Features

  • Full PDU support: A-ASSOCIATE-RQ/AC/RJ, P-DATA-TF, A-RELEASE-RQ/RP, A-ABORT
  • Variable item negotiation: Application Context, Presentation Context, User Information, User Identity, Async Operations, Role Selection
  • DIMSE command packets: C-ECHO, C-STORE, C-FIND, C-MOVE, C-GET

Usage

from scapy.contrib.dicom import *

# Build an A-ASSOCIATE-RQ
pkt = DICOM() / A_ASSOCIATE_RQ(
    called_ae_title=_pad_ae_title("SERVER"),
    calling_ae_title=_pad_ae_title("CLIENT"),
    variable_items=[
        DICOMVariableItem() / DICOMApplicationContext(),
        build_presentation_context_rq(1, VERIFICATION_SOP_CLASS_UID, [DEFAULT_TRANSFER_SYNTAX_UID]),
        build_user_information(max_pdu_length=16384),
    ]
)

# Build a C-MOVE-RQ
move_rq = C_MOVE_RQ(message_id=1, move_destination=b"DEST_AE")

Testing

  • 59 unit tests in test/contrib/dicom.uts
  • All tests pass on Python 3.9+

References

@codecov
Copy link

codecov bot commented Dec 30, 2025

Codecov Report

❌ Patch coverage is 52.64664% with 331 lines in your changes missing coverage. Please review.
✅ Project coverage is 80.63%. Comparing base (a5bc2bb) to head (29d2131).

Files with missing lines Patch % Lines
scapy/contrib/dicom.py 52.64% 331 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #4891      +/-   ##
==========================================
- Coverage   80.84%   80.63%   -0.22%     
==========================================
  Files         369      370       +1     
  Lines       90963    91662     +699     
==========================================
+ Hits        73539    73908     +369     
- Misses      17424    17754     +330     
Files with missing lines Coverage Δ
scapy/contrib/dicom.py 52.64% <52.64%> (ø)

... and 8 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@polydroi
Copy link

Thanks for the PR. I’ve stared the unit tests. Looks good, however, could you please add type hints to your layer?

@tmart234
Copy link
Author

Thanks for the PR. I’ve stared the unit tests. Looks good, however, could you please add type hints to your layer?

Added

@polybassa
Copy link
Contributor

Besides the small Flake8 issues, LGTM.

@gpotter2 do you want to have a final look?

polybassa
polybassa previously approved these changes Jan 9, 2026
@tmart234
Copy link
Author

tmart234 commented Jan 9, 2026

@polybassa fixed the Flake8 issues

@polybassa polybassa requested a review from gpotter2 January 9, 2026 19:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants