Snap Scraper enables users to download media uploaded to Snapchat's Snap Map using a set of latitude and longitude coordinates.

Overview

Snap Scraper

alt text

Description

Snap Scraper is an open source intelligence tool which enables users to download media uploaded to Snapchat's Snap Map using a set of latitude and longitiude co-ordinates. This project is in no way affiliated with, authorized, maintained, sponsored or endorsed by Snap inc. or any of its affiliates or subsidiaries. This program is for education, forensic and bug reporting purposes only and is provided without warranty.

When using this tool please cite the following publication:

  1. Richard Matthews, Kieren Lovell, Matthew Sorell, Ghost protocol – Snapchat as a method of surveillance, Forensic Science International: Digital Investigation, Volume 36, Supplement, 2021, 301112, ISSN 2666-2817, https://doi.org/10.1016/j.fsidi.2021.301112.

Screenshots

Installation

MacOS

Download the current linked binary in the most recent release. Using terminal ensure you change permissions to include the executable permission.

chmod 755 SnapScraper

Optionally, a icon.png file is included which can be used to change the icon of the downloaded executable.

Windows/Linux

At this point in time, SnapScraper only supports MacOS. However, dependancies have been checked and users should be able to complile the code on their own file system without any issues. Ensure Alamofire has been installed.

Usage

Double click SnapScraper to launch the command line tool. SnapScraper works best when the defaul window size is set to 80x50.

You should be presented with the following window:

alt text

The current options for use are indicated in the command window. Select to option by pressing the required key(s) on the keyboard and pressing enter.

Check

The main option users will select will be the check option to locate snap media on the Snap Map. To select this option type 'c' followed by the enter key.

SnapScraper will then ask you for a set of longitude and lattitude coordinates which can be obtained from map.snapchat.com as discussed in the publication "Richard Matthews, Kieren Lovell, Matthew Sorell, Ghost protocol – Snapchat as a method of surveillance, Forensic Science International: Digital Investigation, Volume 36, Supplement, 2021, 301112, ISSN 2666-2817, https://doi.org/10.1016/j.fsidi.2021.301112.". Navigate to map.snapchat.com and note the URL of the location you wish to extract snap media from ie. https://map.snapchat.com/@24.931153,44.873214,6.04z. The coordinates to enter into SnapScraper are located in the URL after the @ symbol. The first number is the lattitude, the second the longitude and the final the zoom level. Lattitude and longitude should be entered into SnapScraper to 6 decimal places while zoom should be entered to 2 decimal places.

When each coordinate is entered into the program SnapScraper will then poll Snap Map for snap media at the desired location. When media is located the meta data of the media will be printed to the command window.

alt text

Users will then be given the option of printing direct links to the media to the command window. Select y to print these links to the command window or n to skip.

Users will then be given the option to save the links to a text file. Select y to save the file n to skip. File will be saved in the users "Downloads" directory in a folder called "Snapchat"(macOS users only). The file is titled with the current date, time and coordiates of extraction prefixed with the word "listing".

Finally, users will be asked if they would like to download the media. This is the extraction step with media being saved directly from the URLs indicated in the previous steps. Select y to download, n to skip. Media will be saved in a folder titled with the current date, time and coordinates of extraction within the "Snapchat" folder previously identified above.

Log reporting

Currently log reporting has not been implremented in 0.5.0-b. To save a log of the extraction method use the "export text as" function built in to the terminal.

Finalise the extraction process as above and then quit SnapScraper by selecting "q". The terminal session will end but the window will remain open as shown.

alt text

To save a log of activity navigate to Shell-> Export Text as... A save box will open. Navigate to the Snapchat folder within users Downloads folder and find the recent URL listing that has been saved (if used from previous steps). Click on this file and change the save as file name by removing the prefix word listing to log. This will save a text file contianing the contents of the terminal window and show all activity that was contducted while SnapScraper was run.

Other options

SnapScraper has a fully functional menu. Other options include displaying the MIT license, publication information associated with the current release of the tool, information to support the continued development and maintenance and the current development log. To access enter the relevant option keys followed by the enter key.

Contributing

SnapScraper was born out of a discussion in 2017 while in Tallinn Estonia. In the spirit of that initial collaboration I'd love for you to help bring this project to its full vision. The wiki contains a road map for the codebase including a wishlist of future functionality.

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

Dontations

Dontations are appreciated to help support the continued development, maintenance and upkeep of this product.

Dontate using Monero: 41hZLF5Mhh7gDeiTLLws8dXMsi9NpyM6cWUQJoTJNAWkbx4YccDagRMWYED4cyHw481VjYyiEgkEh9mxHR1tJeNy7ce9yNp

