找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15647|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ \3 ~: w8 S( z4 T/ O
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig+ o7 A! z- p3 ]3 o4 L
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
( Z/ o! C) e" E5 eusage: himr <address> <value>. sample: himr 0x80040000 0x0
2 r8 s# c- ~/ p& \& x$ N  k/ ?/ j& U5 S
  A/ B2 d3 O+ r: \, O8 e+ {  Z0 @+ ?
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 s3 I- _3 ]# ~0 B. w/ j
  V8 d# b" i9 f* R
补充内容 (2012-3-8 09:42):3 w) I# l- U% h( _, R& `. @
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
2 s% @8 O' [' S% l: y这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。3 ?! W, j2 I9 a& \3 L

$ D7 A! `" J* M; ehimr <address> <value>. sample: himr 0x80040000 0x03 q# u  }$ b, [) }9 L) ?
" J+ x+ |" x4 y" [& d. v/ x
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& i( ]: l& ^  D/ hhimr 0x80040000 0x00
$ r+ D. X3 ^. B, U. @' ohimr 0x80040001 0x11
! w6 Q/ M' p8 K0 T# k6 Ohimr 0x80040002 0x22
, S" N7 ^. w" W  M! c, qhimr 0x80040003 0x33+ d' b! u; x/ n8 n6 Y, x
himr 0x80040004 0x448 ?# d8 _: X+ w2 I0 ?
himr 0x80040005 0x555 L# N- p( @7 |7 \5 J1 c8 D
8 P- o' Y) ^& i$ [  T& }
SN也是类似。) |3 g6 i0 n9 E) ^, T
/ H5 T  }+ B. j. {# G
现在主要是,谁告诉我们MAC和SN的地址?8 b3 N$ m1 Y) M8 B  g: f
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37   a/ t7 L9 E" K+ W% f: r% L& h7 ^
一直想找到运程修改MAC和SN的办法,苦于无解啊

* Y' }/ o3 \: O. J源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
  t4 Y( F# q: C5 j- d( m  C6 t+ C* ?3 ]) {. k% e
修改的代码早有了。到今天不会编译。
5 S2 h8 d9 e& F+ d1 |需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) [! h& K' V8 G& B0 R3 P
  2. #include <malloc.h>
      z3 |4 [4 j9 d6 ^  R; n: y
  3. #include <sys/types.h>' F& i3 ]- Q3 j# i4 w, j
  4. #include <sys/stat.h>
    ( T' K6 j( L- R# h
  5. #include <sys/ioctl.h>
    1 B) e( @0 k. _# K7 C6 |) x7 f
  6. #include <stdio.h>
    2 Y2 z6 u9 @% N5 F( h, }' `
  7. #include <string.h>$ z4 c: x! Z( C# n6 |

  8. 0 j8 C- J! C( F( ^) f6 }) o
  9. typedef struct {
    7 K' c0 [5 S! [" y; m' c  E
  10.         unsigned int        e2prom_cmd_sub_addr;, K; P/ p6 j* h9 U$ u+ c
  11.         unsigned int        sub_addr_count;
      t* ~6 O' k( c9 P5 y
  12.         unsigned char*        e2prom_cmd_data;
    & A; i  B/ _, z! r% [+ O- H
  13.         unsigned int        data_count;
    ; X6 m5 }& Q7 h' O; d8 M, y% K
  14. } e2prom_s_cmd;/ D- r1 w( l: J. w& ~
  15. % V! K7 R1 k1 o0 Q! D
  16. #define E2PROM_CMD_READ 1
    # @1 J6 q( Z% v7 ]
  17. #define E2PROM_CMD_WRITE 2
    - Z+ _& {5 d. Z1 T8 Z- Q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    $ I+ _& ^& Z! {8 i, X) `% }

  19. ! K2 Y4 W1 K# L& _' L
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    + H2 T# u  g! w2 y
  21. {
    : c% m6 y; g. X) }# R" n9 T, y
  22.         int fd, ret;
    0 ~6 E  D, @; q/ H7 k0 c" p2 L
  23.         e2prom_s_cmd arg;
    # ^" X- v# l, l. |
  24.         unsigned char buf[0x18];( C! Q  k) V3 r% ?: x, e$ I: m
  25. ' g" ]4 h2 p* o9 C5 F- X" X
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 N( Y8 N: R& m+ y
  27.         if (fd  < 0) {! s1 m( Z% V* r1 l
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) {9 a' Y8 B$ u  j# Y4 ]
  29.                 return -1;
    % {( h% w3 c7 Y
  30.         }
    8 S4 B5 Y. o! }: O
  31.         arg.sub_addr_count      = 2;1 ~! c4 [5 I$ w, Z* b- @: h9 s( T
  32.         arg.data_count          = 0x18;7 k3 ]+ v( ]! p  M5 t
  33.         arg.e2prom_cmd_sub_addr = 0x290;! G# ^; p! W8 d/ J4 R7 C* F
  34.         arg.e2prom_cmd_data     = buf;9 ^, ?) R: W3 k( @! k) N' m3 q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);" V" v. F9 j6 |& W
  36.         if (ret != 0) {
    " C6 H4 e; O8 x( n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    % f& {- N1 c  u$ c
  38.                 return -1;  ^- L, R3 S! l5 \! @
  39.         }
    + A( ?2 p/ L" C5 ~6 R( [5 ^! r
  40.         memcpy(mac, buf, 6);) L$ P# a6 }  i6 \1 H2 ]* A
  41.         memcpy(stbid, &buf[6], 18);* C1 Y) r+ J( e) v& [
  42.         stbid[18] = '\0';! |( ]6 w+ A9 r4 j5 i' X

  43. 9 V* T9 b- z1 F% u; y& {
  44.         return 0;1 g. ~4 I  w( s; I, C# Q1 r' C9 _
  45. }
    ' p3 }7 T" ~' p% p8 h
  46. ( p  u; e& l5 v2 X! x
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - E0 D. K! d5 m
  48. {
    ) o7 m7 c% c- [! ]# X
  49.         int fd, ret;
    " k' x6 K. q9 w$ c/ {. V4 M1 p* ]
  50.         e2prom_s_cmd arg;! b, k) t  k) ^! H. [
  51.         unsigned char buf[0x18];
    ( K! N' E9 N. |/ }

  52. ) t+ w4 m2 ^  |" Y. V
  53.         memcpy(buf, mac, 6);
    - o# ^9 ^; X, ~3 Q9 u3 c
  54.         memcpy(&buf[6], stbid, 18);: D% c. ~2 c. O8 b' V% I
  55.         fd = open(E2PROM_DEVICE, O_RDWR);2 P3 B8 e3 d- u% n* ^  D: v
  56.         if (fd  < 0) {/ b3 a9 h, l8 \2 y* [% Q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 q0 F7 [5 w9 u: E2 @2 S4 H$ L# w
  58.                 return -1;: Q2 Z2 f4 \" m. M& T* E
  59.         }  [7 U. v! o; D% |1 \
  60.         arg.sub_addr_count      = 2;( F/ d, r$ [) ?& v: ]
  61.         arg.data_count          = 0x18;" @3 b' X5 E: P9 e0 z4 ]
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    1 H  J) ~9 }" G  p. l) ]% s
  63.         arg.e2prom_cmd_data     = buf;/ L9 ^8 z7 q, [" a) ^3 c
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 R* G9 O- S9 s
  65.         if (ret != 0) {
    + K* e) z' w) W. E
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);9 {; `  g$ ?, p0 K; B. O
  67.                 return -1;
    + Y$ B7 G8 U8 \
  68.         }
    1 N) P, i  U4 l2 P. v& m
  69. ) ^* O- |6 t+ b
  70.         return 0;7 D$ R8 _) A0 S& `: y; n/ z$ Q
  71. }
    ( d* C) q$ z, V* m( }  Z# d

  72. + g) u8 y) V$ p5 D5 g( L! ~7 g* @( o
  73. int main()5 E. h) L3 i7 {5 b
  74. {* w% ?9 B, [( C- w
  75.         char c;
    8 |0 r: ?  f6 y# }! q2 c
  76.         int i, macs[6];( |! B' j# f6 K2 ?7 s$ `
  77.         unsigned char mac[6];2 R: k8 g- g9 ^" S- ?& D0 P* p# u
  78.         unsigned char stbid[256];8 e; }8 d. P# B7 N7 B+ D% P

  79. 4 Y! M4 k' G1 s  n' G+ S. U8 g
  80.         if (readparam(mac, stbid) < 0)
    1 O! D/ n0 `8 d9 @+ j+ ~% Z* L2 B
  81.                 return 1;6 E$ d+ u* V$ W5 G5 E' w9 m0 R8 O
  82. 8 [; g3 K9 }  x' d* u
  83.         printf("Current parameters: \n");9 I8 ?% R- y/ c) I/ a/ y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 K) g6 A3 T. |" [' W4 d
  85.         printf("  STBID: %s\n", stbid);& L7 J) X# P+ ^1 V/ s, T  e
  86.         ( \1 S. V# v! O+ P
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ( W# ^  d6 u0 u1 W- T. Y7 [
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    + Y8 f7 o6 z5 N9 @2 r6 l( @' E
  89.                 printf("Input MAC error\n");
    1 v! E1 ]$ n( r# `1 v! x+ M, `
  90.                 return 1;
    " @/ @$ [; Q0 H- r7 u5 \
  91.         }
    9 k/ C: {( b7 K3 N
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ; f+ }! b* G# g$ M4 L
  93.         printf("\nPlease input new STBID: ");/ A$ |( Q' I3 O7 Y3 w  z, C2 B
  94.         scanf("%s", stbid);; z0 ?+ H$ k! x% i. g" L# o
  95.         if (strlen(stbid) != 18) {
    . B0 v( \* l6 Z. e
  96.                 printf("Invalid stbid\n");0 r, |) L. G" w: e7 d
  97.                 return 1;
    ( E/ j. [5 X" H8 I
  98.         }
    $ u" L% F: F- h) S) p
  99.         printf("\nNew parameters: \n");2 D" s: m( ^) D8 Z) G3 m
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' H- q; F/ S* X& ]! B
  101.         printf("  STBID: %s\n", stbid);# r0 Q! |5 y; m& R/ U( o
  102. 0 l4 Z/ `4 @& f9 ^9 t- y
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    4 f: H* x2 Z/ E5 y; i
  104.         for (;;) {- ~) y2 W3 y2 _
  105.                 c = getchar();
    5 |) G' N  t; g* S" A% g
  106.                 if (c == 'y' || c == 'Y')
      b7 Q' Z$ X2 O4 _1 w
  107.                         break;
    4 r0 q+ T& b4 }
  108.                 if (c == 'n' || c == 'N') {: @$ {4 U3 n( }8 l
  109.                         printf("\nAborted.\n");9 @# d( _$ k* [+ g. Z0 X4 h7 D8 y
  110.                         return 1;. `* {1 G, M2 t5 `+ p
  111.                 }/ L/ X! v6 |1 k) N1 q9 j* l/ E
  112.         }8 J6 |% Z' s: y. s
  113.         if (writeparam(mac, stbid) == 0)   z( p4 m) O) R7 h" D1 g7 G: C1 H
  114.                 printf("Parameters changed.\n");% M1 m5 O& H; _8 b, x

  115. % Q: ~) |) L: f* x4 u$ r
  116.         return 0;
    ( y8 b; v) L- `0 U! t1 E9 Y" ^( r- [
  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
' P; P( z; ]& e$ ?- g4 L在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 L% A0 H" l; U8 T  T1 R
你用的编译命令行格式是什么?8 _7 ^& i. [2 Y! C7 s
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-22 04:11 , Processed in 0.023267 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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