Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
(Currently Private Build Badges)
There are four core methods that make up DICOM-Client. An interface has been defined to simplify interaction with DicomClient(). The purpose of these methods is to upload, download, and delete DCM files from DICOM Server:
class DicomClientInterface(ABC):
@abstractmethod
def __init__(self, base_url, token_cache):
pass
@abstractmethod
def upload_dicom_folder(self, folder_name):
pass
@abstractmethod
def upload_dicom_file(self, file_name):
pass
@abstractmethod
def delete_dicom(self, study_id, series_id=None, instance_id=None):
pass
@abstractmethod
def download_dicom(self, output_folder, study_id, series_id=None, instance_id=None):
pass
@abstractmethod
def get_patient_study_ids(self, patient_id):
pass
$ pip install dicom_client
$ export AUTH_CONNECTION_INFO="{'authority': 'https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47', 'client_id': '9cfb139d-d05d-4f5c-a10c-54e0ec338f53', 'client_secret': 'D.oD1q9SHc77syVRD-8vKi8UhbDXYoi~n~', 'oauth_resource': 'api://9cfb139d-d05d-4f5c-a10c-54e0ec338f53'}"
import ast
import os
from dicom_client import (
DicomClient,
TokenCache,
make_get_token_func,
)
base_url = "https://tonydicom.azurewebsites.net"
auth = ast.literal_eval(os.environ["AUTH_CONNECTION_INFO"])
token_cache = TokenCache(make_get_token_func(auth))
dicom_client = DicomClient(base_url, token_cache)
dicom_client.upload_dicom_folder("folder_name")
dicom_client.upload_dicom_file("file_name")
dicom_client.delete_dicom("study_id", "series_id", "instance_id")
dicom_client.download_dicom("output_folder", "study_id", "series_id", "instance_id")
dicom_client.get_patient_study_ids("patient_id")
This script can be used to validate your DICOM server deployment.
See Microsoft Dicom Server here: https://github.com/microsoft/dicom-server
Our .vscode/settings.json point to a .env file:
"python.envFile": "${workspaceFolder}/.vscode/dev.env",
Our dev.env file needs these values in this format:
AUTH_CONNECTION_INFO="{'authority': 'https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47', 'client_id': '5bef631a-c4cd-4feb-aaf2-78ff5f7d7347', 'client_secret': 'REPLACE_WITH_YOUR_SECRET_mrpc.lgXK~C0.g146Gu3PcDG.W6Eg0d0I', 'oauth_resource': 'api://REPLACE_WITH_YOUR_RESOURCE_ID5bef631a-c4cd-4feb-aaf2-78ff5f7d7347'}"
Complete the pre-reqs and set the AUTH_CONNECTION_INFO environment variable, then:
$ git clone our_git_url
$ python3 -m venv .venv
$ pip install -r requirements.txt
$ pytest tests
Make sure you've followed the prerequisites for running the tests locally and validated your dicom server host and exported the correct credentials. See README.md for more details or raise an issue for DICOM server support.
To run most of the unit tests (optionally with code coverage reporting), simply run:
$ pytest tests/unit [--cov=handler --cov-report=html:htmlcov]
Please see conftest.py
for more information on these test parameters as they can be found with environment variables instead of arguments for development environments.
Pylint provides static code analysis for python and uses our ./.pylintrc
file for managing the configuration of the linter. We run pylint in our integration tests to ensure python coding standards. See more info about pylint here.
To run pylint locally:
pylint handler --output-format=colorized --rcfile=".pylintrc"
Black is an auto-formatting tool and checker for python that provides further code analysis, it to is run in our integration tests and is helpful to run locally to maintain code clarity and conform to team standards. More info can be found here.
To run black locally:
black --check --line-length 100 .
black --line-length 100 .
FAQs
A small dicom client in python
We found that dicom-client-python demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.