{"id":9716,"date":"2019-06-19T00:00:00","date_gmt":"2019-06-19T06:00:00","guid":{"rendered":"https:\/\/swimlane.com\/resource\/swimlane-open-sources-graphish\/"},"modified":"2025-12-22T03:48:48","modified_gmt":"2025-12-22T10:48:48","slug":"graphish-open-source-de-couloirs-de-nage","status":"publish","type":"sw_resource","link":"https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/","title":{"rendered":"Swimlane met \u00e0 disposition Graphish le code source pour aider les \u00e9quipes SecOps."},"content":{"rendered":"\n\n\n<section class=\"bs-section bs-section-f49668dca89a07af4c4bed27713f079b6839f643 bs-section---default bs-section--blog-inner-banner  \"><style>.bs-section.bs-section-f49668dca89a07af4c4bed27713f079b6839f643{ background-color: #000743;} <\/style><div class=\"container\">\n<div class=\"bs-row row  flex-md-row-reverse bs-row---default\">\n<div class=\" bs-column col-sm-12 col-md-12 col-lg-6   bs-column-3c02e72bbbdd27fbc2206a57dc520373f8b450b2 bs-column---default bs-column--right d-flex flex-column justify-content-end    \"><figure class=\"wp-block-post-featured-image\"><img decoding=\"async\" src=\"https:\/\/swimlane.com\/wp-content\/uploads\/Graphish.png\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"Wide-angle view of an open laptop on a white desk displaying code, with a monitor and coffee mug nearby.\" style=\"object-fit:cover;\" srcset=\"https:\/\/swimlane.com\/wp-content\/uploads\/Graphish.png 800w, https:\/\/swimlane.com\/wp-content\/uploads\/Graphish-300x186.png 300w, https:\/\/swimlane.com\/wp-content\/uploads\/Graphish-768x477.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure><\/div>\n\n\n\n<div class=\" bs-column col-sm-12  col-md-12 col-lg-6   bs-column-6a13826d98ae006805bf00373c567a95c3c65a9a bs-column---default d-flex flex-column    \"><div class=\"wp-block-post-date\"><time datetime=\"2019-06-19T00:00:00-06:00\">Juin 19, 2019<\/time><\/div>\n\n<h1 class=\"wp-block-post-title has-text-color has-white-color\">Swimlane open-sources graphish to help SecOps Teams<\/h1>\n\n\n<div class=\"bs-div bs-div-f106fb945b2c4610a440b9e5b4f63c0c1cbbec02 bs-div---default\"><div class=\"bs-div__inner d-flex flex-wrap align-items-center    \">\n<a class=\"bs-post__author has-text-align-center\" href=\"https:\/\/swimlane.com\/fr\/author\/Nick_Tausek\/\">\n\t<div class=\"profile-desc\">\n\t\t<figure>\n\t\t\t<img decoding=\"async\" src=\"https:\/\/swimlane.com\/wp-content\/uploads\/author_Nick_Tausek.jpg\" alt=\"user-avatar\">\n\t\t<\/figure>\n\t\t<span class=\"prefix\"><\/span>\n\t\t<span class=\"name\">\n\t\t\tNick Tausek\t\t<\/span>\n\t<\/div>\n<\/a>\n\n\n\n<div class=\"reading-time\">\n    <span class=\"reading-time__time\">3 <\/span> Minute Read\n<\/div><\/div><\/div>\n<\/div>\n<\/div>\n<\/div><\/section>\n\n\n\n\n\n\n\n\n\n<section class=\"bs-section bs-section-050e6505c2b06c7ce9ca858e2f56661a365e6ba8 bs-section---default bs-section--blog-inner-main-contents  \"><div class=\"container\">\n<div class=\"bs-row row justify-content-between  bs-row---default\">\n<div class=\" bs-column col-sm-12 col-md-1   bs-column-b9d738473a055284b615b4f50be5a383dfe4cc38 bs-column---default     \"><div class=\"heateor_sss_sharing_container heateor_sss_horizontal_sharing\" data-heateor-ss-offset=\"0\" data-heateor-sss-href='https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/'><div class=\"heateor_sss_sharing_ul\"><a aria-label=\"Email\" class=\"heateor_sss_email\" href=\"https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/\" onclick=\"event.preventDefault();window.open('mailto:?subject=' + decodeURIComponent('Swimlane%20open-sources%20graphish%20to%20help%20SecOps%20Teams').replace('&', '%26') + '&body=https%3A%2F%2Fswimlane.com%2Ffr%2Fblog%2Fswimlane-open-sources-graphish%2F', '_blank')\" title=\"Email\" rel=\"noopener\" style=\"font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle\"><span class=\"heateor_sss_svg\" style=\"background-color:#649a3f;width:35px;height:35px;border-radius:999px;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box\"><svg style=\"display:block;border-radius:999px;\" focusable=\"false\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"100%\" height=\"100%\" viewBox=\"-.75 -.5 36 36\"><path d=\"M 5.5 11 h 23 v 1 l -11 6 l -11 -6 v -1 m 0 2 l 11 6 l 11 -6 v 11 h -22 v -11\" stroke-width=\"1\" fill=\"#fff\"><\/path><\/svg><\/span><\/a><a aria-label=\"Twitter\" class=\"heateor_sss_button_twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?text=Swimlane%20open-sources%20graphish%20to%20help%20SecOps%20Teams&url=https%3A%2F%2Fswimlane.com%2Ffr%2Fblog%2Fswimlane-open-sources-graphish%2F\" title=\"Twitter\" rel=\"nofollow noopener\" target=\"_blank\" style=\"font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle\"><span class=\"heateor_sss_svg heateor_sss_s__default heateor_sss_s_twitter\" style=\"background-color:#55acee;width:35px;height:35px;border-radius:999px;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box\"><svg style=\"display:block;border-radius:999px;\" focusable=\"false\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"100%\" height=\"100%\" viewBox=\"-4 -4 39 39\"><path d=\"M28 8.557a9.913 9.913 0 0 1-2.828.775 4.93 4.93 0 0 0 2.166-2.725 9.738 9.738 0 0 1-3.13 1.194 4.92 4.92 0 0 0-3.593-1.55 4.924 4.924 0 0 0-4.794 6.049c-4.09-.21-7.72-2.17-10.15-5.15a4.942 4.942 0 0 0-.665 2.477c0 1.71.87 3.214 2.19 4.1a4.968 4.968 0 0 1-2.23-.616v.06c0 2.39 1.7 4.38 3.952 4.83-.414.115-.85.174-1.297.174-.318 0-.626-.03-.928-.086a4.935 4.935 0 0 0 4.6 3.42 9.893 9.893 0 0 1-6.114 2.107c-.398 0-.79-.023-1.175-.068a13.953 13.953 0 0 0 7.55 2.213c9.056 0 14.01-7.507 14.01-14.013 0-.213-.005-.426-.015-.637.96-.695 1.795-1.56 2.455-2.55z\" fill=\"#fff\"><\/path><\/svg><\/span><\/a><a aria-label=\"Facebook\" class=\"heateor_sss_facebook\" href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Fswimlane.com%2Ffr%2Fblog%2Fswimlane-open-sources-graphish%2F\" title=\"Facebook\" rel=\"nofollow noopener\" target=\"_blank\" style=\"font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle\"><span class=\"heateor_sss_svg\" style=\"background-color:#0765FE;width:35px;height:35px;border-radius:999px;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box\"><svg style=\"display:block;border-radius:999px;\" focusable=\"false\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 32 32\"><path fill=\"#fff\" d=\"M28 16c0-6.627-5.373-12-12-12S4 9.373 4 16c0 5.628 3.875 10.35 9.101 11.647v-7.98h-2.474V16H13.1v-1.58c0-4.085 1.849-5.978 5.859-5.978.76 0 2.072.15 2.608.298v3.325c-.283-.03-.775-.045-1.386-.045-1.967 0-2.728.745-2.728 2.683V16h3.92l-.673 3.667h-3.247v8.245C23.395 27.195 28 22.135 28 16Z\"><\/path><\/svg><\/span><\/a><a aria-label=\"Linkedin\" class=\"heateor_sss_button_linkedin\" href=\"https:\/\/www.linkedin.com\/sharing\/share-offsite\/?url=https%3A%2F%2Fswimlane.com%2Ffr%2Fblog%2Fswimlane-open-sources-graphish%2F\" title=\"Linkedin\" rel=\"nofollow noopener\" target=\"_blank\" style=\"font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle\"><span class=\"heateor_sss_svg heateor_sss_s__default heateor_sss_s_linkedin\" style=\"background-color:#0077b5;width:35px;height:35px;border-radius:999px;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box\"><svg style=\"display:block;border-radius:999px;\" focusable=\"false\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 32 32\"><path d=\"M6.227 12.61h4.19v13.48h-4.19V12.61zm2.095-6.7a2.43 2.43 0 0 1 0 4.86c-1.344 0-2.428-1.09-2.428-2.43s1.084-2.43 2.428-2.43m4.72 6.7h4.02v1.84h.058c.56-1.058 1.927-2.176 3.965-2.176 4.238 0 5.02 2.792 5.02 6.42v7.395h-4.183v-6.56c0-1.564-.03-3.574-2.178-3.574-2.18 0-2.514 1.7-2.514 3.46v6.668h-4.187V12.61z\" fill=\"#fff\"><\/path><\/svg><\/span><\/a><\/div><div class=\"heateorSssClear\"><\/div><\/div>\n<\/div>\n\n\n\n<div class=\" bs-column col-sm-12  col-lg-8 col-md-11   bs-column-5fcbee853797bef68c609dd2715f511e3ead78a3 bs-column---default bs-column--contents     \">\n<h2>\u00a0<\/h2>\n<p>While having a conversation on <a href=\"https:\/\/twitter.com\/MSAdministrator\/status\/1140380695430410240?s=20\" target=\"_blank\" rel=\"noopener\">Twitter<\/a> about Microsoft Graph API I was convinced that the traditional Exchange eDiscovery features were not available in the Microsoft Graph API. Boy was I wrong.<\/p>\n<p>After stumbling across a few endpoints I had not seen previously, I decided to write a python package called graphish. <a href=\"https:\/\/github.com\/swimlane\/graphish\" target=\"_blank\" rel=\"noopener\">Graphish<\/a> is an open-source python package Swimlane is open-sourcing that will enable IT, security operations (SecOps), developers and others to search and delete email messages from mailboxes using the Microsoft Graph API.<\/p>\n<p>If you are an Office 365 customer and have Microsoft Azure Active Directory, then you have all the necessary requirements to use this new package. But there are a few additional steps that must be taken before you can fully utilize this new package.<\/p>\n<p>First, you must decide on the type of service\/application you want to use when running this package. The Microsoft Graph API is accessible based on your organization registering an application with Microsoft Azure AD. This process can be complex, but luckily I already wrote a series to help you understand application types and using Microsoft Graph API:<\/p>\n<ol>\n<li>Microsoft&#8217;s OAuth2 endpoints and application types<\/li>\n<li>Microsoft&#8217;s OAuth2 implementation: Registering an app<\/li>\n<li>Microsoft&#8217;s OAuth2 implementation: Using Microsoft Graph API<\/li>\n<\/ol>\n<p>Based on the application type, your authentication grant workflow will be different. <a href=\"https:\/\/github.com\/swimlane\/graphish\" target=\"_blank\" rel=\"noopener\">Graphish<\/a> supports both Legacy (delegated permissions) and Daemon\/Service (application permissions) application registration types.<\/p>\n<p>Here are the basics: If you want to use a username and password when accessing the Microsoft Graph API, you will need to make sure that you registered application has the appropriate permissions for the endpoint (with <a href=\"https:\/\/github.com\/swimlane\/graphish\" target=\"_blank\" rel=\"noopener\">graphish<\/a> that is Mail.ReadWrite) and the type is \u201cDelegated\u201d.<\/p>\n<p>If you want to use <a href=\"https:\/\/github.com\/swimlane\/graphish\" target=\"_blank\" rel=\"noopener\">graphish<\/a> as a daemon\/service application you will need to make sure that you have Mail.ReadWrite permissions with the type as \u201cApplication.\u201d<\/p>\n<p>The screenshot below shows both permissions\u2014which is fine\u2014but I recommend choosing one or over the other.<\/p>\n<figure><img decoding=\"async\" src=\"https:\/\/swimlane.com\/assets\/uploads\/images\/graphphish_app_registration.png\" \/><\/figure>\n<p>Once you have the application created in Azure Active Directory, now let\u2019s go ahead and install graphish from pypi or our repository:<\/p>\n<pre>Locally\n git clone git@github.com:swimlane\/graphish.git\n cd graphish\n pip install setup.py\nOS X &amp; Linux:\n pip install graphish\nWindows:\n pip install graphish\n<\/pre>\n<p>Now that <a href=\"https:\/\/github.com\/swimlane\/graphish\" target=\"_blank\" rel=\"noopener\">graphish<\/a> is installed, we must provide the appropriate values based on which type of application you registered. In this example, I will show you how to use application (client credentials auth grant flow) authentication.<\/p>\n<p class=\"indented\"><a href=\"https:\/\/github.com\/swimlane\/graphish\" target=\"_blank\" rel=\"noopener\">NOTE: More information on how to use graphish is located here.<\/a><\/p>\n<p>To use <a href=\"https:\/\/github.com\/swimlane\/graphish\" target=\"_blank\" rel=\"noopener\">graphish<\/a> with application permissions you will need to supply the clientId, clientSecret, and tenantId to create a GraphConnector object.<\/p>\n<pre>from graphish import GraphConnector\n# For backend \/ client_credential auth flow just supply the following\nconnector = GraphConnector(\n clientId='', # you applications clientId\n clientSecret='', # your applications\nclientSecret\n tenantId='', # your applications Azure\nTenant ID\n)<\/pre>\n<p>By using the application authentication (Client Credentials Grant Auth Flow) you can search your own mailbox (default) or if you pass a `userPrincipalName` then <a href=\"https:\/\/github.com\/swimlane\/graphish\" target=\"_blank\" rel=\"noopener\">graphish<\/a> will search that mailbox (e-mail address):<\/p>\n<p>Searching <strong>your<\/strong> account using a service\/daemon authentication flow:<\/p>\n<pre>from graphish import Search\nsearch = Search(connector)\nnew_search = search.create(\n searchFolderName='Phishing Search',\n sourceFolder='inbox',\n filterQuery=\"contains(subject, 'EXPIRES')\"\n)\n<\/pre>\n<p>Searching another<strong> user&#8217;s mailbox <\/strong>using a service\/daemon authentication flow:<\/p>\n<pre>from graphish import Search\nsearch = Search(\n connector,\n userPrincipalName='some.account@myorg.onmicrosoft.com' # the user's mailbox\n you want to search\n) <\/pre>\n<p>Once you have created a new search object, you can begin creating individual searches:<\/p>\n<pre>new_search = search.create(\n searchFolderName='Phishing Search2',\n sourceFolder='inbox',\n filterQuery=\"contains(subject, 'phish')\"\n )\n<\/pre>\n<p>After creating our new search, including the name of our search folder (hidden), the source folder and our search terms, we can retrieve any findings by using the messages method:<\/p>\n<pre>messages = search.messages()\nfor message in messages:\n print(message)<\/pre>\n<p>Here is a list of the available properties on a message object:<\/p>\n<ul>\n<li>sentDateTime<\/li>\n<li>webLink<\/li>\n<li>conversationId<\/li>\n<li>internetMessageId<\/li>\n<li>id<\/li>\n<li>isReadReceiptRequested<\/li>\n<li>subject<\/li>\n<li>lastModifiedDateTime<\/li>\n<li>bodyPreview<\/li>\n<li>from<\/li>\n<li>isDraft<\/li>\n<li>connector<\/li>\n<li>importance<\/li>\n<li>changeKey<\/li>\n<li>receivedDateTime<\/li>\n<li>parentFolderId<\/li>\n<li>body<\/li>\n<li>isDeliveryReceiptRequested<\/li>\n<li>replyTo<\/li>\n<li>toRecipients<\/li>\n<li>ccRecipients<\/li>\n<li>flag<\/li>\n<li>user<\/li>\n<li>categories<\/li>\n<li>_headers<br \/>sender<\/li>\n<li>createdDateTime<\/li>\n<li>isRead<\/li>\n<li>hasAttachments<\/li>\n<li>bccRecipients<\/li>\n<li>inferenceClassification<\/li>\n<li>@odata.etag<\/li>\n<\/ul>\n<p>If we want to delete a message that was found during our search, we use the delete_search_messages method. If you wanted to delete another message then you would use the delete method.<\/p>\n<p>To delete a message in our search folder, we must provide both the search folders ID as well as the message ID we want to delete.<\/p>\n<pre># Delete a message\ndelete = Delete(\n connector,\n userPrincipalName='first.last@myorg.onmicrosoft.com', # the user's mailbox you\nwant to search\n)\nfor message in messages:\n delete.delete_search_message(search.folderId, message.id)\n<\/pre>\n<p>There are a few other capabilities like updating and deleting searches, but you can find more information about those within our <a href=\"https:\/\/github.com\/swimlane\/graphish\" target=\"_blank\" rel=\"noopener\">repository<\/a>.<\/p>\n<p>Happy Hunting!<\/p>\n<\/div>\n\n\n\n<div class=\" bs-column col-sm-12  col-md-12 col-lg-3   bs-column-4ffac197d945e44dadadc9d8f52ba4737135ba21 bs-column---default     \">\n<div class=\"bs-div bs-div-ffc71f24880cf5ca65c4a54e87fb14a656cc562d bs-div---default bs-div--tags\"><div class=\"bs-div__inner     \">\n<h2 class=\"wp-block-heading\" id=\"h-tags\">Tags<\/h2>\n\n\n<div class=\"post-tag-wrapper\">\n    <p><\/p><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"bs-div bs-div-69c461f15bb5fa3fc09d1aa73a0e5865005218ff bs-div---default bs-div--related-posts\"><div class=\"bs-div__inner     \">\n<h2 class=\"wp-block-heading\" id=\"h-related-posts\">Related Posts<\/h2>\n\n\n\n<div class=\"bs-related-posts bs-related-posts-block---default\"><div class=\"bs-related-posts__container\"><div class=\"bs-related-posts__items\">\n<div class=\" bs-column col-sm-4   bs-column-4bb8c1b66cb5e72c43988fbaf017046daf38fc18 bs-column---default     \">\t\t\t\t\t<div class=\"bs-post bs-post-69e3ebc6bdf6c bs-single-post---default enable\" >\n\t\t\t<a class=\"bs-post__trigger\" href='https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/' target='_self'>\t\t\t<div class=\"bs-post__inner\">\n\t\t\t\t<div class=\"bs-post__details\">    <div class=\"bs-post__date\">\n        <span>Mai 22, 2019<\/span>\n    <\/div>\n    <div class=\"bs-post__title\">\n        <h5>Swimlane research team open sources py-ews<\/h5>\n    <\/div>\n<div class=\"bs-post__learn-more\">\n    <span class='btn learn-more-text bs-post__learn-more-text'>Read More<\/span><\/div>\n<\/div>\t\t\t<\/div>\n\t\t\t<\/a>\t\t<\/div>\n\t<\/div>\n\n\n\n<div class=\" bs-column col-sm-4   bs-column-4bb8c1b66cb5e72c43988fbaf017046daf38fc18 bs-column---default     \">\t\t\t\t\t<div class=\"bs-post bs-post-69e3ebc6bf0ff bs-single-post---default enable\" >\n\t\t\t<a class=\"bs-post__trigger\" href='https:\/\/swimlane.com\/fr\/open-source-threat-intelligence-cobalt-strike-attacks\/' target='_self'>\t\t\t<div class=\"bs-post__inner\">\n\t\t\t\t<div class=\"bs-post__details\">    <div class=\"bs-post__date\">\n        <span>Avr 6, 2023<\/span>\n    <\/div>\n    <div class=\"bs-post__title\">\n        <h5>How to Leverage Open Source Threat Intel Against Cobalt Strike Attacks<\/h5>\n    <\/div>\n<div class=\"bs-post__learn-more\">\n    <span class='btn learn-more-text bs-post__learn-more-text'>Read More<\/span><\/div>\n<\/div>\t\t\t<\/div>\n\t\t\t<\/a>\t\t<\/div>\n\t<\/div>\n\n\n\n<div class=\" bs-column col-sm-4   bs-column-4bb8c1b66cb5e72c43988fbaf017046daf38fc18 bs-column---default     \">\t\t\t\t\t<div class=\"bs-post bs-post-69e3ebc6c045a bs-single-post---default enable\" >\n\t\t\t<a class=\"bs-post__trigger\" href='https:\/\/swimlane.com\/fr\/blog\/soc-management-with-swimlane\/' target='_self'>\t\t\t<div class=\"bs-post__inner\">\n\t\t\t\t<div class=\"bs-post__details\">    <div class=\"bs-post__date\">\n        <span>Ao\u00fbt 22, 2024<\/span>\n    <\/div>\n    <div class=\"bs-post__title\">\n        <h5>How Swimlane Can Help SOC Management<\/h5>\n    <\/div>\n<div class=\"bs-post__learn-more\">\n    <span class='btn learn-more-text bs-post__learn-more-text'>Read More<\/span><\/div>\n<\/div>\t\t\t<\/div>\n\t\t\t<\/a>\t\t<\/div>\n\t<\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n\n\n<\/div>\n<\/div>\n<\/div><\/section>\n\n\n\n<section class=\"bs-section bs-section-2a4a600ae9ab197b6a4ccafe05152bf1a2fde1d1 bs-section---default bs-section--newsletter bs-section--common-marketo-form bs-section--common-marketo-form-two-columns  \"><style>.bs-section.bs-section-2a4a600ae9ab197b6a4ccafe05152bf1a2fde1d1{ background-color: #000743;} <\/style><div class=\"container-fluid\">\n<div class=\"bs-row row   bs-row---default\">\n<div class=\" bs-column col-sm-0 col-md-0 col-lg-6   bs-column-df5e10bef85c15055718b4d93887855962017939 bs-column---default     \">\n<h2 class=\"wp-block-heading has-white-color has-text-color\" id=\"requestor\">Request a Live Demo<\/h2>\n<\/div>\n\n\n\n<div class=\" bs-column col-sm-0 col-md-0 col-lg-6   bs-column-df5e10bef85c15055718b4d93887855962017939 bs-column---default     \"><div class='media-elements bs-media-element---default enable'>    <div class='bs-common-image'>\n                            <figure class='figure justify-content-start d-flex'>\n                            <picture>\n                            \n                            <img src='https:\/\/swimlane.com\/wp-content\/uploads\/liitp.svg' class='img-fluid'   alt='' title=''  \/>\n                            <\/picture>\n                                \n                            <\/figure>\n                        <\/div><\/div>\n\n<script src=\"\/\/pages.swimlane.com\/js\/forms2\/js\/forms2.min.js\"><\/script>\n<form id=\"mktoForm_1017\"><\/form>\n<script>\n    var embeddedFormId = '05a6905d0187a23e165b2fd995e965fe15cb94f6';\n    var marketoBaseUrl = '\/\/pages.swimlane.com';\n    var munchkinId = '978-QCM-390';\n    var formId = '1017';\n    var responseType = 'redirect';\n    var responseMessage = 'Thank you!';\n    var redirectURL = '';\n    var downloadFileURL = '';\n    var linkOpenType = '_self';\n    var popupVideo = 'url';\n    var popupVideoURL = '';\n    var popupVideoUploadURL = '';\n    MktoForms2.loadForm(marketoBaseUrl, munchkinId, formId, function(form) {\n        form.onSuccess(function(values, followUpUrl) {\n            document.getElementById(\"int_mktoForm_\" + formId).innerHTML = responseMessage;\n                    });\n    });\n<\/script>\n<div class=\"form-submit-note\" id=\"int_mktoForm_1017\"><\/div>\n<!-- Incluing form response options -->\n\n\n\n<script>\n    (function() {\n        \/\/ Please include the email domains you would like to block in this list\n        var invalidDomains = [\"@gmail.\", \"@yahoo.\", \"@hotmail.\", \"@live.\", \"@icloud.\",\"@aol.\", \"@outlook.\", \"@proton.\", \"@mailinator.\"];\n\n\n        MktoForms2.whenReady(function(form) {\n            form.onValidate(function() {\n                var email = form.vals().Email;\n                if (email) {\n                    if (!isEmailGood(email)) {\n                        form.submitable(false);\n                        var emailElem = form.getFormElem().find(\"#Email\");\n                        form.showErrorMessage(\"Must be Business email.\", emailElem);\n                    } else {\n                        form.submitable(true);\n                    }\n                }\n            });\n        });\n\n        function isEmailGood(email) {\n            for (var i = 0; i < invalidDomains.length; i++) {\n                var domain = invalidDomains[i];\n                if (email.indexOf(domain) != -1) {\n                    return false;\n                }\n            }\n            return true;\n        }\n\n\n    })(); \n<\/script>\n<\/div>\n<\/div>\n<\/div><\/section>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":22,"featured_media":9717,"template":"","meta":{"_acf_changed":false,"show_custom_date":false,"custom_date":"","featured":false,"featured_image":0,"learn_more_label":"","image_alt_text":"","learn_more_type":"","learn_more_link":[],"show_popup":false,"disable_iframe":false,"enable_lazy_loading":false,"learn_more_link_file":0,"event_date":false,"event_start_date":"","event_end_date":"","featured_page_list":[],"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","inline_featured_image":false,"footnotes":""},"tags":[],"resource-type":[67],"resource-topic":[],"resource-industry":[],"blog-category":[70],"class_list":["post-9716","sw_resource","type-sw_resource","status-publish","has-post-thumbnail","hentry","resource-type-blogs","blog-category-secops"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.5 (Yoast SEO v27.1.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Swimlane open-sources graphish to help SecOps Teams<\/title>\n<meta name=\"description\" content=\"Graphish is an open-source python package that will enable IT, SecOps, developers and others to search and delete email messages using the Microsoft Graph\u2026\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/swimlane.com\/fr\/blog\/graphish-open-source-de-couloirs-de-nage\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Swimlane open-sources graphish to help SecOps Teams\" \/>\n<meta property=\"og:description\" content=\"Graphish is an open-source python package that will enable IT, SecOps, developers and others to search and delete email messages using the Microsoft Graph\u2026\" \/>\n<meta property=\"og:url\" content=\"https:\/\/swimlane.com\/fr\/blog\/graphish-open-source-de-couloirs-de-nage\/\" \/>\n<meta property=\"og:site_name\" content=\"AI Security Automation\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-22T10:48:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/swimlane.com\/wp-content\/uploads\/Graphish.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"497\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@swimlane\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/\",\"url\":\"https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/\",\"name\":\"Swimlane open-sources graphish to help SecOps Teams\",\"isPartOf\":{\"@id\":\"https:\/\/swimlane.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/swimlane.com\/wp-content\/uploads\/Graphish.png\",\"datePublished\":\"2019-06-19T06:00:00+00:00\",\"dateModified\":\"2025-12-22T10:48:48+00:00\",\"description\":\"Graphish is an open-source python package that will enable IT, SecOps, developers and others to search and delete email messages using the Microsoft Graph\u2026\",\"breadcrumb\":{\"@id\":\"https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/#primaryimage\",\"url\":\"https:\/\/swimlane.com\/wp-content\/uploads\/Graphish.png\",\"contentUrl\":\"https:\/\/swimlane.com\/wp-content\/uploads\/Graphish.png\",\"width\":800,\"height\":497,\"caption\":\"Wide-angle view of an open laptop on a white desk displaying code, with a monitor and coffee mug nearby.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/swimlane.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Swimlane open-sources graphish to help SecOps Teams\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/swimlane.com\/fr\/#website\",\"url\":\"https:\/\/swimlane.com\/fr\/\",\"name\":\"Low-Code Security Automation & SOAR Platform | Swimlane\",\"description\":\"Agentic AI automation for every security function\",\"publisher\":{\"@id\":\"https:\/\/swimlane.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/swimlane.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/swimlane.com\/fr\/#organization\",\"name\":\"Low-Code Security Automation & SOAR Platform | Swimlane\",\"url\":\"https:\/\/swimlane.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/swimlane.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/swimlane.com\/wp-content\/uploads\/sw-inline-logo-color-white.svg\",\"contentUrl\":\"https:\/\/swimlane.com\/wp-content\/uploads\/sw-inline-logo-color-white.svg\",\"width\":912,\"height\":190,\"caption\":\"Low-Code Security Automation & SOAR Platform | Swimlane\"},\"image\":{\"@id\":\"https:\/\/swimlane.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/swimlane\",\"https:\/\/www.linkedin.com\/company\/swimlane\/\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Swimlane met \u00e0 disposition Graphish le code source pour aider les \u00e9quipes SecOps.","description":"Graphish est un package Python open-source qui permettra aux \u00e9quipes informatiques, de s\u00e9curit\u00e9, aux d\u00e9veloppeurs et autres de rechercher et de supprimer des messages \u00e9lectroniques \u00e0 l&#039;aide de Microsoft Graph\u2026","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/swimlane.com\/fr\/blog\/graphish-open-source-de-couloirs-de-nage\/","og_locale":"fr_FR","og_type":"article","og_title":"Swimlane open-sources graphish to help SecOps Teams","og_description":"Graphish is an open-source python package that will enable IT, SecOps, developers and others to search and delete email messages using the Microsoft Graph\u2026","og_url":"https:\/\/swimlane.com\/fr\/blog\/graphish-open-source-de-couloirs-de-nage\/","og_site_name":"AI Security Automation","article_modified_time":"2025-12-22T10:48:48+00:00","og_image":[{"width":800,"height":497,"url":"https:\/\/swimlane.com\/wp-content\/uploads\/Graphish.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@swimlane","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/","url":"https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/","name":"Swimlane met \u00e0 disposition Graphish le code source pour aider les \u00e9quipes SecOps.","isPartOf":{"@id":"https:\/\/swimlane.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/#primaryimage"},"image":{"@id":"https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/#primaryimage"},"thumbnailUrl":"https:\/\/swimlane.com\/wp-content\/uploads\/Graphish.png","datePublished":"2019-06-19T06:00:00+00:00","dateModified":"2025-12-22T10:48:48+00:00","description":"Graphish est un package Python open-source qui permettra aux \u00e9quipes informatiques, de s\u00e9curit\u00e9, aux d\u00e9veloppeurs et autres de rechercher et de supprimer des messages \u00e9lectroniques \u00e0 l&#039;aide de Microsoft Graph\u2026","breadcrumb":{"@id":"https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/#primaryimage","url":"https:\/\/swimlane.com\/wp-content\/uploads\/Graphish.png","contentUrl":"https:\/\/swimlane.com\/wp-content\/uploads\/Graphish.png","width":800,"height":497,"caption":"Wide-angle view of an open laptop on a white desk displaying code, with a monitor and coffee mug nearby."},{"@type":"BreadcrumbList","@id":"https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/swimlane.com\/"},{"@type":"ListItem","position":2,"name":"Swimlane open-sources graphish to help SecOps Teams"}]},{"@type":"WebSite","@id":"https:\/\/swimlane.com\/fr\/#website","url":"https:\/\/swimlane.com\/fr\/","name":"Plateforme d&#039;automatisation de la s\u00e9curit\u00e9 low-code et SOAR | Swimlane","description":"Automatisation par IA agentique pour chaque fonction de s\u00e9curit\u00e9","publisher":{"@id":"https:\/\/swimlane.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/swimlane.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/swimlane.com\/fr\/#organization","name":"Plateforme d&#039;automatisation de la s\u00e9curit\u00e9 low-code et SOAR | Swimlane","url":"https:\/\/swimlane.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/swimlane.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/swimlane.com\/wp-content\/uploads\/sw-inline-logo-color-white.svg","contentUrl":"https:\/\/swimlane.com\/wp-content\/uploads\/sw-inline-logo-color-white.svg","width":912,"height":190,"caption":"Low-Code Security Automation & SOAR Platform | Swimlane"},"image":{"@id":"https:\/\/swimlane.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/swimlane","https:\/\/www.linkedin.com\/company\/swimlane\/"]}]}},"publishpress_future_workflow_manual_trigger":{"enabledWorkflows":[]},"_links":{"self":[{"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/sw_resource\/9716","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/sw_resource"}],"about":[{"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/types\/sw_resource"}],"author":[{"embeddable":true,"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/users\/22"}],"version-history":[{"count":0,"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/sw_resource\/9716\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/media\/9717"}],"wp:attachment":[{"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/media?parent=9716"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/tags?post=9716"},{"taxonomy":"resource-type","embeddable":true,"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/resource-type?post=9716"},{"taxonomy":"resource-topic","embeddable":true,"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/resource-topic?post=9716"},{"taxonomy":"resource-industry","embeddable":true,"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/resource-industry?post=9716"},{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/blog-category?post=9716"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}