
Research
PyPI Package Disguised as Instagram Growth Tool Harvests User Credentials
A deceptive PyPI package posing as an Instagram growth tool collects user credentials and sends them to third-party bot services.
Microsoft SharePoint client Python package that uses the requests library.
[!IMPORTANT]
This packages uses pydantic~=1.0!
from a script:
import sharepointlib
import logging
import pandas as pd
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s")
client_id = "123..."
tenant_id = "456..."
client_secret = "xxxx"
sp_domain = "companygroup.sharepoint.com"
sp_site_name = "My Site"
sp_site_id = "companygroup.sharepoint.com,1233124124"
sp_site_drive_id = "b!1234567890"
# Initialize SharePoint client
sharepoint = sharepointlib.SharePoint(client_id=client_id,
tenant_id=tenant_id,
client_secret=client_secret,
sp_domain=sp_domain)
# Gets the site ID for a given site name
response = sharepoint.get_site_info(name=sp_site_name)
if response.status_code == 200:
df = pd.DataFrame([item.dict() for item in response.content])
print(df)
# Gets the hostname and site details for a specified site ID
response = sharepoint.get_hostname_info(site_id=sp_site_id)
if response.status_code == 200:
df = pd.DataFrame([item.dict() for item in response.content])
print(df)
Drives:
# Gets a list of the Drive IDs for a given site ID
response = sharepoint.list_drives(site_id=sp_site_id)
if response.status_code == 200:
df = pd.DataFrame([item.dict() for item in response.content])
print(df)
# Gets the folder ID for a specified folder within a drive ID
response = sharepoint.get_dir_info(drive_id=sp_site_drive_id,
path="Sellout/Support")
if response.status_code == 200:
df = pd.DataFrame([item.dict() for item in response.content])
print(df)
# List content (files and folders) of a specific folder
response = sharepoint.list_dir(drive_id=sp_site_drive_id,
path="Sellout/Support")
if response.status_code == 200:
df = pd.DataFrame([item.dict() for item in response.content])
print(df)
# Creates a new folder in a specified drive ID
response = sharepoint.create_dir(drive_id=sp_site_drive_id,
path="Sellout/Support",
name="Archive")
if response.status_code in (200, 201):
df = pd.DataFrame([item.dict() for item in response.content])
print(df)
response = sharepoint.create_dir(drive_id=sp_site_drive_id,
path="Sellout/Support",
name="Test")
if response.status_code in (200, 201):
df = pd.DataFrame([item.dict() for item in response.content])
print(df)
# Deletes a folder from a specified drive ID
response = sharepoint.delete_dir(drive_id=sp_site_drive_id,
path="Sellout/Support/Test")
if response.status_code in (200, 204):
print("Folder deleted successfully")
# Renames a folder in a specified drive ID
response = sharepoint.rename_folder(drive_id=sp_site_drive_id,
path="Sellout/Support",
new_name="Old")
if response.status_code == 200:
df = pd.DataFrame([response.content.dict()])
print(df)
# Retrieves information about a specific file in a drive ID
response = sharepoint.get_file_info(drive_id=sp_site_drive_id,
filename="Sellout/Support/Sellout.xlsx")
if response.status_code in (200, 202):
print(response.content.id)
df = pd.DataFrame([response.content.dict()])
print(df)
# Copy a file from one folder to another within the same drive ID
response = sharepoint.copy_file(drive_id=sp_site_drive_id,
filename="Sellout/Support/Sellout.xlsx",
target_path="Sellout/Support/Archive")
if response.status_code in (200, 202):
print("File copied successfully")
# Moves a file from one folder to another within the same drive ID
response = sharepoint.move_file(drive_id=sp_site_drive_id,
filename="Sellout/Support/Archive/Sellout.xlsx",
target_path="Sellout")
if response.status_code == 200:
df = pd.DataFrame([response.content.dict()])
print(df)
# Deletes a file from a specified drive ID
response = sharepoint.delete_file(drive_id=sp_site_drive_id,
filename="Sellout/Sellout.xlsx")
if response.status_code in (200, 204):
print("File deleted successfully")
# Renames a file in a specified drive ID.
response = sharepoint.rename_file(drive_id=sp_site_drive_id,
filename="Sellout/Support/Archive/Sellout.xlsx",
new_name="Sellout_New_Name.xlsx")
if response.status_code == 200:
df = pd.DataFrame([response.content.dict()])
print(df)
# Downloads a file from a specified remote path in a drive ID to a local path
# Examples for local_path (databricks):
# local_path=r"/Workspace/Users/admin@admin.com/Sellout.xlsm"
# local_path=r"/Volumes/lakehouse/sadp/Sellout.xlsm"
response = sharepoint.download_file(drive_id=sp_site_drive_id,
remote_path=r"Sellout/Support/Sellout.xlsx",
local_path=r"C:\Users\admin\Downloads\Sellout.xlsx")
if response.status_code == 200:
print("File downloaded successfully")
# Uploads a file to a specified remote path in a SharePoint drive ID
response = sharepoint.upload_file(drive_id=sp_site_drive_id,
local_path=r"C:\Users\admin\Downloads\Sellout.xlsx",
remote_path=r"Sellout/Support/Archive/Sellout.xlsx")
if response.status_code in (200, 201):
print(response.content)
Install python and pip if you have not already.
Then run:
pip install pip --upgrade
For production:
pip install sharepointlib
This will install the package and all of it's python dependencies.
If you want to install the project for development:
git clone https://github.com/aghuttun/sharepointlib.git
cd sharepointlib
pip install -e ".[dev]"
To test the development package: Testing
BSD License (see license file)
FAQs
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.
Research
A deceptive PyPI package posing as an Instagram growth tool collects user credentials and sends them to third-party bot services.
Product
Socket now supports pylock.toml, enabling secure, reproducible Python builds with advanced scanning and full alignment with PEP 751's new standard.
Security News
Research
Socket uncovered two npm packages that register hidden HTTP endpoints to delete all files on command.