Giter Site home page Giter Site logo

bodaay / goopendrop Goto Github PK

View Code? Open in Web Editor NEW
83.0 4.0 9.0 4.91 MB

a Go Implementation and Enhancement of the Awesome Open Source AirDrop implementation work of seemoo-lab: https://github.com/seemoo-lab/opendrop

License: GNU General Public License v3.0

Shell 1.64% Go 98.36%
airdrop macos opendrop goopendrop go golang raspberry-pi raspberrypi

goopendrop's People

Contributors

bodaay avatar p18balt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

goopendrop's Issues

key requirement clarification

In the readme it says:

You must Do the extraction Step of Keys

Does this mean that you are required to extract your keys to send any airdrop, or just airdrops to devices in "contact only" mode?

BTW this looks really cool! Thanks for uploading!

help with usage

It was quite confusing for me how to install and use this code. Has anyone used it on a raspberry pi?

I'm trying to do this, with a ZERO RPI 2 Ubuntu.

Can someone help me?

I'm quite confused and what steps should I follow to install and how to call this code in a python script to scan or send some file. thank you for any help.

Ps, I got the keys, I also need to know where to put them…

File receiving very slow with nexmon (packet injection broken?)

(I slightly modified the code to run OWL with the command "owl", "-i", wlanDevName, "-h", OwlName, "-N" instead of "owl", "-i", wlanDevName, "-h", OwlName, "-c", owlChannel, however I can't see this being the reason for my problem)

Whenever I receive a file over AirDrop from multiple different iOS devices (iPhone 6 (iOS 12.5.5) and iPad Pro 3rd Gen (iOS 16.3.1)), it takes a while for GoOpenDrop to accept the request and afterwards sending takes forever.

For example, a 5MB file which i can receive with opendrop on my MacBook Pro 2012 (running macOS Ventura with OpenCore) in 1 second takes multiple minutes to receive with GoOpenDrop.

I'm using a Raspberry Pi 3 with the integrated WiFi module patched with nexmon and my fork of GoOpenDrop, but as stated above I doubt that's where my problem is coming from.

A few days ago I had opendrop running on my Pi with owl and receiving was just as fast as it is now on my MacBook. I can't replicate this anymore as my Apple devices just don't find my Raspberry Pi with opendrop anymore, likely due to the absence of BLE.

Given the slow speeds and that it worked with opendrop, I'm assuming the problem has to do with GoOpenDrop not doing the packet injection properly for the Apple device to know that it received the datachunk, but I don't know much about how opendrop works so I have no idea how to fix that.

Some parts of packet injection do work properly though, as when sending does finally complete, the Apple devices displays "Sent", meaning it knows the file was received by GoOpenDrop.

GIN-debug warning

When running goopendrop, I'm getting this warning:

[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:   export GIN_MODE=release
 - using code:  gin.SetMode(gin.ReleaseMode)

[GIN-debug] POST   /Discover                 --> goopendrop/awdl.(*AWDLServer).StartWebServer.func1 (3 handlers)
[GIN-debug] HEAD   /                         --> goopendrop/awdl.(*AWDLServer).StartWebServer.func2 (3 handlers)
[GIN-debug] POST   /Ask                      --> goopendrop/awdl.(*AWDLServer).StartWebServer.func3 (3 handlers)
[GIN-debug] POST   /Upload                   --> goopendrop/awdl.(*AWDLServer).StartWebServer.func4 (3 handlers)
[GIN-debug] Listening and serving HTTPS on [xxxx::xxxx:xxx:xxxx:f43%awdl0]:8772
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.

Not listed in `only contacts` mode

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Download XCode 13
  2. Follow the first two points of this issue
  3. Click on cert in XCode select export
  4. decrypt the cert with the commands in the issue above
  5. compile the airdrop-keychain-extractor
  6. Run it and it error's out but the validation_record.cms is created successfully
  7. Run GoOpenDrop
  8. Add the AppleID as kontact
  9. Airdrop via iPhone/iPad/MacBook (With same and different AppleID) and see GoOpenDrop listed but not as "person"
  10. Also Send from GoOpenDrop to iPhone/iPad/MacBook works in everyone but in only kontacts i get Client Rejected or Failed, HTTP code: 401

Expected behavior
listed when only kontacts is selected

Desktop:

  • OS: MacOS 11.7.8 MacBook Pro 2013
  • Browser safari
  • Version 16.51

iPad:

  • Device: iPad Air 2
  • OS: iOS15.5
  • Browser: safari

Smartphone:

  • Device: iPhone6
  • OS: iOS12.5.7
  • Browser: safari

Additional context
Wifi Module : Alfa AWUS036ACM

server(PI zero W) output:

pi@pi:~/GoOpenDrop $ sudo out/arm/goopendrop config.json
INFO[0000] Config File: config.json
INFO[0000] Using Wifi Interface: wlan1
WARN[0000] Waiting for AWDL Interface (awdl0) to Start
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:   export GIN_MODE=release
 - using code:  gin.SetMode(gin.ReleaseMode)

[GIN-debug] POST   /Discover                 --> goopendrop/awdl.(*AWDLServer).StartWebServer.func1 (3 handlers)
[GIN-debug] HEAD   /                         --> goopendrop/awdl.(*AWDLServer).StartWebServer.func2 (3 handlers)
[GIN-debug] POST   /Ask                      --> goopendrop/awdl.(*AWDLServer).StartWebServer.func3 (3 handlers)
[GIN-debug] POST   /Upload                   --> goopendrop/awdl.(*AWDLServer).StartWebServer.func4 (3 handlers)
[GIN-debug] Listening and serving HTTPS on [fe80::2c0:caff:feb1:ab02%awdl0]:8772
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
INFO[0008] Airdrop Beacons Received from address=13:33:01:88:C4:CF, with rssi=-24
INFO[0010] Found New Device with ip: fe80::a8ba:faff:fea5:94cb and hostname: 8ffe77b0-b90e-4ec5-befa-97bc909eaae6.local., Trying to Discover it...
[GIN] 2023/08/15 - 22:48:10 | 200 |         317µs |                 | POST     "/Discover"
ERRO[0010] Post "https://[fe80::a8ba:faff:fea5:94cb%25awdl0]:8770/Discover": dial tcp [fe80::a8ba:faff:fea5:94cb%awdl0]:8770: connect: connection refused
INFO[0010] Found New Device with ip: fe80::a8ba:faff:fea5:94cb and hostname: 8ffe77b0-b90e-4ec5-befa-97bc909eaae6.local., Trying to Discover it...
ERRO[0010] Post "https://[fe80::a8ba:faff:fea5:94cb%25awdl0]:8770/Discover": dial tcp [fe80::a8ba:faff:fea5:94cb%awdl0]:8770: connect: connection refused
INFO[0041] Airdrop Beacons Received from address=13:33:01:88:C4:CF, with rssi=-36
INFO[0074] Airdrop Beacons Received from address=13:33:01:88:C4:CF, with rssi=-39
INFO[0107] Airdrop Beacons Received from address=13:33:01:88:C4:CF, with rssi=-36
INFO[0122] Found New Device with ip: fe80::a8ba:faff:fea5:94cb and hostname: c87c2c53-da54-4f23-99c8-6a5edec9b418.local., Trying to Discover it...
ERRO[0123] Post "https://[fe80::a8ba:faff:fea5:94cb%25awdl0]:8770/Discover": dial tcp [fe80::a8ba:faff:fea5:94cb%awdl0]:8770: connect: connection refused
INFO[0123] Found New Device with ip: fe80::a8ba:faff:fea5:94cb and hostname: c87c2c53-da54-4f23-99c8-6a5edec9b418.local., Trying to Discover it...
ERRO[0123] Post "https://[fe80::a8ba:faff:fea5:94cb%25awdl0]:8770/Discover": dial tcp [fe80::a8ba:faff:fea5:94cb%awdl0]:8770: connect: connection refused
WARN[0128] Service Time out
INFO[0140] Airdrop Beacons Received from address=13:33:01:88:C4:CF, with rssi=-33
[GIN] 2023/08/15 - 22:50:22 | 200 |     243.986µs |                 | POST     "/Discover"
INFO[0173] Airdrop Beacons Received from address=13:33:01:88:C4:CF, with rssi=-30
INFO[0219] Found New Device with ip: fe80::a8ba:faff:fea5:94cb and hostname: 74acfa02-de53-4f6f-b406-8e44bf943d28.local., Trying to Discover it...
ERRO[0219] Post "https://[fe80::a8ba:faff:fea5:94cb%25awdl0]:8770/Discover": dial tcp [fe80::a8ba:faff:fea5:94cb%awdl0]:8770: connect: connection refused
INFO[0256] Found New Device with ip: fe80::a8ba:faff:fea5:94cb and hostname: 8e5e8054-dbef-46bc-9ff2-ca4776fbe509.local., Trying to Discover it...
ERRO[0256] Post "https://[fe80::a8ba:faff:fea5:94cb%25awdl0]:8770/Discover": dial tcp [fe80::a8ba:faff:fea5:94cb%awdl0]:8770: connect: connection refused
INFO[0256] Found New Device with ip: fe80::a8ba:faff:fea5:94cb and hostname: 8e5e8054-dbef-46bc-9ff2-ca4776fbe509.local., Trying to Discover it...
ERRO[0256] Post "https://[fe80::a8ba:faff:fea5:94cb%25awdl0]:8770/Discover": dial tcp [fe80::a8ba:faff:fea5:94cb%awdl0]:8770: connect: connection refused
WARN[0260] Service Time out
INFO[0276] Airdrop Beacons Received from address=13:33:01:88:C4:CF, with rssi=-35
[GIN] 2023/08/15 - 22:52:38 | 200 |     200.001µs |                 | POST     "/Discover"
INFO[0333] Accepted File Transfer Request From: iPad
[GIN] 2023/08/15 - 22:53:33 | 200 |  209.678327ms |                 | POST     "/Ask"
INFO[0334] Downlading File From: iPad
[GIN] 2023/08/15 - 22:53:37 | 200 |  3.371812797s |                 | POST     "/Upload"
INFO[0338] Received New File from: iPad, with IP: . File size: 1179025
INFO[0338] Airdrop Beacons Received from address=13:33:01:88:C4:CF, with rssi=-36
INFO[0371] Airdrop Beacons Received from address=13:33:01:88:C4:CF, with rssi=-27
WARN[0396] Service Time out
INFO[0404] Airdrop Beacons Received from address=13:33:01:88:C4:CF, with rssi=-33
INFO[0517] Airdrop Beacons Received from address=38:66:A2:40:63:4D, with rssi=-67
WARN[0524] Service Time out

Stuck on "Waiting for AWDL Interface (awdl0) to Start"

On a desktop computer,
Software: Ubuntu 22.04.1 LTS
Go version: "go version go1.18.1 linux/amd64"
Hardware device is a Ralink Technology, Corp. MT7601U Wireless Adapter.

Ran
sudo iw phy phy1 interface add mon0 type monitor
sudo ifconfig mon0 up

iw dev shows that mon0 exists

phy#1
	Interface mon0
		ifindex 5
		wdev 0x100000002
		addr e8:4e:06:99:0f:43
		type monitor
		txpower 20.00 dBm

Running sudo ./goopendrop ./config.json in out/amd64 returns

INFO[0000] Config File: ./config.json                   
INFO[0000] Using Wifi Interface: mon0                   
WARN[0000] Waiting for AWDL Interface (awdl0) to Start

and it does not change from that.

Thanks for the support

Raspberry Pi Zero W 1.1 shows error

after running ./Build_Pi.sh to set up,
running sudo ./goopendrop ./config.json in ~/GoOpenDrop/out/arm returns Illegal instruction
running sudo ./goopendrop ./config.json in ~/GoOpenDrop/out/arm64 returns ./goopendrop: 4: Syntax error: Unterminated quoted string
go version is go version go1.19.2 linux/arm, uname -r is 5.15.61+.
I know that it's not built the Pi Zero W, but I wanted to try it out anyway.
Love what you're doing. Keep it up!

Send from Linux/Mac to iPhone ok?

Can anyone send from Linux/Mac to iPhone with this project?
If yes, what is the OSX version & what is the IOS version & iphone model ?

GoOpenDrop neither sending nor recieving

When I run sudo ./goopendrop ./config.json, the output is:

INFO[0000] Config File: ./config.json
INFO[0000] Using Wifi Interface: mon0
WARN[0000] Waiting for AWDL Interface (awdl0) to Start
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
...

When I open my iPhone (running iOS 16), go to the photos app, select a photo, and open the airdrop menu it updates:

INFO[0022] Airdrop Beacons Received from address=xx:xx:xx:xx:xx:xx, with rssi=-33

but GoOpenDrop doesn't appear on the iPhone at all.

I have a folder under OUTBOX with the name "test", the same name as my iPhone. Inside that folder is a photo, verified.png. According to the readme, that photo is supposed to be sent to my phone, but nothing like that happens.

My hardware is a raspberry pi zero w 1.1, with a Ralink Technology, Corp. MT7601U Wireless Adapter. I'm using official apple keys.

Any way of using without expensive keys?

Is your feature request related to a problem? Please describe.
Is there any way to not use the keys, e.g. by using a flag or doing something similar?

Additional context
The developer certificate needed for extracting keys requires a yearly fee of 99$

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.