Funding goals include:

  • Server hosting for a web hosted version of SnapScraper.
  • Support for Windows file system.
  • Filtering of downloaded media to flag for NSFW content (triage).
  • Automated scraping by geofence and time.
  • Long term data storage, enabling historical, sociological and other areas of research (Internet Archive, but for Snapmap).

Credits

Project Lead

  • Richard Matthews

Automated Content Moderation Team

  • Matthew Sorell
  • Sanjana Tanuku
  • Siyu Wang
  • Liyu Xu

Acknowledgements

  • Ben Agnew - Thanks for the Developer mode discussions during CSRB in 2019!
  • Kieren Lovell - Minesweeper extraordinaire.
  • Matthew Sorell - Forensics and more.

Repos used

Publications

  1. Richard Matthews, Kieren Lovell, Matthew Sorell. "Ghost protocol – Snapchat as a method of surveillance", Forensic Science International: Digital Investigation, Volume 36, Supplement, 2021, 301112, ISSN 2666-2817, https://doi.org/10.1016/j.fsidi.2021.301112.
  2. Richard Matthews. "Snapchat Disclosed on HackerOne: CreatorID Leaked from Public Content Posted to SnapMaps", May 7, 2020. Accessed November 06, 2021. https://hackerone.com/reports/867521.

License

MIT (c) 2020 Dr Richard Matthews

Disclaimer

This project is in no way affiliated, associated, authorised or endorsed by the education institutions of those indicated in the credits section of this repo. This includes but is not limited to The University of Adelaide, Australia and TalTech (Tallinn University of Technology).

This project is not affiliated, associated, authorized, endorsed by, or in any way officially connected with the application Snapchat, Snap inc. or any of its subsidiaries or its affiliates. The official Snapchat website can be found at http://www.snapchat.com.

The names Snap, Snap Map, and Snapchat as well as related names, marks, emblems and images are registered trademarks of their respective owners.

All names, logos, images and brands are property of their respective owners.

This tool is provided as is for instructional purposes only without any warranty. Any use is not authorised or implied.

You might also like...
NSURLSession network abstraction layer, using Codable and Decodable for response and Encodable for request. ⚙️🚀
NSURLSession network abstraction layer, using Codable and Decodable for response and Encodable for request. ⚙️🚀

SONetworking NSURLSession network abstraction layer, using Codable and Decodable for response and Encodable for request. Project Folder and File Struc

Publish and discover services using Bonjour

Ciao Lib to publish and find services using mDNS Requirements Installation Usage License Requirements iOS 8.0+ / Mac OS X 10.10+ / tvOS 9.0+ Xcode 9.0

Socket framework for Swift using the Swift Package Manager. Works on iOS, macOS, and Linux.

BlueSocket Socket framework for Swift using the Swift Package Manager. Works on iOS, macOS, and Linux. Prerequisites Swift Swift Open Source swift-5.1

SSL/TLS Add-in for BlueSocket using Secure Transport and OpenSSL

