找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15469|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr9 L4 \4 ?* A' N! i  M
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig" {2 x/ H% w( L; z  h* W
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:! T* q. N, M) y9 v* ?" c& Y
usage: himr <address> <value>. sample: himr 0x80040000 0x0
6 P, _9 A5 `; m' o: _/ W; [$ l, \6 ]0 M0 y7 u% f

( r1 F/ z$ @7 j& ?# y# K$ `3 B# y不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?) @- |4 v1 ~; D! g, d& G: p
- O6 w) ]" m3 ^( [) u8 N( X
补充内容 (2012-3-8 09:42):
1 J6 {. \7 r8 t1 Nhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
' ]+ Q; y4 J# B8 _' V' V这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。; N+ K  u' j+ L0 q

# j% F8 e1 ^* q: r+ n9 y: ]himr <address> <value>. sample: himr 0x80040000 0x0
0 A( v+ ^. ^4 ?5 ]
3 y6 r8 m- p4 t  F例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
9 A, a* b7 e8 E5 @himr 0x80040000 0x00
. |3 G6 f- q! w+ x  }7 khimr 0x80040001 0x117 U' |3 b" \# T5 V; T" \* p1 {6 V$ _
himr 0x80040002 0x22' I) K3 h/ b- L2 X
himr 0x80040003 0x338 h* a- {8 s- V$ a# D5 f& f; ]
himr 0x80040004 0x44
# b$ O2 ]4 h3 M# Zhimr 0x80040005 0x55
0 O2 S! M0 y/ W. q# o" z0 m7 m1 u0 A3 b+ }9 z8 f
SN也是类似。
9 Q5 H  {4 h* A5 V* ^
4 b: _; Z. I9 v1 y/ B; K现在主要是,谁告诉我们MAC和SN的地址?
/ i  B" N5 f  z; f: E  a
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 U: H. z$ n$ d5 U一直想找到运程修改MAC和SN的办法,苦于无解啊
# R# R( B9 J7 @7 r6 D" P
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
. ~& W3 A/ V# K+ n) C# W  X+ l; W8 i- M
修改的代码早有了。到今天不会编译。6 c5 f" U+ Y- `9 G
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; i3 Z* X' j; O; Y7 s
  2. #include <malloc.h>
    ! j0 M1 T4 Y3 [# L; l) g; L( ?  e  ~
  3. #include <sys/types.h>$ E# N9 K8 k$ C
  4. #include <sys/stat.h>$ M1 ^) \5 P% m
  5. #include <sys/ioctl.h>4 g- m+ U' _4 F2 d3 ], ?9 ]7 F( p% M: O
  6. #include <stdio.h>
    8 q5 {4 G( o0 V  ]8 V3 j- [& n
  7. #include <string.h>( x" j$ |# g+ F9 `0 k$ l  {
  8. 4 {. i% ]1 X  ~# c3 v* h6 D
  9. typedef struct {6 \  \$ r) @7 I$ G7 @6 {. w
  10.         unsigned int        e2prom_cmd_sub_addr;
    + m) J( E$ R8 T% k
  11.         unsigned int        sub_addr_count;
    9 Z$ f3 @8 p5 {4 X" R& }) j2 h
  12.         unsigned char*        e2prom_cmd_data;: Z( J! u7 h; P9 G
  13.         unsigned int        data_count;
      m3 N% y; w' g9 P: q
  14. } e2prom_s_cmd;6 l& y. w) S' k/ r* S
  15. 0 ?8 x, x! O) i" L
  16. #define E2PROM_CMD_READ 1; B4 Z( \5 D- ^' f# V% E8 _: W
  17. #define E2PROM_CMD_WRITE 2
    4 \1 [9 z( ]( W& v# Q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16", b/ Y! y  W6 F, u, I6 ^
  19. $ u0 |; N6 X0 X
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    & z2 J; y/ ~# R+ K0 {1 }, K) F
  21. {- M4 D2 u! m# g9 J4 [
  22.         int fd, ret;/ s: H% R/ C% F$ h6 J! Z) y
  23.         e2prom_s_cmd arg;
    ; m0 @* K2 _3 F$ T3 L2 j
  24.         unsigned char buf[0x18];
    & e$ X% _* _& w6 `/ r0 T7 _

  25. , d3 z6 l. d1 \5 x# [" o7 @( m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    + y% [' Q! y) I6 b
  27.         if (fd  < 0) {/ r& ^3 Z( ]+ S9 D
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 t# J$ Y" F7 A+ l/ |6 O
  29.                 return -1;
    : r* d: ^1 X' a8 ]# z7 Y
  30.         }
    7 _$ b, J7 f8 J) e' C% ~+ t
  31.         arg.sub_addr_count      = 2;
    7 H) p: S0 U' Z3 d
  32.         arg.data_count          = 0x18;
    & D1 J& J6 h8 C
  33.         arg.e2prom_cmd_sub_addr = 0x290;% ]+ O! Q+ q3 Y' R
  34.         arg.e2prom_cmd_data     = buf;
    9 |+ O- m3 B+ O# B! P$ D+ ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);6 d. j) d- e* a: ]5 j1 P7 p
  36.         if (ret != 0) {
    ) j) a1 ^0 {, a4 ?8 H6 p
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);0 G5 a, b. s% M4 Q' W6 g* z) g
  38.                 return -1;
    ) q9 K- Z8 \, y; g7 L: H
  39.         }
    4 M+ o# Y, R* [- ]; ]
  40.         memcpy(mac, buf, 6);7 l, d/ L* W, {+ w; {0 k
  41.         memcpy(stbid, &buf[6], 18);" d6 G  r0 _! W' r
  42.         stbid[18] = '\0';
    # J7 v. R( K$ a! X
  43. - `" w3 D9 i1 e$ |, A  K
  44.         return 0;0 ^& A9 t% r+ r6 T' @
  45. }7 Z# v$ u$ H% v, t( I
  46. ' ]: ?* A- L# G. [
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 c5 w: W* D# N; C5 i
  48. {
    / k6 j" G* Z2 ~$ g# V: A1 Y- Y( w
  49.         int fd, ret;) o5 L$ C/ M+ G# V4 u- d5 P4 ?
  50.         e2prom_s_cmd arg;
    : G( I  @; v+ b
  51.         unsigned char buf[0x18];
    6 B" `1 K: b2 _( ~1 S
  52. 5 ?- J0 W3 \2 r3 V/ X8 l
  53.         memcpy(buf, mac, 6);! v( f- M) s$ w: x
  54.         memcpy(&buf[6], stbid, 18);
    - a& @: ]( C) N/ P& n
  55.         fd = open(E2PROM_DEVICE, O_RDWR);. ?6 P& D* u4 }; P& S
  56.         if (fd  < 0) {( N4 D$ a: \+ S0 U5 m
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 c$ e, x+ d. e+ B" d
  58.                 return -1;
    2 i7 L, _" ]( b' n( I0 g7 _
  59.         }- R# ^1 D: h( T4 V1 T5 Q
  60.         arg.sub_addr_count      = 2;
    - k4 p; ]- ?3 ~" y( o8 C9 i
  61.         arg.data_count          = 0x18;: G  A/ ?0 S8 {$ l9 R% @
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ) i! G' X% L5 V5 C$ @
  63.         arg.e2prom_cmd_data     = buf;
    # F* @* M3 X6 t; l9 z* d) u9 t/ p
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ; a- f6 c+ J) O2 Y, K' n% r: c
  65.         if (ret != 0) {
      i& O* b/ h8 Q! B2 A% I
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);4 p' F+ j) F7 ?: b. x
  67.                 return -1;1 O: V7 Y) r' K8 ?$ ~
  68.         }4 S( B' d, f+ e/ {) P' s, S

  69. ( Q* k$ s) Y/ F
  70.         return 0;
    ' b6 b' U) x4 @/ g3 O; c& C
  71. }
    5 a7 t! z, I* {3 S7 {! j* A, V

  72. & h) [6 a5 s, w4 K2 N$ z
  73. int main()
    - T3 b  u5 T& o' M+ n9 {% O
  74. {. u$ g1 h2 k4 P: K8 v0 p
  75.         char c;
    & d+ U+ m1 D# H3 U3 d8 Z( w" W& g' g, E
  76.         int i, macs[6];
    - e/ g, J3 u# L
  77.         unsigned char mac[6];
    1 J# ^. g1 ^- j% O% X
  78.         unsigned char stbid[256];5 R8 a, Y( q6 i2 ~0 Z6 `3 J
  79. 6 e) v; t* N. Z* i
  80.         if (readparam(mac, stbid) < 0). y+ l, j3 m) [
  81.                 return 1;
    0 o0 H9 o# s, l+ e/ R9 Y9 E
  82. / v' u" R: J- O2 i1 ?0 N
  83.         printf("Current parameters: \n");
    6 |# K- T* i) l2 o
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; j; m( Y5 q1 p+ d5 r, `/ l
  85.         printf("  STBID: %s\n", stbid);2 E4 T+ h$ M+ y' K$ i( [% G/ t
  86.         ! v- ~) h7 C, u% a5 l
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");* d) \- _7 ~) k( k8 U) D
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {: O3 Z4 Z! C- E) P' X
  89.                 printf("Input MAC error\n");
    # M) Q3 f8 M% p" k/ L+ B/ Z& f
  90.                 return 1;% c7 Z1 b# t( i" U3 T
  91.         }0 ]. R  \  l* B7 p1 A# N, {8 r* r
  92.         for (i=0; i<6; i++)mac[i] = macs[i];8 x6 L9 ^; U- b2 ~* C1 ?
  93.         printf("\nPlease input new STBID: ");" r& K5 [" |  z2 v" O* P7 y7 `3 o
  94.         scanf("%s", stbid);- H9 Z  J9 s  N: ^2 v) z; |. \; B" M
  95.         if (strlen(stbid) != 18) {
    1 n1 D4 j0 p1 [. S; Z# ~
  96.                 printf("Invalid stbid\n");( k  W. A  n, A5 I3 B, V
  97.                 return 1;4 v. J9 Y, y) }3 G: v
  98.         }
    8 \* B' T& ?# e
  99.         printf("\nNew parameters: \n");
    9 W& n$ H% O3 V+ k, Y" J( Q6 O
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 \( J. }3 o+ b2 b0 _# n# D
  101.         printf("  STBID: %s\n", stbid);: ]# o; d7 v9 u+ W* O# w3 n/ m
  102. ( J: u8 J/ o9 C8 K8 r; J( u. ]
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    2 @3 ~& U" Y) F8 ^  I
  104.         for (;;) {
    1 x" e  p5 Y; c7 J' i" o/ s8 E% O" ~
  105.                 c = getchar();
    6 E" M. q6 ^5 b' e
  106.                 if (c == 'y' || c == 'Y')$ H9 e9 l4 b4 Y. L& t, D
  107.                         break;& d3 Y4 `. r  ?2 O5 `
  108.                 if (c == 'n' || c == 'N') {
    8 c( r5 B# M& A7 u- M" m
  109.                         printf("\nAborted.\n");0 O7 O) y% U5 {' {; {. s+ M
  110.                         return 1;
    " ^& Q! j4 B  o1 `0 M
  111.                 }
    9 i5 L) M& l$ L- [
  112.         }
    2 P+ e. L; [" ~/ g+ J
  113.         if (writeparam(mac, stbid) == 0)
    * D' l2 F0 g/ U: ?5 o
  114.                 printf("Parameters changed.\n");
    / e4 r( C: H( R' u

  115. " ^' O  G$ @2 _5 C. V4 S
  116.         return 0;
    5 a/ i# d2 ^6 x) Z: g
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24
1 b  p; n# t' p& ]4 m在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

7 i6 Z5 P- |; G3 `8 M3 d3 t" U( R你用的编译命令行格式是什么?
  K3 b/ @; s# s, N; {
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-9 03:48 , Processed in 0.026270 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表