With the SharePoint Permissions Webservice you can get the Permissions from a List or Web. The Webservice returns information like this example from the WSS SDK:
1: <GetPermissionCollection xmlns="http://schemas.microsoft.com/sharepoint/soap/directory/">
2: <Permissions>
3: <Permission MemberID="1073741829" Mask="-1" MemberIsUser="False" MemberGlobal="False"
4: RoleName="Administrator" />
5: <Permission MemberID="1073741828" Mask="1029638927" MemberIsUser="False" MemberGlobal="False"
6: RoleName="Web Designer" />
7: <Permission MemberID="1073741827" Mask="1027801615" MemberIsUser="False" MemberGlobal="False"
8: RoleName="Contributor" />
9: <Permission MemberID="1073741826" Mask="138608641" MemberIsUser="False" MemberGlobal="False"
10: RoleName="Reader" />
11: <Permission MemberID="1073741825" Mask="134283264" MemberIsUser="False" MemberGlobal="False"
12: RoleName="Guest" />
13: <Permission MemberID="1073741830" Mask="134414337" MemberIsUser="False" MemberGlobal="False"
14: RoleName="Site_Group1" />
15: <Permission MemberID="1073741831" Mask="134283265" MemberIsUser="False" MemberGlobal="False"
16: RoleName="Site_Group2" />
17: .
18: .
19: .
20: </GetPermissionCollection>
If you want to convert the Mask to readable SPBasePermissions objects, the answer is:
1: SPBasePermissions permissions =
2: (SPBasePermissions) Enum.Parse(typeof (SPBasePermissions), permissionMask.ToString());
Quite simple. Isn't it?