Skip to content

A reverse engineering of .proto files for calling the gRPC services of a popular authentic social network.

License

Notifications You must be signed in to change notification settings

StayRealHQ/OGMA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OGMA

A reverse engineering of .proto files for calling the gRPC services of a popular authentic social network.

Roadmap
  • chat.core.v1.ChatCoreService/SendMessage
  • chat.core.v1.ChatCoreService/GetMessages
  • chat.core.v1.ChatCoreService/UpdateMessage
  • chat.core.v1.ChatCoreService/CreateConversation
  • chat.core.v1.ChatCoreService/AcceptConversation
  • chat.core.v1.ChatCoreService/UpdateConversation
  • chat.core.v1.ChatCoreService/ClearConversation
  • chat.core.v1.ChatCoreService/GetConversationFeed
  • chat.core.v1.ChatCoreService/GetConversationsById
  • chat.core.v1.ChatCoreService/TriggerMoment
  • chat.core.v1.ChatCoreService/GetUserPrefs
  • chat.core.v1.ChatCoreService/UpdateUserPrefs
  • chat.core.v1.ChatCoreService/RankConversation
  • chat.core.v1.ChatCoreService/CreateInvite
  • chat.core.v1.ChatCoreService/CreateInvites
  • chat.core.v1.ChatCoreService/HandleInvite
  • chat.core.v1.ChatCoreService/GetPendingInvites
  • chat.core.v1.ChatCoreService/GetSentInvites
  • chat.core.v1.ChatCoreService/ResetInviteLink
  • chat.core.v1.ChatCoreService/GetInviteLink
  • chat.core.v1.ChatCoreService/ViewInviteLink
  • chat.core.v1.ChatCoreService/JoinByInviteLink
  • media.upload.v1.MediaUploadService/CreateUploadUrls
  • realtime.core.v1.RealTimeStreamService/Stream
  • realtime.core.v1.RealTimeRouterService/Send
  • public.activity.v2.ActivityService/GetActivityFeed
  • public.activity.v2.ActivityService/MarkActivitiesAsSeen
  • public.discovery.v2.FeedDiscoveryV2Service/GetFeedV2
  • public.entity.v2.UserService/GetUsers (unavailable)
  • public.entity.v2.UserService/GetUserProfile
  • public.entity.v2.PostService/GetPosts
  • public.entity.v2.PostService/DeletePostRealmoji (unavailable)
  • public.entity.v2.PostService/CreatePostRealmoji (unavailable)
  • public.entity.v2.PostService/CreatePostComment (unavailable)
  • public.entity.v2.PostService/SetPostsAsPublic
  • public.entity.v2.PostService/CreatePostLike
  • public.entity.v2.PostService/DeletePostLike
  • public.entity.v2.PostService/CreateCommentReaction (unavailable)
  • public.entity.v2.PostService/DeleteCommentReaction (unavailable)
  • public.entity.v2.PostService/GetUserCommentReactions (unavailable)
  • public.entity.v2.PostService/GetNbCommentReactions (unavailable)
  • public.home.v2.FeedService/GetHomeFeed
  • public.home.v2.FeedService/MarkPostsAsSeen
  • public.home.v2.FeedService/GetWhatYouMissed
  • public.home.v2.StateService/GetMyState
  • public.location.v2.PlacesService/SearchPlaces
  • public.media.v2.MediaService/CreateUploadUrls
  • public.memories.v2.MemoriesService/GetMemoriesFeed
  • public.memories.v2.MemoriesService/GetTopMemories
  • public.pprofile.v2.PublicProfileService/GetFriendsWhoFollowTarget
  • public.relationship.v2.RelationshipService/GetUserRelationships
  • public.relationship.v2.RelationshipService/CreateRelationship
  • public.relationship.v2.RelationshipService/DeleteRelationship
  • public.relationship.v2.RelationshipService/ListRelationships
  • public.story.v2.StoryService/GetMyStories
  • public.story.v2.StoryService/GetMyStoryActivity
  • public.topic.v2.TopicService/SearchTopics
  • public.topic.v2.TopicService/GetExploreFeed
  • public.topic.v2.UserInterestService/GetUserInterest
  • public.topic.v2.UserInterestService/PutUserInterest
  • public.topic.v2.UserInterestService/GetContentTaxonomy
  • contacts.core.v1.ContactsService/Delete
  • contacts.core.v1.ContactsService/GetMatchedFriends
  • contacts.core.v1.ContactsService/GetSuggestions
  • contacts.core.v1.ContactsService/HideSuggestions
  • contacts.core.v1.ContactsService/Upload
  • entity.user.v1.UserService/GetOAUsers
  • entity.user.v1.UserService/GetUser
  • entity.user.v1.UserService/GenUsernames
  • entity.user.v1.UserService/GetUserBasicInfo
  • entity.user.v1.UserService/GetUserBasicInfoBatch
  • entity.user.v1.UserService/UserExists
  • entity.user.v1.UserService/CreateUser
  • entity.user.v1.UserService/UpdateUser
  • entity.user.v1.UserService/UpdateUserActivity
  • entity.user.v1.UserService/GetUserActivity
  • entity.user.v1.UserService/DeleteUser
  • entity.user.v1.UserService/SearchUsers
  • entity.user.v1.UserService/FindUsersByUsername
  • entity.user.v1.UserService/InsertUser
  • entity.user.v1.UserService/InsertUserRealmoji
  • entity.user.v1.UserService/AddUserRealmoji
  • entity.user.v1.UserService/DisableUserRealmoji
  • entity.user.v1.UserService/DeleteUserRealmoji
  • entity.user.v1.UserService/UserRealmojiExists
  • entity.user.v1.UserService/GetUserRealmojis
  • entity.user.v1.UserService/GetStreak
  • entity.user.v1.UserService/GetStreaks
  • entity.user.v1.UserService/UpdateStreak
  • feed.discovery.v1.FeedDiscoveryService/GetFeed
  • feed.discovery.v1.FeedDiscoveryService/FeedInteraction
  • feed.discovery.v1.FeedDiscoveryService/PostSeen
  • feed.discovery.v1.FeedDiscoveryService/ResetSeenPosts
  • feed.discovery.v1.FeedDiscoveryService/GetPublicPosts
  • entity.event.v1.EventService/CreateEvent
  • entity.event.v1.EventService/GetEvent
  • entity.event.v1.EventService/UpdateEvent
  • entity.event.v1.EventService/DeleteEvent
  • entity.event.v1.EventService/GetAllEvents
  • entity.event.v1.EventService/CreateVenue
  • entity.event.v1.EventService/GetVenue
  • entity.event.v1.EventService/UpdateVenue
  • entity.event.v1.EventService/DeleteVenue
  • entity.event.v1.EventService/GetAllVenues
  • entity.post.v1.PostService/GetPost
  • entity.post.v1.PostService/GetPosts
  • entity.post.v1.PostService/GetPostInteractions
  • entity.post.v1.PostService/GetPostInteractionCounts
  • entity.post.v1.PostService/GetUserInteractions
  • entity.post.v1.PostService/GetCommentsByStatus
  • entity.post.v1.UnifiedPostService/GetUnifiedPost
  • entity.post.v1.UnifiedPostService/GetUnifiedPosts
  • entity.post.v1.UnifiedPostService/CreateUnifiedPost
  • entity.post.v1.UnifiedPostService/DeleteUnifiedPost
  • entity.post.v1.UnifiedPostService/RestoreUnifiedPost
  • entity.post.v1.UnifiedPostService/UpdateUnifiedPost
  • entity.post.v1.UnifiedPostService/GetUnifiedPostsOfUser
  • entity.post.v1.UnifiedPostService/DeleteUserData
  • entity.post.v1.UnifiedPostService/CreateUnifiedPostRealmoji
  • entity.post.v1.UnifiedPostService/GetUnifiedPostRealmojis
  • entity.post.v1.UnifiedPostService/DeleteUnifiedPostRealmoji
  • entity.post.v1.UnifiedPostService/CreateUnifiedPostComment
  • entity.post.v1.UnifiedPostService/DeleteUnifiedPostComment
  • entity.post.v1.UnifiedPostService/GetUnifiedPostComments
  • entity.post.v1.UnifiedPostService/CreateUnifiedPostTag
  • entity.post.v1.UnifiedPostService/DeleteUnifiedPostTag
  • entity.post.v1.UnifiedPostService/GetUnifiedPostTags
  • entity.post.v1.UnifiedPostService/CreateUnifiedPostScreenshot
  • entity.post.v1.UnifiedPostService/GetUnifiedPostScreenshots
  • event.frontend.v1.EventViewService/GetMainEventView
  • event.frontend.v1.EventMembershipService/JoinEvent
  • event.frontend.v1.EventMembershipService/LeaveEvent
  • event.frontend.v1.EventMembershipService/UpdateEventLocation
  • event.frontend.v1.EventFeedService/GetOfficialFeed
  • event.frontend.v1.EventFeedService/GetOwnAndFriendsFeed
  • event.frontend.v1.EventFeedService/GetOnsiteFeed
  • event.frontend.v1.EventFeedService/GetOffsiteFeed
  • event.frontend.v1.EventFeedService/GetEveryoneFeed
  • event.frontend.v1.EventSearchService/GetAllEvents
  • event.frontend.v1.EventPostService/CreatePost
  • event.frontend.v1.EventPostService/DeletePost
  • event.frontend.v1.EventAdminService/CreateEvent
  • event.frontend.v1.EventAdminService/DeleteEvent
  • event.frontend.v1.EventAdminService/TriggerNotification
  • officialaccounts.discovery.v1.DiscoveryService/GetRecommendations
  • officialaccounts.discovery.v1.DiscoveryService/GetAll
  • officialaccounts.feed.v1.FeedService/GetMentionsFeed
  • officialaccounts.feed.v1.FeedService/GetRankedMentionsFeed
  • officialaccounts.feed.v1.FeedService/GetActivityFeed
  • officialaccounts.feed.v1.FeedService/GetOAProfileFeed
  • officialaccounts.feed.v1.FeedService/GetOAFanFeed
  • officialaccounts.feed.v1.FeedService/GetOAActivityFeed
  • officialaccounts.feed.v1.FeedService/GetPostMetrics
  • officialaccounts.feed.v1.FeedService/GetOAPost
  • officialaccounts.feed.v1.FeedService/GetOARecommendationsFeed
  • officialaccounts.feed.v1.FeedService/GetFanFeed
  • officialaccounts.feed.v1.FeedService/GetEngagementMetrics
  • officialaccounts.feed.v1.ViewService/GetOAProfileView
  • officialaccounts.relationships.v1.RelationshipsService/Follow
  • officialaccounts.relationships.v1.RelationshipsService/Unfollow
  • officialaccounts.relationships.v1.RelationshipsService/EnablePostNotifications
  • officialaccounts.relationships.v1.RelationshipsService/DisablePostNotifications
  • officialaccounts.relationships.v1.RelationshipsService/GetPostNotificationStatus
  • officialaccounts.relationships.v1.RelationshipsService/GetAllFollowing
  • officialaccounts.relationships.v1.RelationshipsService/GetFollowerStatus
  • officialaccounts.relationships.v1.RelationshipsService/GetFollowerCount
  • officialaccounts.relationships.v1.RelationshipsService/GetFriendsFollowingOA
  • officialaccounts.relationships.v1.RelationshipsService/GetCommentsByStatus
  • officialaccounts.settings.v1.OfficialAccountsSettingsService/GetOfficialAccountSettings
  • officialaccounts.settings.v1.OfficialAccountsSettingsService/UpdateOfficialAccountSettings
  • relationship.contactinvites.v1.ContactinvitesService/Create
  • relationship.contactinvites.v1.ContactinvitesService/CreateMany
  • relationship.contactinvites.v1.ContactinvitesService/List
  • relationship.contactinvites.v1.ContactinvitesService/ListDormantFriends
  • relationship.contactinvites.v1.ContactinvitesAdminService/Create
  • relationship.contactinvites.v1.ContactinvitesAdminService/GetByExternalId
  • relationship.contactinvites.v1.ContactinvitesAdminService/List
  • relationship.contactinvites.v1.ContactinvitesAdminService/DeleteByUserId
  • relationship.contactinvites.v1.ContactinvitesAdminService/Update
  • relationship.friendrequest.v1.FriendRequestService/CreateFriendRequest
  • relationship.friendrequest.v1.FriendRequestService/GetEdges
  • relationship.friends.v1.FriendsService/AreFriends
  • relationship.friends.v1.FriendsService/IsFriendWith
  • relationship.frontend.v1.RelationshipService/GetUserRelationships
  • relationship.graph.v1.RelationshipService/GetEdge
  • relationship.graph.v1.RelationshipService/GetEdges
  • relationship.graph.v1.RelationshipService/ListEdges
  • relationship.graph.v1.RelationshipService/AddEdgeAndInverse
  • relationship.graph.v1.RelationshipService/RemoveInverseEdge
  • relationship.graph.v1.RelationshipService/RemoveEdgeAndInverse
  • relationship.graph.v1.RelationshipService/VertexCount
  • relationship.graph.v1.RelationshipService/AsyncRemoveVertex
  • relationship.graph.v1.RelationshipService/SetEdgeState
  • relationship.graph.v1.RelationshipService/AdminAddEdgeAndInverse
  • relationship.graph.v1.RelationshipService/ListEdgesBatch
  • relationship.graph.v1.RelationshipService/GetFriendIDs
  • relationship.graph.v1.RelationshipService/GetFoFIDs
  • relationship.post.v1.PostService/GetLastNMomentsOfUserPosts
  • relationship.post.v1.PostService/GetLatestMomentPostsForUsers
  • relationship.post.v1.PostService/GetPostStates
  • relationship.socialproof.v1.SocialProofService/GetForRealette
  • relationship.tag.v1.TagService/GetTaggedPostIds
  • search.frontend.v1.SearchService/OASearch
  • search.frontend.v1.SearchService/SearchUsers

...and there's still probably missing methods in there !

Generating a .desc file

protoc --proto_path=proto --descriptor_set_out=ogma.desc \
  proto/public/**/*.proto \
  proto/common/**/*.proto

You'll be able to use the ogma.desc file with any tool that supports it.

Contributing

You may need the following tools.

  • protoc for decoding known and compiling protobuf files
  • decode_raw for decoding unknown protobuf files with syntax highlighting
  • bun for running scripts in this repository

Once done, you can install the dependencies using bun install.

Usage of decode.mts

You first need a raw request or response from the service and you should put it in the bins/ directory (mkdir bins if none exists).

If the message you want to decode is already in the proto/ directory, you can decode it using the following command.

bun decode.mts bins/SearchUsersResponse.bin search.frontend.v1.SearchService/SearchUsersResponse

However, if you're willing to contribute and your message is not in the proto/ directory, you can raw decode it using the following command.

bun decode.mts bins/UnknownMessageResponse.bin

It'll print the raw protobuf message in the terminal for easier debugging, we won't elaborate on how to retrieve the proper fields from the raw message, do as you wish.

About

A reverse engineering of .proto files for calling the gRPC services of a popular authentic social network.

Topics

Resources

License

Stars

Watchers

Forks