BlueSSLService SSL/TLS Add-in framework for BlueSocket in Swift using the Swift Package Manager. Works on supported Apple platforms (using Secure Tran

Plugin and runtime library for using protobuf with Swift

Swift Protobuf Welcome to Swift Protobuf! Apple's Swift programming language is a perfect complement to Google's Protocol Buffer ("protobuf") serializ

This generic SOAP client allows you to access web services using a your iOS app, Mac OS X app and AppleTV app.
This generic SOAP client allows you to access web services using a your iOS app, Mac OS X app and AppleTV app.

This generic SOAP client allows you to access web services using a your iOS app, Mac OS X app and Apple TV app. With this Framework you can create iPh

iOS Todo Application using RxSwift and ReactorKit
iOS Todo Application using RxSwift and ReactorKit

RxTodo RxTodo is an iOS application developed using ReactorKit. This project is for whom having trouble with learning how to build a RxSwift applicati

A slim implementation of a websocket server using Swift and Vapor 4.0.

Swift Websocket Server Example using Vapor 4.0 This project includes a minimum working example for a websocket server written in Swift. To interact wi

Swift HTTP server using the pre-fork worker model

Curassow Curassow is a Swift Nest HTTP Server. It uses the pre-fork worker model and it's similar to Python's Gunicorn and Ruby's Unicorn. It exposes

Comments
  • i have never programmed in swift but- suggestion for you

    i have never programmed in swift but- suggestion for you

    Is your feature request related to a problem? Please describe. its just a simple fix

    now as the title states i have NEVER not once tried swift however i have had on hand experience WITH ALOT of programming languages, both compiled, interpreted, low and high level languages and i can tell you any form of a constant print statement is not- resource efficient | | so maybe you can have swift read all the basic output into a txt file, an example would be

            writeMessage("SNAP SCRAPER")
            writeMessage("Version 0.5b")
            writeMessage("Last updated 2021:11:05")
    

    converted into a text file with

    SNAP SCRAPER 
    Version 0.5b
    Last updated 2021:11:05
    banner>
    other text that does not need a print statement
    

    im sure even from personal experience it is alot easier than constantly writing writeMessage and alot more as said above resource efficiant

    good first issue 
    opened by ArkAngeL43 5
  • Refactored writeMessage Function

    Refactored writeMessage Function

    Fixes # .

    Changes proposed in this pull request: -reducedWriteMessage functions to use multi-line break for now.

    You can add these if you want! Also thanks for making this a beginner issue!

    @rhematt

    opened by AE542 0
  • Media not returned when media exists

    Media not returned when media exists

    Describe the bug When requesting media from a set of coordinates no media will be returned even though media exists.

    To Reproduce Error cannot be reliably reproduced at this stage.

    Expected behavior Snap Scraper should reliably return all media objects on the snap map at a set of coordinates when media exists.

    OS: macOS, version 0.5.0-b

    Additional context Problem is known bug and expected to be an issue with clock synchronisation at server side. Rerunning commands will cause media to eventually be returned. Three attempts seem to work

    bug 
    opened by rhematt 0
Releases(v0.6.0-beta)
  • v0.6.0-beta(Dec 11, 2022)

  • v0.5.1-b(Nov 7, 2021)

  • v0.5.0-b(Nov 6, 2021)

    What's Changed

    • First binary release for MacOS
    • Create License under MIT by @rhematt in https://github.com/rhematt/Snap-Scraper/pull/1
    • Rhematt patch 1 by @rhematt in https://github.com/rhematt/Snap-Scraper/pull/2

    New Contributors

    • @rhematt made their first contribution in https://github.com/rhematt/Snap-Scraper/pull/1

    Full Changelog: https://github.com/rhematt/Snap-Scraper/commits/v0.5b

    Installation Instructions

    If using the included binary make sure to change permission to include executable (chmod 755 SnapScraper). Optional icon.png included.

    Source code(tar.gz)
    Source code(zip)
    icon.png(38.29 KB)
    SnapScraper(2.61 MB)
Owner
Dr Richard Matthews
Dr Richard Matthews
A modern download manager based on NSURLSession to deal with asynchronous downloading, management and persistence of multiple files.

TWRDownloadManager TWRDownloadManager A modern download manager for iOS (Objective C) based on NSURLSession to deal with asynchronous downloading, man

Michelangelo Chasseur 407 Nov 19, 2022
A progressive download manager for Alamofire

ALDownloadManager A progressive download manager for Alamofire (Alamofire下载器) The default support breakpoint continues. Sequential Download(顺序下载 ) Dow

null 48 May 1, 2022
ServiceData is an HTTP networking library written in Swift which can download different types of data.

ServiceData Package Description : ServiceData is an HTTP networking library written in Swift which can download different types of data. Features List

Mubarak Alseif 0 Nov 11, 2021
Native ios app to download tiktoks localy made in swift with SwiftUI

sequoia Native ios app to download tiktoks localy made in swift with SwiftUI without external dependencies. features save video localy view saved vide

fleur 9 Dec 11, 2022
NotionDrive - A swift package that can upload files to Notion.so or download files from Notion.so

NotionDrive NotionDrive is a swift package that can upload files to Notion.so or

Underthestars-zhy 4 Apr 9, 2022
Nice category that adds the ability to set the retry interval, retry count and progressiveness.

If a request timed out, you usually have to call that request again by yourself. AFNetworking+RetryPolicy is an objective-c category that adds the abi

Jakub Truhlář 209 Dec 2, 2022
Easy and lightweight network layer for creating different set of network requests like GET, POST, PUT, DELETE customizable with coders conforming to TopLevelDecoder, TopLevelEncoder

Easy and lightweight network layer for creating different set of network requests like GET, POST, PUT, DELETE customizable with coders conforming to TopLevelDecoder, TopLevelEncoder

Igor 2 Sep 16, 2022
A simple OAuth library for iOS with a built-in set of providers

SwiftyOAuth is a small OAuth library with a built-in set of providers and a nice API to add your owns. let instagram: Provider = .instagram(clientID:

Damien 477 Oct 15, 2022
Twitter-Client - A twitter client that allow users to view tweets on their iphone

Project 3 - Twitter Client Name of your app is a basic twitter app to read your

null 0 Feb 7, 2022
Simple iOS app in Swift to show AQI for some cities using websocket using Combine + MVVM

AQI Simple iOS app in Swift to show AQI for some cities using websocket using Combine + MVVM This app follows MVVM This app uses combine framework The

Amey Vikkram Tiwari 2 Nov 6, 2022