找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15715|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 m" R) v  r+ O* S6 e( V7 u
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - S/ J" E& W" `1 o1 _. n
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
1 F6 C& S+ t, ^# n  zusage: himr <address> <value>. sample: himr 0x80040000 0x0
' ?, q" |: C* T. c( q; @8 R# z, L6 {( U$ ]

# C( v: r0 i9 G1 M5 s" b- i# T5 {$ v不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* b* P! n3 C( Z7 Y0 G) T! S' L, m9 a6 o6 s# o, h  T
补充内容 (2012-3-8 09:42):
, ~% B% m$ \# i" q' z' F. M' Bhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数/ q, c9 P" R3 m% t. n$ A) s8 m! u
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
. h, d7 ^4 T# `1 M* e$ i" m" B$ m& @8 G, v/ Y2 R
himr <address> <value>. sample: himr 0x80040000 0x0
2 r; z; S( X, i+ _1 O( A! H/ J/ X; w. J1 O& L9 J8 E
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
" k. d- ~& X+ ~9 T6 H* Vhimr 0x80040000 0x00& M  j2 L# C2 x4 L
himr 0x80040001 0x11! @' C* R* n. r8 n
himr 0x80040002 0x223 O% h2 y3 E1 a  A# O3 C
himr 0x80040003 0x339 r1 c, h7 W1 y+ J! \+ O
himr 0x80040004 0x440 n' u; q8 T8 k4 x+ g: X
himr 0x80040005 0x55
0 _0 c& Q6 q# p
# c' u4 ~. Q! r% c( d* `SN也是类似。+ E" y$ I6 Y3 ^$ r0 r# V

4 |+ }8 H+ @3 Q: K8 n现在主要是,谁告诉我们MAC和SN的地址?
# ]& D; A  s( T& [0 V
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 & R5 N' F% N' a
一直想找到运程修改MAC和SN的办法,苦于无解啊

9 V7 y# [# s; u( Z$ ]  N' g源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
' e1 }0 e7 o) m3 r- V( n0 L: `* I$ {( ^3 p8 b
修改的代码早有了。到今天不会编译。
3 C( W& }" z1 e1 ]/ N! \6 R% e需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>8 q* j/ R! R3 z# D1 |4 Z9 b6 C
  2. #include <malloc.h>8 Z, o/ C0 Y1 E
  3. #include <sys/types.h>
    : V! w! f8 e: X' s( l
  4. #include <sys/stat.h>9 W7 k9 ~- u8 j  W; \/ A
  5. #include <sys/ioctl.h>
    ; V9 g1 J; {. ]. Z  m7 E; d
  6. #include <stdio.h>
    " ^( `2 g8 Z9 F/ [
  7. #include <string.h>* Y/ X5 r4 C. W  W8 M
  8. ' e2 Q3 h  B! Q" k. l+ c# S5 O
  9. typedef struct {
    8 c. O" [) B1 e7 ]6 P
  10.         unsigned int        e2prom_cmd_sub_addr;" r) z1 ~: Z$ y  M! x
  11.         unsigned int        sub_addr_count;, J5 \2 L; @% X& h% @
  12.         unsigned char*        e2prom_cmd_data;
    - x4 k9 R3 p0 \) O! _; \
  13.         unsigned int        data_count;
    9 s$ b& Y* j+ f9 r: R1 Q
  14. } e2prom_s_cmd;5 H: |) `7 D7 J0 |
  15. , u, _- B' f5 g" c- @" s  s9 \
  16. #define E2PROM_CMD_READ 1( I; x/ H; J' q4 T) E3 k& X0 s: Z7 q
  17. #define E2PROM_CMD_WRITE 2
    & _' _0 s- ]4 e! X0 o; a! [
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 x+ v( z, G3 y1 C2 J) v3 t
  19. 5 k( C2 N5 k4 M8 m6 s
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ) R; f. X: P: B* R- E1 [- A
  21. {
    ' ]' O! C+ J! Y. u
  22.         int fd, ret;
    % y+ P1 E, p6 v9 v
  23.         e2prom_s_cmd arg;& V- [; `( Q: q# N% F0 p
  24.         unsigned char buf[0x18];- @9 ~0 X/ U! s+ ]) m8 V* e! f
  25. , @& @8 q# ]9 ^+ {: w! |  V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);6 Z0 {& T$ E& Z2 j
  27.         if (fd  < 0) {9 @" ^; c% B. T, P$ A  Q4 a
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # p9 T. R; B5 i6 D& F
  29.                 return -1;2 B/ E+ T- p  H3 y( J, Q* s
  30.         }
    4 g9 G6 Q  T4 H! R& n7 L; q2 m& v
  31.         arg.sub_addr_count      = 2;) C. f  J, W4 Y" o' t" ?6 V; k
  32.         arg.data_count          = 0x18;9 W0 S+ n& W( I; [5 e" n) Y0 {  Q
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 v8 t. @& T/ q' R
  34.         arg.e2prom_cmd_data     = buf;+ N. Z6 s) o6 J
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % Z5 j) l# [4 [: q8 \
  36.         if (ret != 0) {
    7 m, q+ W2 ]' d* p) [% B5 |6 R* j
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
      ^! X  o6 E' X: K
  38.                 return -1;; ?' G* c+ y: L
  39.         }8 E, M% {; O% ?+ M$ ?0 D7 s+ g' e
  40.         memcpy(mac, buf, 6);
      @, P# J# a4 n5 r7 N( v
  41.         memcpy(stbid, &buf[6], 18);
    ; |) L) _9 ]8 u6 d& O3 ?' T
  42.         stbid[18] = '\0';( `- c  w8 m+ s( e) o' i

  43. 8 R% r) z2 l) ^. b3 H" X
  44.         return 0;
    $ p5 p7 ]2 g. T. K
  45. }5 l4 I  c  E* k' z7 Y

  46. 1 c! s2 Y3 P8 y  d1 |& d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 T7 Q# P3 e! M) J9 S, R
  48. {) F2 H+ L/ R! T0 Y, a
  49.         int fd, ret;8 K$ B- m0 T2 r7 M
  50.         e2prom_s_cmd arg;1 [/ W) z$ _/ ?4 `  v8 S: T
  51.         unsigned char buf[0x18];( w5 k5 {2 O: X$ Q* m6 q/ E
  52. 2 U: z' U- h3 J$ w
  53.         memcpy(buf, mac, 6);$ X$ l) x' Y/ _1 o* \9 T
  54.         memcpy(&buf[6], stbid, 18);/ h! }! r( N0 ^* H
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 i- ^6 m# e, ]  |# Q9 q
  56.         if (fd  < 0) {
    0 O' I1 [; S! r2 F8 O+ S  Q6 E
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # f6 v" Y7 f4 c$ M3 Z, L. u
  58.                 return -1;
    ( z) v2 y. B& T' [5 P( d( [
  59.         }
    " ~: ?* i4 E5 X4 {* t
  60.         arg.sub_addr_count      = 2;
    : R( @( _. J! n) |, |
  61.         arg.data_count          = 0x18;& U0 C7 [! g! r% K) F2 S% o
  62.         arg.e2prom_cmd_sub_addr = 0x290;7 u' o. ~$ E' \; ]# _
  63.         arg.e2prom_cmd_data     = buf;- E9 M2 ^+ T5 p1 |6 h
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 k5 V: \- j5 G$ d/ f2 i0 w
  65.         if (ret != 0) {
    9 b4 i: D9 i9 i: |0 A  f
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    , ~; B1 y. F' w; O6 v2 i
  67.                 return -1;
    : [. [' g+ p& q' n- \# c
  68.         }& K- P0 u' Z+ _: h' _& T) z
  69. $ M8 W) ?, E- [# f5 ~/ |
  70.         return 0;1 H8 g1 a% P) Z0 v+ ?  e: |
  71. }8 h$ ]% `3 F6 C& S* _$ ?

  72. - J8 F% {, h  }- ?
  73. int main()
    8 @( F: m! i% A7 G1 P, s
  74. {7 n4 T* Q0 o$ [( @- u0 P3 A7 y
  75.         char c;' ~* C# A# A% S9 }# z
  76.         int i, macs[6];' y! U7 q% ^7 `' r+ A) T
  77.         unsigned char mac[6];
    $ W4 U. |0 ^. K
  78.         unsigned char stbid[256];
    & N- Z0 o9 X1 G: x, k: k% m7 i

  79. 1 i/ A$ }! i" [
  80.         if (readparam(mac, stbid) < 0)8 ]# j. G5 y. S
  81.                 return 1;
    " o  B; n3 K/ `' D2 ?0 _
  82. 5 T. g) S6 v# l1 o6 u
  83.         printf("Current parameters: \n");; h/ s0 l0 n% U  ~
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 p1 @! M# ?5 B6 s% _2 @
  85.         printf("  STBID: %s\n", stbid);
    ' U. O! ?! R# s% y' b
  86.        
    0 w8 Y$ w6 p& L9 l
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    + @+ m& P" A3 e8 {
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    $ e! F, C, @( F
  89.                 printf("Input MAC error\n");& u# S# G3 u) x! }1 d+ m% f
  90.                 return 1;7 X) L( E& [- b- \8 F
  91.         }4 Z# m5 G6 V+ j5 \# E4 ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];! j% V( K) O9 F- D6 ^
  93.         printf("\nPlease input new STBID: ");9 r! s7 \* V1 K+ R8 ~, W# }
  94.         scanf("%s", stbid);
    2 Z& H8 M2 k. ~, N9 {
  95.         if (strlen(stbid) != 18) {
    # T( j$ F# m& B
  96.                 printf("Invalid stbid\n");
    . O8 s+ n8 G: H( V% c5 x: p- x
  97.                 return 1;. H! D. U- r. U/ g" ?9 w2 l3 D
  98.         }
    0 `, R) E% w) u7 z5 f, {6 I2 `
  99.         printf("\nNew parameters: \n");3 r/ l( |2 D& i- o% ?" l6 Y+ C7 b) e
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 K& H! H+ g5 ~2 }
  101.         printf("  STBID: %s\n", stbid);
    " d- j6 R, T: d2 z/ `

  102. - C3 z5 ?6 r$ G/ q( B- P
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    0 ?  Z- h3 }4 t
  104.         for (;;) {+ S" i! Y# A* \# _1 S
  105.                 c = getchar();
    : Q) s8 l1 m& G  \% X
  106.                 if (c == 'y' || c == 'Y')7 c- I. w& X6 H; Y
  107.                         break;; f# ^# c" r( {: c" j
  108.                 if (c == 'n' || c == 'N') {5 {) z5 P3 O2 m; Z4 q
  109.                         printf("\nAborted.\n");4 ?# ]: o: L9 {' ], }) j2 d
  110.                         return 1;8 H" }; `7 E2 s
  111.                 }
    & ^3 Y/ s! w. R5 _. V3 a
  112.         }
    7 l& ~6 j# W( r0 |  E
  113.         if (writeparam(mac, stbid) == 0) . N3 m& ^$ @; t, x
  114.                 printf("Parameters changed.\n");
    ) Z  C  E% M. ~( k+ Q3 r- k
  115. ; M& J2 Z/ u" R4 Y( R
  116.         return 0;8 D# T& ^0 O# e! T/ E! t
  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
! ?  j5 G$ b% o7 R; R% E1 p% [' g0 f在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
$ K7 q& ]* ]. ^; f' ~4 N
你用的编译命令行格式是什么?
2 L/ ^- }. |$ n; Y/ s8 Z$ y3 v
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-2 20:14 , Processed in 0.025509 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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